摘要: 转载自http://www.infoq.com/cn/articles/netty-high-performance 1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多... 阅读全文
posted @ 2016-07-02 13:43 Binhua Liu 阅读(2142) 评论(0) 推荐(0) 编辑
摘要: 在我的前一篇文章中, 我们演示了在Java 8中,可以采用@Contended在类级别上的注释,来进行缓存行填充。这样,多线程情况下的伪共享冲突问题。 感兴趣的同学可以查看该文。 其实,@Contended注释还可以应用于字段级别(Field-Level),当应用于字段级别时,被注释的字段将和其他字段隔离开来,会被加载在独立的缓存行上。在字段级别上,@Contended还支持一个“conten... 阅读全文
posted @ 2016-06-28 14:04 Binhua Liu 阅读(11011) 评论(2) 推荐(5) 编辑
摘要: 关于伪共享的文章已经很多了,对于多线程编程来说,特别是多线程处理列表和数组的时候,要非常注意伪共享的问题。否则不仅无法发挥多线程的优势,还可能比单线程性能还差。随着JAVA版本的更新,再各个版本上减少伪共享的做法都有区别,一不小心代码可能就失效了,要注意进行测试。这篇文章总结一下。 什么是伪共享 关 阅读全文
posted @ 2016-06-27 17:52 Binhua Liu 阅读(15469) 评论(5) 推荐(9) 编辑
摘要: 英文原文:Micro Benchmarking with JMH: Measure, don’t guess!翻译地址:使用JMH进行微基准测试:不要猜,要测试!原文作者:Antonio翻译作者:Hollis转载请注明出处。 很多Java开发人员都知道把一个变量声明为null有助于垃圾回收(译者注:一般而言,为null的对象都会被作为垃圾处理,所以将不用的对象显式地设为Null,有利于GC... 阅读全文
posted @ 2016-06-26 15:54 Binhua Liu 阅读(4349) 评论(0) 推荐(0) 编辑
摘要: 最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的。接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源。虽然Level-1行情没有Level-2快,但是作为系统支持的行情源,我们还是需要优化它,使得从文件读取,到用户通过socket收到行情,端到端的时延尽可能的低。本文主要介绍对level-1行情dbf文件读取的极致优化... 阅读全文
posted @ 2016-06-26 07:13 Binhua Liu 阅读(5600) 评论(5) 推荐(5) 编辑
摘要: 最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的。接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源。虽然Level-1行情没有Level-2快,但是作为系统支持的行情源,我们还是需要优化它,使得从文件读取,到用户通过socket收到行情,端到端的时延尽可能的低。本文主要介绍对level-1行情dbf文件读取的极致优化... 阅读全文
posted @ 2016-06-25 09:40 Binhua Liu 阅读(5292) 评论(0) 推荐(4) 编辑
摘要: 最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的。接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源。虽然Level-1行情没有Level-2快,但是作为系统支持的行情源,我们还是需要优化它,使得从文件读取,到用户通过socket收到行情,端到端的时延尽可能的低。本文主要介绍对level-1行情dbf文件读取的极致优化... 阅读全文
posted @ 2016-06-23 12:16 Binhua Liu 阅读(9124) 评论(4) 推荐(7) 编辑
摘要: 最近由于项目需要,研究了一下maven的打包,项目要做到 1,生成3个目录/lib,/conf,/bin目录 2,把所有的jar目录编译、拷贝到/lib目录(包括maven的jar包和lib目录下的jar,以及编译的jar包) 3,把所有的启动脚本从工程根目录拷贝到/bin目录 4,把所有的配置文件从src/main/resources拷贝到/conf 下面是配置的pom.xml,我把相关... 阅读全文
posted @ 2016-06-21 19:57 Binhua Liu 阅读(36865) 评论(2) 推荐(3) 编辑
摘要: 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同步器提... 阅读全文
posted @ 2016-06-16 18:06 Binhua Liu 阅读(3640) 评论(0) 推荐(0) 编辑
摘要: Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它。这严重影响限制了C/S功能的实现,不解决的话信道事实上只能传输一种类型的数据。本文讲解一下我用的解决办法,虽然我觉得应该有官方的实现更 阅读全文
posted @ 2016-06-12 15:09 Binhua Liu 阅读(40526) 评论(6) 推荐(10) 编辑
摘要: 很多的同学很少使用、或者干脆不了解不可变类(Immutable Class)。直观上很容易认为Immutable类效率不高,或者难以理解他的使用场景。其实不可变类是非常有用的,可以提高并行编程的效率和优化设计。让我们跳过一些宽泛的介绍,从一个常见的并行编程场景说起: 假设系统需要实时地处理大量的订单,这些订单的处理依赖于用户的配置,例如用户的会员级别、支付方式等。程序需要通过这些配置的参数... 阅读全文
posted @ 2016-06-11 16:38 Binhua Liu 阅读(14980) 评论(7) 推荐(14) 编辑
摘要: 1, substring截取超大字符串可能造成的“内存泄漏” 2,+ 操作符的优化和局限 3,StringBuilder和StringBuffer 4,split和StringTokenizer做简单字符分割效率的比较 1, substring截取超大字符串可能造成的“内存泄漏” 我们知道,Stri 阅读全文
posted @ 2016-06-09 15:00 Binhua Liu 阅读(9026) 评论(3) 推荐(5) 编辑
摘要: 已经有不少文章介绍使用tomcat-redis-session-manager来实现Redis存储Tomcat的Session,实现分布式Session管理。但是现在官方编译的tomcat-redis-session-manager的jar包已经很旧了,基于的Redis版本也很低。这里我把我自己重新编译并部署它的步骤介绍一下。 1,首先,从Github上clone下载tomcat-redi... 阅读全文
posted @ 2016-06-05 16:11 Binhua Liu 阅读(10569) 评论(4) 推荐(7) 编辑
摘要: 翻译前言:感觉作者有点夸夸其谈兼絮絮叨叨,但文章还是很有用的。原文《An Overview of Complex Event Processing》 复杂事件处理技术概览(一) 用户用例:客户问题的解决方案 所以,现在如何使用复杂事件处理平台来解决业务问题?毫无疑问,在过去的几年中,这一技术被在大多数的-- 如果不是全部的--不同类型的行业。 金融服务资本市场公司都采用这种技术作为实... 阅读全文
posted @ 2016-03-29 18:02 Binhua Liu 阅读(1956) 评论(0) 推荐(0) 编辑
摘要: 本文转载自:http://blog.csdn.net/andylaudotnet/article/details/1763573 性能调节的目的是通过将网络流通、磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量。为达到此目的,需要了解应用程序的 阅读全文
posted @ 2016-03-27 19:35 Binhua Liu 阅读(11697) 评论(0) 推荐(1) 编辑
摘要: 翻译前言:我在理解复杂事件处理(CEP)方面一直有这样的困惑--为什么这种计算模式是有效的,能够分析得到有用的结果?为什么它会快?我始终还没有找到我期望的答案。不像map-reduce模型,google的论文非常清楚的描述了它的场景;或者disruptor框架,原作者清晰地解释了它为什么会快。在试图理解CEP的过程中,我准备翻译一些我认为有启发性的文章,希望也对大家有用。这篇文章的原文《An ... 阅读全文
posted @ 2016-03-27 12:32 Binhua Liu 阅读(5343) 评论(0) 推荐(0) 编辑
摘要: 使用Netty编程时,我们经常会从用户线程,而不是Netty线程池发起write操作,因为我们不能在netty的事件回调中做大量耗时操作。那么问题来了 – 1, writeAndFlush是线程安全的吗? 2, 是否使用了锁,导致并发性能下降呢 我们来看代码 – 在DefaultChannelHan 阅读全文
posted @ 2016-03-19 15:40 Binhua Liu 阅读(13636) 评论(1) 推荐(3) 编辑
摘要: 前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力。以前有个客户提出要在RCP程序中添加一个banner栏,研究了很久才搞定。代码是基于eclipse4.3.2的。先看一下效果预览:为了添加一个ban... 阅读全文
posted @ 2015-12-30 22:20 Binhua Liu 阅读(1710) 评论(0) 推荐(3) 编辑
摘要: 前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力。 名词解释: 网站可访问性测试:国内基本没有什么开展,简单又不太科学地说,就是让盲人,色弱,聋哑人也可以访问的网站。网站只有符合很多的编码和布局标准,屏幕阅读器才能很好地帮助残疾人访问这个网站。在美国,可访问性是立法了的,政府或者政府资助... 阅读全文
posted @ 2015-12-27 18:34 Binhua Liu 阅读(2353) 评论(0) 推荐(1) 编辑
摘要: 原作者:CoffeeOneSugar翻译:刘斌华在我之前发表的文章中,我提到我最近热衷于Complex Event Processing (CEP) (复杂事件处理)。简单来说,CEP把数据流作为输入,根据一系列预定义的规则,把数据(或部分数据)重定向给监听者们;又或者是当发现数据中的隐含的模式(P... 阅读全文
posted @ 2015-07-15 18:02 Binhua Liu 阅读(5756) 评论(0) 推荐(2) 编辑
摘要: 由于SWT的实现机制,在不同平台下,必须引用不同swt*.jar. 由于这个瓶颈,我们要为不同的平台编译不同的版本。但是这是可以避免的。这将是本文要讨论的内容。我一共google到了3种solution:1,使用swtjar.jar。http://mchr3k.github.io/swtjar/其主... 阅读全文
posted @ 2015-04-07 11:06 Binhua Liu 阅读(17513) 评论(0) 推荐(2) 编辑
摘要: (我的环境是Mint7.1,相当于Ubuntu14.04) 1,首先,根据docker.com上的安装指导来安装docker,这里就不重复了,参考: https://docs.docker.com/installation/ubuntulinux/ 2,执行 $ docker version 你可能遭遇如下错误: FATA[0000] Get http:///var/run/d... 阅读全文
posted @ 2015-03-04 08:58 Binhua Liu 阅读(2242) 评论(0) 推荐(0) 编辑
摘要: 1, 下载安装JDK的docker container 我是从这个源下载已经做好的JDK8的container: https://registry.hub.docker.com/u/dockerfile/java/ docker run -it --rm dockerfile/java:oracle-java8 2, 添加GUI支持 有好几种方案,我使用的是这种: http://fabior... 阅读全文
posted @ 2015-02-28 12:56 Binhua Liu 阅读(841) 评论(0) 推荐(0) 编辑
摘要: 在Xcode5中,当创建一个带View的iPhone项目时,默认必须使用Storyboards,不再支持切换xib的checkbox。本文讲解如何手动切换到使用xib来布局。1,把Main.storyboard从项目中移除2,添加xib文件到项目中。添加一个新文件,选择View,命名和*ViewContorller相同。3,把Main storyboard对应的项从plist文件中移除4,在*AppDelegate中添加类似代码 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSD 阅读全文
posted @ 2014-02-25 10:04 Binhua Liu 阅读(14182) 评论(2) 推荐(4) 编辑
摘要: 问题描述 本文的标题看起来有些含糊其辞,这里我需要把问题阐述得更加清楚。这是我们使用VSTS进行Web Performance Test时,Asp.net造成的特定问题(也许其他开发工具或插件也会造成类似问题)。 我们知道Asp.net的控件名在前端是自动生成的,比如开发人员设计时,控件名为username; 在bowser端,会自动生成包含一大段前缀的HTML控件,例如ctl00$conten... 阅读全文
posted @ 2013-10-05 20:30 Binhua Liu 阅读(4779) 评论(0) 推荐(1) 编辑