- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 对java线程池ThreadPoolExecutor的理解
为什么需要线程池大家应该都知道线程创建成本是很高的系统调用,内核态到用户态切换分配,初始化线程堆栈等。因此每次任务过来new一个线程并不合理。如果用过阿里编程规约扫描过代码的同学就会发现,有如下提示:通过线程池就可以复用事先创建好的线程,以提高性能。如何创建线程池阿里编程规范中有提到线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor...
2019-08-08 21:44:36
500
翻译 Kafka
什么是KafakaKafka是 一 款 基于 发布 与 订阅 的 消息 系统。Kafka 的 数据 是按 照 一定 顺序 持久 化 保存 的, 可以 按 需 读取。 此外, Kafka 的 数据 分布 在 整个 系统 里, 具备 数据 故障 保护 和 性能 伸缩 能力。消息 和 批次Kafka 的 数据 单元 被称为 消息。 如果 你在 使用 Kafka 之前 已经 有 数据库 使用 经验...
2019-07-24 15:39:37
719
原创 究竟什么是Spring Boot,和普通Spring项目有什么区别
究竟什么是Spring Boot,和普通Spring项目有什么区别背景最近我们打算重构设计一个公共包,其中涉及到的一个命题就是公共包要不要引入Spring Boot。那么问题来了究竟什么是Spring Boot 呢Spring简介Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:Spring JDBCSpring ...
2019-04-22 20:17:45
15345
原创 Sentinel流量降级监控
Sentinel流量降级监控背景什么是Sentinel随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰...
2019-04-03 12:31:01
1123
原创 分布式链路跟踪 Sleuth 与 Zipkin
分布式链路跟踪 Sleuth 与 Zipkin背景最近我们项目打算上分布式链路追踪功能,由于没有和测试,运维沟通好,导致大家对这个分布式链路追踪不太了解,隔三差五有人过来问一遍。于是决定写下来科普,给大家学习学习。随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就...
2019-04-03 12:23:51
2307
原创 关于PBOC3.0发卡行认证的问题
关于PBOC3.0中发卡行认证的问题背景中国金融集成电路(IC)卡规范(PBOC3.0)最近例行查看交易流水中发现经常出现冲正的交易,有点不太寻常。经分析发现绝大多数是农业银行,IC卡,插卡交易。冲正:一般都是终端没有收到posp系统成功应答,从而主动发起的。排查日志因此我们第一时间排查日志,查找渠道是否有成功应答。经过我们多笔问题订单跟踪,发现渠道都有返回交易成功,没有超时;而且...
2019-04-01 18:37:57
1709
原创 记一次Java调优,性能提高20倍
记一次Java调优,性能提高20倍背景最近我们接入网关OpenAccess服务增加了流量监控(阿里的Sentinel),进入测试环境后发现性能问题很严重,响应时间到达了1000+ms,这是完全不可以接受的数据。解决过程添加挡板机由于OpenAccess项目是一个接入网关,实际会调用后端服务来提供具体服务,因此初步怀疑是后端服务问题,日志分析经过检查日志发现“果然如此”。通过正则表达...
2019-03-28 11:10:48
843
原创 源码分析如何注解使用AOP
如何注解使用AOP定义注解/** * 在函数上面注解,打印函数调用前后,异常等日志信息 * * <p>用法:@LoggerManage(description="方法描述") * * <p>在{@link LoggerAdvice}类中处理 * * @author lishaofeng 396191970@qq.com * @date 2018年11月...
2019-03-26 14:29:19
326
原创 @ConfigurationProperties源码分析 五 如何实现递归赋值配置类成员变量?
如何实现递归赋值配置类成员变量?JavaBeanBinder接上一篇文章代码绑定Bean属性会调用 propertyBinder.bindProperty private <T> boolean bind(BeanSupplier<T> beanSupplier, BeanPropertyBinder propertyBinder, BeanProperty ...
2019-03-18 14:01:19
801
原创 @ConfigurationProperties源码分析 四 什么时候注册的ConfigurationPropertiesBindingPostProcessorRegistrar?
什么时候注册的ConfigurationPropertiesBindingPostProcessorRegistrar?源码分析
2019-03-18 11:43:14
801
原创 @ConfigurationProperties源码分析 三 什么时候注册的ConfigurationClassPostProcessor?
什么时候注册的ConfigurationClassPostProcessor?源码SpringApplication应用启动 SpringApplication后 会创建ConfigurableApplicationContext 对象/** * Run the Spring application, creating and refreshing a new * {@link A...
2019-03-18 11:08:15
888
原创 @ConfigurationProperties源码分析 二 什么时候注册的ConfigurationPropertiesBindingPostProcessor?
什么时候注册的ConfigurationPropertiesBindingPostProcessor?接上一篇文章@ConfigurationProperties源码分析 一 提出的问题什么时候注册的ConfigurationPropertiesBindingPostProcessor?SpringApplication从应用启动类 main 说起/** * @author Shaof...
2019-03-18 10:02:40
3069
原创 @ConfigurationProperties源码分析 一
@ConfigurationProperties源码分析 一背景之前我们项目当中,配置文件是通过 @Value(&amp;amp;amp;amp;amp;quot;${zk.register.merinfo}&amp;amp;amp;amp;amp;quot;) 方式注入的。造成问题如下:配置属性不统一,没有结构。注入麻烦每个属性都要写配置名,和属性名。(只要有重复的工作,就应该重构)配置零散在项目中各处@Componentpublic class Api
2019-03-16 21:12:34
2884
原创 MQ 双向队列 request-response模式
MQ 双向队列 request-response模式简述request-response的通信方式很常见,但是不是默认提供的一种模式。在前面的两种模式中都是一方负责发送消息而另外一方负责处理。而我们实际中的很多应用相当于一种一应一答的过程,需要双方都能给对方发送消息。于是请求-应答的这种通信方式也很重要。它也应用的很普遍。请求-应答方式并不是JMS规范系统默认提供的一种通信方式,而是通过在现...
2019-03-16 20:47:30
1719
原创 linux 批量替换文件里面内容
vim 文本替换:%s/10.8.200.1/10.8.200.10/g linux 目录下面查找字符串find -name '*.properties' |xargs grep '10.8.200.1:'linux 批量替换文件里面内容find -name '*.properties' | xargs perl -pi -e 's|10.8.200.1:|10.8.200.10:|...
2019-03-14 20:55:27
1131
转载 基于SSH搭建SFTP服务器
基于SSH搭建SFTP服务器基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录) 开通 sftp 帐号,使用户只能 sftp 操作文件, 而不能 ssh 到服务器 限定用户的活动目录,使用户只能在指定的目录下活动,使用 sftp 的 ChrootDirectory 配置确保 ssh 的版本高于 4.8p1# ssh ...
2018-10-16 10:50:38
2070
转载 【Spring实战】Spring注解配置工作原理源码解析
--------------------- 作者:Herman-Hong 来源:CSDN 原文:https://blog.csdn.net/honghailiang888/article/details/74981445?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!--------------------- 一、背景知识在【Spring实战...
2018-10-15 10:45:05
137
原创 插入oracle数据库中文乱码
由于应用服务没有设置NLS_LANG环境变量1 设置环境变量[root@LXPOSAPPD1A posplus]# echo 'export NLS_LANG=AMERICAN_AMERICA.AL32UTF8' >> /etc/profile ; . /etc/profile2 退出登录,再重新登入应用服务器(这一步很重要,不然设置的变量不会生效)3确认设置生...
2018-09-10 16:47:40
1799
原创 Linux 设置系统时间
获取系统时间[root@LXPOSAPPD1A etc]# date 设置系统时间[root@LXPOSAPPD1A etc]# date -s '20180906 10:51:00'
2018-09-06 11:03:06
258
原创 sftp 从银行获取对账单脚本
#!/bin/shset -vTIMESTAMP=`date '+%Y.%m.%d %H:%M:%S'`IP='***.**.*.**'PORT=9***KEY_FILE='/home/oracle/.ssh/id_rsa'IIN='25480446'DEST_PATH='/home/acc_file/hkcuptf/'$IINFILE_DATE=`date +%y%m%d -d ...
2018-09-06 10:22:07
968
原创 log4j 配置日志 打印hibernate 或 spring 等框架的日志信息
log4j.rootLogger=INFO,Console,CommonFile
2018-08-28 17:54:57
2041
原创 spring junit整合单元测试
1. 前言: 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个函数的其他功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面...
2018-04-04 11:50:09
367
转载 并发问题(三)Hibernate事务与并发问题处理(乐观锁与悲观锁)
Hibernate事务与并发问题处理(乐观锁与悲观锁) 一、数据库事务的定义 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足...
2018-03-31 17:32:52
626
转载 并发问题(二)什么是并发
1. 什么是并发操作?并发操作是指同一时间可能有多个用户对同一数据进行读写操作.2. 并发操作对数据的影响如果对并发操作不做任何控制的话,会造成数据的不完整性。可能造成读脏数据,不可重复读,丢失修改还有幻读。 3. 对数据不完整性的举例(1) 丢失修改当两个或多个事务(或两个或多个用户)选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在(或每个用户操作时...
2018-03-31 15:51:40
6759
转载 sqlplus安装配置
sqlplus安装配置 一、下载oracle 10g sqlplus软件http://www.oracle.com/technology/software/tech/oci/instantclient/index.htmloracle-instantclient-basic-10.2.0.4-1.i386.rpmoracle-instantclient-sqlplus-10.2
2015-12-24 10:40:23
2266
原创 print打印16进制时前面会多很多FF,解决办法。
最近在做一个3des软加密的项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下:C代码 char buf[10] = {0}; buf[0] = 0xbf; printf("%2x\n\n\n", buf[0]); /*在终端将会显示成:ffffffbf
2015-12-03 18:17:21
10441
4
原创 linux下定时执行sql语句
一 写需要执行的sql文件执行命令: # vim updata.sql内容: update t_channel_terminal set ct_para4='0' ; commit;二 写执行sql文件的脚本执行命令: #vim updata.sh内容: #!/bin/bash
2015-12-01 13:41:48
3937
3
原创 ssh登录一段时间后断开的解决方案
Windows下ssh工具的设置:secureCRT:选项---终端---反空闲 中设置每隔多少秒发送一个字符串,或者是NO-OP协议包
2015-11-19 18:37:42
1014
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人