<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[曹金桂]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/z333205</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; z333205]]></copyright><item><title><![CDATA[求大神分析bug]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/127668201</link><guid>https://blog.youkuaiyun.com/z333205/article/details/127668201</guid><author>z333205</author><pubDate>Thu, 03 Nov 2022 13:13:44 +0800</pubDate><description><![CDATA[求大神分析java并发问题bug]]></description><category></category></item><item><title><![CDATA[FeignClient自定义日志打印]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/121427654</link><guid>https://blog.youkuaiyun.com/z333205/article/details/121427654</guid><author>z333205</author><pubDate>Fri, 19 Nov 2021 17:37:16 +0800</pubDate><description><![CDATA[通常在集成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 .]]></description><category></category></item><item><title><![CDATA[Openresty测试lua_shared_dict容量]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/120570271</link><guid>https://blog.youkuaiyun.com/z333205/article/details/120570271</guid><author>z333205</author><pubDate>Thu, 30 Sep 2021 17:34:28 +0800</pubDate><description><![CDATA[验证lua_shared_dict能存储多少key

nginx.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.]]></description><category></category></item><item><title><![CDATA[Openresty基础Demo]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/120567703</link><guid>https://blog.youkuaiyun.com/z333205/article/details/120567703</guid><author>z333205</author><pubDate>Thu, 30 Sep 2021 15:54:00 +0800</pubDate><description><![CDATA[本文演示OpenResty应用中编写自己的 Lua 模块

1. 创建项目
创建项目结构
cd ~
mkdir demo
cd demo
mkdir conf
mkdir lua
mkdir logs
touch conf/nginx.conf

创建完项目结构如下

创建Lua模块
创建简单的lua模块文件
touch lua/test.lua

文件内容如下：
local _M = {}

function _M.test(name)
    ngx.log(ngx.INFO, 'test lua m.]]></description><category></category></item><item><title><![CDATA[OpenResty构建安装]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/120496206</link><guid>https://blog.youkuaiyun.com/z333205/article/details/120496206</guid><author>z333205</author><pubDate>Sun, 26 Sep 2021 20:20:20 +0800</pubDate><description><![CDATA[参考官网： 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.gz
curl -O https://github.com/openssl/open.]]></description><category></category></item><item><title><![CDATA[C语言编译过程]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/120439186</link><guid>https://blog.youkuaiyun.com/z333205/article/details/120439186</guid><author>z333205</author><pubDate>Thu, 23 Sep 2021 17:17:43 +0800</pubDate><description><![CDATA[C语言的编译就是将多个C文件编译成一个可执行文件，包含4个步骤：预处理 -&gt; 编译 -&gt; 汇编 -&gt; 链接]]></description><category></category></item><item><title><![CDATA[Jacoco插装后$jacocoInit()方法实现]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/115359977</link><guid>https://blog.youkuaiyun.com/z333205/article/details/115359977</guid><author>z333205</author><pubDate>Wed, 31 Mar 2021 21:16:53 +0800</pubDate><description><![CDATA[最近看了下Jacoco源码，对插装后的代码反编译，有看到定义$jacocoInit()方法，但无法反编译具体实现。通过阅读官方文档以下说明：
Object access = ...                          // Retrieve instance

Object[] args = new Object[3];
args[0] = Long.valueOf(8060044182221863588); // class id
args[1] = "com/example/MyClass]]></description><category></category></item><item><title><![CDATA[Java变更行单元测试覆盖率]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/115359856</link><guid>https://blog.youkuaiyun.com/z333205/article/details/115359856</guid><author>z333205</author><pubDate>Wed, 31 Mar 2021 20:25:14 +0800</pubDate><description><![CDATA[概述
Java应用代码的单元测试覆盖率工具Jacoco已经非常成熟及完善了。对于历史的Java项目很多都是没有单元测试的，往往在新的在迭代的过程中都希望能有变更代码行的单元测试覆盖率，从而提高迭代质量。
本文介绍怎么基于jacoco和maven构建变更行单元测试覆盖率报告。对于全量单测覆盖率报告怎么使用可以参考Jacoco官方文档
获取变更行
要构建变更行测试覆盖率，那么首先我们要定位出源代码的变更文件和对应变更行号。

获取变更文件列表

git diff --name-status  ${baseCom]]></description><category></category></item><item><title><![CDATA[基于nginx快速搭建直播服务]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/112376259</link><guid>https://blog.youkuaiyun.com/z333205/article/details/112376259</guid><author>z333205</author><pubDate>Fri, 08 Jan 2021 18:15:39 +0800</pubDate><description><![CDATA[概要说明

nginx的nginx-rtmp-module模块支持直播推流，以下记录搭建过程及步骤
Demo基于docker的linux镜像服务运行

操作步骤

编译安装nginx

# 运行docker
docker run --name debian -p1935:1935 -p8888:8888 -it debian /bin/bash

# nginx安装在/root/nginx目录下
# 创建相关文件夹，安装相关依赖库文件
cd /root
mkdir download
mkdir nginx
]]></description><category></category></item><item><title><![CDATA[聊聊微服务发布重启]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/111197894</link><guid>https://blog.youkuaiyun.com/z333205/article/details/111197894</guid><author>z333205</author><pubDate>Tue, 15 Dec 2020 13:10:58 +0800</pubDate><description><![CDATA[概述
在微服务架构体系下，服务的每一个节点都不应该是单点。每个服务都是集群部署，这样服务的发布会非常频繁。对于在大流量请求下，如何保证服务节点的发布过程中不影响任何一个业务请求往往会被忽略掉。
在分布式系统中，一个请求的异常很可能就会导致一笔业务处理失败。业务如果没有自修复能力的话，这笔业务就会中断，往往需要人工介入，甚者会收到用户投诉。
所以，在分布式微服务体系下，服务的优雅发布也是不能忽略的一部分。
服务优雅发布流程
服务的发布流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(]]></description><category></category></item><item><title><![CDATA[ApplicationContext Bean生命周期]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/96476987</link><guid>https://blog.youkuaiyun.com/z333205/article/details/96476987</guid><author>z333205</author><pubDate>Fri, 19 Jul 2019 11:15:17 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[MYSQL数据库知识整理]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/95452217</link><guid>https://blog.youkuaiyun.com/z333205/article/details/95452217</guid><author>z333205</author><pubDate>Thu, 11 Jul 2019 11:34:53 +0800</pubDate><description><![CDATA[索引
索引是一种能够加快数据的查询的数据结构。mysql主要有两种索引，HASH索引和B+Tree索引。
B+Tree索引：

Hash索引：
B+树索引和哈希索引的区别

如果是等值查询，那么哈希索引明显有绝对优势，因为只需要经过一次算法即可找到相应的键值；当然了，这个前提是，键值都是唯一的。如果键值不是唯一的，就需要先找到该键所在位置，然后再根据链表往后扫描，直到找到相应的数据；
从示意图中也...]]></description><category></category></item><item><title><![CDATA[java线程学习笔记]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/93857525</link><guid>https://blog.youkuaiyun.com/z333205/article/details/93857525</guid><author>z333205</author><pubDate>Thu, 27 Jun 2019 11:07:04 +0800</pubDate><description><![CDATA[学习博客地址：https://blog.youkuaiyun.com/hanchao5272/column/info/20199/3

1. Java线程状态图

2. 并发-原子性、可见性、顺序性


]]></description><category></category></item><item><title><![CDATA[TCP/IP报文及tcp状态流转]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/93031294</link><guid>https://blog.youkuaiyun.com/z333205/article/details/93031294</guid><author>z333205</author><pubDate>Thu, 20 Jun 2019 14:20:37 +0800</pubDate><description><![CDATA[链路层报文

IP报文

ICMP报文

PING回显报文

TCP报文

TCP连接状态变更


]]></description><category></category></item><item><title><![CDATA[Mysql执行计划Explain类型字段说明]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/88855138</link><guid>https://blog.youkuaiyun.com/z333205/article/details/88855138</guid><author>z333205</author><pubDate>Wed, 27 Mar 2019 23:00:38 +0800</pubDate><description><![CDATA[Explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

type字段含义
type字段说明了查询语句的关联类型，更准确的说法是访问类型–换言之就是Mysql决定如何查找表中的行。
下面是最重要的访问方法，依次从差到最优：  All -&gt; Index -&gt; range -&gt; ref -&gt; eq_ref -...]]></description><category></category></item><item><title><![CDATA[一张图理解Mysql聚簇索引]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/88805368</link><guid>https://blog.youkuaiyun.com/z333205/article/details/88805368</guid><author>z333205</author><pubDate>Mon, 25 Mar 2019 20:33:26 +0800</pubDate><description><![CDATA[聚簇索引的叶子节点存储数据行及主键ID，二级索引存储索引值和对应的主键ID；对应二级索引查询到主键之后需要通过主键索引获取数据行(二次查询)


非聚簇存储数据独立存储，主键索引和二级索引存储对应索引值和数据的地址指针



...]]></description><category></category></item><item><title><![CDATA[JAVA即时编译--深入理解JAVA虚拟机读书笔记]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/88579020</link><guid>https://blog.youkuaiyun.com/z333205/article/details/88579020</guid><author>z333205</author><pubDate>Fri, 22 Mar 2019 15:40:05 +0800</pubDate><description><![CDATA[及时编译: JIT
https://www.ibm.com/developerworks/cn/java/j-lo-just-in-time/index.html
public class TrueFalseVO {
	private static final  int NUM=15000;
	
	private static int doubleValue(int i) {
	    for (...]]></description><category></category></item><item><title><![CDATA[ThreadLocal源码解析]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/88551975</link><guid>https://blog.youkuaiyun.com/z333205/article/details/88551975</guid><author>z333205</author><pubDate>Thu, 14 Mar 2019 14:21:48 +0800</pubDate><description><![CDATA[转载出处：
【huachao1001的专栏：http://blog.youkuaiyun.com/huachao1001】
【huachao1001的专栏：http://blog.youkuaiyun.com/huachao1001】

数据存取

ThreadLocal的使用相信大家都比较熟悉，但是ThreadLocal内部是如何做到为不同线程保存不同的副本的呢？能看到这篇文章，说明你也跟我一样好奇。接下来我们一层一...]]></description><category></category></item><item><title><![CDATA[JAVA类加载机制--深入理解JAVA虚拟机读书笔记]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/88391673</link><guid>https://blog.youkuaiyun.com/z333205/article/details/88391673</guid><author>z333205</author><pubDate>Mon, 11 Mar 2019 12:50:21 +0800</pubDate><description><![CDATA[参考：https://www.jianshu.com/p/ace2aa692f96



]]></description><category></category></item><item><title><![CDATA[JAVA垃圾收集器--深入理解JAVA虚拟机读书笔记]]></title><link>https://blog.youkuaiyun.com/z333205/article/details/87643184</link><guid>https://blog.youkuaiyun.com/z333205/article/details/87643184</guid><author>z333205</author><pubDate>Wed, 27 Feb 2019 21:16:39 +0800</pubDate><description><![CDATA[文章目录一、JAVA垃圾收集(GC)1. 程序计数器--线程私有2. Java虚拟机栈--线程私有3. 本地方法栈--线程私有4. Java堆--线程共享5. 方法区--线程共享6. 运行时常量池--线程共享7. 直接内存--线程共享二、JAVA对象内存布局1. 对象的创建2. 对象内存布局3. 对象的访问定位
一、JAVA垃圾收集(GC)
Java垃圾收集需要完成以下三件事情：

哪些内存需要回...]]></description><category></category></item></channel></rss>