基本功
柳波
这个作者很懒,什么都没留下…
展开
-
Java虚拟机命令参数大全
Java命令参数说明大全 序言: Java 在运行已编译完成的类时,是通过 java 虚拟机来装载和执行的,java 虚拟机通过操作系统命令 JAVA_HOME\bin\java –option 来启动,-option 为虚拟机参数,JAVA_HOME 为JDK转载 2011-09-01 00:42:20 · 1645 阅读 · 0 评论 -
JAVA5多线程---Condition使用---线程通信
线程之间除了同步互斥,还要考虑通信。在Java5之前我们的通信方式为:wait 和 notify。那么Condition的优势是支持多路等待,就是我可以定义多个Condition,每个condition控制线程的一条执行通路。传统方式只能是一路等待。我们可以先分析下Java5 Api中的缓冲队列的实现: 假定有一个绑定的缓冲区,它支持 put 和 take 方法。如果试图在空的缓原创 2012-02-13 22:51:51 · 1089 阅读 · 3 评论 -
JAVA5---Exchange使用
该类用于处理,偶数个线程之间的数据交换。比如有两个线程A和B,当A开始运行并准备就绪数据后,它就会等待B开始运行,直到B准备好数据,两个线程马上开始交互数据。如果有三个线程将导致死锁。例子如下:开启一个缓冲线程池,启动两个线程交换数据,每个线程准备时间采用sleep一段时间来模拟。代码如下:import java.util.concurrent.Exchanger;import ja原创 2012-02-14 22:52:08 · 1439 阅读 · 3 评论 -
多线程计数器锁存器---CountDownLatch
CountDownLatch 是一个通用同步工具,它有很多用途。将计数 1 初始化的CountDownLatch 用作一个简单的开/关锁存器,或入口:在通过调用countDown() 的线程打开入口前,所有调用await 的线程都一直在入口处等待。用N 初始化的CountDownLatch 可以使一个线程在 N 个线程完成某项操作之前一直等待,或者使其在某项操作完成 N 次之前一直等待。原创 2012-02-25 10:25:30 · 1893 阅读 · 3 评论 -
多线程循环技术锁存器---CyclicBarrier
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线原创 2012-02-25 10:55:07 · 1440 阅读 · 2 评论 -
多线程获取线程返回值---Future And CompletionService
在某些应用场景下,我们需要获取线程的返回值,采用传统方式或许比较麻烦,那么jdk5为我们封装好了Future和CompletionService。 Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。计算完成后只能使用get 方法来检索结果,如有必要,计算完成前可以阻塞此方法。取消则由 cancel 方法来执行。还提供了其他方法,以确原创 2012-02-25 11:46:27 · 7410 阅读 · 3 评论 -
Java小基础
http://blog.csdn.net/smcwwh/article/details/7315041转载 2012-03-08 16:34:51 · 818 阅读 · 0 评论 -
正则表达式解析
首先我们要知道正则表达式常见的元数据:.匹配除换行外所有的字符*匹配某个元素可以重复零次或多次\b匹配单词的开始和介绍,例如\bhi\b,标示只是hi的单词\d匹配所有整形数据+表示重复一次或多次?重复零次或一次\w匹配字母或数字或下划线或汉字\s匹配任意空白字符^表示以该字符之后的字符开始$表示以该字符之前的结束\W匹配任意不是字母,数字,下划线,汉字原创 2012-03-22 00:21:45 · 1163 阅读 · 5 评论 -
Synchronized和Static Synchronized区别
通过分析这两个用法的分析,我们可以理解java中锁的概念。一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线程都共享该锁)。实例锁对应的就是synchronized关键字,而类锁(全局锁)对应的就是static synchronized(或者是锁在该类的class或者classloader对象上)。下面的文章做原创 2012-04-13 00:11:22 · 11878 阅读 · 14 评论 -
Static块什么时候运行
为了搞清楚这个我们首先要知道一个类想要运行JVM会做哪些事情。1、类装载 采用双亲委派模式加载类,子类会交给父类的classloader去加载,如果父类加载不到自己才会尝试加载。最终功能是将java字节码转换为JVM的class对象。2、链接 将Java二进制代码合并到JVM的运行时状态中。在链接之前必须保证类已经被加载。期间会经过验证、准备和解析等几个步骤原创 2012-04-13 01:12:40 · 2650 阅读 · 6 评论 -
Java多线程
java多线程:1、什么是多线程 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程. 线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间, 每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定.原创 2011-12-24 14:27:42 · 628 阅读 · 1 评论 -
早起的鸟儿有虫吃---页面模块上移下移
鸟儿和猫头鹰,只是作息不一样,但都能享受到一天中难得的安静。我原来是一只“猫头鹰”,现在是0:00休息的“猫头鹰”又是6:30工作的“鸟儿”。这段时间心态最为平和~。 最近项目中有一个页面某部分移动的需求,当点击某模块下移时其向下移动1,同时其下面的模块上移。有两种思路: 1、页面排序信息插入数据库时,保证严格有序插入,这样就可以做到,当前顺序总是小于其后顺原创 2012-07-04 07:59:40 · 2584 阅读 · 7 评论 -
Java多线程下载文件
文件下载采用多线程方式能够充分利用CPU资源,关键点是设置线程的读取开始和结束位置。下面的代码,采用线程池启动10个线程来执行下载。import java.io.BufferedInputStream;import java.io.IOException;import java.io.RandomAccessFile;import java.net.HttpURLConnectio原创 2012-02-29 00:19:35 · 3677 阅读 · 12 评论 -
Quartz任务调度器
背景: 近期项目中遇到跨区调拨商品的需求,比如A区和B区,需要判断A区或者B区某种sku是否需要从对方库调拨商品来补充货源,避免因缺失商品而出现订单延误,影响销售和对用户产生不良影响。问题: 数据量庞大,如果当查看的时候去获取数据,那么会严重影响系统的性能,甚至导致数据库和应用服务器无法响应。解决方案:原创 2013-02-21 23:19:15 · 3558 阅读 · 3 评论 -
阻塞队列使用---ArrayBlockingQueue
ArrayBlockingQueue是JAVA5中的一个阻塞队列,能够自定义队列大小,当插入时,如果队列已经没有空闲位置,那么新的插入线程将阻塞到该队列,一旦该队列有空闲位置,那么阻塞的线程将执行插入。从队列中取数据为:take,放数据为:put。下面的例子模拟了两个队列的插入和获取,首先在队列2中插入一个数据,启动线程2向队列2中插入数据时,该线程将阻塞在队列2等待,同时启动线程1向队列1中插入原创 2012-02-23 22:54:29 · 1612 阅读 · 3 评论 -
Cglib实现动态代理原理
我们可能会有这样的需求,系统已经上线运行了。但是需要对某些人和某些方法进行权限过滤。例如:我们允许张三进行所有操作,包括增删改查,只允许其他用户查询。 首先想到的可能是,在每个方法中都加入逻辑判断,这样违背了开闭原则,极有可能引入其它错误。那么我们可以使用动态代理的方式,在运行时动态的进行权限校验,不需要修改原先的逻辑代码,只要通过增加动态代理类、拦截器类、拦截器类原创 2012-02-09 23:32:37 · 1830 阅读 · 2 评论 -
Echo命令 批处理命令大全
1.Echo 命令打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。语法echo [{on|off}] [message]Sample:echo off / echo hello world在实际应用中我们会把这条命令转载 2011-09-04 11:27:27 · 1725 阅读 · 0 评论 -
Java深克隆浅克隆
深克隆:拷贝对象的基本属性,包括其类型,拷贝对象的引用类型。如果被克隆的对象有引用对象,那么经过深克隆后将产生两个对象。 浅克隆:只拷贝对象的基本属性。 需要实现cloneable接口,重写clone方法,此方法一定要是public 否则你无法使原创 2011-08-15 00:09:25 · 885 阅读 · 2 评论 -
同步/异步 阻塞/非阻塞
同步/异步与阻塞/非阻塞的区别我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地转载 2011-08-17 01:02:55 · 1010 阅读 · 0 评论 -
JAVA对象序列化,反序列化
理解序列化和反序列化对理解面向对象有很大的帮助。举例如下,序列化格式自己定义:我们有两个类,动物,人,。人继承动物。其中:人的属性有:name(名称),phoneNum(手机号码)等人的方法有:serialize(),deserialize()动物的属性有原创 2011-09-16 00:56:49 · 649 阅读 · 0 评论 -
面向对象和定时线程
项目中需要一个线程能够定时的删除指定目录下过期的文件。从这句话中我们能够看到变化的因素为:1、定时,多长时间执行一次,这个要能灵活改变2、过期的文件,什么时间的文件为过期文件,这个要灵活配置。能够提炼出来的方法为:删除 根据面向对象的思想:封装变化,我们做如下原创 2011-10-02 18:54:29 · 703 阅读 · 0 评论 -
递归删除文件和目录
本来是件很简单的问题,但是由于没有深刻理解文件句柄,导致将自己绕进去。递归代码如下:private static void deleteFiles(File file) { // File tempFile = null; if(file.isDirectory()){ File[] fileList = file.listFiles(); for(int i=0;原创 2011-11-15 00:47:40 · 695 阅读 · 1 评论 -
LDAP错误
用ldap方式访问AD域的的错误解释2007年11月13日 星期二 10:13用ldap方式访问AD域的的错误一般会如下格式:LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data52e, vece其中红字部分的意思如下:转载 2011-11-17 16:06:49 · 1376 阅读 · 0 评论 -
异常处理
抛出 子类异常,信息要明确,可以自定义异常码原创 2011-12-06 01:07:23 · 623 阅读 · 2 评论 -
ThreadLocal使用
ThreadLocal是什么 早在JDK1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把原创 2011-12-24 10:22:27 · 649 阅读 · 0 评论 -
Java 回调函数
转自:http://blog.sina.com.cn/s/blog_48cf38890100go6x.html转载 2011-12-28 09:57:59 · 682 阅读 · 0 评论 -
如何接受命令行输入
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.println("请输入显示名称......");String line = reader.readLine(); System.out.println(line);原创 2012-02-08 16:34:58 · 807 阅读 · 2 评论 -
Java5多线程---SemaPhore使用
目前只是学习和使用该对象,加深对多线程的理解以及运用。SemaPhore,一个信号量对象,可以定义信号量的个数,通过该信号量控制线程同步的数量。例如我们只允许同步三个线程进入共享资源,其它线程都阻塞。好比,厕所有三个坑,十个人进去,每次只能进去三个。采用信号灯来实现。其优势为可以被其它线程唤醒,如果使用互斥锁,那么一旦出现异常,该锁将不会释放,该锁只能由自己释放。比如:一个人上厕所,如原创 2012-02-19 23:42:13 · 1458 阅读 · 5 评论 -
多线程---缓存系统
首先解释下缓存系统: 在程序运行过程中,有些数据我们不会经常修改,例如数据库中性别字段,但是我们却经常使用,如果每次都从数据库中获取,那么将会降低程序性能。那么我们可以在内存中分配一个区域专门存放我们第一次从数据库中拿出的数据。思路如下:我们使用Map来充当我们的缓存区域,当使用性别值时,可以先看看map中是否有值,如果有那么拿出来,如果没有那么查询数据库,并为map赋值。原创 2012-02-13 21:50:35 · 1960 阅读 · 4 评论 -
JAVA5线程池使用
线程池是Java5提供的一个新技术,方便我们快速简洁的定义线程池。包括如下: 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情原创 2012-02-24 00:13:52 · 3988 阅读 · 8 评论