- 浏览: 65464 次
最新评论
-
sunwudie:
MVEL支持单步调试么 或者是怎样看错误报告
Mvel模板性能测试 -
qiuriyuchen:
很不错的总结,很有用
最佳线程数总结(1) -
almtalmt:
楼主,group和user是自己建的类吗?
Mvel模板性能测试 -
chnpt:
很好,很详细。
说的很到位啊。
谢谢。
java byte与char互转原理 -
fekin:
我感觉写的不错,逻辑挺清晰的
MINA原理
文章列表
写了个shell脚本跑了大概1个小时,了解一下young区配置为多少大的时候,每次申请内存的大小和QPS的关系
每个申请用ab进行压测,先压测1000次,这个1000次是预热,然后再压测30000次,然后修改配置,重启tomcat,不断重复上面过程,取得结果,:
-XX:NewSize
1. 为什么OGNL语法不能通过编译字节码改成非反射调用,比如利用asm进行编译?
velocity在取对象数据的时候是反射调用的,会比较消耗性能,我总想通过字节码编译来达到不进行反射调用。但是这个情况其实是有bug的。
因为类似"group.user.name"这种写法并没有什么对象的类型是什么,如果改成java的写法,则是((Group)group).getUser().getName();类似这样,但是因为Group对象可能会发生变化,如第一次是ExtendGroup,第二次是MainGroup,这样你不知道编译成ExtendGroup还是编译成 ...
Mvel的性能很不错(Mvel主要竞争对手是OGNL),这个是官方提供的性能数据,因为Mvel使用asm,采用了编译成java字节码的方式,其本质的性能应该和java代码的性能是类似的。不过在实际测试器模板的时候,其性能并没有非常突出:
测试代码:主要比较了完成同一个功能,java、velocity、mvel需要的时间
velocity对SimpleNode进行Cache之后进行测试,同样Mvel也是编译之后进行测试。发现两者的CPU性能相差不大,在同一数量级,而java则明显高很多,当然和java的写法也有关系。 看来还需要再看一下Mvel编译之后的代码!
public class ...
最佳线程数:
性能压测的情况下,起初随着用户数的增加,QPS会上升,当到了一定的阀值之后,用户数量增加QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加。这个阀值我们认为是最佳线程数。
为什么要找最佳线程数
1.过多的线程只会造成,更多的内存开销,更多的CPU开销,但是对提升QPS确毫无帮助
2.找到最佳线程数后通过简单的设置,可以让web系统更加稳定,得到最高,最稳定的QPS输出
最佳线程数的获取:
1
之前做系统优化,通过线程执行堆栈的检测,找到一个模板类的瓶颈,场景是一个2级下拉菜单,当时为了支持下拉菜单 键盘输入按拼音自动选择,在下拉菜单的属性里有一个值表示当前选择的中文词语的首字母串。如:
<option cls="ZHRMGHG">中华人民共和国</options>
....
由于这个菜单的option比较多,
有个工具类用来解析中文转拼音的工作,这个工具类存在性能瓶颈,主要原因是进行大量的中文encode
private final static int compare(String str1, String str2) {
...
核心化
核心系统核心团队维护,通过提升人来提升系统的稳定性,发布垂直化,核心系统开发团队有自己的系统权限,在紧要关头可以直接进行一些干预,减少事故时间
人、单点环节要少、架构要简单其实这些都是针 ...
转自:http://www.cnblogs.com/bluespot/archive/2008/10/23/1318155.html
<!-- -->
一、
字节和unicode
Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件
/
流
的保存方式是使用字节流的。因此Java要对这些字节流经行转化。 char是unicode的,而byte是字节。Java中
byte
/
char互转的函数在sun.io的包中间有。其
中ByteToCharConverter类是中调度,可以用来告诉你,你用的 conve ...
Java 的线程
线程是指能独立于程序的其它部分运行的执行单元。 JAVA语言能够很好的实现多线程的程序。我们在调试程序,或者在开发后期需要做性能调优的时候,往往也需要了解当前程序正在运行的线程的状态,正
在执行的操作,从而分析系统可能存在的问题。
在阅读本文之间,应对 Java线程的编程原理,同步机制有一定了解 .
产生 JAVA线程 dump
JAVA 的线程 DUMP,就象当前 JAVA进程的一个快照,打印出所有线程的状态和调用堆栈,以及 Monitor的状态。在不同的操作系统下,产生线程 DUMP的方式是不同的。
·
在 window ...
原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9298
一、 JMX简介
JMX(Java Management Extensions, Java管理扩展)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。
Jboss的成功就在于采用了JMX,从零开始、模块化开发了Jboss服务器和容器,实现了模块化、嵌入式的技术架构。JMX作为集成中心
(总线),可以很方便的热插拔新的模块和组件。JMX服务可以通过HTTP、RMI、 ...
linux下的mmap函数允许直接把文件映射到内存,对文件的所有操作可以直接使用访问内存一样来操作因为指定的是文件的地址,所以根据参数可以知道,mmap可以只映射文件的一个片段,而不需要映射整个文件mmap将整个文件映射到 ...
Jni解决了哪些问题?
Jni原理
JNI是Java Native Interface(Java本地接口)的缩写。JNI作为java和操作系统间的一个直接接口,可以通过JNI使得java直接调用操作系统的资源。目前JNI只能通过c/C++实现,因为jni只是对操作系统资源调用的一个桥接过程。所以理论上在windows下只要是dll文件均可以被调用。java代码编译之后是运行在一个jvm里,所以java的任何操作对操作系统而言都是隔着一层虚拟机外壳,这点也正式java的优点,帮助java实现了“Write Once, Run Everywhere”的可移植性。但是使用了jni之后必须要 ...
2.数据结构
程序分为两部分,一部分是对数据的初始化,建立hash的结构,第二部分是读取初始化:
1.初始化的时候需要知道map里key的数量, 所以先要将数据库的数据导出来,计算出需要key的数量2.有了key的数量,然后key*1.7作为hashmap的总大小,3.然后对每个数据id进行hash % key*1.74._ _key _ _|_ _ offset_ _| _ _key _ _|_ _ offset_ _| _ _key _ _|_ _ offset_ _| _ _key _ _|_ _ offset_ _|
数据区,data则可以随便保存,只是每个data同文件开始的偏 ...
HashMap原理
关键字: hashmap 算法 javase 豆子小说网 http://www.dzxiaoshuo.com
http://www.dzxiaoshuo.com 对于HashMap主要以键值(key-value)的方式来体现,笼统的说就是采用key值的哈希算法来,外加取余最终获取索引,而这个索引可以认定是一种 ...
假设数据块的大小是相差不大的,key占用8字节,data所占用的字节数量比如固定为1k,则文件格式如下:
_ _key _ _|_ _ _ _ _ _data _ _ _ _ _ _|
_ _key _ _|_ _ _ _ _ _data _ _ _ _ _ _|
_ _key _ _|_ _ _ _ _ _data _ _ _ _ _ _|
_ _key _ _|_ _ _ _ _ _data _ _ _ _ _ _|
_ _key _ _|_ _ _ _ _ _data _ _ _ _ _ _|
_ _key _ _|_ _ _ _ _ _data _ _ _ _ _ _|
如果数据块的大 ...