- 博客(87)
- 资源 (3)
- 收藏
- 关注
原创 java 并发编程读书笔记
1.同步容器,同步容器包括Vector和HashTable,是早期jdk的一部分。另一部分是同步包装类,以Collections.synchronizedxxx的工厂方法创建。2.同步容器虽然是线程安全的,但是对于复合操作,有时你可能需要加上额外的客户端加锁进行保护,即对于使用这些容器的客户端代码,如果存在复合操作,还是可能存在风险。3.例如check-and-act操作、循环中的元素操作
2014-05-05 22:08:04
1298
原创 SPI和API
先描述下API(Application Programming Interface )。在java中,我们使用java提供的很多类、类的方法、数据结构来编写我们的应用程序,最终完成我们需求的程序功能,这里的类、方法、数据结构即是jdk提供的api。api的意义,其实就是这些提供给你完成某项功能的类、接口或者方法。 而SPI(Service Provider Interface)
2014-04-18 21:19:34
15885
2
原创 《java performance》翻译 第七章jvm调优:堆内存设置
设置jvm堆内存 到目前为止,还没有为调优jvm的内存占用采取任何调优动作。下面这个步骤讲述了如何来确定一个应用应该使用的jvm内存大小。这个步骤的目标是帮助调优人员找出应用的常驻内存大小,因为应用的常驻内存大小为配置应用的堆内存提供了很好的参考作用。常驻内存大小是指应用在稳定运行状态需要使用的堆大小,另外一个角度来理解的话,可以认为是jvm在经历过一次fgc之后的内存占用大小。
2013-03-06 22:55:31
2270
原创 《java performance》翻译 第七章jvm调优:基础概念
现代jvm是一个能适应各种不同复杂应用的软件,大多数的应用在jvm的默认配置上能够运行得很好、满足需求,但还是会有一些应用在需要在默认配置上进行适当的jvm参数调优才能满足应用的性能需求。现代的jvm中有大量的参数可以设置进而改变jvm的行为,不幸得是,适合一个应用上的最佳配置未必在另一个应用上能够起作用。所以,知道怎么调优jvm参数就变得很重要。 方法论 调优的第一步
2013-03-06 12:08:57
1865
原创 JMS(java消息服务)学习笔记
JMS(java消息服务)是java平台关于面向消息中间件的api接口,用于在应用程序和分布式系统中发送消息,进行异步通信。JMS提供了一套类似JDBC的技术规范,服务的实现由具体的实现提供商提供。 使用JMS,可以解决诸多的体系结构性问题,比如异构系统集成通信,缓解系统瓶颈,提高系统的伸缩性(异步、非点对点的模式使得处理消息的应用可以水平扩展),增强系统用户体验,使得系统模块化和组件化
2013-02-20 00:11:47
11807
2
原创 屌丝程序员的2012
穿着从本命年留下来的红内裤,龙年马上就要平安过完了。首先要的是感激和感恩,这一年我顺利得完成了许多大事小事:正儿八经得要开始过日子的样子、身体还挺好、人也依然上进和乐观,我觉得这就挺够了,感谢家人、朋友和我自己。虽然还有很多不完美,但可以理解成那是给明年留的进步空间。 年初,订婚。这是件大事。这件事决定了我这辈子往后能有个多幸福的小家,回家能吃到多热的饭,周末休息的时候能做点啥,
2013-02-06 16:49:02
1275
原创 jar包冲突问题排查总结
在测试脚本编写和应用部署时,经常遇到的一个问题是:java.lang.NoSuchMethodError。这个问题产生的根本原因是运行时应用加载的jar包版本不是应用代码真正需要的版本。要解决这个问题,就要让应用加载真正“HasSuchMethod"的类所在的jar包。解决这个问题,我把它归纳为以下几步:验证加载内容、查找包含该类的jar包、查找应用适用的jar版本、查看出错应用加载的jar包位置
2013-02-02 19:08:24
24109
7
原创 contiperf施压机制初步探索总结
contiperf是一个轻量级性能测试框架,它让用户在基于junit4的接口测试用例上执行性能测试,官网链接如下:http://databene.org/contiperf.html。下面对ContiPerf的实现做一个概要的分析: 1.contiperf扩展自junit,所以可以使用junit的eclipse插件在eclipse中运行; 2.junit4以上,扩展junit通
2013-01-06 11:43:41
2102
原创 《java performance》读书笔记之java应用调优tips
首先 java performance把应用中代码引起的性能问题分为以下几类: 1.低效的算法、数据结构 2.锁竞争 3.低效的代码 然后文章分门别类得列举了一些java应用中典型的性能问题和调优tip,主要讲解了以下几类问题的原因分析和排查解决思路: 一.系统态cpu资源消耗过高
2012-12-23 01:19:44
1680
原创 apache和php环境搭建
一个项目需要用到php,要从零开始学习php了,在本地搭建了一下apache结合php的环境,记录一下,以备后用。 1.安装php。 2.找到php目录下的 php.ini-dist,重命名为php.ini。 3.修改php.ini.在php.ini中找到extension=php_gd2.dll所在行,去掉开头的":"。
2012-11-25 22:33:21
931
原创 《java performance》读书笔记之垃圾回收监控分析
当需要jvm调优时就预示着需要分析jvm监控的信息。当jvm版本变化、操作系统变化、应用升级等任何一个变化时,都需要进行jvm调优。 jvm监控包括了垃圾回收、JIT编译行为、类加载等区块。 性能监控可能是当发现了一个系统的性能瓶颈但又没有充足的信息和证据来指明瓶颈的根源所在时第一步要做的事情。 相反得
2012-10-28 23:08:12
1638
原创 cpu伪共享问题
CPU内部也会有自己的缓存,内部的缓存单位是行,叫做缓存行。在多核环境下会出现CPU之间的内存同步问题(比如一个核加载了一份缓存,另外一个核也要用到同一份数据),如果每个核每次需要时都往内存中存取,这会带来比较大的性能损耗,这个问题一般是通过MESI协议来解决的。 MESI协议中包含M、E、S、I四个状态,分别的意思是:M(修改, Modified): 本
2012-09-23 21:53:48
3926
2
原创 《java performance》读书笔记之JIT
这一部分的内容其实主要是看了毕玄大师的《分布式java应用基础与实践》得到的总结。如下。 编译是指从一些高级语言生成机器级别的指令的过程。传统的编译器一般是从C或者C++这样的源程序出发,把每个源代码文件编译成一个个对象文件,然后把这些文件连接到一个库或者可执行文件中,使得用户可以执行这些库或者可执行文件。因为编译并不是频繁的任务,所以编译时间在静态编译器上并不是大的约束。j
2012-08-26 22:33:19
1857
原创 【ASM系列2】字节码介绍
这一篇首先介绍下面这些类型的字节码指令: 装载和存储系列:从局部变量装载到操作数栈的xload系列指令、从常量池中装载数据到操作数栈的xconst和push系列、将操作数栈中的数据保存到局部变量的xstore系列指令。 字段访问系列:getfield、putfield、getstatic、putstatic等指令。 方
2012-08-23 19:59:14
2107
原创 【ASM系列1】visitor模式
最近一直在使用ASM做一些代码监控和AOP拦截的事情,接下来准备对做的这些事情做下记录,以备后用,还是那句话:好记性不入烂键盘。 存在这样的问题:在一个集合当中,存在着多种不同的类型,但是需求需要对这个集合当中的所有元素遍历之后进行类似逻辑的一个操作。退一步思考,如果集合中都是同类元素,这会很简单,只要在这类元素的对象上执行固定的操作就可以。而现在的情况是多种不同类型的对象,
2012-08-18 17:26:57
2260
原创 eclipse中show whitespace characters按钮编辑器中显示导致恶心的乱码
已经第二次了,java类中并没有中文,当时打开后依然存在恶心的乱码:如图:上次遇到过,解决了之后就忘记了,这次记录一下。在文件打开的状态下,在eclipse上能看到菜单栏中有如下图的按钮:去掉选中就解决问题了。好记性不入烂笔头啊,何况现在真的不是好记性了,悲诶啊。
2012-08-13 14:04:06
4968
原创 《java performance》读书笔记之 jvm 垃圾回收
jvm 的垃圾收集器基于以下两个在java应用中成立的假设:1是大部分分配的对象几乎马上就没有被引用到了,2是从老对象到新对象的引用变得越来越少(老对象很少依赖新创建的对象)。基于这两点,hotspot vm设计了minor gc和fgc两类分别正对上述两种情况的垃圾回收方式。HotSpot 虚拟机把堆内存划分为几个物理块:年轻代、年老代、永久代。 年轻代:
2012-08-12 08:44:07
1416
原创 sysbench使用
sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。下载地址:http://sourceforge.net/projects/sysbench/ 现在已经被墙了,需要翻墙。不过csdn上也能下到。为了把sysbench安装起来测试一下mysql,费了不少周章,这里记录一下。
2012-08-06 17:32:43
1228
转载 HTTP中的各种错误码
一、HTTP码应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。响应码分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:成功,行为被成功地接受、理解和采纳3.3xx:重定向,为了完成请求,必须进一步执行的动作4.4xx:客户端错误,请求包含语法错误或者请求无法实现5.5xx:服务器错误,服务器不能实现一种明显
2012-07-30 10:21:30
1495
原创 《java performance》读书笔记之jvm runtime
vm runtime的主要功能:命令行参数解析、虚拟机生命周期维护、类加载、字节码解释、异常处理、同步、线程管理、jni、fatal error处理、c heap管理。命令行解析:NA虚拟机生命周期:NA类加载:NA字节码解析(interpreter):The template table generated in memory can be viewe
2012-07-25 09:42:34
1579
转载 用maven assembly插件打jar包实现依赖包归档
如果你的项目使用maven构建的话,当项目要上线,部署到服务器上去的时候或许会碰见这样的问题。问题就是,服务器上没有maven的环境,也就是说,项目所依赖到的那些仓库(repository)中的jar包你需要单独提取出来上传到服务器中去。我知道pom类型如果是war的话,在使用mvn package 的命令就能自动将项目依赖的jar包打到web-inf 下的lib文件夹中。但是,如果pom类型
2012-07-23 22:46:53
28368
2
转载 java虚拟机中的锁优化(转载)
在看java performance的时候看到一些同步的名词,偏向锁、轻量级锁之类的,于是想先了解一下虚拟机中的锁机制,于是找到了这篇文章。发现是《深入理解Java虚拟机:JVM高级特性与最佳实践》一书的章节,讲得干脆好懂,差点就有要去买一本的冲动-----还是明天吧。以下是文章转载:-------------------------------------------------------
2012-07-15 23:34:26
1792
1
原创 我的工作思考
工作三年了,做为射手男,一直自由散漫,又心气颇高,觉得是时候想想工作中的一些经验教训,记录下来。提醒自己努力做到,踏实工作,享受生活。1.宁愿多花一点时间在时间管理和规划上,也不要漫无目的得在没有计划的时候找事情做,那会导致效率极低。2.不要为了应付工作,要在工作中创造成就感,才能让自己快乐得工作,并有动力持续去做,才能在工作中形成良性循环。3.主动多去考虑,推动一些新事物的落地,
2012-07-15 22:41:36
1421
2
原创 使用mvn插件执行工程单元测试OOM的解决办法
问题:同事的一个工程最近几天使用mvn test跑单元测试回归时,每天都会报“org.apache.maven.surefire.booter.SurefireExecutionException:PermGen space; nested exception is java.lang.OutOfMemoryError: PermGen space”这个错误。 拿到问题后,我
2012-07-12 16:39:17
4505
转载 使用MAT时的Shallow Size和 Retained Size的区别
所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size.这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释。Shallow Size对象自身占用的内存大小,不包括它引用的对象。针对非数组类型的对象,它的大小就是对象与它所有的
2012-07-02 13:18:21
5577
原创 应用初始化时mysql hold在SocketInputStream.socketRead0(Native Method)问题
今天启动一个应用,应用初始化时需要去读一个数据库表,把里面的内容加载到本地缓存中。但是启动之后一直自检失败,应用不能正常提供服务。jstack来dump了线程之后,发现jboss的主线程hold在SocketInputStream.socketRead0(Native Method)上。多次dump也是一样的情况。查了很久,发现是一个乌龙问题,原因是初始化需要加载的这个数据量太大,mysql一直在
2012-05-03 16:59:42
6503
1
转载 what-to-do-when-nexus-returns-401
Sonatype helps open source projects by providing free Maven repository hosting and Maven central repository sync. There are hundreds of projects using this great service. As a result, I’ve received
2012-04-25 10:20:22
666
转载 HashMap高并发死循环相关文章
http://code.alibabatech.com/blog/dev_related_969/hashmap-result-in-improper-use-cpu-100-of-the-problem-investigated.htmlhttp://www.iteye.com/topic/754887http://aaba.me/blog/2010/03/hashmap-get-b
2012-04-18 21:12:59
740
原创 windows远程桌面窗口调节
用windows远程另外一台机器时遇到远程桌面的窗口不能调节到当前显示器的最大值时,解决办法:一、看下我们的当前分辨率是多少比如这里是1280 1024二、远程的时候,用cmd打开命令:mstsc /h:1024 /w:1280
2012-04-18 21:11:36
1542
原创 getResourceAsStream的用法
Java中的getResourceAsStream有以下几种:1. Class. getResourceAsStream(String path) : path 不以’/'开头时默许是从此类所在的包下取资源, 以’/'开头则是从 ClassPath根下获取。 其只是经过path结构一个绝对路径, 最终还是由ClassLoader获取资源。 2. Class. getClassLoad
2012-04-09 10:27:53
929
原创 drools的eclipse插件安装问题
按照《Drools5规则引擎开发教程.pdf》这个文档开始安装drools的eclipse插件,一直没有安装成功,在网上查,也是一样的步骤,不知道这些帖子是真的有效还是只抄了这个文章中的内容,比如:http://www.blogjava.net/apple0668/archive/2010/01/17/309883.html。最后我重新下了eclipse3.4,在eclipse目录下建了links
2012-04-08 21:43:57
4760
原创 个人收藏夹的批处理
个人收藏夹批处理@echo offset /p name=请输入链接名:set /p url=请输入url:echo %name%echo %url%echo ^^%name%^^>>index.htmlpause>nul结合一个web服务器就可以用得更好了
2012-03-28 22:12:55
1183
原创 一些linux命令和脚本(持续完善)
1. 查询文件中符合字符串的数量:grep -c 'dfd' dd.log2. 解压tar.gz包tar zvxf xxx.tar.gz3. FTP使用:1)ftp命令进入ftp控制台2)open ip打开连接,然后输用户名和密码、3)put sourceFile targetFile上传文件4)gettargetFile sourceFile下载文件4.
2012-03-28 21:46:24
705
原创 线程分析初步
1. Dump:在系统做性能调优以及问题排查时,为了知道当前系统的运行状况,我们经常会使用线程dump的方式来发现系统可能存在的问题。Dump线程的命令通常会使用kill -3 pid或者jstack pid 。把结果输出到指定文件上,,命令:sudo –u adin –H jstack 9926 >>/tmp/9926.tdump。得到dump文件后,需要把文件下载到本地,如果是在日常
2012-03-28 21:45:23
1276
原创 Btrace在性能测试中的使用
在测试环境安装btrace,可以用于排查接口调用的时间,分析测试点的瓶颈。以下简单介绍安装和使用。1. 安装:btrace是一个开源代码软件,下载安装的地址在:http://kenai.com/projects/btrace/downloads/directory/releases/release-1.2.1,下载得到tar.gz包,在应用服务器上使用sudo–u admin –
2012-03-28 21:43:50
2035
原创 input框disable和readonly的区别
两种属性的写法如下: 1、2、 这两种写法都会使显示出来的文本框不能输入文字, 但disabled会使文本框变灰,而且通过request.getParameter("name")得不到文本框中的内容(如果有的话), 而readonly只是使文本框不能输入,外观没有变化,而且通过request.getParameter("name")可以得到内容。
2011-11-28 16:01:48
714
原创 mod_jk配置超时重发
这两天以来对账系统触发时发现一个问题,对账的定时任务是用一个http请求来触发的,但是每天的执行结果看到对账任务执行了两次。排查日志得到结果也很奇怪,apache的日志显示请求只进来了一次,但是任务的入口servlet被执行了两次。找了pe查看了apache的配置才知道原因:JkWorkerProperty worker.local.socket_timeout=30JkWor
2011-11-08 11:27:00
1781
1
原创 在文件每行后加上指定符号的批处理
@echo offset /p source=请输入源文件:set /p target=请输入目标文件:set /p var=请输入行末要加的符号:echo %var%for /f %%i in (%sourc%) do echo %%i%var%>>%target%pause>nul
2011-10-25 07:52:57
990
JVM类加载跟踪器
2013-02-02
btrace扩展功能工具
2012-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人