• DAnalyzer 1.2发布啦 -- Weblogic与Directory协议分析工具

  • SQLView -- 可视化的Weblogic JDBC DEBUG

/Articles

Oracle数据库学习-手动创建数据库

Oracle提供的DBCA隐藏了许多细节,通过手动的创建instance,可以帮助用户更好地理解instance的创建步骤。本文的例子都是在Windows完成,相应的Linux或其他操作系统请参考操作系统文档。 1:确定需要创建的instance名字 在命令模式下定义环境变量,假设要创建的名字为zigzag set oracle_sid=zigzag 2:设置数据库访问权限的验证方式 Oracle提供了2种访问方式...

Java多线程 - 简单的线程池模式

在中间件等容器中,线程池是用的最多的管理线程与任务请求分配的方式。创建线程是需要消耗时间和内存的。在服务启动之初,就初始化一定数量的线程,其优点是保证这些数量的线程在内存设定的情况下一定会创建成功,并且节约了临时创建线程的时间。 线程池的工作原理大致为:为可以预期的大量请求创建一定数目的线程,当请求到来时,请求会被放入一个FIFO的列表中,线程池中的线程按照一定的优先调度获取这些请求,执行完后,再从请求列表中挨个获取下一个请求加以处理。在线程与请求处理过程中,会有两种情形出现: 一定数目的线程来不及处理大量的请求,请求会被挂起,直到线程有能力可以处理...

Java多线程 - 任务指派的临时线程

在我所提供技术支持的产品代码中,有一类模式非常普遍,就是主线程得到客户端的请求,在处理完必要的逻辑之后,再发送邮件通知或者JMS消息,而主线程在调用完这类消息通知发送后,完全不用等待消息通知的返回结果,马上返回。他们的实现方式大同小异,基本上都是将消息通知指派给一个临时新建的线程,而主线程即刻返回。使用这类任务指派给临时线程的模式,我总结了一下,有2个基本的条件: 这些任务不需要返回结果给主线程 必须是轻量的临时线程,没有复杂的线程调度,随即销毁,不占用全局线程池 基本上,使用简单的临时线程,通过匿名内部类就能实现。 // 处理前台逻辑 //...

Java多线程 - 中途放弃

如果有多个线程需要处理同一个资源,当一个线程已经处理完了,另外的线程根据资源的状态可以判断要不要也去处理。如果状态显示资源无须再处理,那么这些线程可以中途放弃。等到下次执行机会到来时再判断。这可能是一种比较节省资源的方式。和前面的保护性暂挂方式有一定的区别。保护性暂挂一直没有放弃,一直处于等待状态,当notify它时马上激活。而这里的中途放弃,则是测底放弃本次执行,等下一次机会的到来。...

Java多线程 - 保护性暂挂

有一种多线程工作环境,要求一件事情的开始起源于另外一件事情提供的资源的就绪。比如Java Message消息队列Queue。只有发送者Sender把消息实体组装完毕发送到queue中时,Reciever才能从queue中获取消息加以处理。也就是说Receiver的工作前提是消息队列中至少不为空。一旦消息队列为空的情况发生,Receiver必须挂起,暂停执行,以保证queue中有消息就绪。这种暂挂的目的是为了保护queue的资源可用。 下面的例子模拟这样的消息队列的输入输出。假设消息实体为: public class Message { String body;...

Java多线程 - 对象不可变模式

对象不可变模式,关注的是多线程的数据安全,是说参与多线程的对象一旦在第一个线程内建立,便不会再被第二个线程的外部方法所改变。假设通过Point和Line类做图形的画线程序。定义起始点p1和终点p2,通过Line构造函数来定义一个线段,并简单通过System.out.println(line)来表示画一条坐标为(1,100)-(2,200)的线段。 public class Main { public static void main(String args[]){ Point p1 = new Point(1, 100); Point p2 = new Point(2,...

Java多线程 - 单一执行模式

用synchronized实现单一执行模式 多个线程在共享同一个资源时,用synchronized方法给资源加上同步锁,确保在同一个时间点上,只有唯一的一个线程占用该资源,这是单一执行模式的概念。同步锁可以附加在方法体上,给类实例this加锁,比如: public synchronized void myMethod(){ // } 或者在方法体内,给共享资源对象加锁, public void myMethod(){ synchronized(obj){ // } }...

在MFC中给程序注册热键

给程序注册一个热键相当简单,只需要调用Windows的API RegisterHotKey以及UnregisterHotKey即可,然后再创建一个函数来处理基于WM_HOTKEY的消息映像。 API原型 MSDN查看RegisterHotKey: BOOL RegisterHotKey( HWND hWnd, int id, UINT fsModifiers, UINT vk ); hWnd...

让子类处理-factory method-子类生成实例

前面实验了template method的组装方法,父类中规定了子过程和最后的组装。子过程的实现是在子类中完成的,组装是父类完成。如果改造一下这个template method,把子过程用来生成一个具体的其他类的实例,就变成了工厂方法模式。 子过程可以生成一个其他类,如果有多个template method抽象类的子类,就可以生成多个不同类型的类。工厂模式的目的是根据条件生成不同的具体的类实例。...

实例生成-builder-组装生成复杂的实例

builder和template method非常相似,就是父类定义了一个组装过程中的每一个子过程。但是不同点是:最后所有这些子过程的的组装,是由不同的人完成的。template method模式中,父类负责所有总的组装;builder模式中,这些子过程的组装是由director来完成的。 builder抽象类只负责所有子过程的方法定义。 public abstract class Builder { protected abstract void dig(); protected abstract void construct(); protected...

实例生成-singleton-每时每刻只产生一个单一的实例

singleton模式可能是最简单最容易理解的一种设计了。就是在JVM运行时内,某个类永远只有一个实例存在。比如一个用来读写property属性文件的类,在整个应用中只需要一个单实例。 public class MySingleton { private static MySingleton instance = null; private MySingleton(){ //do initialization job }; public static MySingleton getInstance(){ if...

让子类处理-template method-子类处理具体的方法

template method模式可以让我们顶一个类实现某个功能的的具体的流程,这个流程是规范的,不能被改变。每一个流程是一个方法,模板不定义方法体,方法体由不同的子类去做具体实施。 这就好比盖房这样的工程。盖房的流程是:挖地基、盖房、粉刷装饰。工程模板定义了这个流程的先后顺序,但是地基怎么挖,盖房怎么盖,由不同的房子(就是子类)的特点来决定。 加入盖房工程设计成一个类,我可以做成一个抽象类,build()方法内规定了工程的先后顺序,同时用final来限制,不允许子类重写这个方法修改顺序。...

1 2 3 4 5 6 7 8 9 10 11