
J2SE
文章平均质量分 66
wavefly_liu
每一天都在学习,每一天都在进步!
展开
-
消失的Java进程-Linux OOM Killer
在一台虚拟机上执行docker java应用,每隔一段时间就会出现java进程消失、而且没有任何jvm error log的情况。略一寻思,应该是遇到网上常说的Linux OOM的情况:虚拟机10G,docker默认分配内存未做限制。原因定位去服务器上执行:dmesg | grep java,果然有数据并且查看文件: /var/log/messages 定位关键字:oom-killer,看到相关信息原创 2016-04-18 18:45:05 · 12788 阅读 · 0 评论 -
Java 序列化综述-由《Efficient Java serialization》说起
Java 序列化综述-由《Efficient Java serialization》说起Hazelcast 是一个提供分布式缓存、分布式锁、分布式线程池功能的In-Memory Data Grid的开源实现。Hazelcast数据分布式传输的序列化解决方案使用kyro方式来减少数据序列化占用的空间和消耗的时间,同时减少网络传输压力。根据《Efficient Java serializati原创 2012-06-16 23:33:15 · 2325 阅读 · 0 评论 -
解决hash冲突的策略
在解决hash collision问题的时候发现resin4.0.7和resin4.0.26中临时保存form参数的Map实现类不同。4.0.7使用的java.util.HashMap,resin4.0.26使用的是自定义的com.caucho.util.HashMapImpl ,参考代码:private V putImpl(K key, V value) { Object i原创 2012-06-06 11:44:25 · 1440 阅读 · 0 评论 -
xmemcached-yanf4j介绍(一)
csdn blog 不支持slideshare,严重鄙视,下面是连接Head first in xmemcached yanf4jView more presentations from wavefly 这是代码中涉及的流程图和类图:http://blog.csdn.net/liu251/article/details/7246266http://blo原创 2012-02-09 17:52:17 · 2386 阅读 · 0 评论 -
xmemcached-yanf4j类图(三)
接上一篇:http://blog.csdn.net/liu251/article/details/7246266类图主要是yanf4j的核心类:Controller和Session。session用来保存每个连接,controller用来管理连接建立的事件、读写事件、连接过期事件。原创 2012-02-09 17:37:01 · 1792 阅读 · 0 评论 -
xmemcached-yanf4j事件处理流程(二)
xmemcached是目前常用的memcache客户端java版实现,通讯层是自实现的yanf4j,yanf4j借鉴了grizzly、mina、netty编码思路有点,下面是通过yanf4j做server,事件的传输流程: 以Thread:reactor[x] 为节点的右部分,可以看做一个生生不息的阴阳鱼。原创 2012-02-09 17:25:33 · 3341 阅读 · 0 评论 -
jar依赖版本不一致导致的诡异情况
在服务器上编一个b.jar之后,测试b.jar包的功能遇到一个很奇怪的错误java.lang.NoSuchMethodError: xxx.CDataOutputStream.writeVLong(JLjava/io/DataOutput;)I Caused by: java.lang.NoSuchMeth原创 2011-12-24 16:14:56 · 2091 阅读 · 0 评论 -
CAS指令与MESI缓存一致性协议
CAS(Compare-And-Swap)指令是并行程序设计最基础的基石,随着越来越多的本本都用上了双核,这个世界已经快速步入并行计算时代,CAS指令发挥的作用也就越来越大。CAS指令,在Intel CPU上称为CMPXCHG,的作用是将指定内存地址的内容与所给的某个值相比,如果转载 2011-09-22 19:39:48 · 3343 阅读 · 0 评论 -
classloader执行流程分析
这段时间学习JVM的一些总结。链接 ClassLoader简析 指向slideshare,ClassLoader简析View more presentations from wavefly 相关下载:http://download.csdn.net/s原创 2011-05-23 13:15:00 · 838 阅读 · 0 评论 -
Scala学习感想
Scala学习笔记总结原创 2011-03-20 19:28:00 · 3012 阅读 · 0 评论 -
总结java的interface和abstract class
<br />原文地址:<br />http://www.blogjava.net/vcycyv/archive/2011/02/20/344716.html<br /><br />这篇文章比网络上常见的文章写的更详细。<br /> <br />先说说interface和abstract method语法中需要注意的地方。<br />Interface:<br />1. An interface can contain fields, but these are implicitly static and f转载 2011-02-21 18:37:00 · 1335 阅读 · 0 评论 -
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream区别
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream区别转载 2011-02-21 22:33:00 · 858 阅读 · 0 评论 -
如何创建一个数据库连接池
如何创建一个数据库连接池原创 2011-03-06 22:26:00 · 2626 阅读 · 0 评论 -
jstatd jvisualvm 远程监控jvm
参考:http://sjsky.iteye.com/blog/705323jstatd [options]此命令是一个RMI Server应用程序,提供了对JVM的创建和结束监视,也为远程监视工具提供了一个可以attach的接口options -nr 当一个存在的RMI Registry没有找到时,不尝试创建一个内部的RMI Registry-p port 端口转载 2012-03-10 11:33:20 · 3891 阅读 · 0 评论 -
Java NIO编程关注点
阅读yanf4j源码对于read事件、write事件的笔记CPU大量的无效循环-写事件:只要 TCP 连接适合数据写入时就会产生 OP_WRITE 事件,基本上 95% 以上的时间都会产生 OP_WRITE 事件。由于很多时间都会产生 OP_WRITE 事件,一开始就注册的话会对服务器产生严重的性能损耗,过多的循环会导致 CPU 利用率骤增。一般来说,如果没有数据写入时不要注册 O原创 2011-11-23 15:06:56 · 2287 阅读 · 1 评论 -
javac java在mac console中文乱码的问题
java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各种诸如语法错误,数组访问越界之类的信息。但是,Mac的终端的默认编码是UTF-8,所以javac和java在未配置的情况下会输出乱码。解决方法有3个:1)指定输出的编码为UTF-8javac -J-Dfile.encoding=UTF-8java转载 2016-02-01 18:48:51 · 5865 阅读 · 0 评论 -
对象内存大小度量
对象内存大小度量原文:http://www.liaohuqiu.net/cn/posts/caculate-object-size-in-java/ 补充了文中的细节,做了一些订正,加粗斜体 是补充和订正在做内存优化时,需要知道每个对象占用的内存的大小,一个实例化的对象在内存中需要存储的信息包括:1. 对象的头部(对象的GC信息,hash值,类定义引用等)2转载 2015-12-05 23:06:30 · 6380 阅读 · 0 评论 -
jetbrain kotlin试用笔记
试用了一下kotlin语言,挺有意思的:一个基于jvm的语言,能够在jdk6上享用jdk8的lambda、deferred method、stream语法、C#的delegate、类scala语法和类型推断、ruby的code block 等特性。以前弄过一段时间的scala,实在无法忍受scala的编译速度和一次编写到处编译的特性(字节码不兼容)、天书般的APIdoc。不谈语法,为了原创 2015-11-09 14:14:47 · 15255 阅读 · 0 评论 -
推荐2个在Java编码过程好用的工具
推荐2个在编码过程中既能减少编码量,又非常容易上手的工具类:适用于Java反射和单测Assert。1 Mirror:Java反射简介官网:http://projetos.vidageek.net/mirror/mirror/将Java原生API提供的面向命令的语法:Class.getField/getDeclaredFields/getMethod()/getAnnotation之类的调用简化为DS原创 2015-06-04 10:08:49 · 7273 阅读 · 0 评论 -
Java线程CPU亲和性工具
Thread Affinity为什么需要线程的CPU亲和性应用通过多线程的方式执行,多数情况下线程能够被合理的调度。但在某些情况下某个重要的线程被暂停,而时间片被分配给了一个无关重要的线程。当一个线程每次被暂停休眠,然后被唤醒之后,需要重新加载“cache line”(cpu L1/L2 cache)。当线程的工作时间很短暂,需要被频繁的被唤醒,意味着整个流程执行都很慢,有可能比单线程情况下慢2-5翻译 2015-05-03 22:30:43 · 12032 阅读 · 2 评论 -
JVM上“表达式问题”的解决方案-《Java 下一代: 没有继承性的扩展》笔记
Java 下一代: 没有继承性的扩展,第 1 部分http://www.ibm.com/developerworks/cn/java/j-jn5/index.htmlJava 下一代: 没有继承性的扩展,第 2 部分http://www.ibm.com/developerworks/cn/java/j-jn6/index.htmlJava 下一代: 没有继承性的扩展,第 3 部分原创 2013-11-01 22:32:39 · 1188 阅读 · 0 评论 -
线程竞争导致的EOFException解决 --- 一次线上问题解决流程
1 前言在放假之前搞定这个问题,回家也安心了,感谢同事的帮忙2 现象描述这段异常在一次上线之后,经常出现。但是在上线之前,测试环境中没有出现。java.io.EOFException at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323) at java.io.Obje原创 2013-02-01 15:52:46 · 9252 阅读 · 0 评论 -
java中synchronized用法
原文链接:http://blog.csdn.net/chenguang79/archive/2006/04/26/677720.aspx synchronized的一个简单例子public class TextThread{ /** * @param args */ public static void main(String[] args) {转载 2009-03-26 18:45:00 · 777 阅读 · 0 评论 -
Java 线程笔记
sleep、wait、yield区别第一:sleep是Thread对象里面的方法;wait是Object对象里面的方法;第二:当一个synchorized成员sleep的时候并不会释放掉synchorized;但是当一个synchorized成员wait的时候是会释放掉synchorized的;第三:一个对象在sleep的时候是有时间设定限制的,除非在sleep设定原创 2009-04-29 13:59:00 · 876 阅读 · 0 评论 -
ThreadLocal笔记
原文:http://lavasoft.blog.51cto.com/62575/51926 ThreadLocal和其它同步机制相比有什么优势呢?ThreadLocal和其它所有的同步机制都是为了解决多线程中的对同一变量的访问冲突,在普通的同步机制中,是通过对象加锁来实现多个线程对同一变量的安全访问的。这时该变量是多个线程共享的,使用这种同步机制需要很细致地分析在什么时候对变量进行读写,什转载 2009-09-28 11:34:00 · 897 阅读 · 0 评论 -
Java 并发核心编程
Java 并发核心编程内容涉及:1、关于java并发2、概念3、保护共享数据4、并发集合类5线程6、线程协作及其他 1、关于java并发自从java创建以来就已经支持并发的理念,如线程和锁。这篇指南主要是为帮助java多线程开发人员理解并发的核心概念以及如何应用这些理念。本文的主题是关于具有java语言风格的Thread、synchronized、volat翻译 2010-11-03 15:41:00 · 25025 阅读 · 40 评论 -
通过线程按照顺序循环输出ABC n次
通过线程按照顺序循环输出ABC n次原创 2011-03-06 22:23:00 · 3972 阅读 · 0 评论 -
通过SSH协议访问远程Shell脚本-免密码登陆与返回数据丢失解决
通过SSH协议访问远程Shell脚本-返回数据丢失解决原创 2011-02-28 15:04:00 · 2174 阅读 · 0 评论 -
TCP/IP通信连接的多样性
刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程序,据此一些人可能会认为TCP/IP编程很简单。其实不然,TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在通信方式和报文格式的多样性上。一。通信方式主要有以下三大类:(一)SERVER/CLIENT方式1.一个Client方连接一个Server方,或称点对点(peer to peer):2.多个Client方连接一个Server方,这也是通常的并发服务器方式。3.一个Client方连接多个Server方,这种方式很少见,主要用于一个客户转载 2010-10-27 16:36:00 · 1613 阅读 · 0 评论 -
Log4j RollingFileAppender 备份日志文件名 修改
使用RollingFileAppender,每次日志容量达到要求后,生成的新日志文件名为 logfile.log.x ,个人感觉有点不舒服,想修改为:logfile.x.log,方法为: public // synchronization not necessary since doAppend is alreasy synched void rollOver() { File原创 2009-07-28 17:33:00 · 5375 阅读 · 0 评论 -
Log4j日志管理系统简单使用说明
为了方便log4j 配置查找,转帖一篇:原帖地址: http://gyfmp5.javaeye.com/blog/103253 通常,我们都提供一个名为 log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置转载 2009-07-28 17:30:00 · 3186 阅读 · 1 评论 -
区别类方法、实例方法和字段的调用
http://www.javaeye.com/topic/368796 本例根据一个实例来说明类方法和实例方法调用的区别,以及不同修饰符下的属性调用的区别,并对这种区别作出解释。 父类定义:Java代码 public class Parent{ public static String name = "父类的名字,静态常量";转载 2009-05-03 23:38:00 · 2156 阅读 · 0 评论 -
如何读取JAR包中的资源文件(如XML、TXT等)
如何读取JAR包中的资源文件(如XML、TXT等)?getResource和getResourceAsStream 问题的根源还是在于老生常谈的所谓class path,不信的话你在系统环境变量里的ClassPath加上你的jar文件,这下你就看得到你的图片了!但单独发布ja原创 2009-04-08 14:44:00 · 17203 阅读 · 0 评论 -
迷你开源单文件Java HTTP 服务器---NanoHTTPD.java
package positron.harness;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStre转载 2009-03-27 16:41:00 · 3958 阅读 · 1 评论 -
JNI-Java(Eclipse)调用dll/so
最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows)。刚刚把程序跑通,赶紧把一些心得写出来,mark。也希望对大家的类似工作有所帮助.首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll。正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多转载 2009-02-19 20:19:00 · 7794 阅读 · 0 评论 -
java的InputStream和OutputStream的理解
1、在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)2、任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象既然它能产生出数据,我们就可以将数据取出,java对封装的通用方法就read()方法了--(出水龙头)3、任何有能力接收数据源(流)的javaio对象我们就可以看作是一个OutputStream对象同样,它能接收转载 2009-02-03 16:24:00 · 21914 阅读 · 1 评论 -
Stream 转换为 String
将接收到的InputStream转换为Stringpublic String inputStream2String (InputStream in) throws IOException { StringBuffer out = new StringBuffer(); byte[] b = new by原创 2009-02-03 16:11:00 · 2247 阅读 · 0 评论 -
开源项目JNA
开源项目:Java Native Access 用更容易的方法来调用本地代码By Jeff Friesen, JavaWorld.com, 02/05/08 如果在Java程序中你使用Java Native Interface(JNI) 来调用某个特定平台下的本地库文件,你就会发现这个过程很单调、乏味。Jeff Friesen一直在介绍一个知名度很低的Ja翻译 2008-10-31 18:12:00 · 3432 阅读 · 0 评论 -
按照字节切分字符串(二)
在项目中,移动运营商要求: 发送手机短信,每一条的短信长度不能超过70个byte。因此写了一个字符串切割工具,代码示例demo如下。import java.util.*;public class SplitStrCn {// strList : the splited strings private static List strList = n原创 2008-06-28 20:31:00 · 965 阅读 · 0 评论 -
按照字节切分字符串(一)
曾经做过一道笔试题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。在网上找的答案不符合要求: public void split(String , int length) {原创 2008-06-28 18:31:00 · 1547 阅读 · 0 评论