- 浏览: 297161 次
- 性别:
- 来自: 广州
最新评论
-
colin_i:
总结的很好,谢谢
Spring事务传播机制和数据库隔离级别 -
xiaoxi0324:
我想问,是否支持获取method内的逻辑分支,比如if分支,普 ...
javassist 学习笔记 -
z390174504:
不错,不错哦
web.xml 中的listener、 filter、servlet 加载顺序及其详解 -
chokee:
...
web.xml 中的listener、 filter、servlet 加载顺序及其详解 -
chenchangqun:
细致啊,楼主辛苦。
web.xml 中的listener、 filter、servlet 加载顺序及其详解
文章列表
javassist 学习笔记
- 博客分类:
- javassist
介绍:www.javassist.org/
javassist、ASM 对比
1、javassist是基于源码级别的API比基于字节码的ASM简单。
2、基于javassist开发,不需要了解字节码的一些知识,而且其封装的一些工具类可以简单实现一些高级功能。比如HotSwaper。
3、ASM比javassist性能更快,灵活行也较高。
4、javassist提供者动态代理接口最慢,比JDK自带的还慢
性能对比
Framework First time ...
下面是在利用JDK的Instrument来编写调试工具的时候出现的一些问题总结
1、java.io.Console 类的读取操作将会阻塞掉写入操作,造成写入操作不能异步进行。
原因是该类中加入了读写锁。代码如下:
public String readLine(String fmt, Object ... args) {
String line = null;
synchronized (writeLock) {
synchronized(readLock) {
if (fmt ...
前言
在看Btrace源码的时候,了解到一些陌生的启动命令参数,例如-Xbootclasspath等,之前也曾遇到过,但并没有去进一步全面了解,在此则进行介绍。
简介
Java 的启动参数包括标准的参数(运行环境参数)和非标准的参数(JVM实现支持的参数)。
标准的参数
参数
描述
-client
client模式启动
-server
Service模式启动
...
前言
在看Btrace相关源代码的时,才认识到MANIFEST.MF是有很大用途的,以前对jar文件没多大了解,现在有空也整理下相关的资料。
Jar文件简介
Jar文件的本质是zip 文件,其中包含了META-INFO文件夹。Jar文件可以用jar工具或者java.util.jar API 来创建。Jar的文件名没有任何限制。
Jar文件不单仅仅用来压缩class文件或者资源文件,还可以用来限制或者扩展应用程序。如果jar文件中含有META-INFO文件夹,它常常用来存储包或者配置文件,包括安全、版本、扩展、组件。
...
mysql 配置文件 详解
- 博客分类:
- 数据库方面
mysqld程序--目录和文件
basedir = path #使用给定目录作为根目录(安装目录)。
character-sets-dir = path #给出存放着字符集的目录。
datadir = path #从给定目录读取数据库文件。
pid-file = filename #为mysqld程序指定一个存放 ...
多线程设计的目的是为了更多的榨取服务器硬件的性能,但是线程仍然会给运行时带来一定程度的开销。上下文切换——当调度程序临时挂起当前运行的线程时,另 外一个线程开始运行——这在多个线程组成的应用程序中是很频繁的,并且带来巨大的系统开销:保存和恢复线程执行的上下文,离开执行现场,并且
CPU
的时间会花费在对线程的调度而不是运行上。当线程共享数据的时候,它们必须使用的同步机制,这个机制会限制编译器的优化,能够清空或锁定内存和高速缓存,并在共享内存的总线上创建同步通信。
无论何时,只要有多余一个的线程访问给定的状态变量,而且其中某个线程会写入该变量,此时必须使用同 ...
在项目中用到了memcached 做缓存,在实际应用中发现spymemcached 客户端在网络状态比较差是(大概延迟60ms左右)时的读取超时现象比较严重,而且造成应用的内存被消耗尽了(用jmap 查看过,发现memcache 的客户端用到的异步线程类占用很大的内存,估计是由于超时不断创建的缘故)。于是便换了http://www.whalin.com/memcached 这个的客户端。。在更换过程中也出现了一些问题,由于是晚上才发现,害得我晚上因为这事睡都睡不着。。。想好一些调试的办法,然后在明早进行测试。。
问题一:当key 为中文的时候,value取错了。
遇到这 ...
LinkedBlockingQueue类
一个基于已链接节点的、范围任意的 blocking queue。此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。
可选的容量范围构造方法参数作为防止队列过度扩展的一种方法。如果未指定容量,则它等于 Integer.MAX_VALUE。除非插入节点会使队列超出容量,否则每次插入后会动态地创建链接节点。
...
最近有点想研究下java.util.concurrent 包下的一些类中的实现,在现实中也对这包里的类应用不少,但都没怎么去深入理解,只是听说里面的实现在高并发中有不错的性能。。接下将对里面的几个比较常用的类的源码进行分析。。
ConcurrentHashMap类
研究源码时,我一般喜欢从实际的应用中去一步步调试分析。。这样理解起来容易很多。
实际应用:
ConcurrentMap<String, String> map = new ConcurrentHashMap<String, String>() ...
一、创建模式
1、工厂模式
工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪个类。
工厂模式有以下几种形态:
(1)简单工厂(Simple Factory) ...
第二部分 面向对象的设计原则
如何同时提高一个软件系统的可维护性(Maintainability)和可复用性(Reuseability)是面向对象的设计要解决的核心问题。
一个好的系统设计应该有如下的性质:可扩展性(Extensibility)、灵 ...
1.Mysql
的逻辑架构
每个客户端连接在服务器进程中都拥有自己的线程
,
每个连接所属的查询都会在指定的某个单独线程中完成,这些线程轮流运行在某个
CPU
核心或者
CPU
上。服务器负载缓存线程,因此不需要为每个新的连接重建或撤销线程。
Mysql
会解析查询,并创建一个内部数据结构(解析树),然后对其进行各种优化。其中包括重写查询,决定查询的读表顺序,以及选择须使用的索引等。用户可以通过特殊的关键字给优化器传递各种提示(
Hint
),影响它的决策过程。
...
很久没写博客了,最近也看了不少书,看完了好像印象不深,还是回头写写记录下吧。。
1.TCP机制 TCP提供了可靠性 ,当TCP向另外一端发送数据时,它要求对端返回一个确认。如果没有收到确认,TCP就自动重传数据并等待更长的时间。在数次重传失败后,TCP才放弃,如此在尝试发送数据上所花的总时间一般为4-8分钟(依赖具体实现)。 TCP含有用于动态估算客户和服务器之间的往返时间(round-trip time,RTT)的算法 ,以便它知道等待一个确认需要多少时间。 TCP通过给其中每个字节关联一个序列号对所发送的数据进行排序。 接受端TCP将先根据它 ...
1. 配置文件 Log4J配置文件的基本格式如下:
#配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
#配置日志信息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
#配置日 ...
由于项目以后可能会用到关于数据库备份,主要是用主从复制,来实现数据库的读写分离等功能。在这几天对mysql 的主从配置研究了下,我在电脑上配置了两个mysql 数据,配置还真有点麻烦。。关键还是对mysql 的数据库的了 ...