`
javaG
  • 浏览: 554722 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
下列方法有助于最大限度地降低死锁:             按同一顺序访问对象。      如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低。例如,如果两个并发事务获得   Supplier   表上的锁,然后获得   Part   表上的锁,则在其中一个事务完成之前,另一个事务被阻塞在   Supplier   表上。第一个事务提交或回滚后,第二个事务继续进行。不发生死锁。将存储过程用于所有的数据修改可以标准化访问对象的顺序                避免事务中的用户交互。      避免编写包含用户交互的事务,因为运行没有用户交互的批处理的速度要远远快于用户手动 ...
昨天面试,面试官要我在黑板上写个java文件复制的代码,但是一时紧张没写出来,回来后决定写一个出来。 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package cn.lsd; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...
经常遇到对HashMap中的key和value值对的遍历操作,有如下两种方法: Map<String, String[]> paraMap = new HashMap<String, String[]>();................//第一个循环Set<String> appFieldDefIds = paraMap.keySet();for (String appFieldDefId : appFieldDefIds) {String[] values = paraMap.get(appFieldDefId);......}//第二个循环for(E ...

Java ArrayList 实现

    博客分类:
  • java
ArrayList是List接口的一个可变长数组实现。实现了所有List接口的操作,并允许存储null值。除了没有进行同 步,ArrayList基本等同于Vector。在Vector中几乎对所有的方法都进行了同步,但ArrayList仅对writeObject和 readObject进行了同步,其它比如add(Object)、remove(int)等都没有同步。 1.存储 ArrayList使用一个Object的数组存储元素。 private transient Object elementData[]; ArrayList实现了java.io.Serializable接口,这儿的t ...

LL的含义

LL 的含义 -自左向右扫描分析输入符号串 -从识别符号开始生成句子的最左推导 LL(1): 向前看一个输入符号,便能唯一确定当前应选择的规则 LL(k): 向前看 k 个输入符号,才能唯一确定当前应选择的规则 而在antlr中实现了LL(*),也就是说可以向前看任意个符号,非常方便  
Java 异步消息处理        在前一节实现异步调用的基础上 , 现在我们来看一下一个完善的 Java 异步消息处理机制 . [ 写在本节之前 ]        在所有这些地方 , 我始终没有提到设计模式这个词 , 而事实上 , 多线程编程几乎每一步都在应该设计模式 . 你只要能恰如其份地应用它 , 为什么要在意你用了某某名称的模式呢
java实现异步调用   在JAVA平台,实现异步调用的角色有如下三个角色:   调用者 取货凭证   真实数据   一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后 凭取货凭证来获取真正的数据. ...
对于传参,从计算机的本质而言是传值.因为从数据模型而言计算机只认识数学值.但是不同的数学值代表的意义不同,有的数学值表示的是另一个数据的地 址.所以根据这个数学值能访问到它表示的数据,我们就把这样的操作称为传址 ...
深入研究线程池 一.什么是线程池? 线程池就是以一个或多个线程[循环执行]多个应用逻辑的线程集合. 注意这里用了线程集合的概念是我生造的,目的是为了区分执行一批应用逻辑的多个线程和 线程组的区别.关于线程组的概念请参阅基础部分. 一般而言,线程池有以下几个部分: 1.完成主要任务的一个或多个线程. 2.用于调度管理的管理线程. 3.要求执行的任务队列. 那么如果一个线程循环执行一段代码是否是线程池? 如果极端而言,应该算,但实际上循环代码应该算上一个逻辑单元.我们说最最弱化的线程池 应该是循环执行多个逻辑单元.也就是有一批要执行的任务,这些任务被独立为多个不同的执行 单元.比如: int x = ...
从jdk1.0到今天,JAVA技术经过十余年的发展,技术上已经发生了巨大的变化.但final变量的定义从它 诞生那天起,就没有发生任何变化,也就是这十多年它就一直表示它原来的意思. 但遗憾的是,经过十多年仍然有90%的人没有理解它的真实 ...
深入理解JMM的重点 JMM具体规定要JLS的 "Thread and lock"一章中,可以说这是一章非常晦涩的一个规范,要想完全把 它理解清楚,一般的辛苦是不行的.那是要"相当的~~~"的辛苦.而要把它向别人再解释清楚,那简直就 是恶梦. ...
对于双检锁,其实有多种不同的用法,有很多种用法是无论如何不会出现问题的. 我最初用双检锁来获取jndi对象时,立即有人告诉我双检锁是不安全的,我笑着告诉他:是否安全 我比你更有把握. static DataSource ds = null; public static DataSource getDataSource(){  if(ds == null){   synchronized(XXX.class){    if(ds == null)     ds = xxx;   }  }  return ds; } 这样的DCL有什么安全问题呢?它仅仅是为了不做重复的劳动.一是ds本身是已经存在的 ...
深入理解线程对象和线程 让我们先以C++来说明,然后我们转到JAVA上来,因为c++对对象的销毁更直接一些: 到目前为止,C++还没有直接支持多线程,意思是说多线程不是C++标准库,这也是JAVA程序员对于 多线程编程比C++程序更精通一些(这 ...
实战篇秘籍 (一) 本来这几节的内容想拿出来单独放在秘籍篇中.但由于我在实战篇五的结尾处说:关于这个例子仍然还有很多可说的内容,所以经由这句话所引出的秘籍篇,作为实战篇的继续,就叫它实战秘籍.在实战篇五中,有两个非 ...
基础篇 (一)[写在前面]    随着计算机技术的发展,编程模型也越来越复杂多样化.但多线程编程模型是目前计算机系统架构的最终模型.随着CPU主频的不断攀升,X86架构的硬件已经成为瓶,在这种架构的CPU主频最高为4G.事实上目前3.6G主频的CPU已经接近了顶峰.    如果不能从根本上更新当前CPU的架构(在很长一段时间内还不太可能),那么继续提高CPU性能的方法就是超线程CPU模式.    那么,作业系统,应用程序要发挥CPU的最大性能,就是要改变到以多线程编程模型为主的并行处理系统和并发式应用程序.    所以,掌握多线程编程模型,不仅是目前提高应用性能的手段,更是下一代编程模型的核心思 ...
Global site tag (gtag.js) - Google Analytics