- 浏览: 179863 次
- 性别:
- 来自: 深圳
最新评论
-
panhl:
我也实现了一个https://github.com/panho ...
具有相同属性任务串行有序执行的线程池设计 -
fengwei5129:
感谢,最近在看netty源码一直搞不清楚是如何实现的死锁检测, ...
Future机制用于并发编程时的死锁检测 -
OpenMind:
发现IBM JDK的System.nanoTime()没有实现 ...
Java系统时钟几个值得思考的问题 -
lvhongfen:
好了,感谢LZ分享
windows下plsql 设置 里面timestamp显示的格式 -
OpenMind:
今天发现,在linux下还有个很简介的方法查看线程的转储信息, ...
不依赖jstack的java 线程dump和死锁检查工具
文章列表
把hexo博客的源码和生成的页面实时同步到github和gitcafe。
用搜索引擎搜索”github 博客”等关键字会出现大量很好的文章教小白一步步搭建。我这里列出一些关键点,希望可以让你少走弯路。这篇博客的markdown源代码在:https://gi ...
java线程dump可以使用jdk的命令“jstack pid”完成,死锁检查可以用jconsole查看到。这两个工具是java调试的常用方法。
我遇到的问题是:在sles11sp3的服务上面测试,上面只有IBM J9 VM jre,默认没有装jdk,装了jdk后发现没有jstack命令,由于系统没有启动图形界面,jconsole也无法使用,最后安装了vnc server,在xterm里面打开jconsole才定位到问题。
于是我想做一个不依赖jdk,在J9 VM jre和oracle的 jre下都可以打印堆栈的工具。于是就有了下面的东西。
这个工具只能获取到当前J ...
我有一个这样的线程池的场景,相信很多人都遇到过: 1,每个用户都可以添加多个任务; 2,有很多的用户和很多的任务; 3,每个用户添加的任务必须有序串行执行,即在同一时刻不能有同时执行一个用户的两个任务; 4,实时性:只要线程池线程有空闲的,那么用户提交任务后必须立即执行;尽可能提高线程的利用率。
代码比较简洁,基本满足上述要求:
public class SerialThreadExecutor {
private Executor executor;
private ConcurrentMap<Object, SequentialJob> serialJobs = ...
去年我一同学要我破解unity.exe,然后挂在网上卖点钱花。后来我对破解过程涉及的技术问题痴迷了,再后来...
unity.exe是一个windows下的二进制程序,有一个用xml签名的license文件,license文件分几个部分:
1,一个CA认证机构的证书(好像是PACE Anti-Piracy):certCA;
2,unity机构的证书:certU;
3,使用certU签名的关于当前用户的使用期限、能使用的功能等等:UserInfo;
(上述1,2,3都是用标准xml signature保存的)
unity.exe把certU存了一份放在源码里面,我是怎么知 ...
前段时间用netty3.x做了一个pipe的功能,读的速度很快,写的速度很慢,结果读总是把内存耗光(来不及写写到pipe的另一端),后面解决了这个问题。
原来的pipe的代码:
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
...
jgroups创建一个channel需要创建一个协议栈,协议栈的底层是传输协议,如果使用TCP的话,它的发现机制和心跳是怎么实现的呢?
首先,TCP启动的时候会启动一个SocketServer bind到一个特定的地址然后accept:ConnectionAcceptor。jgroups会给每个TCP socketServer创建一个ConnectionMap<ipAddress->TCPConnection>,当accept到一个连接之后会创建一个TCPConnection对象put进这个Map。(TCPConnection对象用于读写数据)
心跳线程是一个 ...
问题1:为什么InputStream.read()读取一个byte却返回一个int呢?
InputStream.read()返回一个unsigned byte [0 - 255],而java里面没有这个类型,所以用int接收。
byte的范围是[-128,127],所以如果read()返回的数在[128,255]的范围内时,则表示负数,即
(byte)128=-128
(byte)129=-127
(byte)255=-1
所以如果read()返回的是byte的话,那就会有负数。而"返回-1意味着结束",这个信息量用byte是无法表达的 ...
System.currentTimeMillis()是依赖于系统时钟的,也就是说,如果你把自己的系统时钟更改了,这个函数的返回会立即生效,变成更改后的值;
System.nanoTime()主要用于记录一个时间段的长度,或者说一个超时,在这个过程中,你更改系统时钟也不会影响。
两个方法的精度一个是毫秒,一个是纳秒,但都是不靠普的(有些系统的时间粒度是10ms),nanoTime()的调用也会消耗几微妙,所以不靠普;
但粒度不是我讨论的重点。
我们程序中的timer是很常用的功能,归根到底到下面的API:
LockSupport. public static void p ...
Class.getResourceAsStream("abc.properties")方法:
1,如果使用“/”开头则从类路径根目录寻找资源;
2,没有“/”开头,则选择相对路径,即当前class同包下面找;
ClassLoader.getResourceAsStream("abc.properties"):
1,不能用“/”开头,只能从根目录寻找。
2,根据不同ClassLoader实现也不一样。
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/testglog</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNameP ...
假设原来的机器是两块网卡,eth0和eth1,克隆以后,MAC也是两块,MAC地址与原来的分别都不一样,但由于系统的一些网络配置没有更新,导致克隆机器的网络启动不了,
比如会抛出异常:Bringing up interface eth0: pcnet32 device eth0 does not seepresent, delaying initialization.
或者用ifconfig -a 看到的输出也与实际情况不符,比如不存在eth0,但多了eth2,eth3等等,
下面是一些修复项目:
1.将/etc/sysconfig/network-scripts/ifc ...
用VIM打开windows下面创建的文件会出现^M字符,它表示一个回车符,
(windows下编辑器敲击回车键,键入\r和\n,表示回车和换行,linux下只会有换行符\n)
下面的方式可以去掉所有回车符:
:%s/^M//g
其中,^M不是输入^和M,而是输入:1,Ctr+V;2,回车
//g替换成空字符
Java包装类Integer比较
- 博客分类:
- java
1,用符号==比较两个对象,意味着比较他们是否是统一个对象。
2,代码Integer b = 1; 自动装箱,通过javap可以看出起始会调用:
invokestatic #16; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
即调用Integer.valueOf(int)
3,代码int a = new Integer(1); 自动拆箱,其实会调用:
invokevirtual #25; //Method java/lang/Integer.intValue:()I
即调用In ...
Future机制用于并发编程时的死锁检测
- 博客分类:
- java
Netty源码里面有个类:DeadLockProofWorker,源码如下:
public static final ThreadLocal<Executor> PARENT = new ThreadLocal<Executor>();
public static void start(final Executor parent, final Runnable runnable) {
if (parent == null) {
throw new ...
win7下防止ARP攻击:
你需要知道你的网关,通常就是路由器的物理地址(MAC)
1,管理员权限运行cmd;
2,arp -a
查看当前ARP项,注意网关的物理地址,如果与实际的不符,那么你肯定无法上网,此时你遭受了ARP攻击。
3,运行 netsh i i show in
将显示你的所有网卡的索引号Idx,比如,我的本地连接的idx是11:
4,netsh -c "i i" add neighbors 11 "网关IP" ”网关MAC地址"
将idx 11 对应的连接绑定网关的M ...