- 浏览: 458528 次
- 性别:
- 来自: 杭州
最新评论
-
syw19901001:
30多条mysql数据库优化方法,千万级数据库记录查询轻松解决 ...
MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析 -
gaoyuanyuan121:
直接改成root.war,根路径能访问,项目路径也能访问,赞 ...
jetty 中如何设置root app -
freezingsky:
翻出来,再看一次!
AOP 的简单入门 -
Shen.Yiyang:
inter12 写道Shen.Yiyang 写道我说的不是NI ...
ReentrantLock、sync、ReentrantReadWriteLock性能比较 -
inter12:
Shen.Yiyang 写道我说的不是NIO和BIO的区别,而 ...
ReentrantLock、sync、ReentrantReadWriteLock性能比较
文章列表
第七条:改写equals尽量遵守的约定
7.1 在进行比较时,不需要进行 null 值比较,可以直接采用instanceof 中为null则直接返回false
7.2 域的比较顺序也会影响性能,最新比较的域应该是最容易发生改变的域。
7.3 改写equals的时候一般要改写hashCode()
7.4 不要让equals方法过于聪明
7.5 不要让equals依赖于不可靠的因素
7.6 不要把其中的Object替换成其他的对象
如:
@Override
...
第四条:避免创建重复的对象
4.1
String s = new String("haha"); // don't do this 该语句每次都会new 一个新的对象出来,在循环中将会new出一堆的新对象
String ss = "haha";这个方式新建的对象把 ...
总共657条建议,每次把自己理解的建议记录下来
第一条:考虑用静态工厂来代替公开的构造方法
第二条:通过私有的构造函数来强化单例属性
两种单例模式:
模式一:
...
总结 : 1. 写一个方法实现Callable接口
2. 生成executorService es = Executors.newFixedThreadPool(3);
3. 运行该线程 Future f = es.submit(c1); c1即为实现Callablel类的实例
第二项:queue JDK5.0新增的conllection
常用实现类 LinkedList 实现队列的话建议使用这个类
常见方法 具体的查询API
Add(); addFirst(),addLast(),getFirst(),getLast(), ...
以下是调用DoCallStuff的主程序。
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Executor {
public static void main(String[] args){
...
Jdk1.5中的多线程。
主要是在java.util.concurrent包中 ,其中几个重要的类对比如下
5.0 1.4
ExecutorService 取代 Thread
Callable Future 取代 ...
这种用法要求在执行一些处理之前,一定要执行某项特殊操作,处理之后一定也要执行某项特殊操作。这种人为的顺序性,无疑增加了代码的耦合度,降低了代码的独立性。很有可能会成为线程死锁和资源操作冲突的根源。
这点一直让我不安,可是没有找到方法避免。毕竟,死锁或者资源操作冲突,是线程的固有问题。
很巧的是,正在我惴惴不安的时候,我的一个朋友提供了一个信息。Sun公司根据JCR,决定在jdk1.5中引入关于concurrency(并发)的部分。
以下这个网址是concurrency部分的util.concurrent一个实现。非常好的信息。对于处理多线程并发问题,很有帮助。
http://gee.cs ...
线程模型--读写模型(2)
- 博客分类:
- 多线程
上述代码只是一段示意代码。实际应用中,人们通常抽取出来一个专门的读写同步锁。
interface ReadWriteLock {
… getReadLock();
… releaseReadLock();
… getWriteLock();
… releaseWriteLock();
}
具体的实现原理也是类似的信号量同步机制。
class RWLock {
… readers, writers;
… synchronized … getReadLock() { // 相当于synchronized(this)
…
whil ...
线程模型--读写模型(1)
- 博客分类:
- 多线程
读写模型
读写模型是一个稍微复杂一些的模型。
一份共享资源允许多个读者同时读取。但是只要有一个写者在写这份共享资源,任何其他的读者和写者都不能访问这份共享资源。
读写模型实现起来,不仅需要信号量机制,还需要额外的读者计数和写者计数。
public static final Object signal = new Object();
public static int readers = 0;
public static int writers = 0;
// 读者代码
… read() {
for(… ) { // 循环执行
synchronized(sign ...
生产者/消费者模型
有了信号量这个利器,我们就可以处理比较复杂的线程同步模型了。
首先,我们来看一个比较简单的生产者/消费者模型。还是以Java代码为例。
public static final Object signal = new Object();
public static final char[] buf = new char[1024]; // 需要同步访问的共享资源
// 生产者代码
… produce() {
for(… ) { // 循环执行
synchronized(signal){
// 产生一些东西,放到 buf 共享资源中 ...
request常见方法:
//完整的请求路径是 http://localhost:56231/test/action/pplibe?act=query
String scheme = request.getScheme(); //请求类型,一般为http
String serverName = request.getServerName(); //服务的ip地址, ...
1. CheckBoxSelectionModel<BaseModelData> sm = new CheckBoxSelectionModel<BaseModelData>(); 创建一个CheckBoxSelectionModel这个的初始化方法中主要是初始化了一些css
sm.setSelectionMode(SelectionMode.MULTI);//设置单选表格时候的方法
...
1. 我们通过 xxx.gwt.xml中的:
<entry-point
class='com.huawei.iread.manager.frame.client.ModuleEntryPoint' />中进入我们预置的类:ModuleEntryPoint'中的 public void onModuleLoad()方法
2. 主要通过分配器来 ...
AJAX的经典调用
//创建XML对象
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
...
# iostat -x 1
avg-cpu: %user %nice %sys %idle
16.24 0.00 4.31 79.44
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
/dev/cciss/c0d0
0.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29
/dev/cciss/c0d0p1
0.00 44.90 1.02 27.55 8.16 579.5 ...