生产者-消费者模型的Java实现

原文转载自:http://tanlan.iteye.com/blog/1158154

生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入一个新的数据项的情形,其解决方法是让生产者此时进行休眠,等待消费者从缓冲区中取走了一个或者多个数据后再去唤醒它。同样地,当缓冲区已经空了,而消费者还想去取消息,此时也可以让消费者进行休眠,等待生产者放入一个或者多个数据时再唤醒它。

一,首先定义公共资源类,其中的变量number是保存的公共数据。并且定义两个方法,增加number的值和减少number的值。由于多线程的原因,必须加上synchronized关键字,注意while判断的条件。

more →

HashMap原理

原文地址:http://grunt1223.javaeye.com/blog/544497

版权声明:所有版权皆归原作者所有

HashMap是一种十分常用的数据结构,作为一个应用开发人员,对其原理、实现的加深理解有助于更高效地进行数据存取。本文所用的jdk版本为1.5。

more →

数据库脏读、不可重复读和幻读

锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。 一般来说,锁可以防止脏读、不可重复读和幻觉读。

事务并发产生的问题:

1、脏读:一个事务读取到了另外一个事务没有提交的数据

more →

如何理解JAVA堆栈

Java把内存划分成两种:一种是栈内存,一种是堆内存。

堆栈的概念逻辑上的,在完全符合Java规范的Java处理器面世之前,所有Java虚拟机提供的内容都是由软件模拟出来的。

在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。

more →

为什么尽量不回滚

昨天晚上加班到12点后,于是和王前进、刘涛一起做梁冠立梁总的车回的家。

路上说着上线期间辛苦的问题,聊着聊着梁总说起上线出现问题为什么尽量不去回滚,他提到了两点,其中第二点让我感触很深,体会到了视野之间的差距。

他说原因有两个:

more →

Chrome 控制台console的用法(学了之后对于调试js可是大大有用的哦)

全文转载自:http://www.cnblogs.com/ctriphire/p/4116207.html?utm_source=tuicool

大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方。可能大家对console.log会有一定的了解,心里难免会想调试的时候用alert不就行了,干嘛还要用console.log这么一长串的字符串来替代alert输出信息呢,下面我就介绍一些调试的入门技巧,让你爱上console.log

先的简单介绍一下chrome的控制台,打开chrome浏览器,按f12就可以轻松的打开控制台

more →