<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CommanderZero的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CommanderZero</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CommanderZero]]></copyright><item><title><![CDATA[mvn命令汇总]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/121793461</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/121793461</guid><author>CommanderZero</author><pubDate>Wed, 08 Dec 2021 15:55:07 +0800</pubDate><description><![CDATA[mvn命令汇总
maven安装jar包到本地仓库并且跳过单元测试
进入到Pom文件所在文件目录，然后输入命令
$ mvn clean install -Dmaven.test.skip=true


]]></description><category></category></item><item><title><![CDATA[常见证书格式和openssl格式转换命令]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/121000473</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/121000473</guid><author>CommanderZero</author><pubDate>Wed, 27 Oct 2021 20:05:46 +0800</pubDate><description><![CDATA[常见证书格式和openssl格式转换命令
证书格式
PEM格式
PEM格式是CA颁发证书的最常见格式，在文件头尾分别有“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”。
多个证书甚至私钥都可以放在同一个PEM文件里，一个挨着一个防止。
PEM格式证书特点如下：

Base64编码的ASCII文件
一般以".pem"，".crt"，".cer"，".key"等作为文件名后缀

DER格式
DER格式证书是PEM格式证书的二进制形式。所有类型的证]]></description><category></category></item><item><title><![CDATA[2021-01-18]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/112762024</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/112762024</guid><author>CommanderZero</author><pubDate>Mon, 18 Jan 2021 09:35:07 +0800</pubDate><description><![CDATA[常用的tcpdump命令
分析arp报文
# tcpdump -i eth0 arp -v


]]></description><category></category></item><item><title><![CDATA[使用tcpdump分析TCP的三次握手和四次挥手]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/109012129</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/109012129</guid><author>CommanderZero</author><pubDate>Sun, 11 Oct 2020 16:51:42 +0800</pubDate><description><![CDATA[使用tcpdump分析TCP的三次握手和四次挥手
自我感觉网络基础太薄弱了，最近打算恶补一下，先从TCP的建立连接和断开连接开始吧。
理论知识
从课本上我们都学过TCP建立连接的三次握手和断开连接的四次挥手，网络上相关的介绍博客也很多，推荐一个博客计算机之间是如何进行通信的？；详解三次握手和四次挥手，介绍得非常透彻易懂，感谢作者。
建立TCP server和client
使用python写了两个脚本：server.py和client.py，分别使用python socket实现TCP的server端和cli]]></description><category></category></item><item><title><![CDATA[Java UT用例实践记录]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/106363922</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/106363922</guid><author>CommanderZero</author><pubDate>Tue, 26 May 2020 20:27:29 +0800</pubDate><description><![CDATA[Java UT用例实践记录
最近重构过程中在补充以前代码的用例，正好把UT用例的实践经验记录下来。
Redis打桩
很多程序都会使用redis管理缓存，UT用例需要解除对远端redis server的依赖，实现用例本地运行。上网找了一些资料加自己实践，推荐使用Embedded RedisServer。
maven
&lt;dependency&gt;
  &lt;groupId&gt;it.ozimov&lt;/groupId&gt;
  &lt;artifactId&gt;embedded-redis&l]]></description><category></category></item><item><title><![CDATA[集合运算基本定律]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/104283718</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/104283718</guid><author>CommanderZero</author><pubDate>Wed, 12 Feb 2020 19:49:17 +0800</pubDate><description><![CDATA[集合运算基本定律
等幂律
S1:A∩A=AS1: A \cap A = AS1:A∩A=A
S2:A∪A=AS2: A \cup A =AS2:A∪A=A
结合律
S3:A∪(B∪C)=(A∪B)∪CS3: A \cup (B \cup C) = (A \cup B) \cup CS3:A∪(B∪C)=(A∪B)∪C
S4:(A∩B)∩C=A∩(B∩C)S4: (A \cap B) \cap C ...]]></description><category></category></item><item><title><![CDATA[常用逻辑等价式和逻辑蕴涵式（附证明）]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/104214354</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/104214354</guid><author>CommanderZero</author><pubDate>Fri, 07 Feb 2020 19:57:04 +0800</pubDate><description><![CDATA[常用逻辑恒等式（附真值表）德.摩根律真值表设定内容居中、居左、居右KaTeX数学公式
德.摩根律
¬(p∨q)⇔¬p∧¬q
\lnot(p \lor q) \Leftrightarrow \lnot p \land \lnot q
¬(p∨q)⇔¬p∧¬q
¬(p∧q)⇔¬p∨¬q
\lnot(p \land q) \Leftrightarrow \lnot p \lor \lnot q
¬(p∧...]]></description><category></category></item><item><title><![CDATA[MySQL自增字段并发插入导致死锁]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/102823011</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/102823011</guid><author>CommanderZero</author><pubDate>Wed, 30 Oct 2019 17:50:01 +0800</pubDate><description><![CDATA[MySQL带自增字段的表在并发插入时发生死锁
问题
'int' object has no attribute 'encode'", &lt;class 'mysql.connector.errors.InternalError'&gt;, (1213, '1213 (40001): Deadlock found when trying to get lock; try restarting tr...]]></description><category></category></item><item><title><![CDATA[不改一行代码将servlet工程改造成springboot工程]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/102575574</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/102575574</guid><author>CommanderZero</author><pubDate>Tue, 15 Oct 2019 22:36:52 +0800</pubDate><description><![CDATA[不改一行代码将servlet工程改造成springboot工程
碰到一个项目，web接口是最基础的servlet3.0，业务逻辑的部分实现还用到了spring beans，web的入口是web.xml，通过tomcat运行。所以web.xml基本上是下面这样：
&lt;listener&gt; 
        &lt;listener-class&gt;org.springframework.w...]]></description><category></category></item><item><title><![CDATA[Spring @Value引发的一次“血案”]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/101345567</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/101345567</guid><author>CommanderZero</author><pubDate>Wed, 25 Sep 2019 10:29:01 +0800</pubDate><description><![CDATA[Spring @Value引发的一次“血案”
“血案”
在项目中使用Spring boot开发微服务，需要从application.properties读取一个配置项，示例如下：
    @Value("${test.boolean}")
    private boolean testBoolean;

结果一次升级过程中，误将配置项test.boolean的值写成空字符串""，直接导致服务启动...]]></description><category></category></item><item><title><![CDATA[使用redis碰到maxmemory]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/100042230</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/100042230</guid><author>CommanderZero</author><pubDate>Fri, 23 Aug 2019 17:13:49 +0800</pubDate><description><![CDATA[使用redis碰到maxmemory
最近碰到一个问题，在测试环境高并发调用生产数据，等到数据清理的定时任务完成时，仍然发现大量的数据未被清理，占用较大内存空间。
因为我的key之间会有关联关系，分析残留的数据，发现数据的关联关系并不完整，不完整的数据不能被寻址所以最终残留下来了。
查看redis内存信息：
&gt; info memory
# Memory
maxmemory:140000000...]]></description><category></category></item><item><title><![CDATA[java代理的一个小坑]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/99294802</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/99294802</guid><author>CommanderZero</author><pubDate>Mon, 12 Aug 2019 12:52:07 +0800</pubDate><description><![CDATA[java代理的一个小坑
工作中一个业务逻辑需要用到java的代理，java代理需要实现InvocationHandler接口，并覆写invoke方法：
public class TestInvocationHandler : implements InvocationHandler {
	@Override
	public Object invoke(Object proxy, Method me...]]></description><category></category></item><item><title><![CDATA[常用的keytool命令]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/98884196</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/98884196</guid><author>CommanderZero</author><pubDate>Thu, 08 Aug 2019 20:29:34 +0800</pubDate><description><![CDATA[常用的keytool命令
导入证书
$ keytool -import -keystore server.keystore.jks -alias server -file server.pem

查看证书内容
$ keytool -list -v -keystore server.keystore.jks

删除证书
$ keytool -delete -keystore server.keyst...]]></description><category></category></item><item><title><![CDATA[2019-07-30 python对象序列化成json]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/97817965</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/97817965</guid><author>CommanderZero</author><pubDate>Tue, 30 Jul 2019 21:16:10 +0800</pubDate><description><![CDATA[今日积累
python对象序列化成json
def obj_2_json(msg):
    return {
        "id": msg.id,
        "type": msg.type
    }


class Msg(object):

    def __init__(self, id, data_type):
        self.id = id
        s...]]></description><category></category></item><item><title><![CDATA[2019-07-29 今日小坑]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/97630574</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/97630574</guid><author>CommanderZero</author><pubDate>Mon, 29 Jul 2019 14:10:10 +0800</pubDate><description><![CDATA[今日积累
坑1：python字典不能直接用于json序列化
所在项目python是Kafka的生产者，需要往topic发送一段Json，组织消息体时直接用了字典。
msg = {"key": value}
print str(msg)

结果打印输出{'key': u'hello'}这样的字符串，使用单引号，且因为编码问题在value前面加上’u’，导致消息无法直接反序列化成JSON。
坑2：ja...]]></description><category></category></item><item><title><![CDATA[日志分析涉及的命令]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/95592373</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/95592373</guid><author>CommanderZero</author><pubDate>Fri, 12 Jul 2019 10:01:07 +0800</pubDate><description><![CDATA[今日积累
按某个字段过滤
需要分析tomcat的access log，找到错误码为404的请求是哪些：
&gt; $ awk -F ' ' '$10==404{print $4,$8}' localhost_access_log.2019-07-11.txt


]]></description><category></category></item><item><title><![CDATA[从python BaseHTTPServer上深入理解HTTP协议]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/95447174</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/95447174</guid><author>CommanderZero</author><pubDate>Thu, 11 Jul 2019 10:10:47 +0800</pubDate><description><![CDATA[从python BaseHTTPServer上深入理解HTTP协议
因为项目关系，需要写一个简单的web服务做测试桩，为了开发和部署方便，选择了Python开发，及python自带的BaseHTTPServer，不依赖其他三方件。
关于如何用Python编写一个简单的Http Server，可以自行搜索，我参考了这篇文章：https://blog.youkuaiyun.com/u010087956/artic...]]></description><category></category></item><item><title><![CDATA[常用的openssl命令]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/90443446</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/90443446</guid><author>CommanderZero</author><pubDate>Wed, 22 May 2019 14:32:29 +0800</pubDate><description><![CDATA[今日积累
openssl命令
查看证书信息
openssl x509 -noout -text -in ca.crt
验证CA签发的证书
openssl verify -CAfile ca.crt myserver.crt
验证自签名证书
openssl verify selfsign.crt
查看Key信息
openssl rsa -noout -text -in myserver.key
计算......]]></description><category></category></item><item><title><![CDATA[2019-05-14 nginx根域名重定向配置]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/90214708</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/90214708</guid><author>CommanderZero</author><pubDate>Tue, 14 May 2019 20:46:34 +0800</pubDate><description><![CDATA[今日积累
nginx
碰到这样一个场景，假设需要发布一个xxx.123.com，但是后端服务的location有且仅有/abc，为了方便用户快速使用，需要将xxx.123.com根域名的访问请求转到xxx.123.com/abc。或者同一个域名下有多个后端location，但是对于根域名的访问希望能自动转向门户。
可以通过下面的配置解决：
location = / {
    return 302...]]></description><category></category></item><item><title><![CDATA[2019-05-13]]></title><link>https://blog.youkuaiyun.com/CommanderZero/article/details/90166813</link><guid>https://blog.youkuaiyun.com/CommanderZero/article/details/90166813</guid><author>CommanderZero</author><pubDate>Mon, 13 May 2019 09:23:09 +0800</pubDate><description><![CDATA[今日积累
Linux命令
rpm
RPM 的全称为Redhat Package Manager ，是由Redhat 公司提出的，用于管理Linux 下软件包的软件。
安装
命令：
rpm -i 需要安装的包文件名
举例如下：
rpm -i example.rpm 安装 example.rpm 包；
rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的...]]></description><category></category></item></channel></rss>