- 浏览: 194440 次
- 性别:
- 来自: 北京
最新评论
-
only_java:
博主,你好。感谢这篇你的这篇文章,我的问题是跟你一样,也是在跑 ...
JVM Crash分析 -
shuofenglxy:
1 确保程序运行时没有更新程序需要的相关jar包。2 确保程序 ...
JVM Crash分析 -
renduly:
# A fatal error has been detect ...
JVM Crash分析 -
shuofenglxy:
renduly 写道博主好。这两天我在公司程序也出现了类似的问 ...
JVM Crash分析 -
renduly:
博主好。这两天我在公司程序也出现了类似的问题。博主能否说的详细 ...
JVM Crash分析
文章列表
BIO 阻塞式IO.一个简单的TCP+BIO demo如下:
Server端:
package tcpbio;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerDemo {
public static ...
多线程间经常需要协调一批任务线程同时完成之后去做某事,而Java中提供的流程控制有两种方式:一种是CyclicBarrier,另一种是CountDownLatch.
第一种方式 CyclicBarrier。来自jdk的解释:一个同步辅助类,它允许一组线程互相等待 ...
多线程应用执行时JDK提供了线程的载体,线程池,通过线程池管理线程,优化线程的执行,有效合理利用资源。而JDK提供的线程池有四大类:FixedThreadPool,SingleThreadExecutor,CachedThreadPool,ScheduledThreadPool。这四种池各有特点。现在 ...
原文来自 http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。
锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibili ...
多线程出现后,最大的问题就是对资源的竞争如何保证同步的状态。java中同步的办法有很多。通过以下几个代码示例来看JAVA多线程同步状态保持机制。
首先来看无同步状态下 多线程和单线程执行情况,代码示例如下:
package sy ...
多线程是改进顺序执行任务的利器之一。但多线程的使用,却带来这样那样的问题。先认识一下多线程。多线程就是利用多个最少执行单元在较短的时间内利用多核处理器近乎同时的执行同一个任务的不同部分,或者是不同任务 ...
开闭原则(Open-Closed Principle):
对扩展开放,对修改关闭。要点在于抽象,通过抽象出类或接口,使得不同功能可以通过细化子类或接口实现去完成,达到了功能扩展,而有尽量不影响原有功能代码。
单一职责原则(Single Responsibility Principle ):
一个类,最好只有一个职责,所谓职责,就是引起类(对象)行为变化的原因,如果一个类有很多职责,那么导致对象行为变化的原因就会很多,这样就有可能导致设计混乱,易出现bug,如果一个职责发生变化就会导致整个类都要被修改,这会违背开闭原则.单一职责原则确保了类功能的高内聚性。
里氏代换原则(Liskov Subs ...
visit pattern是一种行为模式。主要特点是一个可遍历数据结构和比较稳固的对象,对于对象行为则可以方便添加,并且可以根据对象的类型表现不同的行为。
访问者模式类图:
具体实现demo:
对象接口
package visitorPattern;
public interface Person {
void accept(Visitor visitor);
}
具体对象
package visitorPattern;
public class Man implements Person ...
模版方法模式用来稳定对象的行为,可以由具体实现去完成细节。模版方法模式是一种行为模式。
模版方法模式类图:
具体代码示例:
模版类:
package templatePattern;
p ...
策略模式是设计模式中比较简单的一种模式,主要是针对某一特定问题有多种手段达成目标的情况的,比如一个人回家可以坐公交、骑自行车、走路等,而这种模式的要点在于,策略要抽象出接口,并把抽象策略注入到具体操作者中,从而完成手段和目标的解耦分离。
策略模式类图:
具体代码示例:
package strategyPattern;
public interface Strategy {
void goHome();
}
package strategyPattern;
public class ...
避免了复杂的条件;取而代之以状态对象。优势在于允许对象改变内部状态。和策略优势有很多相似之处。状态模式也是一种行为模式。
状态模式类图:
具体代码示例:
package statePattern;
public interface State {
void handle(Object a);
State changeState();
}
package statePattern;
public class ConcreteStateA implements State{
@ ...
观察者模式是设计模式中非常重要的设计模式之一。主要特点是,向要获得信息的对象在观察平台注册,然后当感兴趣的事情发生时,平台通知每一个注册的观察者,观察者根据发生的事情来做出自己的行为。其中要点在于观察者要能方便注册,方便解除注册,观察平台在事情发生时通知他们。消息的发布 订阅传输方式就是采用观察者模式这种机理的。
观察者模式类图:
具体代码示例:
观察者接口
package oberserverPattern;
public interface Obersever {
void changeState ...
memoto pattern是一种保存对象以前状态的一种行为模式,可以做undo redo等命令的储存者,也可以做打怪升级的复活储存,比较简单。
备忘录模式类图:
说明:当然Enimy类可以注入BaseCondition,这里偷懒了,直接码上了。
具体代码示例:
人物基本属性
package memotoPattern;
public class BaseCondition {
private int blood;
public BaseCondition( int blood) {
thi ...
中介者模式,”中介者“,即在一系列系统交互的过程中,通过第三方的办法使得这些系统不用直接交互,都通过中介来进行。这里简化了系统的关系,但是有可能使得中介成为系统的交互瓶颈。
中介者模式类图:
具体实现示例:
package mediatorPattern;
public abstract class Person {
private String name;
private String hobby;
private Mediator mediator;
...
迭代器模式是一种行为模式。提供了一种顺序访问聚集中每个元素的办法(有可能元素之前不同类型)。迭代器在java中应用很广泛。迭代器最大的特点是提供了存储对象的聚集,另外也提供了遍历访问对象的方式。
迭代器模式类图:
具体代码示例:
package iteratorPattern;
public class Dog {
void dosomething() {
System.out.println(this.getClass()+" worki ...