自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 问答 (1)
  • 收藏
  • 关注

原创 JUC中Atomic class之lazySet的一点疑惑

发在并发编程网了[url]http://ifeve.com/juc-atomic-class-lazyset-que/[/url]

2015-11-15 20:45:19 210

原创 写个RPC娱乐一下

来阿里一年了一直都在做业务, 也有一些怀念以前一直撸网络IO的时光, 可以肆无忌惮的消耗时间去研究感兴趣的东西, 现在反而被业务压得太累, 没太多时间学习额外的东西... 前段时间指导师弟师妹们参加阿里中间件的比赛, 然后自己手痒痒, 消耗了大部分的半夜看电影和睡觉时间, 撸了个娱乐性质的RPC玩玩[url]https://github.com/fengjiachun/Jup...

2015-11-15 20:38:43 196

原创 Netty源码细节3--accept(Linux os层 + Netty层代码细节)

转自己的在公司发的文章:前言本菜鸟有过几年的网络IO相关经验, java层面netty也一直关注, 最近想对自己所了解的netty做一个系列的笔记, 不光技术水平有限, 写作水平更有限, 难免有错误之处欢迎指正, 共同学习.上一篇讲了bind, 这篇分析一下accept的细节, 我觉得网络IO相关开发很多时候不能仅仅局限于java层, 尤其从accept开始一个连接诞生了,...

2015-06-01 15:12:19 212

原创 Netty源码细节1--IO线程(EventLoop)

转自己在公司的文章:本菜鸟有过几年的网络IO相关经验, java层面netty也一直关注, 最近想对自己所了解的netty做一个系列的笔记, 不光技术水平有限, 写作水平更有限, 难免有错误之处欢迎指正, 共同学习.源码来自Netty5.x版本, 本系列文章不打算从架构的角度去讨论netty, 只想从源码细节展开, 又不想通篇的贴代码, 如果没有太大的必要, 我会尽量避免贴代码或是...

2015-06-01 14:59:11 156

原创 Java8 中HashMap的优化

先看代码,来自HashMap.putVal()[code="java"] Node e; K k; if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k)))) e = p; ...

2014-04-25 11:35:13 438

原创 Java8中用sun.misc.Contended避免伪共享(false sharing)

关于伪共享这个概念,请先参照[url]http://ifeve.com/falsesharing/[/url]伪共享的样子:[code="java"]Java view:public class VolatileLong { volatile long v = 0L;}Memory view:...–––-)(––––HV––––HV–––)(–––......

2014-04-18 13:58:46 124

原创 Java 绕过编译器检查抛出“受检查的”异常

个别特殊情况下,我们可能想抛出受检查的异常但却并不想在方法上加入throws XXException的signature比如下面的代码不能成功编译:[code="java"] public static void main(String[] args){ throw new Exception(); }[/code]需要改成这样:[code="java"]...

2014-01-23 16:45:16 681

原创 Netty server端执行的各个阶段源码简单分析

简单过一下Netty3.6.6.Final源码,让自己对各个流程有个稍微清晰的理解,只是文字描述,尽量描述简单,有时间再画画图Server启动:1.new ServerBootstrap 构造NioServerSocketChannelFactory,用来创建NioServerSocketChannel对象(newChannel方法) 1..NioSe...

2013-07-01 15:16:07 137

原创 java 在toString()方法中修改对象状态导致诡异的debug问题

