摘要:
在Netty4中引入了新的内存管理机制极大地提升其性能,本文将对该内在管理机制进行剖析。这里有篇文章讲述了在推特(Twitter)内部 使用Netty的状况以及Netty4所带来的性能收益。在分析Netty4的PooledByteBufAllocator之前,我们最好先认识一下jemalloc。 Netty在4.0之前的版本已经尝试过通过优化内存管理的方式来提高性能(如果我没有记错的话),但4.0中的改进则特别 显著。在这个版本中,其内存管理实现主要是参考了jemalloc。jemallocjemalloc是由Jason Evans在FreeBSD项目中引入的,其主旨是为了提升在并发环境下内存 阅读全文
2014年2月9日
2014年1月29日
摘要:
原文:Appium环境抢建(for web browser test)Android SDKAppium安装 nodejs安装 Appium配置手机下载&运行测试项目Appium是Android平台上一个测试框架。本文简单地介绍如何在Linux机器上安装并运行该框架。应用环境:Ubuntu 12.04 LTSHTC One X (endeavoru, S720e)Android SDK请参考SDK环境,这里就不多说了。Appium安装 nodejsapt-get install nodejs# 或者通过nodejs源码编译,这样可以使用最新的代码cd ~/downloadswget h 阅读全文
2014年1月11日
摘要:
看CM源码时,发现历史记录里有很多squash,于是google了解了一下。Git相对于CVS和SVN的一大好处就是merge非常方便,只要指出branch的名字就好了,如:12345$ git merge another$ git checkout another# modify, commit, modify, commit ...$ git checkout master$ git merge another但是,操作方便并不意味着这样操作就是合理的,在某些情况下,我们应该优先选择使用--squash选项,如下:12$ git merge --squash another$ git co 阅读全文
摘要:
下面主要是关于虚拟磁盘添加到虚拟机之后,如何分区和格式化的过程。磁盘分区12345678910111213141516171819202122evans@master:/dev$ sudo fdisk -lDisk /dev/sda: 42.9 GB, 42949672960 bytes255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 byt 阅读全文
2014年1月8日
摘要:
odex是经过优化的dex文件,且独立存在于apk文件。odex 多用于系统预制应用或服务。通过将apk中的dex文件进行 odex,可以加载 apk 的启动速度,同时减小空间的占用。请参考ODEX关于 odex 的说明。在反编译 odex 文件的过程中,我们需要使用到以下工具smali/baksmalidex2jarJD Compiler, jar反编译工具smali/baksmali是odex与dex文件格式互相转换的两个工具,dex2jar则是将dex文件转为java的jar文件,JD Compiler用于反编译jar文件。也就是说,经过以上一系列的操作,我们最终可以从一个odex文件得 阅读全文
2013年1月21日
摘要:
快速对引号或括号等标点内的内容进行选中, 删除, 复制:ci', ci", ci(, ci[, ci{,ci< # 分别更改这些配对标点符号中的文本内容di', di", di(或dib, di[, di{或diB, di< # 分别删除这些配对标点符号中的文本内容yi', yi", yi(, yi[, yi{, yi< # 分别复制这些配对标点符号中的文本内容vi', vi", vi(, vi[, vi{, vi< # 分别选中这些配对标点符号中的文本内容另外如果把上面的i改成a可以连配对标点一起 阅读全文
2012年4月8日
摘要:
在这里,我们借助了Eclipse的Memory Analyzer工具,以便获得智能的便于分析的效果图。先下载安装好工具下载地址。 下面来装备内存素材,从简单的开始。假设有一个类,这个类里面不包含任务其它的信息,空的: public class Node{}然后是一个Mail函数 public class Main{ public static void main(String[] args){ Node n = new Node(); }}运行程序,并用上一篇文章中提及的方式获取一个内存的转储文件。然后运行Eclipse Memory Analyzer Tool(MAT),并用其... 阅读全文
2012年4月5日
摘要:
If you ask me, where humans go wrong is with their lack of patience. That, and their recent acquired taste for instant gratification. The reality is that things take time. Richard Branson didn’t be... 阅读全文
摘要:
1.Heap Dump 如果你不知道Java里面的Heap是什么意思,这篇文章可能就不太适合你阅读了。 一个Heap Dump是指在某个时刻对一个Java进程所使用的内存情况的一次快照。也就是在某个时刻把Java进程的内存以某种格式持久化到了磁盘上。Heap Dump的格式有很多种,而且不同的格式包含的信息也可能不一样。但总的来说,Heap Dump一般都包含了一个堆中的Java Objects, Class等基本信息。同时,当你在执行一个转储操作时,往往会触发一次GC,所以你转储得到的文件里包含的信息通常是有效的内容(包含比较少,或没有垃圾对象了) 我们往往可以在Heap Dump以下... 阅读全文
2012年4月4日
摘要:
SCTP 是在 IP 网络上使用的一种可靠的通用传输层协议。尽管 SCTP 协议最初是为发送电话信号而设计的(RFC 2960),但带来了一个意外的收获:它通过借鉴 UDP 的优点解决了 TCP 的某些局限。SCTP 提供的特性使套接字初始化的可用性、可靠性和安全性都得以提高。(图 1 给出了 IP 堆栈的层次化架构。)图 1. IP 栈的层次化架构本文简要介绍了 Linux 2.6 内核中 SCTP 的概念,重点介绍了一些高级特性(例如多宿主和多流),并且给出了服务器和客户机的部分代码片断(并给出了一个可以获得更多代码的 URL),从而展示了这种协议提供多流的能力。下面让我们开始介绍 IP 阅读全文
2012年4月2日
摘要:
在程序设计中经常会使用到Syntax和Semantics,那么这两者分别是什么意思,又有什么区别呢?Syntax是语法,Semantics是语义;从字面的意思来看,前者注重的是“法则”,而后者则偏重于“涵义”。以SQL语句为例,在Oracle中,解析Sql语句要先经过语法检查,然后再进行语义检查。语法检查时,会判断你写的SQL语句中是否有错别字,如把select写成了selct等;而语义则是判断你写这个SQL的目的是什么——是要查询,还是个性数据等。CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http: 阅读全文
摘要:
Linux 平台下文件名: scala_exec#!/bin/shexecscala"$0""$@"!#//Thefollowingshouldbescalacode//justanexampleprintln("I'mexecutinginbash, and you input args.." + args[0]) 和bash脚本一样,#!/bin/sh必需是文件开头的第一行。然后赋予该脚本可执行权限:chmodu+xscala_exec这样你就可以在Linux上像执行shell脚本一样地执行scala脚本了。./scala 阅读全文
2011年12月30日
摘要:
Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。 数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意长度明文,h--固... 阅读全文
2011年12月28日
摘要:
关于Amazon EC2服务,已经有很多文章介绍,这里就不再赘述如何申请Amazon云服务的内容了。假定你已经拥有一台EC2服务器。另外,这里并没有使用gitosis或者gitolite之类的应用。主要是通过使用ssh来将EC2当作个人的Git服务器来使用。因为当前Amazon提供了对于Micro类型的EC2免费使用一年优惠,不妨大家也试试。 为了简化对远程主机的访问,先对ssh做点简单的配置: $ cat ~/.ssh/config Host codingme.com Hostname codingme.com User ec2-user... 阅读全文
2011年12月27日
摘要:
ProtoBuf的官方下载包并不包含jar文件,需要用户自己configure/make….来自行编译。由于Windows上没有编译环境,就用了一个笨一点方法处理了。 分别下载: protobuf-2.4.1.zip ProtoBuf的源文件(包含了C++/Java/Python)的源文件 protoc-2.4.1-win32.zip 已经编译过的用于Windows平台的protoc命令(该... 阅读全文
摘要:
1.列出所有可更新的软件清单 命令:yum check-update 2.安装所有更新软件 命令:yum update 3.仅安装指定的软件 命令:yum install <package_name> 4.仅更新指定的软件 命令:yum update <package_name> 5.列出所有可安裝的软件清单 命令:yum list 用YUM安装删除软件 ... 阅读全文
摘要:
Let's dance in style,Let's dance for a whileHeaven can wait,We're only watching the skiesHoping for the bestBut expecting the worstAre you going to drop the bomb or not????Let us die young or let us l... 阅读全文
摘要:
以前转载过一篇关于Emacs常用快捷键的文件:http://blog.romebuilder.com/2011/11/534/下面主要是对以上快捷键的补充以及Erlang专用快捷键的说明:常用快捷键补充C-x d 目录管理界面,可以通过该界面进入不同的目录来打开文件C-x C-q 使目录管理界面的进入可编辑模式,在该模式下,可以对目录下的文件名进行修改,通过C-x C-s 可以该修改生效M-g g 定位到指定的行C-x h 全文选择(全选)M-h 选中当前光标所在段,连续使用该快捷键会依次选中当前,当前段和当前段后面的段落C-z 最小化当前窗口(在Linux下,应该是将该应用挂起,但是在Win 阅读全文
摘要:
这篇文章主要是关于Emacs的erlang环境设置及常用快捷键的使用说明的。1.下载安装Emacshttp://ftp.gnu.org/gnu/windows/emacs/ 在页面的最下面有exe文件下载。2.配置Erlang插件如果已经安装了Erlang,在其安装目录$(ERL_HOME)\lib\tools-2.6.6.6\emacs下有emacs的插件。(据说Emacs是Erlang的官方IDE,在Erlang的发行版中包含emacs插件,似乎可以证明此事了。)那么下面开始配置:编辑C:\.emacs (如果没有就新建一个),将以下内容添加到文件中:(setq load-path (co 阅读全文
2011年12月6日
摘要:
微秒μs 纳秒ns 毫秒ms 时间单位秒也是一个的时间单位,0.000 000 001 毫秒 = 1皮秒,0.000 001 毫秒 = 1纳秒,0.001 毫秒 = 1微秒,1毫秒等于0。001秒,60秒等于1分钟,60分钟等于1小时,24小时等于1天,7天等于1星期,30,31,28或29天等于1月,12月 等于1年,100年等于1世纪。微秒,时间单位,符号μs(英语:microsecond ).1微秒等于一百万分之一秒(10-6秒)0.000 001 微秒 = 1皮秒0.001 微秒 = 1纳秒1,000 微秒 = 1毫秒1,000,000 微秒 = 1秒ns(nanosecond):纳秒 阅读全文
2011年12月5日
摘要:
在Java里面,时间戳常用System.currentTimeMillis(),因为它可以方便地与Date/Calendar进行转 换,System.nanoTime到不是怎么常用(至少我没怎么用过)。刚才在学习Java的线程池中的 ScheduledThreadPoolExecutor时,看到里面很多地方都用到了它,于是好奇地看了下API。currentTimeMillispublic static long currentTimeMillis()Returns the current time in milliseconds. Note that while the unit of tim 阅读全文
2011年10月2日
摘要:
原文:http://blog.romebuilder.com/2011/10/525/ 国庆前两天,客户上线的产品突然出现问题,导致几十万用户无法正常享受服务。在日以继夜地奋战了三天后,我们给客户的交待是,没有好的解决方案,只能全部rollback。这样的结果,让整个国庆显得无比悲催了……问题原因,出在多个方面。1.版本管理在 2.0发布时,1.X系列的产品已经稳定运行了很长时间。2.0是从1.2的版本上Cut出来的,发布时,运行的产品已经是1.6.1,在这之间,1.X 已经有了相当多的hotfix,但是这些hotfix却并没有全部merge到2.0中!这导致1.X中一些Critical的Bu 阅读全文
摘要:
原文:http://blog.romebuilder.com/2011/10/521/1.处理时间日志中的时间格式多为 2011-09-30 00:00:00,035 ,有时,我需要对日志中给定的时间段进行数据分析,这时就要对每条日志记录的时间做对比。但是如何来高效地比较时间呢?我的想法是,将时间字条窜转化为unix timestamp,在Awk中实现这种转换有两种方式,一种是调用shell命令,date;另一种是使用内置的mktime.下面是调用shell 命令 dateegrep -i "<—.*login" connector.log | awk -F ' 阅读全文
2011年1月5日
摘要:
Author: ytfeiDate: 2011-01-04 18:28:26原创文章,转载请注明出处!http://blog.romebuilder.com/2011/01/273/关于反向代理的概念说明,网上有很多相关文章,这是百度里的一篇:http://baike.baidu.com/view/1165595.htm。jetty与httpd的通信方式有http和ajp两种协议,jetty官方推荐使用http进行通讯。以下是jetty-7.2.2, apache-httpd 2.2.13, WinXp环境下的配置:1.启动httpd的代理模块。 修改httpd.conf文件,去掉以下现行的注 阅读全文
2010年11月25日
摘要:
原文:http://blog.romebuilder.com/?p=1231.VBox安装完成后,在网络连接会出现一个相应的连接,如图 2.同时选中“本地连接”和“VirtualBox Host-Only Network”两个连接,右键,选择【桥接】。将会生成一个网络桥。 3.选中vbox中已经安装的虚拟机,设置其网络连接的方式。将【连接方式】改为&... 阅读全文