<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lippeng的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lippeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lippeng]]></copyright><item><title><![CDATA[Java线程状态]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84917258</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84917258</guid><author>lippeng</author><pubDate>Mon, 12 Mar 2018 09:54:23 +0800</pubDate><description><![CDATA[
从JDK1.5开始，Thread类里加了线程状态的枚举：State。
 
其共有6项：NEW，RUNNABLE，BLOCKED，WAITING，TIMED_WAITING，TERMINATED。
 
NEW：线程创建到start方法被调用前，状态为NEW；
 
RUNNABLE：对JVM而言是正在执行，但可能正在等待操作系统的CPU时间片；
 
BLOCKED：等待monito...]]></description><category></category></item><item><title><![CDATA[Java异步编程之Deferred]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84817618</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84817618</guid><author>lippeng</author><pubDate>Sun, 18 Sep 2016 13:43:39 +0800</pubDate><description><![CDATA[
写了很简单的例子，用来测试 https://github.com/OpenTSDB/async
 
通过例子，可以看出Deferred的使用方式，执行顺序，理解了这个例子，基本上就明白了Deferred的工作机制。
 
Maven依赖：
        &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;com.stumbleupon&amp;lt;/...]]></description><category></category></item><item><title><![CDATA[修改Windows XP Home目录]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84805115</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84805115</guid><author>lippeng</author><pubDate>Thu, 02 Jun 2016 14:41:48 +0800</pubDate><description><![CDATA[
众所周知，在Linux上，Home目录是一个很重要的概念。Windows上也有类似的一个目录，比如C:\Documents and Settings\Barton，就是Barton这个用户的Home目录。
 
只是，Documents and Settings 这个文件夹名字，我非常非常不喜欢，就像不喜欢C:\Program Files中的Program Files一样，硬是要把它简化成Ap...]]></description><category></category></item><item><title><![CDATA[Windows上常用软件整理]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84805113</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84805113</guid><author>lippeng</author><pubDate>Thu, 02 Jun 2016 14:40:49 +0800</pubDate><description><![CDATA[
重新用Windows后，一下子不知道要用什么软件了，觉得有必要整理下。
 
输入法：小狼毫
聊天：QQ，微信
浏览器：Chrome
笔记：印象笔记
编辑器：Sublime
邮箱：Foxmail
命令行：ConEmu（本机），xshell（远程）
资源管理器：Clover
手势：WGestures
翻译：Lingoes
编码：IDEA CE
字体美化：MacType
 ...]]></description><category></category></item><item><title><![CDATA[Spring Web Socket 客户端 服务端实现 握手时传递参数]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84803386</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84803386</guid><author>lippeng</author><pubDate>Fri, 20 May 2016 11:19:52 +0800</pubDate><description><![CDATA[
基于Spring boot的非常简单的WebSocket客户端与服务端通信，真心不想写Socket，用Netty写着太累，真心没多少时候需要那么好的性能。
 
在握手时，试着传个参数，发现没问题，整体用起来，Spring的东西很靠谱。
 
服务端：
 
import com.google.common.base.Strings;

import org.springframewo...]]></description><category></category></item><item><title><![CDATA[Java Jni 在 Windows 上 少 dll 解决方法]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84803370</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84803370</guid><author>lippeng</author><pubDate>Fri, 20 May 2016 10:42:44 +0800</pubDate><description><![CDATA[
测试报上来一个问题，我们几个开发机器上都不能重现，仔细看了下异常提示，确定是这台Windows测试机器少dll。
 
这个项目用到leveldbjni-all这个内置jni的包，但少了系统的dll，这个Jar就不能正常工作了。
 
如何知道少了哪些dll呢？
 
找到一个比较好的工具：DllWalker
 
这是一个绿色软件，从官方下载下来，双击depends.exe即可运行，点...]]></description><category></category></item><item><title><![CDATA[Java 日期 时间 字符串 正则 校验]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84802326</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84802326</guid><author>lippeng</author><pubDate>Thu, 12 May 2016 15:55:04 +0800</pubDate><description><![CDATA[
最近做的事情，日期时间用的是字符串在传，需要对之进行校验。
 
网上看了看，没找到非常满意的，于是自己动手，写了一个。
 
其中不完美的是：没有根据闰年判断2月分有没有29这一天。
 
其中要说明的：
 
1、年份限制在2000~2999这1000年中。
2、基本格式如下：
年：yyyy
月：yyyy-[M]M
日：yyyy-[M]M-[d]d
时：yyyy-[M]M-...]]></description><category></category></item><item><title><![CDATA[lua socket UDP 广播包 例子]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84755587</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84755587</guid><author>lippeng</author><pubDate>Wed, 09 Dec 2015 21:09:14 +0800</pubDate><description><![CDATA[
写了个UDP广播的例子，发送广播包，等待回复，3秒钟没有回复结束。
 
local socket = require(&quot;socket&quot;)

local udp = assert(socket.udp())
udp:setoption('broadcast', true)
udp:settimeout(3)

assert(udp:sendto(&quot;Z-SEARCH * \r\n&quot;,...]]></description><category></category></item><item><title><![CDATA[在SSL握手之前，拿到服务端的证书]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84686562</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84686562</guid><author>lippeng</author><pubDate>Wed, 19 Nov 2014 09:57:15 +0800</pubDate><description><![CDATA[
在SSL握手时，客户端需要知道服务端的证书，如果证书必须先存在客户端的KeyStore中，那挺麻烦的！
 
在SSL握手过程中，服务端的确会把证书发给客户端，客户端肯定能拿到！
开始一直想着，一次握手，即拿到证书，又用这个证书来握手，建立连接，后来发现几乎不可行！
 
决定第一次握手时，先把证书拿到，再进行第二次SSL正式握手！用WireShark来看，Chrome访问HTTPS的站点...]]></description><category></category></item><item><title><![CDATA[根据复合主键删除表中重复数据]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84686559</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84686559</guid><author>lippeng</author><pubDate>Wed, 19 Nov 2014 09:52:10 +0800</pubDate><description><![CDATA[
一个数据库表中，开始可能随便放了一些数据，之后把多个字段定为复合主键（表示这几个字段组合后记录唯一）后，这几个字段组合起来，表中有重复的行，即垃圾数据，需要清理！
 
delete from A_TABLE
where 
(COL_1,COL_2,COL_3,COL_4) in 
	(select COL_1,COL_2,COL_3,COL_4 
	 from A_TABLE 
	...]]></description><category></category></item><item><title><![CDATA[查JVM 的 CPU占用过高的通用思路]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84518430</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84518430</guid><author>lippeng</author><pubDate>Wed, 08 Jan 2014 12:12:36 +0800</pubDate><description><![CDATA[
1、哪些线程使用过高？
top -H -p &amp;lt;PID&amp;gt;
 可以按CPU使用运行排序，在top中按P。
 
2、把这些线程号记录下来；
 
3、打印JVM的堆栈信息：
jstack ${PID} &amp;gt; ${JSTACK_FILE};
 
4、把线程号转成16进制，到文件中找到这些线程；
 
5、根据线程的堆栈，分析具体原因。
...]]></description><category></category></item><item><title><![CDATA[jstatd的配置]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84518428</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84518428</guid><author>lippeng</author><pubDate>Wed, 08 Jan 2014 12:01:45 +0800</pubDate><description><![CDATA[
为了在本机上方便用jvisualvm看linux机器上JVM运行状况，昨天配了一下jstatsd，网上教程很多。
 
1、先写jstatd.policy文件：
grant codebase &quot;file:/root/softs/jdk1.7.0_45/lib/tools.jar&quot; {
   permission java.security.AllPermission;
};
 
2、...]]></description><category></category></item><item><title><![CDATA[jkiller]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84518422</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84518422</guid><author>lippeng</author><pubDate>Wed, 08 Jan 2014 11:46:13 +0800</pubDate><description><![CDATA[
昨天发现JVM CPU使用过高，到网上找分析工具，找到了这个叫jkiller的东东，记录一下。
 
项目地址：https://github.com/54chen/jkiller
 
当前完整脚本如下：
 
#!/bin/sh

export LANG=&quot;zh_CN.UTF-8&quot;;
export LC_ALL=&quot;zh_CN.UTF-8&quot;;

LOG_FILE=&quot;/tmp/jk...]]></description><category></category></item><item><title><![CDATA[bat shell 启动 java]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84459515</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84459515</guid><author>lippeng</author><pubDate>Wed, 17 Jul 2013 14:22:45 +0800</pubDate><description><![CDATA[
一个java应用写好了，如何布署呢？
 
对程序员来说，真懒着管布署的事，写出来能跑，在IDE中能看，任务完成！
 
可做出来的东西，是要给人用的，并且不是给程序员用的，所以。。。
 
现在第三方库用的很多很多，打成一个Jar包，是件很方便的事，包太多，管理classpath有点烦。
 
一般java应用分成bin，conf，lib至少这3个文件夹，各有分工。
 
bin中放...]]></description><category></category></item><item><title><![CDATA[Java网络编程 NIO Netty]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84459011</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84459011</guid><author>lippeng</author><pubDate>Tue, 16 Jul 2013 09:28:56 +0800</pubDate><description><![CDATA[
今天写了几篇博客，是我在公司内部技术分享的内容。
 
第一篇：Java Socket 
 
第二篇：Java NIO
 
第三篇：Netty
 
PPT和源码，见附件！
]]></description><category></category></item><item><title><![CDATA[Netty]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84459006</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84459006</guid><author>lippeng</author><pubDate>Tue, 16 Jul 2013 09:20:03 +0800</pubDate><description><![CDATA[
Netty是什么？
 
本质：JBoss做的一个Jar包
 
目的：快速开发高性能、高可靠性的网络服务器和客户端程序
 
优点：提供异步的、事件驱动的网络应用程序框架和工具
 
通俗的说：一个好使的处理Socket的东东
 
 
如果没有Netty？
 
远古：java.net + java.io
 
近代：java.nio
 
其他：Mina，Grizzly...]]></description><category></category></item><item><title><![CDATA[Java NIO]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84458995</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84458995</guid><author>lippeng</author><pubDate>Tue, 16 Jul 2013 09:06:18 +0800</pubDate><description><![CDATA[
java 1.4之后，有了NIO，很有意思。。。
 
介绍NIO，需要介绍一些基本的概念：
 
Reactor模式
 
 
Selector
Selector（选择器）是Java NIO中能够检测一到多个NIO通道，并能够知晓通道是否为诸如读写事件做好准备的组件。
 
这样，一个单独的线程可以管理多个channel，从而管理多个网络连接。
 
这个组件，是与操作系统相关的...]]></description><category></category></item><item><title><![CDATA[Java Socket]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84458992</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84458992</guid><author>lippeng</author><pubDate>Tue, 16 Jul 2013 08:46:07 +0800</pubDate><description><![CDATA[
前段时间用Java写了点网络编程，写几篇博客纪念一下。。。
 
本文参考：http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html
 
其中关于网编的基础内容，讲解的很好！
 
什么是Socket？
网络上的两个程序通过一个双向的通讯连接实现数据的交换，这个双向链路的一端称为一个Socket。
 
Sock...]]></description><category></category></item><item><title><![CDATA[Clojure 读取 保存 对象]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84411189</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84411189</guid><author>lippeng</author><pubDate>Fri, 22 Mar 2013 15:26:58 +0800</pubDate><description><![CDATA[
读《实用Common Lisp编程》时，读到 可以把Lisp数据结构直接持久化到文件中，之后，可以从该文件中读回Lisp对象，同时，文件中存储的内容是Lisp形式，和XML一样，是人可读的，觉得很赞。
 
Clojure中一样也可以这么做，并且非常简单。
 
1、把一个Clojure的Map保存的文件 hello.txt中：
user=&amp;gt; (spit &quot;hello.txt&quot; {:...]]></description><category></category></item><item><title><![CDATA[IDEA常用插件]]></title><link>https://blog.youkuaiyun.com/lippeng/article/details/84406986</link><guid>https://blog.youkuaiyun.com/lippeng/article/details/84406986</guid><author>lippeng</author><pubDate>Tue, 12 Mar 2013 10:12:11 +0800</pubDate><description><![CDATA[
IDEA每次升级，插件要重装，每装一次，这些插件都要重新装过。
以前用过很多插件，因为升级等原因，都忘记装回来，还有一个很重要的原因，就是没有它们也行！
列一下自己现在用的插件吧！
1、File Info 看文件的信息，简单讲，就是Ctrl-F10，最初是用它来看文件编码，后来拷路径名称等都用它;
2、Identifier Highlighter，选中变量的标识，用到的地方会高亮，这个插...]]></description><category></category></item></channel></rss>