上一页 1 2 3 4 5 6 7 8 ··· 15 下一页
摘要: ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会 阅读全文
posted @ 2013-07-26 09:15 王 庆 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 1.Cache Hit and Cache Miss当使用者第一次向数据库发出查询数据的请求的时候,数据库会先在缓冲区中查找该数据,如果要访问的数据恰好已经在缓冲区中(我们称之为Cache Hit)那么就直接用缓冲区中读取该数据.反之如果缓冲区中没有使用者要查询的数据那么这种情况称之为Cache Miss,在这种情况下数据库就会先从磁盘上读取使用者要的数据放入缓冲区,使用者再从缓冲区读取该数据.很显然从感觉上来说Cache Hit会比Cache Miss时存取速度快.2.LRU(最近最少使用算法) and MRU(最近最常使用算法)所谓的LRU(Least recently used)算法的基 阅读全文
posted @ 2013-07-24 08:44 王 庆 阅读(4490) 评论(0) 推荐(0) 编辑
摘要: 关于volatile在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,多任务环境下 阅读全文
posted @ 2013-07-24 08:37 王 庆 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 简历和自我介绍上经常能够读到“精通Java”这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点、不能给自己加分了。可是事实真是这样吗?对于语言的学习,我有一种观点,一是纵向,即要选择一门自己认为合适的语言学到有相当的深度。二在于横向,即要学习不同类型、不同历史和不同门派的语言:既有底层的语言,也有高级语言;接触一些动态语言、函数式语言;了解一些不同语言的编程范型和编程方式,比如基于原型编程、面向切面编程、命令式编程等等;最好能关注一门年纪尚浅,甚至小众的语言,了解一门语言的发展。横向类比能够带来对一门语言的不同认识,但是,有广度而没有深度的专家是可笑的,深入地学习一门语言 阅读全文
posted @ 2013-07-23 12:43 王 庆 阅读(374) 评论(0) 推荐(1) 编辑
摘要: YQL,(Yahoo! Query Language)是一种支持对互联网上的数据进行查询、过滤、连接、类似SQL语法的简单语言。用YQL官方的话:有了YQL,开发人员只需要使用一种 简单的查询语言即可访问和操控互联网上丰富的数据,而不再需要反复学习使用各种各样的API。一种代表作数据库发展未来的创意,数据库应该能够不仅仅代表具体的表和空间,变成广义的数据库,延展到整个互联网,才是一个最庞大的数据库。火丁大盗给了个简单的例子:123select * from htmlwhere url='http://www.dangdang.com/'and xpath='//ul[@ 阅读全文
posted @ 2013-07-23 09:13 王 庆 阅读(664) 评论(0) 推荐(0) 编辑
摘要: JDBJDB是基于文本和命令行的调试工具,Jikes在JDB的基础上提供了GUI。熟悉JDB还是有价值的,很多情况下需要我们在命令行下完成简单的debug问题定位。123jdb -classpath bin com.xx.Examplejdb -connect com.sun.jdi.SocketAttach:hostname=myhost,port=8000jdb -connect "com.sun.jdi.CommandLineLaunch:main=Hello 1 2 3"我们可能更熟悉使用下面这样的方式来进行调试,但本质上就是在使用JDB:1-agentlib:jd 阅读全文
posted @ 2013-07-23 08:50 王 庆 阅读(861) 评论(0) 推荐(0) 编辑
摘要: 应用程序并行计算遇到的问题 当硬件处理能力不能按摩尔定律垂直发展的时候,选择了水平发展。多核处理器已广泛应用,未来处理器的核心数将进一步发布,甚至达到上百上千的数量。而现在 很多的应用程序在运行在多核心的处理器上并不能得到很好的性能提升,因为应用程序的并发处理能力不强,不能够合理有效地的利用计算资源。线性的计算只能利 用n分之一的计算支援。 要提高应用程序在多核处理器上的执行效率,只能想办法提高应用程序的本身的并行能力。常规的做法就是使用多线程,让更多的任务同时处理,或者让一部分操作 异步执行,这种简单的多线程处理方式在处理器核心数比较少的情况下能够有效地利用处理资源,因为在处理器核心比较少的 阅读全文
posted @ 2013-07-23 08:45 王 庆 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 首先,明确两个概念:数据结构与数据存储结构!数据结构:是指相互之间存在一种或多种特定关系的数据元素的 集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱 是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解---无论购物就餐都需要排队;栈可以认为就是个栈道--- 只允许一个人通过的小道,而且只能从一端进入,然后再从这端返回,比如你推了个箱子进去啦,第二个人也推个箱子进去,此时只能等后进来的这个人拉着箱子出 去后,你才能退出。)数据存储结构:它是计算机的一个概念,简单 阅读全文
posted @ 2013-07-23 08:34 王 庆 阅读(8206) 评论(1) 推荐(1) 编辑
摘要: The fork/join framework is an implementation of the ExecutorService interface that helps you take advantage of multiple processors. It is designed for work that can be broken into smaller pieces recursively. The goal is to use all the available processing power to enhance the performance of your app 阅读全文
posted @ 2013-07-22 09:33 王 庆 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 控制反转 英语:Inversion of control,缩写为IoC 我想很多同学都会思考过这样的一个问题,控制反转,什么地方反转了,是不是翻译的不对?这里插一句当年马云借着盖茨的嘴说:“互联网会改变世界。”其实是他自己说的,因为那时侯没有人认识马云,如果我说是翻译错误,大家肯定拍砖说我没理解。大家对spring都用了很多年,有喜欢看书的同学一定会看到过spring 技术内幕,非常棒的一本书,没看的看过这篇博客之后记得买一本。细心的同学可能会记得这样一句话早在2004年,Martin Fowler就提出了“哪些方面的控制被反转了?”这个问题。他总结出是依赖对象的获得被反转了。基于这个结论,他 阅读全文
posted @ 2013-07-22 08:59 王 庆 阅读(294) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 15 下一页