`
ftj20003
  • 浏览: 132345 次
  • 性别: Icon_minigender_1
  • 来自: ...
社区版块
存档分类
最新评论
文章列表
    略带兴奋的开始了新一 年第一次折腾!对于我个人来说,除了代码之外的另一爱好就是折腾。折腾好玩的软件,系统,硬件是我非常享受的放松方式。所以前几天就又忍不住折腾了我的x61一把。     手上的x61差不多两年 ...
    之前看到一个帖子是关于atomic使用的,当时没有仔细分析问题,理解有误,作者回信给我,我又去看了一下.原来的问题大致如下: private AtomicLong longValue = new AtomicLong(0); if(longValue.incrementAndGet() > 50) { longValue = new AtomicLong(0); } 这样的写法能保证同步吗?按照这个写法的话,if块一定要使用同步锁保证同步的.但是那样的话Atomic的优势将大打折扣,代码的主要问题不在if而在if内的那句赋值:longValue = new Atom ...
   IDEA从8到9用着越来越顺手,总体感觉比Eclipse来说更加智能一些,使用更加方便一些。之前为了不混淆记忆,把常用的Eclipse和IDEA的快捷键尽量按照windows下eclipse的快捷键的布局设置了,不然加上textmate的记都记死了。但是IDEA默认的初始化的内存是128m,最大512m,permsize是250m,如果在内部启动tomcat或者其它的web、应用服务器的话,所以初始内存最好改大一点。    网上试图找mac os下设置的,很遗憾的是没有找到,所以只能自己摸索了。有一点可以确定的是肯定可以改,因为对应的windows版在bin目录下有idea.exe.vm ...
   最近在找一些开源web项目素材的时候,才发现不管国内还是国外的开源项目多数都转型成maven构建了。想当年ant构建的时候忍不住学习了ant,现在总不能看着眼馋不会用maven吧,不然那么多的开源项目只是找齐依赖包都可以哭几天了。于是花了一天整了整maven的东东,发现这玩意挺好玩。    我用的是mac os10.5的黑苹果,所幸maven2.2早就内置了,省得我下载建软链接了。mac下使用maven和linux差不多,repositories的默认路径也是~/.m2/repository。需要做的是在上级目录下建一个settings.xml文件。maven对应eclipse有个叫m2 ...
   早在总结一时,我就尽量的把synchronized的重点说的简单:它就是配和对象的隐式锁使用的,注意一定是对象的隐式锁!那么下面的这个例子又怎么解释呢? /** * User: yanxuxin * Date: Dec 17, 2009 * Time: 9:38:27 PM */ public class ImplicitLockSample { public static void main(String[] args) { final ImplicitLock sample = new ImplicitLock(); ...
   在简单介绍java.util.concurrent.atomic包之前,有个概念要先抄袭熟悉一遍:CAS(比较并交换)。现在大多数的处理器都提供对并发访问的支持,这个支持的反映方式就是提供硬件的指令支持多处理的特殊需求。比如检测或者阻止其它 ...
   说到ThreadLocal,首先说说这个类的命名。直观上看好像是个Thread的什么亲戚,但其实它想表达的意思是线程本地变量,也就是说每个线程自己的变量。它作为一个JDK5以后支持范型的类,主要是想利用范型把非线程安全的共享 ...
   前面的两篇总结简单的说明了同步的一些问题,在使用基础的同步机制中还有两个可以分享的技术:volatile关键字和ThreadLocal。合理的根据场景利用这些技术,可以有效的提高并发的性能,下面尝试结合自己的理解叙述这部分 ...
      对于Thread来说只想说两个方法,一个是setDaemon(false|true),另一个是join()。首先说说守护线程,这么东西是干什么用的?对于Java应用我们都知道main方法是入口,它的运行代表着主线程开始工作了,我们也知道JVM里面有垃圾 ...
最近写关于并发的小应用,才发现真的该好好的正视java的多线程了。之前没有深入的掌握,用起来也是那么的吃力。作为J2SE里面为数不多的重要难点之一,多线程应用一直是我以敬畏的心态去尽量避开的,只是通过一些实例掌 ...
   第一次读Spring的源码大概是半年前写硕士论文的时候,那时侯只是因为想从中看看如何运用设计模式处理特定的问题,同时也对这个被追捧和广泛使用的框架内部的实现很好奇。期间结合着2.5的reference和CodeLogic分析工具看了 ...
      一直把精力放在web应用的开发和框架学习,应用,架构的领悟等等这些几乎见不到算法存在的场景中,对算法这个‘内功’修炼一直有种没处下牙的尴尬境地。不过这不代表从此不再接触算法,一味的只去掌握JDK封装好 ...
对于Digester的使用最近才明白一直以来的疑惑,主要是针对SetNextRule的。以下面的部分的xml为例: <Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Executor name="tomcatThreadPool" maxThread ...
     一直以来都是用tomcat做web服务器进行开发,很想知道其内部的一些原理和实现(虽然很多人说知道原理又不能当饭吃)。今天跟踪调试了源码的启动程序(关于源码的eclipse的导入以及ant的构建,网上有大把的资料,google一下就ok了),总算知道点大致的启动步骤,有些浅显的领悟分享一下: org.apache.catalina.startup.Bootstrap作为启动入口,此类的main函数: 1.首先创建一个自身的实例(如果此类的实例变量:private static Bootstrap daemon为空的话); 2.然后调用init()方法,此方法的主要工作就是反射得 ...
   上一篇文章只是很简单的跟踪了tomcat启动的主线(因为刚刚看代码,所以不可能一下子全部都看的懂,比较菜),本次把最近看到的一些新的内容和领悟继续分享一下,本次关心的主题是tomcat是怎么启动的时候部署webapp下面的每一个web应用的?    前面的启动分析在之前的文章中有介绍,直接从Catalina开始看起。在此先说明一点,即将出场的:StandardEngine,StandardHost,StandardContext都是继承自ContainerBase的容器类。    1. Catalina的load()方法会调用Digester的parse()解析相关的xml文件并且根据不同 ...
Global site tag (gtag.js) - Google Analytics