`
budairenqin
  • 浏览: 199317 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
    来阿里一年了一直都在做业务, 也有一些怀念以前一直撸网络IO的时光, 可以肆无忌惮的消耗时间去研究感兴趣的东西, 现在反而被业务压得太累, 没太多时间学习额外的东西...     前段时间指导师弟师妹们参加阿里中间件的比赛, 然后自己手痒痒, 消耗了大部分的半夜看电影和睡觉时间, 撸了个娱乐性质的RPC玩玩 https://github.com/fengjiachun/Jupiter     然而撸着撸着上瘾了, 也算相对完整的实现了一个RPC的大部分功能了吧, 自测了下性能还算说的过去. 性能报告:     小数据包同步阻塞调用qps: 10w+ (测试代码见jupiter-exa ...
发在并发编程网了 http://ifeve.com/juc-atomic-class-lazyset-que/
转自己的在公司发的文章: 前言 本菜鸟有过几年的网络IO相关经验, java层面netty也一直关注, 最近想对自己所了解的netty做一个系列的笔记, 不光技术水平有限, 写作水平更有限, 难免有错误之处欢迎指正, 共同学习. 上一篇讲了bind, 这篇分析一下accept的细节, 我觉得网络IO相关开发很多时候不能仅仅局限于java层, 尤其从accept开始一个连接诞生了, 什么拥塞控制啊, 滑动窗口啊等等一系列底层的问题可能就开始会渐渐困扰到你了, 这一章尝试先从linux内核的tcp实现开始分析accept 源码来自linux-2.6.11.12, 还参考了[TCP_IP.Ar ...
转自己在公司的文章: 本菜鸟有过几年的网络IO相关经验, java层面netty也一直关注, 最近想对自己所了解的netty做一个系列的笔记, 不光技术水平有限, 写作水平更有限, 难免有错误之处欢迎指正, 共同学习. 源码来自Netty5.x版本, 本 ...
先看代码,来自HashMap.putVal() Node<K,V> e; K k; if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k)))) e = p; else if (p instanceof TreeNode) e = ((TreeNode<K,V>)p). ...
  关于伪共享这个概念,请先参照http://ifeve.com/falsesharing/ 伪共享的样子: Java view: public class VolatileLong { volatile long v = 0L; } Memory view: ...–––-)(––––HV––––HV–––)(–––... 我们看到,两个VolatileLong对象被load到了同一个缓存行里面,如果一个线程要修改对象1,另一个线程同时要修改对象2,此时就要面对伪共享这个无形的性能杀手了 jdk6中的解决办法: Java view: public class Vol ...
个别特殊情况下,我们可能想抛出受检查的异常但却并不想在方法上加入throws XXException的signature 比如下面的代码不能成功编译: public static void main(String[] args){ throw new Exception(); } 需要改成这样: public static void main(String ...
简单过一下Netty3.6.6.Final源码,让自己对各个流程有个稍微清晰的理解,只是文字描述,尽量描述简单,有时间再画画图 Server启动: 1.new ServerBootstrap      构造NioServerSocketChannelFactory,用来创建NioServerSocketChannel对象(newChannel方 ...
protected char buffer[]; ...... @Override public String toString() { // Create a copy, don't share the array String value = new String(this.buffer, 0, count); if (this.buffer.length <= 1024 * 8) { bufferLocal.set(new SoftReference<char[]>(this.buffer)); } t ...
《Linux Performance Analysis and Tools | Linux 性能分析和工具》Brendan Gregg SCaLE 11x 大会上的演讲 英文水平有限,记下来慢慢看 http://joyent.com/blog/linux-performance-analysis-and-tools-brendan-gregg-s-talk-at-scale-11x 幻灯片:
   今天想给项目写个远程执行的小工具 1.客户端动态编译要远程执行的代码 2.通过网络将编译好的字节码传输到服务端 3.服务端留一个类装载器的接口 4.对客户端传输过来的字节码做一定修改(复杂了的不好改,修改常量池还是不难实现的,比如需要输出信息到客户端,却又想用System.out输出,修改常量池就好了,不然System.out只能输出在服务端) 5.用自定义的ClassLoader将要执行的类装载到jvm,然后执行,输出信息返回给客户端 这个工具类还是比较强大的(不过也很危险,看怎么用了),可以看到服务端的任何类的变量,也可以执行清除缓存之类的操作。 以前写过这种小玩意儿,不过是在有w ...
   昨天应同事要求在框架中(Spring+iBatis2.3.4)加入Batch处理,于是满足之,由于需要更灵活并且不想为批量插入、批量更新、批量删除等操作单独写对应的方法,于是写了这样的一个方法 public Object batchExecute(final CallBack callBack) { Object result = getSqlMapClientTemplate().execute(new SqlMapClientCallback<Object>() { @Override public Object doInSqlMapClie ...
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.5.1</version> <executions> <execution> <id>copy</id> <phase>install< ...
  asm是一个java的字节码框架,它能被用来动态生成类或者增强既有类的功能。   一般asm的应用场景主要在aop上,比如Spring在底层就是用了asm,但asm不仅仅是只能在aop方面发挥它强大的能力,比如你现在要写一个rpc框架,可能会 ...
说到Explain,肯定很多读者之前已经用过了,MySQL Query Optimizer 通过执行 EXPLAIN 命令来告诉我们它将使用一个怎样的执行计划来优化Query。所以,可以说 Explain 是在优化 Query 时最直接有效地验证我们想法的工具。在本章前面已经谈到,一个好的 SQL Performance Tuner 在动手优化一个 Query 之前,头脑中就应该已经有了一个好的执行计划,后面的优化工作只是为实现该执行计划而作出的各种调整。 在对某个 Query 优化过程中,须要不断地使用 Explain 来验证各种调整是否有效。就像前面很多示例都会通过 Explain 来验证 ...
Global site tag (gtag.js) - Google Analytics