`
wang吖
  • 浏览: 239888 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
在系统设计中,我们尝尝会使用到”池”的概念。Eg:数据库连接池,socket连接池,线程池,组件队列。”池”可以节省对象重复创建和初始化所耗费的时间。对那些被系统频繁请求和使用的对象,使用此机制可以提高系统运行性能。 ”池”是一种”以空间换时间”的做法,我们在内存中保存一系列整装待命的对象,供人随时差遣。与系统效率相比,这些对象所占用的内存空间太微不足道了。   流程图: 
  模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。       模板模式的关键是:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑,每当定义一个新的子类时,不要按照控制流程的思路去想,而应当按照“责任”的思路去想。换言之,应当考虑哪些操作是必须置换掉的,哪些操作是可以置换掉的,以及哪些操作是不可以置换掉的。使用模板模式可以使这些责任变得清晰,下面给出一个追求女孩的模板。 C ...
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。     总结如下:     Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。     DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为S ...
Java中的生产者消费者模型属于编程中的经典模型,下面利用线程简单模拟一下这个模型,例子:两个生产者生产馍馍(馒头),往装馍馍的篮子里面放,篮子用数组模拟栈先进后出且大小为10,当生产者把篮子装满了即刻等着同时通知消费者消费;当消费者把篮子消费空了即刻等着同时通知生产者生产。 代码并不复杂,使用线程同步关键字synchronized即可完成……   Coding: /** * 利用传统线程实现生产者消费者模型 * * 利用两根线程生产20个馍馍,一根线程消费20个馍馍,协调作业, * * <li>一根线程 wait 则需要调用 notify 方法 ...
Java线程基本概念:   Java如何创建一个线程:  Java线程基本方法:   
Java5 自带动态代理接口InvocationHadler及创建代理类的Proxy类,我们可以实现该接口来完成动态代理的功能,例如现在我们可以设计一个动态代理例子:当UserDaoImpl在执行save() 方法之前进行保存日志等操作,保存结束执行其他的操作,通过代理来实现,动态代理可以实现:权限检查、做日志、检查效率、管理事务、处理异常等……,代码如下: coding:   //IUserDao 接口 public interface IUserDao { public String save(); } //为UserDao的具体实现类 public cla ...
两种方式实现Java设计模式之单例模式,单例在程序应用中是非常常见的一种设计模式之一,其思想和代码实现都非常的简单,单例单例顾名思义在程序运行的过程中只会产生一个实例,接下来看看代码的实现:   Coding:   public class Singleton { private static Singleton instance = null; private Singleton() { } // 线程安全的单例模式 效率高 public static Singleton getInstance() { if (instance == null ...
     Oracle 数据SQL脚本学习   ----- 建表语句 create table student( sno varchar2(10) primary key, sname varchar2(20), sage number(2), ssex varchar2(5) ); create table teacher( tno varchar2(10) primary key, tname varchar2(20) ); create table course( cno varchar2(10), ...
用sqoop全量地往HDFS中导入一张大表,大概30G左右。运行的过程总是不成功,抓了日志分析,发现是sqoop运行时候抛出了MySQL的异常: java.sql.SQLException: Incorrect key file for table '/tmp/#sql_f27_0.MYI'; try to repair it   再分析,发现是sqoop解析SQL语句后,会组装出一条边界确认的SQL脚本,类似这样的 SELECT MIN(id), MAX(id) FROM (select id,xxoo from [big_table] a where  (1 = 1) ) AS t1 ...
  Java虚拟机生成新的MAC地址方法,操作步骤:      
       线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。 join为非静态方法,定义如下:void join(): 等待该线程终止。 void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。 void join(long millis, int nanos): 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。   测试代码: public class ThreadJoinTest { public static void ...
设计模式之责任链模式(Chain of Responsibility)是Web项目中最经常用到的一个设计模式,比如是Apache Tomcat 的对Encoding的 处理,Struts2 的拦截器, jsp servlet 的Filter 等等,都是基于责任链模式设计的。   下面直接来模拟WEB发送一个请求Request经过两个过滤链HTMLFilter过滤标签、SensitiveFilter过滤敏感词汇,经过过滤之后返回一个Response对象   实例代码: public interface Filter { public void doFilter(Request ...
Java5 中提过了Condition ,该类可以实现线程间的条件控制,废话少说直接来看一个实例。 实例:        启动两根子线程,连同主线程一共3根线程,实现子线程1执行5次切换至子线程2执行5次,再切换至主线程执行5,然后切换至子线程1执行5次,如此往复3次,程序退出。   程序代码: import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** ...
      传统线程通讯执行过程中的通信是通过Object类的wait()、notify()、notifyAll()方法来实现的,下面我们通过一个案例来学习一下这些方法。   案例:        假设现在存在两个线程,主线程main与一个子线程,首先子线程执行5次,然后切换到主线程执行10次,再切换至子线程执行5次,主线程执行10次,如此各循环3次。   程序代码如下: /** * * @author 吖大哥 * @date May 24, 2014 5:08:12 PM */ public class ConditionTest { public ...
import org.apache.commons.lang.RandomStringUtils; public class RStringData { public static void main(String[] args) { // 产生5位长度的随机字符串,中文环境下是乱码 String r = RandomStringUtils.random(5); System.out.println(r); // 使用指定的字符生成5位长度的随机字符串 r = RandomStringUtils.random(5, new char[] { ' ...
Global site tag (gtag.js) - Google Analytics