`
zhangwei217245
  • 浏览: 33738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
前面我们介绍了Java当中多个线程抢占一个共享资源的问题。但不论是同步还是重入锁,都不能实实在在的解决资源紧缺的情况,这些方案只是靠制定规则来约束线程的行为,让它们不再拼命的争抢,而不是真正从实质上解决他们对资源的需求。 在JDK 1.2当中,引入了java.lang.ThreadLocal。它为我们提供了一种全新的思路来解决线程并发的问题。但是他的名字难免让我们望文生义:本地线程? 什么是本地线程? 本地线程开玩笑的说:不要迷恋哥,哥只是个传说。 其实ThreadLocal并非Thread at Local,而是LocalVariable in a Thread。 根据WikiPed ...
Java监视器支持两种线程:互斥和协作。 前面我们介绍了采用对象锁和重入锁来实现的互斥。这一篇中,我们来看一看线程的协作。 举个例子:有一家汉堡店举办吃汉堡比赛,决赛时有3个顾客来吃,3个厨师来做,一个服务员负责协调汉堡的数量。为了避免浪费,制作好的汉堡被放进一个能装有10个汉堡的长条状容器中,按照先进先出的原则取汉堡。如果容器被装满,则厨师停止做汉堡,如果顾客发现容器内的汉堡吃完了,就可以拍响容器上的闹铃,提醒厨师再做几个汉堡出来。此时服务员过来安抚顾客,让他等待。而一旦厨师的汉堡做出来,就会让服务员通知顾客,汉堡做好了,让顾客继续过来取汉堡。 这里,顾客其实就是我们所说的消费者,而厨师 ...
原文出自 http://blog.csdn.net/woshichenxu/archive/2006/01/22/586361.aspx 1.     关于hibernate缓 存的问题: 1.1.1.         基本的缓存原理 Hibernate缓存分为二级,第一级存放于session中称为一级缓存,默认带有且不能卸载。 第二级是由sessionFactory控制的进程级缓存。是全局共享的缓存,凡是会调用二级缓存的查 询方法都会从中受益。只有经正确的配置后二级缓存才会发挥作用。同时 在进行条件查询时必须使用相应的方法才能从缓存中获取数据。比如Query.iterate()方 ...
创建项目: 打开NetBeans 6.5.1,选择文件—》新建项目,选择Java Web,然后在项目列表中选择 Web 应用程序,下一步 选择使用专用文件夹存储库,指定库文件夹的位置,通常是默认的.\lib,即项目文件夹下的lib文件夹,下一步 选择Web应用服务器。这里选择Tomcat 6.0.18 ,Java EE版本选择 Java EE 5,下一步
今天发现服务器上的Oracle11g突然登录不上去了,提示ORA-28002错误,说是口令过期。 不当DBA还真不知道Oracle有这神秘功能。 上网上一查,有类似遭遇的朋友在论坛上求助,人家让他找DBA。汗。。。 好在有的DBA乐于分享,终于找到了解决方案: 1. 用DBA账户登录SQL PLUS。我用的是sysman。 2. 系统会提示口令失效,但是会马上让你重置新密码。 3. 重置之后,进入SQL PLUS控制台。 4. 查看口令失效用户的profile文件 SELECT  username,profile  FROM  dba_users; EM(Web ...
让我们继续前面有关ReentrantLock的话题。 首先,ReentrantLock有一个带布尔型参数的构造函数,在JDK官方文档中对它是这样描述的: “此类的构造方法接受一个可选的公平 参数。当设置为 true 时,在多个线程的争用下,这些锁倾向于将访问权授予等待时间最长的线程。否则此锁将无法保证任何特定访问顺序。与采用默认设置(使用不公平锁)相比,使用公平锁的程序在许多线程访问时表现为很低的总体吞吐量(即速度很慢,常常极其慢),但是在获得锁和保证锁分配的均衡性时差异较小。不过要注意的是,公平锁不能保证线程调度的公平性。因此,使用公平锁的众多线程中的一员可能获得多倍的成功机会,这种情况发 ...
在上一节中, 我们已经了解了Java多线程编程中常用的关键字synchronized,以及与之相关的对象 锁机制。这一节中,让 我们一起来认识JDK 5中新引入的并发框架中的锁机制。 我想很多购买了《Java程序员面试宝典》之类图书的朋友一定对下面 这个面试题感到非常熟悉: 问:请对比synchronized与java.util.concurrent.locks.Lock 的异同。 答案:主要相同点:Lock能完成synchronized所实现的所有功能      主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释 ...
首先我要感谢aa和Liu Xing帮我发现了我日志中的错误。之前比较粗心,把3条SQL语句写成一样的了,对于给读者造成的麻烦,我深表抱歉。 今天我把原文做了修订,为了对得起读者对我的关注,我重新深入的研究了这个问题,在后面,我会把来龙去脉写清楚。 问题:语句1 : Select   *   from   table1 A  where  A.col1  not   in  (  select  col1  from  table2 B ) 转载注明出处 ...
众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题。 关于线程的同步,一般有以下解决方法: 1. 在需要同步的方法的方法签名中加入synchronized关键字。转载注明出处:http://x- spirit.iteye.com/、http: //www.blogjava.net/zhangwei217245/ 2. 使用synchronized块对需要进行同步的代码段进行同步。转载注明出处:http://x- spirit.iteye.com/、http: //www.blogjava.net/zhangwei217245/ 3. 使用JDK 5中提 ...
在上一篇中,我们讲到了多线程是如何处理共享资源的,以及保证他们对资源进行互斥访问所依赖的重要机制:对象锁。 本篇中,我们来看一看传统的同步实现方式以及这背后的原理。 很多人都知道,在Java多线程编程中,有一个重要的关键字,synchronized。但是很多人看到这个东西会感到困惑:“都说同步机制是通过对象锁 来实现的,但是这么一个关键字,我也看不出来Java程序锁住了哪个对象阿?“ 没错,我一开始也是对这个问题感到困惑和不解。不过还好,我们有下面的这个例程:   public class ThreadTest extends Thread { private ...
想从备份的dmp文件中导入某些表的时候,可以用如下imp命令,格式: imp username/password@本地net服务名 file=xxx.dmp fromuser=xx touser=xx tables=(tablename) username:登陆数据库的用户名 password:登陆数据库的密码 本地net服务名:连接服务器的本地net服务名 file:你的dmp文件的路径 fromuser,touser:从一个用户导入到另外一个用户 tables:从dmp文件中导入的表名
一、emacs编辑器简介      emacs编辑器是由C语言和LISP语言编写的。LISP(链表处理语言)是由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。 我们可以使用LISP来扩展emacs,从而为emacs添加更多的命令。(补:emacs -nw:以命令行的方式来运行emacs,而不启动GUI界面) * 自动保存功能       如果你已经修改了一个文件,但是还没来得及存盘你的计算机就了,那么你所做的修改就很可能会丢失。为了避免这样的不幸发生,Emacs 会定期将正在编辑的文件写入一个“自动保存”文件中。自动保存文件的文件名的头尾各有一个“#”字符,比如你正在 ...
前不久项目中遇到一个问题:要求生成静态页面。 于是想到了velocity和FreeMarker。。。。 这是两个JAVA模板引擎,作为当前流行的几大MVC框架的有益补充,受到了开源框架Spring的支持。 下面总结一下初步FreeMarker应用。 1。要和Spring结合,首先要在Spring的Context中注册org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer的一个实例。 <bean id="freemarkerConfig" class="org.sprin ...
Global site tag (gtag.js) - Google Analytics