`
hz_chenwenbiao
  • 浏览: 994620 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
转载自:http://blog.csdn.net/ghsau/article/details/7424694        上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。         要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现。拿上篇博文中 ...
非常好的使用线程同步的文章 转载自http://www.cnblogs.com/phinecos/archive/2010/03/13/1684877.html             多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。 下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。 先来看第一段代码,这里我们在run()方法中加入了synchronized关键字,希望能对run方法进行 ...
1.JVM的gc概述 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解 ...
转载自:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/   类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用的开发人员不需要直接同类加载器进行交互。Java 虚拟机默认的行 ...
载自:http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html     本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。 下面开始正文。 【案例1】通过一个对象获得完整的包名和类名 package Reflect; /** * 通过一个对象获得完整的包名和类名 * */ class Demo{ //other codes... } class hello{ ...
转自:http://www.cn-java.com/www1/?uid-694384-action-viewspace-itemid-84972   static方法就是没有this的方法。在static方法的内部不能调用非静态方法和变量,反过来是可以的。     一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口。 两者的区别就 ...
Error类和Exception类都继承自Throwable类。 Error的继承关系: java.lang.Object  java.lang.Throwable      java.lang.Error  
第一,谈谈final, finally, finalize的区别。最常被问到。第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。第四,&和&&的区别。这个问得很少。第五,HashMap和Hashtable的区别。常问。第六,Collection 和 Collections的区别。你千万别说一个是单数一个是复数。第七,什么时候用assert ...
public class MathTest { public static void main(String[] args) { System.out.println("小数点后第一位=5"); System.out.println("正数:Math.round(11.5)=" + Math.round(11.5)); System.out.println("负数:Math.round(-11.5)=" + Math.round(-11.5)) ...
转载自:http://blog.csdn.net/ilibaba/article/details/3965359   被架构师问的面试题1. 异常机制       异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。       传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降 ...
  有30万条IP段记录,每条记录有startip和endip,给100万个IP如何快速查询所属IP段?然后统计每个段占多少个IP ?   一朋友提出的问题,据说可以 500w/s的查询速度。请讨论! 另一朋友的想法 创建个对象,就叫collection吧,这个对象包含三个成员变量,int size,long startIP, long endIP,提供get和set方法,之后在main方法里将100w的IP处理成long,并放入一个long类型数组里,并排序好,之后再创建个长度为30w的collection类型的数组,将30w的IP段存入数组中,按endIP排序之后就开始遍历10 ...
 以前用过C++,知道它里面有一个内联函数这个概念,一般情况用inline关键字修饰,在C++定义类时,那种写中Class定义里面的函数,也被编译器当做内联函数处理。         说了这么多,还没说什么是内联函数。所谓内联函数 ...
转载自:http://www.charlesgao.com/?p=157     Google应用PageRank算法给每个网站分配了一个从0~10的数字,它代表了一个网站的重要性。PageRank根据网页之间的超链接来确定一个页面的等级。大家在我博客的右边栏中搜索框的下方可以看到我博客的PageRank,也可以在一些信息查询网站上查询任意网站的PageRank。那么,这个数值是如何计算出来的呢?其实,PageRank算法的计算过程可以形象的看作“投票”过程。比如我的网站上挂了Wikipedia的超链接,那么我就给Wikepedia投了一票,那么他的PageRank值就会升高。粗略的说,每 ...
        互联网服务的特点就是面向海量级的用户,面向海量级的用户如何提供稳定的服务呢?这里,对这几年的一些经验积累和平时接触的一些理念做一个总结。      一、原则      1.Web服务的CAP原理      CAP指的是三个要素:一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)。CAP原理指的是这三个要素最多只能同时实现两点,不可能三者兼顾,对于海量级服务,一般这是一条常记心中的基准准则。      如下是《Web服务的CAP 》关于CAP的定义: 一致性:可以参考数据库的一致性。每次信息的读取都需要反 ...
  ArrayBlockingQueue是JAVA5中的一个阻塞队列,能够自定义队列大小,当插入时,如果队列已经没有空闲位置,那么新的插入线程将阻塞到该队列,一旦该队列有空闲位置,那么阻塞的线程将执行插入。从队列中取数据为:take,放数据为:put。下面的例子模拟了两个队列的插入和获取,首先在队列2中插入一个数据,启动线程2向队列2中插入数据时,该线程将阻塞在队列2等待,同时启动线程1向队列1中插入数据,由于队列1此时为空那么能够正确插入,然后从队列2中取数据,当线程1再次插入时,阻塞到队列1,此时,阻塞在队列2的线程2能够插入,并且从队列1中取数据,此时线程1能够插入,如此往复50次,并且 ...
Global site tag (gtag.js) - Google Analytics