自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Richy的博客

宁静而致远

  • 博客(87)
  • 收藏
  • 关注

原创 IDEA 代码注释模版

公司SVN提交代码时,检查代码注释比不能少于20%,好吧,凑一下字数。* * @author liuwr * @createTime $DATA$ $TIME$ * @desc $DESC$ * $VAR1$$params$ * @return $returns$ * <p> * Modification History: * Date Author Version Description * -------------

2022-04-06 16:06:25 393

原创 使用Semaphore模拟排队蹲坑

使用Semaphore模拟排队蹲坑什么是Semaphore怎么使用Semaphore使用Semaphore模拟排队蹲坑大概流程:原代码输出结果什么是SemaphoreSemaphore 翻译成字面意思为 信号量,Semaphore 可以控制同时访问的线程个数,通过acquire() 获取一个许可,release() 释放一个许可。如果没有许可就将进行等待状态。流程如下图所示。怎么使用Semaphore1:创建一个Semaphore,在构造函数里指定许可总数量。 Semaphore holes=n

2021-09-24 12:46:35 271

原创 使用CyclicBarrier模拟百米赛跑

使用CyclicBarrier模拟百米赛跑什么是CyclicBarrier怎么使用CyclicBarrier使用CyclicBarrier模拟百米赛跑原代码输出结果什么是CyclicBarrier字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。怎么使用CyclicBarrier1:创建 CyclicBarrier ,并在构造函数参数里指定 需要等待的线程数量。 CyclicBarrier barrier =new CyclicBarrier(3);2: 对应线程在

2021-09-24 11:15:06 315

原创 Oracle 查最后一条记录

