- 浏览: 8792 次
- 性别:
- 来自: 杭州
最新评论
文章列表
java开发中常用的队列:
BlockingQueue阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素,消费者用来获取元素的容器;
ArrayBlockingQueue:一个定长的环型数组,队列创建完成之后不再有内存开销,缺点是整个队列共用一把锁,竞争比较激烈;
LinkedBlockingQueue:一个基于链表实现的队列,头尾各一把锁,缺点是入队时有内存分配开销;
SynchronousQueue:常用于生产者消费者一对一的场景;
PriorityBlocking ...
代码参考:
package com.wj.test;
import java.lang.reflect.Method;
public class PerformanceTest {
public static void main(String[] args) throws Exception { int testTime = 10; PerformanceTest test = new PerformanceTest(); String msg = "this is test message"; long bTime = System.nanoTime() ...
volatile
volatile类型变量是:CPU直接读写变量所在的内存,而不是把变量copy到寄存器操作这样对变量的操作所线程都是可见的 这样做的结果是减少了并发时冲突的概率 但不能完全避免 ,并不是原子的;
sychronzied
独占锁,在高并发访问情况下,可能会引起上下文切换和线程调度(vmstats观察)
ReentrantLock
ReadWriteLock
ReentrantReadWriteLock
使用场景:多读少写,因为读线程之间没有竞争,所以比起sychronzied,性能好很多。
特点:
曾国藩:“轻财足以聚人,律己足以服人,量宽足以得人,身先足以率人”
跟上,跟下,跟左,跟右的打通能力!
介绍几个HTML5的重要特性,能够帮助你提高整个web应用的使用体验和开发效率
特性一:正则表达式
相信大家都会非常喜欢这个特性,无须服务器端的检测,使用浏览器的本地功能就可以帮助你判断电子邮件的格式,URL,或者是电话格式,防止用户输入错误的信息,通过使用HTML5的pattern属性,我们可以很方便的整合这个功能,代码如下:
<input type="email" pattern="[^ @]*@[^ @]*" value="">
运行如下:
如果在Firefox浏览器 ...
Vi编辑器的相关命令
vi是linux中最常用的编辑器。 首先介绍一下vi的基本概念。在vi中,存在三种模式:命令模式,插入模式,底行模式。各模式下的功能如下: (1) 命令模式。控制光标移动,复制、粘贴操作。 (2) 插入模式。文本编辑,通过ESC回到命令模式。 (3) 底行模式。保存、退出vi,字符串查找等。 常用的vim命令有:
光标移动命令
h或左方向键
光标向左移动一位
j或下方向键
光标向下移动一行
k或上方向键
光标向上移动 ...
在编译好的class文件中不好debug断点调试,在liunx下部署的更是不好调试了,解决的办法是可以用远程调试。在eclipse的debug里有remote java application 这个工具,可以使用它来设置远程调试。
确保本地代码和远程服务器代码一致,要不调试过程中,行号对不上。。。。。
set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8989,server=y,suspend=n %JAVA_OPTS%
-XDebug 启用调试。 ...
1、
Eclipse反编译工具Jad及插件JadClipse配置 Jad是一个Java的一个反编译工具,是用命令行执行,和通常JDK自带的java,javac命令是一样的。不过因为是控制台运行,所以用起来不太方便。不过幸好有一个eclipse的插件JadClipse,二者结合可以方便的在eclipse中查看class文件的源代码。下面介绍一下配置: A.下载JadClipse,http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download,注意择与eclipse版本一致的版本,我用的是Eclipse3.4,所 ...
最近在看代理相关的知识,转载一篇java各种代理性能方面的比较:
http://javatar.iteye.com/blog/814426
java ASM、Cglib、aop
- 博客分类:
- java
ASM
我们知道Java是静态语言,而python、ruby是动态语言,Java程序一旦写好很难在运行时更改类的行为,而python、ruby可以;不过java可以通过Magic,ASM等一些开源库去动态生成字节码文件;
它是一个Java字节码修改框架,能直接 ...