`
lippeng
  • 浏览: 455034 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
从JDK1.5开始,Thread类里加了线程状态的枚举:State。   其共有6项:NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED。   NEW:线程创建到start方法被调用前,状态为NEW;   RUNNABLE:对JVM而言是正在执行,但可能正在等待操作系统的CPU时间片;   BLOCKED:等待monitor lock,即等待进入synchronized同步块或方法;   WAITING:当调用了Object.wait(),Thread.join(),LockSupport.park()后,进入等待状 ...
写了很简单的例子,用来测试 https://github.com/OpenTSDB/async   通过例子,可以看出Deferred的使用方式,执行顺序,理解了这个例子,基本上就明白了Deferred的工作机制。   Maven依赖: <dependency> <groupId>com.stumbleupon</groupId> <artifactId>async</artifactId> <version>1.4.1 ...
众所周知,在Linux上,Home目录是一个很重要的概念。Windows上也有类似的一个目录,比如C:\Documents and Settings\Barton,就是Barton这个用户的Home目录。   只是,Documents and Settings 这个文件夹名字,我非常非常不喜欢,就像不喜欢C:\Program Files中的Program Files一样,硬是要把它简化成App,这个也要来改一改。   1、我的电脑 -->右键-->管理,找到本地用户和组,选用户,出来以下界面:   2、在你要修改的用户(这里用Barton)上右键,选择属性:   ...
重新用Windows后,一下子不知道要用什么软件了,觉得有必要整理下。   输入法:小狼毫 聊天:QQ,微信 浏览器:Chrome 笔记:印象笔记 编辑器:Sublime 邮箱:Foxmail 命令行:ConEmu(本机),xshell(远程) 资源管理器:Clover 手势:WGestures 翻译:Lingoes 编码:IDEA CE 字体美化:MacType  
基于Spring boot的非常简单的WebSocket客户端与服务端通信,真心不想写Socket,用Netty写着太累,真心没多少时候需要那么好的性能。   在握手时,试着传个参数,发现没问题,整体用起来,Spring的东西很靠谱。   服务端:   import com.google.common.base.Strings; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; imp ...
测试报上来一个问题,我们几个开发机器上都不能重现,仔细看了下异常提示,确定是这台Windows测试机器少dll。   这个项目用到leveldbjni-all这个内置jni的包,但少了系统的dll,这个Jar就不能正常工作了。   如何知道少了哪些dll呢?   找到一个比较好的工具:DllWalker   这是一个绿色软件,从官方下载下来,双击depends.exe即可运行,点 打开,选 leveldbjni.dll,这个软件会分析出来 缺少哪些dll,当把这次提示的dll都装好后,F5刷新一下,可能还会有新的未安装的dll,这些是刚才安装的dll的依赖。   dll到哪 ...
最近做的事情,日期时间用的是字符串在传,需要对之进行校验。   网上看了看,没找到非常满意的,于是自己动手,写了一个。   其中不完美的是:没有根据闰年判断2月分有没有29这一天。   其中要说明的:   1、年份限制在2000~2999这1000年中。 2、基本格式如下: 年:yyyy 月:yyyy-[M]M 日:yyyy-[M]M-[d]d 时:yyyy-[M]M-[d]d HH:00:00 时间:yyyy-[M]M-[d]d HH:mm:ss   private static final String yearPattern = "^2[0- ...
写了个UDP广播的例子,发送广播包,等待回复,3秒钟没有回复结束。   local socket = require("socket") local udp = assert(socket.udp()) udp:setoption('broadcast', true) udp:settimeout(3) assert(udp:sendto("Z-SEARCH * \r\n", '255.255.255.255', 12345)) local r = udp:receive() while r do print(r) p ...
在SSL握手时,客户端需要知道服务端的证书,如果证书必须先存在客户端的KeyStore中,那挺麻烦的!   在SSL握手过程中,服务端的确会把证书发给客户端,客户端肯定能拿到! 开始一直想着,一次握手,即拿到证书,又用这个证书来握手,建立连接,后来发现几乎不可行!   决定第一次握手时,先把证书拿到,再进行第二次SSL正式握手!用WireShark来看,Chrome访问HTTPS的站点也是这样做的!   不废话,直接上可用的代码:   import org.apache.http.conn.ssl.SSLContexts; import javax.net.ssl.*; ...
一个数据库表中,开始可能随便放了一些数据,之后把多个字段定为复合主键(表示这几个字段组合后记录唯一)后,这几个字段组合起来,表中有重复的行,即垃圾数据,需要清理!   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 group by COL_1,COL_2,COL_3,COL_4 having count(*) > 1) and ID <> (select MAX(ID) ...
1、哪些线程使用过高? top -H -p <PID>  可以按CPU使用运行排序,在top中按P。   2、把这些线程号记录下来;   3、打印JVM的堆栈信息: jstack ${PID} > ${JSTACK_FILE};   4、把线程号转成16进制,到文件中找到这些线程;   5、根据线程的堆栈,分析具体原因。

jstatd的配置

为了在本机上方便用jvisualvm看linux机器上JVM运行状况,昨天配了一下jstatsd,网上教程很多。   1、先写jstatd.policy文件: grant codebase "file:/root/softs/jdk1.7.0_45/lib/tools.jar" { permission java.security.AllPermission; };   2、写启动脚本: #!/bin/bash /root/softs/jdk1.7.0_45/bin/jstatd -p 1088 -J-Djava.security.policy=/r ...
昨天发现JVM CPU使用过高,到网上找分析工具,找到了这个叫jkiller的东东,记录一下。   项目地址:https://github.com/54chen/jkiller   当前完整脚本如下:   #!/bin/sh export LANG="zh_CN.UTF-8"; export LC_ALL="zh_CN.UTF-8"; LOG_FILE="/tmp/jkiller.log"; JSTACK_FILE="/tmp/jstack.log"; PID="$1&q ...
一个java应用写好了,如何布署呢?   对程序员来说,真懒着管布署的事,写出来能跑,在IDE中能看,任务完成!   可做出来的东西,是要给人用的,并且不是给程序员用的,所以。。。   现在第三方库用的很多很多,打成一个Jar包,是件很方便的事,包太多,管理classpath有点烦。   一般java应用分成bin,conf,lib至少这3个文件夹,各有分工。   bin中放可执行的,conf放配置,lib放jar包。   希望conf和lib中所有的包加入到classpath中。   网上找的脚本,很多不能直接用,找来一个可以用的,自己亲测过,保存下来。   ...
今天写了几篇博客,是我在公司内部技术分享的内容。   第一篇:Java Socket    第二篇:Java NIO   第三篇:Netty   PPT和源码,见附件!
Global site tag (gtag.js) - Google Analytics