[code="java"] protected char buffer[]; ...... @Override public String toString() { // Create a copy, don't share the array String value = new String(this.buffer, 0, count); if (t...

2013-06-03 17:06:43 171

原创 Linux 性能分析和工具

《Linux Performance Analysis and Tools | Linux 性能分析和工具》Brendan Gregg SCaLE 11x 大会上的演讲英文水平有限,记下来慢慢看[url]http://joyent.com/blog/linux-performance-analysis-and-tools-brendan-gregg-s-talk-at-scale-11x[...

2013-03-04 13:46:21 91

原创 远程执行小工具

今天想给项目写个远程执行的小工具1.客户端动态编译要远程执行的代码2.通过网络将编译好的字节码传输到服务端3.服务端留一个类装载器的接口4.对客户端传输过来的字节码做一定修改(复杂了的不好改,修改常量池还是不难实现的,比如需要输出信息到客户端,却又想用System.out输出,修改常量池就好了,不然System.out只能输出在服务端)5.用自定义的ClassLoader...

2013-02-04 23:49:50 151

原创 iBatis batch处理那些事

昨天应同事要求在框架中(Spring+iBatis2.3.4)加入Batch处理,于是满足之,由于需要更灵活并且不想为批量插入、批量更新、批量删除等操作单独写对应的方法,于是写了这样的一个方法[code="java"] public Object batchExecute(final CallBack callBack) { Object result = getSqlMapC...

2013-02-02 19:09:24 171

原创 Maven拷贝依赖jar包到指定目录

[code="java"] org.apache.maven.plugins maven-dependency-plugin 2.5.1 copy install copy-dependencies ${project.bu...

2013-01-31 16:10:56 225

原创 Java字节码框架asm快速入门

asm是一个java的字节码框架,它能被用来动态生成类或者增强既有类的功能。 一般asm的应用场景主要在aop上,比如Spring在底层就是用了asm,但asm不仅仅是只能在aop方面发挥它强大的能力,比如你现在要写一个rpc框架,可能会在序列化对象上犯难,使用java的序列化机制?有点慢;json?(比如阿里的大神搞的fastjson性能就很好),但我要序列化的对象很简单,没有嵌套对象...

2013-01-16 21:03:56 865

原创 MySql Explain 的使用[转]

说到Explain,肯定很多读者之前已经用过了,MySQL Query Optimizer 通过执行 EXPLAIN 命令来告诉我们它将使用一个怎样的执行计划来优化Query。所以,可以说 Explain 是在优化 Query 时最直接有效地验证我们想法的工具。在本章前面已经谈到,一个好的 SQL Performance Tuner 在动手优化一个 Query 之前,头脑中就应该已经有了一个好的执...

2012-12-27 13:10:22 167

原创 MySql 常用的数据类型优化

近期要对一个主要用来查询的MySql DB进行优化,所以从书上以及网络上总结了些MySql数据类型相关的优化。[b]-使用简单的数据类型[/b]越简单的数据类型,需要的CPU周期就越少。比较两个整数的代价肯定小于比较字符,因为字符集和排序规则让字符更复杂。日期和时间尽量用MySql内奸的类型来保存,避免使用字符串[b]-要建索引的列避免NULL[/b]当可空列被索引...

2012-12-26 15:58:46 167

原创 CentOS 6.3 X86_64安装MySQL 5.5.28 64-Bit RPM以及my.cnf配置

-卸载旧版本1.yum[code="java"]yum remove mysql mysql-devel mysql-server mysql-libsrm -r -f /var/lib/mysql/[/code]2.rpm[code="java"]rpm -qa | grep mysqlrpm -qa | grep MySQLrpm-e [上边的命令找到的所有...

2012-12-14 17:48:01 125

原创 Linux TCP参数

[code="java"]vi /etc/sysctl.conf[/code][code="java"]#表示SYN队列的长度,默认为1024,加大队列长度,可以容纳更多等待连接的网络连接数。net.ipv4.tcp_max_syn_backlog = 65536#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目net.core.net...

2012-12-06 12:12:50 133

原创 CentOS 6.3 服务器安装配置

1.下载CentOS并安装CentOS-6.3-x86_64-minimal.iso[url]http://centos.arcticnetwork.ca/6.3/isos/x86_64/CentOS-6.3-x86_64-minimal.iso[/url]2.IP配置[code="java"]vi /etc/sysconfig/network-scripts/ifcfg-em...

2012-12-05 16:50:12 168

原创 Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁

最近项目中使用redis,学习了一下,client端使用jedis-2.1.0首先是一个redis实现的跨jvm的lock,接着是一个简单封装的工具类,也对pipeline处理进行了几个常用的封装然后是对应Spring的相关配置[code="java"]public class RedisLock { /** 加锁标志 */ public static fi...

2012-11-25 12:52:49 292

原创 Redis 环境搭建

1.简介Redis 是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅包括基本的string类型还有 list, set, sorted set和hash类型。当然这些类型的元素也都是string类型。也就是说list, set这些集合类型也只能包含string 类型。你可以在这些类型上做很多原子性的操作。比如对一个字符value追加字符串(APP...

2012-11-23 17:29:33 94

原创 Netty Server端代码简单分析

Netty源码简单分析:Netty整体架构清晰的分为两部分:1. ChannelFactory:主要负责生产网络通信相关的Channel和ChannelSink实例,NIO Server端一般使用NioServerSocketChannelFactory,用户也可以定制自己的ChannelFactory。2. ChannelPipelineFactory:主要用来对传输数据的处理,由于...

2012-11-23 17:20:47 212

原创 运行时(at runtime)找到Class对象的classfile location

以下代码参考[url]http://www.javaworld.com/javaworld/javaqa/2003-07/01-qa-0711-classsrc.html[/url]在项目中经常会碰到jar包冲突的情况,有时候想知道jvm到底是加载了哪个jar里面的对应类,下面这段代码就要派上用场鸟,呼呼代码清晰易懂,我就不多做解释了,记录下来留着自己以后用[code="jav...

2012-08-29 23:42:51 221

原创 List of HTTP header fields

来自[url]http://en.wikipedia.org/wiki/List_of_HTTP_header_fields[/url]常用,怕丢,留个备份[img]http://dl.iteye.com/upload/attachment/0072/2722/1919572c-c61f-3cc0-b84d-12194030f247.gif[/img]...

2012-08-14 05:07:57 75

原创 Java虚拟机指令操作码助记符

以下内容均来自IcyFenix等大牛翻译的[url=http://icyfenix.iteye.com/blog/1256329]Java虚拟机规范[/url][code="java"]字节码 助记符 指令含义 0x00 nop 什么都不做。 0x01 aconst_null 将null推送至栈顶。 0x02 iconst_m1 将int型-1推送至栈顶。 0x03 ico...

2012-06-21 17:36:57 163

原创 关于package-info.java

以前不知道有package-info.java这个类,读javac源码在”输出符号表“的处理中碰到了它,于是简单研究一下1.package-info.java用于描述当前包的信息2.创建它的办法 在Eclipse中创建这个类名是不被允许的,会报"Type name is notvalid"错误(java类名是不允许有中划线"-"的),可以先在Eclipse之外创建...

2012-06-14 23:29:28 252

原创 java API的动态编译接口

读javac源码时奇怪com.sun.tools.javac.main.Main中有这么个boolean apiMode实例变量,代码注释说“如果apiMode为true,那么某些错误可能导致异常”。奇怪的是从命令行启动javac并没有相关代码能设置apiMode的值,于是在源码中翻来翻去,发现原来是动态编译时会用到apiMode这个变量,于是豁然开朗,还是记录下吧,好记性不如烂笔头...

2012-05-23 22:53:57 284

原创 com.sun.tools.javac.Launcher中使用Preferences操作Windows注册表

OpenJDK javac中com.sun.tools.javac.Launcher有以下代码,在Windows平台上使用注册表来保存上次打开的路径信息,以下是代码片段:[code="java"] Preferences prefs = Preferences.userNodeForPackage(Launcher.class); if (args.leng...

2012-05-20 15:17:44 117

原创 SCA(Tuscany) implementation.spring 源码分析

项目要求集成SCA(Tuscany),还要结合Spring使用(把Spring容器管理的ServiceBean公开为SCA服务),问题是SCA有自己独立的容器,直接访问Spring容器内部的Beans比较困难,因为它们不在同一容器内。所以简单研究了下代码,改一下Tuscany源码,直接访问Spring容器中的Beans,这样的话 事务包装 也可以直接通过Spring解决了图:[img]...

2012-05-10 17:21:13 265

原创 tomcat6 AnnotationProcessor 的问题

[b][color=red]org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache[/color][/b]使用tuscany时导入jar包碰到的我的解决办法是删掉catalina-6.0.14,它和tomcat6自带的jar包冲突。下面是前人的解决办法原文:[url...

2012-05-02 14:16:05 139

原创 Spring中JDK动态代理和CGLIB动态代理的性能比较

新项目开始之前领导让研究下公司原有的框架(基于struts1.2.9+spring2.0.6),比较古老了。读service基类时发现竟然将request穿透到了service层(request为BaseService的实例变量),这样service就变成了有状态Bean,使service层变成了非线程安全,导致用Spring容器管理service的时候不得不使用prototype的sco...

2012-04-27 09:49:39 142

原创 Building Spring 3

最近想读下spring3的源码,决定自己构建下spring3以方便阅读源码参考了以下资料:Spring Team Blog:[url]http://blog.springsource.org/2009/03/03/building-spring-3/[/url][url]http://zachary-guo.iteye.com/blog/661839[/url]一、首先确定你的...

2012-02-23 23:02:20 91

原创 Building Tomcat 6

[b]1.安装TortoiseSVN[/b][url]http://tortoisesvn.net/[/url][b]2.利用TortoiseSVN下载Tomcat6源码[/b][img]http://dl.iteye.com/upload/attachment/0063/4445/e88ab39e-413a-35e4-8917-9d9663225c6e.png[/img]...

2012-02-19 20:38:14 185

原创 javac语法分析

这年头,还有比我手欠的么?一笔一笔画出来的注释......[img]http://dl.iteye.com/upload/attachment/0062/0828/478d2834-2fd5-3058-9a33-26e10f2d74d2.bmp[/img]debug图:[img]http://dl.iteye.com/upload/attachment/0062...

2012-01-13 00:27:46 142

原创 Maven构建的项目使用tools.jar的方法

修改一下pom.xml就ok了 com.sun tools 1.7.0 system ${...

2012-01-07 06:16:04 666

原创 Maven乱码问题解决

本文转载自:http://www.blogjava.net/wangzhouyu/archive/2011/06/30/353403.html1.编译乱码,设置编译的字符集编码和环境编码 org.apache.maven.plugins maven-compiler-plugin 2.3.2 ...

2012-01-05 23:20:56 221

原创 关于条件编译

被初始化为编译期常量的 static final 变量的引用,在编译时被解析为常量值的一个本地拷贝,这恰好让java能实现条件编译看例子:[code="java"]public class Example { public static void main(String[] args) { if (Debug.debug) { Sy...

2011-12-15 14:23:16 74

原创 System.getProperty() 参数大全

[code="java"]import java.util.Enumeration;import java.util.Properties;public class SystemProperties { public static void main(String[] args) { Properties properties = System.ge...

2011-12-09 11:28:43 95

原创 公钥,私钥,SSL (描述的很生动,转的)

原文地址[url]http://chenling1018.blog.163.com/blog/static/1480254201058112410789/[/url]一,公钥私钥1,公钥和私钥成对出现2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据只有对应的私钥可以 解密4,用私钥加密的数据只有对应的公钥可以解密5,如果可以用公钥解密,则必然是对应的私钥加...

2011-11-24 10:37:37 1064 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除