- 浏览: 143699 次
- 性别:
- 来自: 广州
最新评论
-
randyjiawenjie1:
终于遇到一个人讲清楚了
阻塞I/O,非阻塞I/O -
dxqrr:
学习了。。。。
java中堆和堆栈的区别 -
tanhong:
[color=yellow][/color] ...
“is a”和“has a”的区别 -
uuid198909:
代码看着是比较………………
JDK5新特性--java.util.concurrent Semaphore(8) -
heipark:
兄弟,咱这代码纠结了点....
JDK5新特性--java.util.concurrent Semaphore(8)
文章列表
1、相对于“瀑布”生命周期,迭代和进化式开发对部分系统及早地引入了编程和测试,并重复这一循环。这种方式通常
在还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规格说明。
2、迭 ...
- 2008-05-24 19:45
- 浏览 1052
- 评论(0)
1、接口修改了,什么事情都可能发生。
2、当需要修改的接口被那些“找不到,即使找到也无法修改”的代码使用时,接口的修改才会成为问题。这种情况下,我们会说,这个接口是“已发布接口”。
3、如果重构手法改变了“已发布接口”,你必须同时维护新旧两个接口,知道所有用户都有时间对这个变化做出反应,这不太困难。请尽量这么做:让旧接口调用新接口。当你修改函数名称时,请留下旧函数,让旧函数调用新函数。千万不要拷贝函数实现代码,那样会让你陷入“重复代码”的泥沼。
4、修改接口的典型例子:Java聚集类,Collection classes,Java2使用新聚集取代了原有的一些聚集接口。Java2发布时 ...
- 2008-05-24 18:51
- 浏览 1053
- 评论(0)
1、好代码的两个重要标志:易读、易改。
2、重构的定义:在不改变代码的外在行为的前提下,对代码做出修改,以改进程序的内部结构。
3、当你发现自己需要为一个程序添加一个特性,而代码的结构使得你不能很方便的 ...
- 2008-05-24 18:28
- 浏览 956
- 评论(0)
Java多核线程笔记-volatile的原理与技巧
volatile, 用更低的代价替代同步
为什么
使用volatile比同步代价更低?
同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能.
而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.
volatile原理是什么?
volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内存详见java内存模型)
因此, 当多核或多线程在访问该变量时, 都将直接
操作
主存, 这从本质上, 做到了变量共享.
v ...
- 2008-05-23 11:13
- 浏览 1486
- 评论(0)
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)
堆区:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放数据
栈区:
1.每个线程包含一个栈区,栈中只保存原始类型数据和对象和对象引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
方法区:
1.又叫静态区,跟堆一样,被所有的 ...
- 2008-05-23 01:39
- 浏览 1718
- 评论(1)
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
2.
栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小 ...
- 2008-05-22 23:40
- 浏览 4008
- 评论(6)
进程通常是一个程序的实例。但进程是不活动的,必须有一个线程,线程负责执行地址空间中的进程代码。一个进程可以同时运行多个线程,每个线程拥有自己的堆栈、
CPU
寄存器和
CPU
时间。多个线程共享进程占有的资源,比如地址空间、动态内存、文件等。
Java
虚拟机中线程可以粗略的如下表示:
可以看到,每个线程有自己的本地变量,同时也共享在
Java
虚拟机中的全局存储。
- 2008-05-22 23:21
- 浏览 1154
- 评论(0)
每个JAVA对象都有一把所,当有多个线程同时访问共享资源
的时候,需要Synchronize 来控制安全
性,synchronize分synchronize 方法和synchronize块,使用synchronize块时, 一定要显示的获得该对象的锁(如synchronize(object))而方法则不需要。
JAVA 的内存模型是对每一个进程有一个主内存,每个线程有自己的内存,他们从主内存中取数据,然后计算,再存入主内存中。
并发问题如下:如果多个线程同事操作同一数据,A线程从主内存中取的I的值为1,然后进行加1操作,这时B线程也取I的值,行加2操作。然后A存入2到主内存中, ...
- 2008-05-22 23:00
- 浏览 1330
- 评论(0)
1、简单工厂模式,是类的创建模式。
2、工厂模式负责将大量有共同接口的对象实例化。包括三种类型:
简单工厂模式,又叫静态工厂方法模式。
工厂方法模式,又叫多态性工厂模式。
抽象工厂模式,又称工具箱模式。
3、简单工厂模式的角色:
工厂类角色:简单工厂模式的核心,含有与应用相关的业务逻辑。在客户端调用下创建产品对象,往往由一个JAVA类实现。
抽象产品角色:工厂方法模式所创建的类的父类或他们共同的接口,由一个JAVA接口或抽象类实现。
具体产品角色:工厂方法模式所创建的类都是这个角色的实例。
工厂根据参数决定创建哪一种产品类的实例。
4、如果具体类彼此之间没有共 ...
- 2008-05-22 14:51
- 浏览 1233
- 评论(0)
拿
socket举例。
当read数据时,如果这时没有数据可读,阻塞I/O会一直等待有数据读,数据从kernel copy
到socket的buffer后返回;非阻塞I/O会立即返回,但如果有数据可读,非阻塞I/O也是等数据从kernel copy
到socket的buffer后返回。
以上是阻塞与非阻塞I/O的区别,但以上两个例子的read操作都是同步的,是不是很奇怪?点解称其为同步?看看同步的定义就会很明确:
A synchronous I/O operation
causes the requesting process to be blocked until that I/O ...
- 2008-05-22 10:58
- 浏览 8519
- 评论(3)
状态模式(state pattern)和策略模式(strategy pattern)
的实现方法非常类似,都是利用多态把一些操作分配到一组相关的简单的类中,因此很多人认为这两种模式实际上是相同的。然而
在现实世界中,策略(如促销一种商品的策略) ...
- 2008-05-22 01:18
- 浏览 1326
- 评论(0)
迭代化开发做为一种软件开发方法,已经逐渐的得到应用。本文的目的是介绍一种可实践操作的迭代化开发方法,这种开发方法描述了如
何以一种简单实用的方法来进行迭代化开发。通过采用本文所描述的迭代化开发的这种方法 ...
- 2008-05-21 16:49
- 浏览 1489
- 评论(0)
面向对象与领域建模
板桥里人
http://www.jdon.com
2006/12/6(转载请保留)
多变且复杂的需求
如果没有多变的需求,也许就没有今天的面向对象软件,我们曾经试图通过需求管理、需求跟踪等等管理方式 ...
- 2008-05-21 15:14
- 浏览 1011
- 评论(0)
1、设计模式是设计上的重用,框架是更大粒度上的重用。
2、原型:人类组织、总结、概括客观世界的基本概念。
3、业务原型是对业务领域中的原型。是对不同业务需求中的共同之处的抽象和概括。
4、一个业务原型应该是一个在业务领域或商业软件系统持续发生并且普遍存在的最初级的事物。
5、原型之间是相互交互的,Party, Product, 和 Order是每个虚拟商业系统的基本概念,在这个商业系统中,你可以卖产品或服务。我们将这些原型之间的协作看成是业务原型模式(business archetype patterns)。
6、业务原型模式business archetype patter ...
- 2008-05-21 14:58
- 浏览 1257
- 评论(0)
最近看了一些模式和方法论的东西。
在这五十多种模式中,不少都是在开发过程中,我们经常用的,虽然我们不知道这种做法应该叫什么模式。
但是大部分,是需要我们在编码中有意识地去实践的。
以模式指导实践,是软件工程的一个好习惯,无论是架构模式,设计模式,还是成例模式。
说起“原则”这两个字,可以扯一点。
原则组成了我们的人生观。
原则是“本”,本立而道生。
如果说人生是一幅画,那么画法就是我们的原则。
原则要坚持,但是知易行难。
心里明明知道那是对的,可是偏偏做不到。
孔爷爷说,三十而立,立什么呢?
我想应该是立“本”,立原则。
编程中,变量 ...
- 2008-05-21 13:32
- 浏览 771
- 评论(0)