- 博客(51)
- 资源 (3)
- 收藏
- 关注
原创 FeignClient自定义日志打印
通常在集成feign的时候,都希望能够打印请求和相应日志。feign自有的日志打印不够友好自定义feign.Client代理类import com.google.common.collect.Sets;import feign.Client;import feign.Request;import feign.Response;import feign.Util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import .
2021-11-19 17:37:16
931
原创 Openresty测试lua_shared_dict容量
验证lua_shared_dict能存储多少keynginx.conf配置worker_processes 1;error_log logs/error.log info;events { worker_connections 256;}http { lua_shared_dict cats 20m; server { listen 8080; location = /test { con.
2021-09-30 17:34:28
547
原创 Openresty基础Demo
本文演示OpenResty应用中编写自己的 Lua 模块1. 创建项目创建项目结构cd ~mkdir democd demomkdir confmkdir luamkdir logstouch conf/nginx.conf创建完项目结构如下创建Lua模块创建简单的lua模块文件touch lua/test.lua文件内容如下:local _M = {}function _M.test(name) ngx.log(ngx.INFO, 'test lua m.
2021-09-30 15:54:00
270
1
原创 OpenResty构建安装
参考官网: https://openresty.org/en/安装环境:本地mac下载源码并解压curl -O https://openresty.org/download/openresty-1.19.9.1.tar.gz下载编译依赖模块// 依赖pcre和openssl模块,本地已经存在则忽略curl -O https://ftp.pcre.org/pub/pcre/pcre-8.45.tar.gzcurl -O https://github.com/openssl/open.
2021-09-26 20:20:20
344
原创 Jacoco插装后$jacocoInit()方法实现
最近看了下Jacoco源码,对插装后的代码反编译,有看到定义$jacocoInit()方法,但无法反编译具体实现。通过阅读官方文档以下说明:Object access = ... // Retrieve instanceObject[] args = new Object[3];args[0] = Long.valueOf(8060044182221863588); // class idargs[1] = "com/example/MyClass
2021-03-31 21:16:53
1707
原创 Java变更行单元测试覆盖率
概述Java应用代码的单元测试覆盖率工具Jacoco已经非常成熟及完善了。对于历史的Java项目很多都是没有单元测试的,往往在新的在迭代的过程中都希望能有变更代码行的单元测试覆盖率,从而提高迭代质量。本文介绍怎么基于jacoco和maven构建变更行单元测试覆盖率报告。对于全量单测覆盖率报告怎么使用可以参考Jacoco官方文档获取变更行要构建变更行测试覆盖率,那么首先我们要定位出源代码的变更文件和对应变更行号。获取变更文件列表git diff --name-status ${baseCom
2021-03-31 20:25:14
1513
原创 基于nginx快速搭建直播服务
概要说明nginx的nginx-rtmp-module模块支持直播推流,以下记录搭建过程及步骤Demo基于docker的linux镜像服务运行操作步骤编译安装nginx# 运行dockerdocker run --name debian -p1935:1935 -p8888:8888 -it debian /bin/bash# nginx安装在/root/nginx目录下# 创建相关文件夹,安装相关依赖库文件cd /rootmkdir downloadmkdir nginx
2021-01-08 18:15:39
326
原创 聊聊微服务发布重启
概述在微服务架构体系下,服务的每一个节点都不应该是单点。每个服务都是集群部署,这样服务的发布会非常频繁。对于在大流量请求下,如何保证服务节点的发布过程中不影响任何一个业务请求往往会被忽略掉。在分布式系统中,一个请求的异常很可能就会导致一笔业务处理失败。业务如果没有自修复能力的话,这笔业务就会中断,往往需要人工介入,甚者会收到用户投诉。所以,在分布式微服务体系下,服务的优雅发布也是不能忽略的一部分。服务优雅发布流程服务的发布流程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(
2020-12-15 13:10:58
1042
原创 MYSQL数据库知识整理
索引索引是一种能够加快数据的查询的数据结构。mysql主要有两种索引,HASH索引和B+Tree索引。B+Tree索引:Hash索引:B+树索引和哈希索引的区别如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;当然了,这个前提是,键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据;从示意图中也...
2019-07-11 11:34:53
313
原创 java线程学习笔记
学习博客地址:https://blog.csdn.net/hanchao5272/column/info/20199/31. Java线程状态图2. 并发-原子性、可见性、顺序性
2019-06-27 11:07:04
186
原创 Mysql执行计划Explain类型字段说明
Explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。type字段含义type字段说明了查询语句的关联类型,更准确的说法是访问类型–换言之就是Mysql决定如何查找表中的行。下面是最重要的访问方法,依次从差到最优: All -> Index -> range -> ref -> eq_ref -...
2019-03-27 23:00:38
507
原创 一张图理解Mysql聚簇索引
聚簇索引的叶子节点存储数据行及主键ID,二级索引存储索引值和对应的主键ID;对应二级索引查询到主键之后需要通过主键索引获取数据行(二次查询)非聚簇存储数据独立存储,主键索引和二级索引存储对应索引值和数据的地址指针...
2019-03-25 20:33:26
495
原创 JAVA即时编译--深入理解JAVA虚拟机读书笔记
及时编译: JIThttps://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/index.htmlpublic class TrueFalseVO { private static final int NUM=15000; private static int doubleValue(int i) { for (...
2019-03-22 15:40:05
271
转载 ThreadLocal源码解析
转载出处:【huachao1001的专栏:http://blog.csdn.net/huachao1001】【huachao1001的专栏:http://blog.csdn.net/huachao1001】数据存取ThreadLocal的使用相信大家都比较熟悉,但是ThreadLocal内部是如何做到为不同线程保存不同的副本的呢?能看到这篇文章,说明你也跟我一样好奇。接下来我们一层一...
2019-03-14 14:21:48
260
原创 JAVA垃圾收集器--深入理解JAVA虚拟机读书笔记
文章目录一、JAVA垃圾收集(GC)1. 程序计数器--线程私有2. Java虚拟机栈--线程私有3. 本地方法栈--线程私有4. Java堆--线程共享5. 方法区--线程共享6. 运行时常量池--线程共享7. 直接内存--线程共享二、JAVA对象内存布局1. 对象的创建2. 对象内存布局3. 对象的访问定位一、JAVA垃圾收集(GC)Java垃圾收集需要完成以下三件事情:哪些内存需要回...
2019-02-27 21:16:39
291
原创 JAVA内存区域与对象的内存布局--深入理解JAVA虚拟机读书笔记
文章目录一、JAVA内存区域及内存溢出异常1. 程序计数器--线程私有2. Java虚拟机栈--线程私有3. 本地方法栈--线程私有4. Java堆--线程共享5. 方法区--线程共享6. 运行时常量池--线程共享7. 直接内存--线程共享二、JAVA对象1. 对象的创建2. 对象内存布局3. 对象的访问定位一、JAVA内存区域及内存溢出异常1. 程序计数器–线程私有一块较小内存,当前线程...
2019-02-18 15:13:42
164
原创 IDEA 调试自定义AbstractProcessor
IDEA 调试自定义AbstractProcessor本人需要自定义Processor代码编译插件,在开发过程中API不熟悉,需要多次Debugger调试。搜索了很久才找到怎么对自定义Processor进行调试。 参考地址:https://stackoverflow.com/questions/31345893/debug-java-annotation-processors-usin...
2019-02-13 20:27:55
2867
1
原创 Maven多模块及version修改
Maven多模块及version修改对于使用maven构建的java项目,通常聚合多个子模块项目。在版本迭代的过程中经常变更版本号,更新parent版本号,发现子模块版本号没有更新,需要一个个的手动去更新,太麻烦,且容易出错。在版本更新之后,内部模块之间的依赖也需要变更,往往存在遗漏。MAVEN多个子模块项目以上是一个基本的主项目parent包maven-multily-mo...
2019-01-16 18:48:28
35077
3
转载 java注解处理器
java注解处理器 转载https://race604.com/annotation-processing/Java中的注解(Annotation)是一个很神奇的东西,特别现在有很多Android库都是使用注解的方式来实现的。一直想详细了解一下其中的原理。很有幸阅读到一篇详细解释编写注解处理器的文章。本文的原文是ANNOTATION PROCESSING 101,作者是Hannes ...
2018-07-22 21:05:43
228
原创 自定义BeanValidation注解及Spring集成
概述 很早的时候写过一篇文章Spring-BeanValidation校验@RequestParam参数, 只是简单记录了怎么使用BeanBalidation。这篇文章会介绍怎么使用JAVA BeanValidation,怎么自定义constraint注解,最后会介绍下Spring中怎么集成使用BeanValidation。 JSR303 java的数据验证的规范,为 JavaBean...
2018-07-08 15:09:12
1485
原创 Spring Resource接口说明
Spring Resource接口说明在Spring中Resource接口有着相当广泛的使用。Spring在加载配置文件时候,都是基于Resource接口加载的。此接口抽象程度比较高,是Spring的辅助重要接口之一。我们先看下Spring中此接口的类图。 Spring把对资源的访问高度封装,从实现类可以看到,可以从Url地址,本地文件系统,Classpath路径,二进制流获取到对应...
2018-05-03 21:39:33
749
原创 Spring Bean生命周期理解
Spring Bean生命周期理解Spring Bean生命周期理解BeanFactory接口是Spring的首要核心接口,要学习Spring必须对此接口深度理解。在阅读此接口源码的时候,刚好发现了接口文档对应的就是SpringBean的生命周期介绍。以下为原文: Bean factory implementations should support the stan...
2018-05-01 14:12:46
1427
原创 性能测试工具【http_load】学习笔记
概述安装使用结果分析概述http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。 http_load只支持Get请求,无法设置请求头及对响应解析安装依赖GCC编译环境curl -O http://soft.vpser.net/test/http_loa
2017-10-29 19:53:37
410
原创 Reids监控RedisLive安装教程
记录是一种精神,是加深理解最好的方式之一。 最近学习了怎么使用RedisLive对Redis进行运行监控,提笔记下。 曹金桂 cao_jingui@163.com(如有遗漏之处还请指教) 时间:2016年11月26日10:30 本文参考自http://www.nkrode.com/article/real-time-dashboard-for-redis1. 概述Re
2017-10-29 19:52:37
416
原创 Redis-Sentinel
记录是一种精神,是加深理解最好的方式之一。 最近学习了下Redis,了解了下Redis HA的原理,在这里把他记下来 曹金桂 cao_jingui@163.com(如有遗漏之处还请指教) 时间:2016年10月23日10:30 本文参考自《Redis Sentinel Documentation》概述 Redis Sentinel是Redis官方推荐的高可用性(HA
2017-10-29 19:51:59
486
原创 Jedis使用教程完整版
记录是一种精神,是加深理解最好的方式之一。 最近深入研究了Jedis的源码,对Jedis的使用进行深入理解,提笔记录。 曹金桂 cao_jingui@163.com(如有遗漏之处还请指教) 时间:2016年11月26日15:00概述Jedis是Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis中间件,必须对Jedis熟悉才能写成漂亮的代码。这篇文章
2017-10-29 19:51:30
1225
原创 Jedis客户端分片--构建高可用客户端分片
记录是一种精神,是加深理解最好的方式之一。 最近深入研究了Jedis的源码,对Jedis的使用进行深入理解,提笔记录。 曹金桂 cao_jingui@163.com(如有遗漏之处还请指教) 时间:2016年12月06日15:00概述分片允许数据存放在不同的物理机器上,以适应数据量过大的场景,克服单台机器内存或者磁盘空间的限制。Redis在3.0之前是没有集群的,就算现在3.
2017-10-29 19:51:00
374
原创 Mybatis一级缓存原理
记录是一种精神,是加深理解最好的方式之一。 最近看了下Mybatis的源码,了解Mybatis一级缓存的实现方式,在这里把他记下来 曹金桂 cao_jingui@163.com(如有遗漏之处还请指教) 时间:2016年10月6日14:00一级缓存概念 当我们使用Mybatis进行数据库的操作时候,会创建一个SqlSession来进行一次数据库的会话,会话结束则关闭Sql
2017-10-29 19:50:07
345
原创 Mybatis配置文件解析过程详解
记录是一种精神,是加深理解最好的方式之一。 最近看了下Mybatis的源码,了解了下Mybatis对配置文件的解析过程,在这里把他记下来。虽然这不复杂,对这方面的博客也有很多,写的也很好。但我坚信看懂了是其一,能够教别人或者描述清楚记下来才能真正的掌握。 曹金桂 cao_jingui@163.com (如有欠缺还请指教) 时间:2016年10月9日16:00这篇文章能够帮你
2017-10-27 18:11:34
644
原创 Mybatis二级缓存原理
记录是一种精神,是加深理解最好的方式之一。 最近看了下Mybatis的源码,分析了二级缓存的实现方式,在这里把他记下来。虽然这不复杂,对这方面的博客也有很多,写的也很好。但我坚信看懂了是其一,能够教别人或者描述清楚记下来才能真正的掌握。 曹金桂 cao_jingui@163.com (如有欠缺还请指教) 时间:2016年10月11日16:00这篇文章能够帮你学会对Myba
2017-10-27 18:10:27
646
2
原创 Mybatis插件原理
记录是一种精神,是加深理解最好的方式之一。 最近看了下Mybatis的源码,分析了Mybatis插件的实现方式,在这里把他记下来。 曹金桂 cao_jingui@163.com (如有欠缺还请指教) 时间:2016年10月23日16:00概述 Mybatis插件又称拦截器,本篇文章中出现的拦截器都表示插件Mybatis采用责任链模式,通过动态代理组织多个插件(拦截器)
2017-10-27 18:09:48
419
原创 Mybatis-SqlSession执行过程说明
记录是一种精神,是加深理解最好的方式之一。 最近看了下Mybatis的源码,了解了下SqlSession执行Sql的过程,在这里把他记下来 曹金桂 cao_jingui@163.com(如有遗漏之处还请指教) 时间:2016年10月5日14:50SqlSession的delete/update/insert执行过程调用过程说明用户代码获取到SqlSession对象后(De
2017-10-27 18:09:24
1061
原创 Spring-BeanValidation校验@RequestParam参数
记录是一种精神,是加深理解最好的方式之一。 曹金桂 cao_jingui@163.com(如有遗漏请指教) 时间:2017年02月27日概述我们知道,Spring BeanValidation可以用来校验我们客户的提交的参数对应的Bean对象。但是在很多情况,我们的参数只有一个简单字符串或者是数字型参数(采用@RequestParam注解),要想使用SpringValidation还
2017-10-27 18:07:16
16006
2
原创 JAVA学习笔记--JDK工具
JAVA学习笔记–JDK工具一、JPS - JavaVirtual Machine Process Status Tool 显示指定系统内所有JAVA虚拟机进程参数: 1. -q 只输出进程ID,不显示class名称,jar文件名和传递给main方法的参数 2. -m 输出传递给main方法的参数(传给main方法的参数) 3. -l 输出应用程序main class的完整package
2017-10-27 18:06:22
269
原创 JAVA学习笔记--GC日志解析
JAVA学习笔记–GC日志解析 https://my.oschina.net/u/2269952/blog/531558 转发文章,记录下来,便于以后工作查询1、相关命令使用GC日志命令行选项为: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准
2017-10-27 18:05:32
495
addressing-1.5.5.jar
2014-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人