今天遇到一个坑,使用Oracle查表的最后一条创建的记录。路思1:根据时间倒序排序。2:查出第一条记录。然后写出:select * from t_qms_bu_check_plan_flow where rownum= 1 order by CREATED_DATE DESC ;实际上是错的。原因:rownum 在排序之前生效。也就是说执行的顺序是这样的:1:查出第一条数据。2:排序。傻眼了。。正确的姿势应该是这样的。select * from ( select * from t

2021-05-13 15:45:55 7045 1

原创 文档工具- 利用Swagger反向工程输出API接文档

背景文档与设计正常的流程是:服务接口文档 ->服务设计开发。但是,经常性的接口有改动,开发人员不会再去修改文档,导致接口与文档对应不上。当然,真正的原因是领导要检查项目产出。需要使用反向工程快速输出文档。因为Api的数量有点大(有500多个),并且这种事情基本上每个项目都要做一次。那就整个工具快速导出吧。流程获取swagger ApiDoc点击以下图所示链接,获了ApiDoc报文。Api 报文如下,有点长,我们先把它复杂出来。工具使用1:工具是使用SpringMVC开发的一个接

2021-03-28 12:13:34 399 1

原创 SpringCloud 之 Feign最佳实现

我心目中的Feign是这样子的,上蓝图。为什么要这样子呢?1:习惯了这样子的调用方式,不想改变了。。2:避免提供者与消费都云配置访问的方式,并者是一致的。消费者与提供者不好沟通。那么要怎么云实现呢?**1:**创建独立的接口层项目。消费者与提供者项目引用接口项目。如下图**2:**在接口项目,创建接口。如下, 把访问方式的注解都加在这里,包括路径,参数。@RestControllerpublic interface IController1 { @RequestMapping(

2021-03-23 23:37:30 260

原创 SpringCloud-Eureka集群实践

SpringCloud-Eureka集群实践整体思路一、Eureka服务器注册中心配置二、服务提供方配置三、服务消者 配置四、运行五、固障测试关掉Eureka注册中心2再次关掉服务提供方2再次关掉Eureka注册中心1(两个提供方都关掉了)整体思路1:两台Eureka服务,相互注册。2:两台服务提供方,分别注册到两台Eureka服务器。3:两台服务消费者,分别指定两台Eureka服务器。代码框架代码放git共享 https://github.com/RichyLiu0/EurekaTest

2021-03-20 11:48:29 157 4

原创 Java项目多开

有时候为了模拟集群,并发等需要,经常在有一个应用多开的情况。那要怎么做呢?一:首先你需要多份配置文件。把配置文件拷配多份,然后修改端口等配置信息。二:在IDEA步骤1:步骤2:复制启动文件,并配置相关参数。步骤3:直接启动。...

2021-03-18 15:08:48 612 2

原创 MySQL事务

什么是事务?在执行SQL语句的时候,某些业务要求,一系列操作必须全部执行,而不能仅执行一部分。事务的特性A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;I:Isolation,隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;D:Duration,持久性,即事务完成后,对数据库数据的修改被持久化存储。事务隔离级

2021-02-23 17:33:55 1132 3

原创 感悟:水深不语,人稳不言

水深不语,人稳不言。学会淡下性子,学会忍住怒气面对不满。事事不能太精,太精无路;待人不能太苛,太苛无友。懂得退让,方显大气;知道包容,方显大度。己之短,不可藏,越藏越短;己之长,不可扬,越扬越少。得意时莫炫,失意时莫馁。花无百日红,人无百日衰。三分靠运,七分靠己,努力过就好,尽了心就行。结果不是最终的目的,过程的体会,才是最真的感悟。ps:回首近10年,吃过的亏,受过的教训历历在目。...

2021-02-05 10:24:42 181 4

原创 mysql update exists

以下SQL是更新零件状态,条件如下1:如果零件有效期过期。2:有新的零件价格(用到了exists)。UPDATE T_SWCAS_DB_PART aSET IS_ENABLE = '0'WHERE PRICE_VAILD_TO <DATE_FORMAT(NOW(), '%Y%m%d')AND IS_ENABLE = '1'AND EXISTS ( SELECT 1 FROM t_swcas_db_part WHERE MATERIAL = a.MATERIAL

2021-01-25 16:26:18 3202

原创 Redis 高可用 Cluster方案与配置

先看大图,最终的服务器拓扑图如下1:使用三台服务器做为Redis群集,IP分别为10.181.11.98、10.181.11.99、10.181.11.100。2:每台服务器创建两个Redis服务,端口分别为:6379,6380。3:创建主从。如图所示,每一台服务都有一个主,另一台服务器的从对应之。并形成一个闭环。操作一:安装Redis1、安装redis-5.0.5缓存服务 上传redis-5.0.5.tar.gz到指定部署的服务器,解压、编译 (如果Linux没有

2021-01-16 23:40:34 197 1

原创 Redis穿透与雪崩

Redis 穿透查询的逻辑逻如上图所示。1:查询Redis,数据存在直接返回。2:如数据不存在则查数据库,然后存入缓存然后再返回。如果,查的数据在Redis不存在。Redis将去扫整个Redis库,最后没找到这条数据返回空。这个过程叫做Redis穿透。那么Redis穿透有什么问题?1:Redis穿透查询的时间复杂度更久,耗时更久。2:Redis穿透后,将断续去查DB。Redis 雪崩Redis的QPS可以达到5000,而MySql BD的QPS是200左右。倘若同一时间里超过1000的

2021-01-10 15:17:30 240

原创 Redis集群的一些思考

为什么要集群1:提高吞吐量。一个redis的吞吐量总是有限的,可以通过横向增加redis来提高吞量量。2:提高可用性。一台服务器挂掉的机率还是挺高的,多台服务同时挂掉的机率就低多了。集群方案1:主从复制2:Cluster 集群一:主从复制...

2021-01-08 09:32:41 204

原创 Nginx 附件文件夹设置

使用的是场景附件下载的服务器与web服务器是区分开来的。附件下载的文件夹通过nfs映射到web服务器。那怎么通过nginx可以直接下载呢?答案很简单,通过nginx 再配置一个路径。配置如下 ,包括了web与附件文件夹的设置。server { listen 8888; server_name 127.0.0.1; #**web文件件设置** location / { root D:\web;

2021-01-04 16:23:36 399

原创 基于nfs文件服务器方案

基于nfs文件服务器方案背景nfs 网络拓扑服务端配置1:安装nfs2:启动3:服务端配置4:客户端配置PS背景应用为实现负载均衡,高可用。同一个应用需要部署多台服务器。不同节点的应用需要实现数据共享。其中,数据可以过通数据库实现,文件可以则通过 nfs 实现。nfs 网络拓扑如下图所示,nfs服务端为文件服务器。客户端为为多台应用部署的服务器,为nfs客户端。服务端配置1:安装nfs服务端与客户端都要安装,命令如下:yum install nfs-utils2:启动service

2020-12-15 10:36:53 366 2

原创 mysql partition by的实现

序Mysql 8.0之前是不支持 partition by 语法的。但有类似的解决方案。我们先通过一个实例来说明。实例**1:**下图所示,一个零件编号有多个价格。需要筛选出 零件最新的价格。 (需要找出 PRICE_VALID_FROM最近的那条数据)。2: SQL语句SELECT MATERIAL, VENDOR_NAME_ZH,SUBSTRING_INDEX( GROUP_CONCAT(NET_PRICE order by PRICE_VAILD_FROM desc) ,',',1)

2020-11-23 20:37:18 12223 3

原创 mybatis xml常用转义符。

好记性不如烂笔头1、< < 小于号2、 > > 大于号3、 & & 和4、 ’ ’ 单引号5、" " 双引号6、<= <= 小于等于7、>= >= 大于等于...

2020-11-06 09:40:48 199

原创 使用前端导出真正的excel

序:在之前写过一篇文博客【web导出百万数据的方案】,传送门,主要是解决大数据导出的问题 ,使用的是csv导出数据,业务反映csv导出的数据有很多问题。包括:**1:**某些符号被替换例如“,”,导出的数据不是原汁原味。2: 在导出的csv里面,做完的统计等操作无法保存。3: csv数字的问题(数字会自动科学计数,甚至纯数字的编号都会)。4: office 2013的兼容问题(保存后把编码从utf-8改gbk,并干掉了分隔符 逗号 )。客户的抱怨,我重新上路。。解决方案:使用真正的解决exc

2020-10-30 10:27:10 1492 2

原创 html制作成邮件的兼容问题

序:HTML 邮件内容虽然也是 HTML,但是和我们在网页上使用的 HTML 不同,因为安全原因,各大邮箱服务商及邮件客户端都会对邮件内容进行一定程度上的处理,不会按照你写的原本 HTML 展示。那么基本规则布局使用 table这几乎是 HTML 邮件与普通 HTML 页面最大的区别,因为各个邮箱对 div + css 这一套布局的解析问题很大(如 float / position 等 CSS 都会被过滤,甚至 margin: 0 auto; 都不起作用),基本各大邮箱都会解析混乱,所以老式的 t

2020-10-28 10:20:05 634 3

原创 Echart实现动态线性图

效果如下图:效果:1:选择数据,对把应的数据加载到 线性图。2:取消选择数据,对应的数据从图表上消失。代码实现(Vue)<template> <div style="margin-top :10px;"> <el-row :gutter="20" style="vertical-align:middle;" > <el-col :span="4"><div class="maid-col" style="vert

2020-10-20 14:16:58 1528

原创 mybatis mapper 文件不要有 -- 或 #的注释

mybatis mapper 文件在未尾不要有注释代码原因:1:日志产生的代码可读性差(很多日志支持得并不好,并不会换行),拿出来的语句甚至不能直接使用。2:mybatis 插件sql解释支持问题。比如 mybatis plus 分页插件的解释,直接在后面加 limit 语句(正确逻辑应该是加 回车 再加 “limit n , m”)。以下是我在生产系统发现的。 <select id="getPages" resultType="com.ly.mp.swcas.main.entities.

2020-10-12 22:18:20 481

原创 MyBatis 分页查询优化实例(用好子查询,事关功倍)

序如下图所示的这种列表应该是系统里最常见的了。随着数据的增长,查询的速度也将越来越慢,那就需要优化了。数据库使用的是mysql, 分页命名用的是mybatis plus 的paging插件。优化的手段加上条件限制,像这个页面应该加上时间范围限制,只能查一个月的或者一年的数据。SQL查询优化。今天重点是讲怎么去优化SQL。SQL优化一:优化前1:Mapper 代码 <select id="getPages" resultType="com.ly.mp.swcas.main

2020-09-12 16:13:32 3662

原创 web导出百万数据的方案

序 业务要求系统一次性把业务数据导出来。 系统的为了稳定性考虑,限制数据的导出上限为10000,避免数据库卡死,网络卡死,页面无响应等问题。 实际上系统不支持大数据量导出,给业务带来了很大的麻烦。 本文将针对大数据导出进行方案分析现实现。分析目前做的系统的架构大致如下。从框架来看,每一个层之前的交互都有超时间。1:DB超时时间为60秒。2:Biz与Service层是通过dubbo的,超时时限为120秒。有包大小的限制 8M。另外还有断路器。3:nginx的超时为60秒。以上

2020-09-07 15:24:10 2002 2

原创 神奇的My SQL left join

业务A、B两个表,需要查出A表中有,B表中没有的数据。。SQL语句SELECT a.claim_no from t_qgws_sale_check a left join t_swcas_bu_qgws_claim b on a.claim_no=b.claim_nowhere plan_code ='' and b.claim_no is null;SQL分析从上面的sql语句执行计划来看:1:两个表的数据都是10万级的(感 觉不多)。2:两个表也都用到索引,都是覆盖索引。

2020-09-01 15:49:30 1915

原创 npm使用

什么是npmNPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:1:允许用户从NPM服务器下载别人编写的第三方包到本地使用。2:允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。3:允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。npm灵活的特性,目前已经不只是用来安装NodeJS相关的依赖了,很多js脚本框架的安装也使用。因为实在太方便了。安装1:下载:https://nodejs.org/en/

2020-08-25 20:53:14 306

原创 mysql 表备份

序好记性不如烂笔头,几种数据库老混淆。还用错。。mysql 表备份:CREATE table t_swcas_db_customer20200824 as SELECT * from t_swcas_db_customer

2020-08-24 14:25:01 132

原创 HashMap的灵活应用 —— group by

序写了一段代码,感觉很简捷,高效,所以把它记录下来。业务:1:拿到一个供应商通知的信息(集合)。2:根据供应商进行分组,把供应对应的数据发给供应商(一封邮件)。实现public RestResult CreateNotice(Date dStart, Date dEnd) throws ParseException { RestResult rs= new RestResult(1,"执行成功"); List<OldPartBack> lst = m

2020-08-14 17:17:07 375

原创 mysql编码问题 Incorrect string value

错误:批量插入数据,部署报错,如下:Incorrect string value: ‘\xE7\xA8\x8B\xE5\xBA\x8F…’ for column ‘course’ at row 1原因:数据表字段对应的编码是gbk,java mysql数据库连接字符串配置的是utf-8。因为utf8长度比gbk长,理论上是不能转换成gbk的,所以报错了。ps:UTF-8: Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一

2020-08-04 14:00:35 599

原创 IDEA恢复主菜单

手贱把菜单干掉了。操作如下图。效果恢复1:快捷键 ctrl + shift +A,如下2:搞定,主菜单出来了。

2020-08-03 11:57:33 931 1

原创 谈谈AMD CPU购机心得 与 写代码的感受

之前用的是华硕飞行保垒。具体是几代忘记了。。I7 4代的标压CUP。 8换成了联友yoga 14s。

2020-08-02 02:13:36 7802 6

原创 webservice cxf客户端自定义参数

序WebService真是烦,为了不想写那些烦人的适配代码,使用了CXF 生成的客户端,但遇到要填自定义参数的时候,却无从入手。。。经过几天的研究,各种尝试,解读原码。终于把问题解决,项目终于可以顺序进行下去了。。遇到的问题1:SAP 提供的webService 要求输入账号验证信息,如下图所示,但是使用生成的CXF客户端却没有一个属性可以配置。问题解决整个代码如下(已经脱敏):实现的是一个定时把需要地接的数据,通过webservice 发送到目标系统。package com.ly.mp.s

2020-07-28 00:07:23 848

原创 页面自动补齐设计与选型(前端与后台)

序:为提高页面的全入效率,自动补齐功能必不可以少。那么要么去实现呢?需求1:输入零件编码。根据输入的编码,智能提示。2:用户选择提示项,带出零号名称,零件价格。3:修改时,如零件编码匹配不到内容时,清除零件名称,价格。已完成的效果如下图所示:选型支持补齐功能的控件很不少,选择合适的即可。其中包括:bootstrap, Jquery UI都支持其功用。我的选择:是一个第三方轻量级开源的 jquery 插件。 githut地址:https://github.com/devbridge/jQ

2020-07-26 11:18:39 459

原创 java wsdl 参数必填设置

原来的wsdl<xs:complexType name="SyncPartTraceProcess"><xs:sequence><xs:element minOccurs="0" name="OrderMasterData" type="tns:partTraceWrap"/></xs:sequence></xs:complexType><xs:complexType name="partTraceWrap"><xs

2020-07-16 09:22:38 2195

原创 同事烦恼了几个月的linux部署难题 我一招解决

同事烦恼了几个月的linux部署限制问题我一招解决。。特地记录一下。背景:1:客户给了我们四台服务器。A:windows 服务器。B、C、D:Linux服务器。其中 只有A可以连接外网

2020-07-15 23:40:32 294

原创 2020-07-10又为项目烦了。。

最近踩了个坑。。并且不断地踩。。今天就遇到一个好烦的事。团队有个伙伴。。总把一些自己觉得麻烦的事推给其它人,造成别人更加麻烦。。过程AVS业务,需要用到三个信息,分别为车辆销售,车辆过点信息,车辆保修信息。1:这哥门设计了一个表,包含了这三个信息(也就只有这三信息),然后就用这个表作为基础业务,开展业务。也不管数据来源了。。2:测试人员测到这个业务时,问到数据来源,这哥们说数据来自于接口,并要求车辆销售,车辆过点信息,车辆保修信息信接口同步的时候,同时插入AVS数据。3:当时我就觉得不合理,你

2020-07-11 00:14:05 709

原创 测试编译机 又 双 叒 叕不能编译了

代码

2020-07-04 23:52:19 344

原创 MySQL 中 delete where in 语句的子查询限制

根据ID删除数据,代码如下:DELETEFROM t_swcas_db_sync_send_taskWHERE id IN ( SELECT b.id AS id FROM t_swcas_db_old_part_back a INNER JOIN t_swcas_db_sync_send_task b ON a.ID = b.REF_ID WHERE WARRANTY_PARTS_STATUS = '已收货' )执行异常信息[Err] 1093 - Y

2020-06-30 20:56:05 3135

原创 webservice 实例 创建与 调用

webservice 实例 创建与调用 序webservice 选型配置代码webservice 接口层接口实现实体webservice 挂靠配置启动服务测试服务测试:测试地址客户端生成环境配置代码生成序对接SAP系统,指定要用webservice 做对接。不然打死也不用webservice,感觉webService也实现不怎么流行了, 过程中遇到了不少问题。就java webservice而言,框架就有不下十种。网上的教程更是五花八门,零零碎碎,并且很多误导。 本博将记录下项目里用的webservi

2020-06-26 09:19:26 718

原创 idea 2020 运行问题: Command line is too long.Shorten command line ..

问题扫述:项目在idea 2018运行得好好的,用上了idea 2020 后遇如如下问题Command line is too long.Shorten command line … 命令太长解决方法:修改项目下 .idea\workspace.xml,找到标签 , 在标签里加一行 项目跑起来了。...

2020-06-25 14:38:03 11010 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除