- 博客(35)
- 收藏
- 关注
原创 java 8 多重注解
测试代码:package test;import java.lang.annotation.ElementType;import java.lang.annotation.Repeatable;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.l
2014-04-12 20:22:56
1291
原创 java 8 与 java 7 , 包 与 类 新增和删除的对比
java8 新增:java.timejava.util.functionjava.util.streamcom.sun.source.doctreecom.sun.org.apache.xml.internal.security.signature.referencejava.beans.MethodRef.javajava.io.DefaultFileSystem.javaja
2014-04-10 23:04:23
4244
原创 osgi的equinox实现中如何增加公共jar包
参考:org.eclipse.osgi-3.6.0 源码问题:每个Bundle都有自己的类加载器,并且通过Import-Package和Export-Package来进行更广泛的协同类加载。但是如果我希望加入一些非OSGI的jar包作为lib,而不希望依赖它的全部bundle都修改一遍Import-Package,那要如何是好呢?解决:OSGI的bundle类加
2014-03-18 22:56:28
2564
原创 springdm 下log4j相关
知识前提:一点maven知识,熟悉pom.xml的基本配置方法。了解springDM的大致原理。参考:common logging 和 log4j 的关系 : http://touch.iteye.com/blog/31632slf4j : http://imshare.iteye.com/blog/772770springdm下解决log4j问题: http:
2014-03-16 22:22:03
845
原创 spring dm 下使用spring数据库中间层
本来觉得在已经集成好sping osgi的基础上,再加上spring数据层比较简单, 但是遇到一些问题竟然阻塞好几天。-------------------------------------------------------------------------------------------------------------------------------------------
2014-03-16 15:23:41
897
原创 外部启动equinox
equinox的jar包本身就有Main-Class,可以直接运行,例如:java -jar org.eclipse.osgi-3.5.1.R35x_v20090827.jar但是这种运行方式,需要在configuration/config.ini文件里面配置osgi.bundles参数,要把每个需要启动的bundle名填进去,这么手残的方式显然不科学。所幸可以从外部启动equ
2014-03-12 21:57:38
1710
1
原创 spring DM demo
参考:eclipse中进行示例:http://www.cnblogs.com/HeroBeast/archive/2012/03/13/2393698.htmlspring标签使用:http://blog.youkuaiyun.com/shuyaji/article/details/1393272四种osgi框架介绍:http://www.cnblogs.com/longkerdandy/ar
2014-03-09 12:26:56
3274
原创 spring demo
持久层部分请参考前面hibernate demo一文services.xml :xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://
2014-01-17 23:10:23
707
原创 hibernate demo
1、在线安装hibernate tools : http://download.jboss.org/jbosstools/updates/development2、下载hibernate的zip包:http://hibernate.org/orm/3、下载mysql的jdbc:http://dev.mysql.com/downloads/connector/j/3.1.html
2014-01-05 17:43:49
872
1
原创 struts2 ajax demo
struts.xml index.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here var xhr = false; function createXhr() { try {
2014-01-03 22:38:05
627
原创 struts 拦截器demo
struts.xml /hello.jsp /error.jsp Login.javapackage com.interceptor;import com.opensymphony.xwork2.ActionSupport;public class Login extends A
2014-01-02 22:17:52
656
原创 struts2 demo
工程:web.xml:<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com
2013-12-29 21:48:53
630
原创 Struts1 demo与笔记
eclipse中,要发布能在apache-tomcat中运行的war包,需要装tomcat插件安装方式在eclipse中全自动的,不用另外下。方式为Server>runtime Server>apache version>install建立“Dynamic Web Project”,war包发布内容主要是在WebContent中,java类会发布到WEB-INF/classes中去
2013-12-20 22:16:22
797
原创 四张类图理一下Streams的用法
首先是输出流 OutputStream。继承它的类有两种,一种是底层实现(纯继承OutputStream的类),一种是格式转换(组合了OutputStream的类)。所谓的底层实现,就是真正和物理存储打交道的FileOutputStream、HexOutputStream这种,他们的功能是引导流存储到具体的底层结构中去。而格式转换,就是对数据进行特定形式的封装。比如ObjectOutput
2013-12-08 21:29:01
1243
原创 Java并发编程实战~笔记~章五
2013 1204:5.1 同步容器类同步容器类是指使用这种策略进行多线程保护的容器类:访问操作被synchronized修饰,被严格串行化。比如Vector类和用Collections.synchronizedmap得到的Map。VectorVector类的串行化极其严格,无论是修改动作的add方法,还是读取动作的get、size、elementAt等等方法,都直接由sy
2013-12-05 00:23:26
1149
原创 java类库的阅读笔记_jdk1.7.0_40_java.io.FileInputStream
2013 1129:类:java.io.InputStream笔记:这个抽象类用来定义输入流的读取方式。三个读数据的方法,read()、read(byte[])、read(byte[], int, int),其中read()返回一个0~255的字节,子类必须实现。另外两个都是在read上的封装。如果流还有效,没有到结束,又暂时读不到数据,那么就会挂住。ski
2013-11-29 22:19:05
1049
原创 Java并发编程实战~笔记~章四
4.2 实例封闭如果某个对象不是线程安全的,可以通过多种技术使其在多线程程序中安全地使用。比如线程封闭,或者通过一个锁来保护对该对象的所有访问。实例封闭,就是把一个对象封装到另一个对象里面去,能够访问被封装对象的所有代码路径都是已知的,只要在这些路径上面设置合适的同步策略,就能确保以线程安全的方式来使用非线程安全的对象。比如这个例子:public class PersonSet {
2013-11-26 23:35:52
701
原创 Java并发编程实战~笔记~章三
3.1 可见性这部分我没怎么看懂。或许是我受限于技术视野,无法找到书中描述的多线程运行的环境。几个点:1、重排序。按书中的说法,重排序并不是一个稀奇的特性,屏蔽重排序细节的方法是——只要是共享的数据,就进行正确的同步。(实际上我从未见过重排序的情况,哪怕根据书中用例进行试验)。2、失效数据。这似乎也不是什么很值得提出的点。因为有时共享数据并不需要严格的准确性,比如 whil
2013-11-25 20:39:31
916
原创 volatile
关于vilatile关键字,对比了《Java并发编程实战》和《深入理解Java虚拟机》,发现前者是忽悠,即使不是忽悠,也是不清不楚。后者才是真牛逼,还是国人写的,真是厉害啊。我的结论就是:1、共享可变的long、double变量如果没有锁保护,就要用vilatile,防止某些虚拟机应用了“非原子性协定”。其他所有地方,可以按建议使用vilatile,也可以不使用。2、所谓的vilati
2013-11-19 00:40:18
1974
原创 Java并发编程实战~笔记~章二
1、线程安全要素:对共享、可变状态的访问操作。所谓状态,是指存储在状态变量(实例或者静态域)中的数据。对象的状态可能包括其他依赖对象的域。状态是一系列变量的集中体现,比如 int[] data; int size; 该对象的状态就包含两个变量。无状态的类一定是线程安全的。共享是说这个状态将被多个线程访问。有共享可变状态的类,如果有写操作,那么一定需要对状态进行全面的同步保护。
2013-11-17 16:48:43
992
原创 使用TreeMap
package collections;import java.util.Map.Entry;import java.util.Random;import java.util.SortedMap;import java.util.TreeMap;public class TestTreeMap { public static void main(String[] args) {
2013-11-17 11:25:58
1092
原创 堆排序
堆排序还是很简单的,用一个数组来存储节点,比如k[128]。最小堆的约束:1、数据从k[1]开始记录。2、节点k[i]的两个子节点分别为k[2i]、k[2i+1]。k[i]3、始终保持节点连续,即n个节点,在数组中占位为k[1]~k[n]。设已有节点为k[1]~k[n]。增加节点操作:a、将新节点放在k[n+1]。令k[x]表示当前处理节点,此时k[x]
2013-11-16 22:16:00
738
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.Timer
2013 1116:类:java.util.Timer属性:private final TaskQueue queue = new TaskQueue();笔记:一个定时器可以支持多个定时任务,定时任务的存储就放在queue中。TaskQueue有一个定时任务数组private TimerTask[] queue = new TimerTask[128]
2013-11-16 21:45:36
1279
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.ConcurrentHashMap
2013 1113:类:java.util.concurrent.ConcurrentHashMap笔记:这个类是经常使用的并发容器,但是看了一下源码,也不是那么牛逼。它的并发安全性,主要是在写操作(新增和删除)时,使用ReentrantLock进行了锁保护。这和Collections.synchronizedMap是类似的。优点就是,它内建了一个Segment
2013-11-13 23:24:56
792
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.ReentrantReadWriteLock
2013 1113:这个类实现了接口ReadWriteLock{ Lock readLock(); Lock writeLock();}两个方法分别返回ReentrantReadWriteLock对象持有的属性readLock和writeLock。两个Lock属性,具有lock和unlock方法,其实现全部转移到NonfairSync和FairS
2013-11-13 21:19:26
674
原创 使用ReentrantLock
使用ReentrantLock,最大的感触就是,一定要严格按照使用规范去写,否则各种多线程问题让人防不胜防。大概几点吧:1、无论是ReentrantLock还是Condition都是为了锁资源而存在的,没有资源的话,这些东西就没有意义。2、ReentrantLock是为了保证操作资源的互斥性,Condition是为了消除等待资源的时间浪费。3、ReentrantLock一定要loc
2013-11-11 23:47:46
683
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.AbstractQueuedSynchronizer
2013 1032:类:java.util.concurrent.locks.AbstractOwnableSynchronizer属性:private transient Thread exclusiveOwnerThread笔记:这个属性记录当前持有锁的线程。ReentrantLock的设计形式就是,多个线程会依靠同一把锁,取到了锁的线程,会将线程对
2013-10-31 23:53:31
2833
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.LockSupport
2013 1031:类:java.util.concurrent.locks.LockSupport方法:public static void park() 、public static void unpark(Thread thread)笔记:这两个方法,一个将当前线程挂住,一个将指定线程唤醒。两个方法的效果都是立竿见影的,不考虑CPU时间片的话,
2013-10-31 23:02:07
864
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.HashMap
2013 1027:类:java.util.HashMap属性:table、size、threshold、loadFactor笔记:table是一个Entry数组,这个数组的长度,或者为0,或者是2的幂次方。size是table中存储的实际的Entry数量,由于HashMap.Entry设计为链表节点,所以size是数组上所有节点链表的全部数据量。
2013-10-27 21:17:27
1133
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.ArrayList
类:java.util.ArrayList笔记:这个类用数组存储数据,和LinkedList的区别,就是读写数据。数据读取:ArrayList实现了RandomAccess,代表着直接用下标取数据,时间消耗是O(1)。容量增长:private void grow(int minCapacity),将现有容量乘以1.5倍,与
2013-10-25 22:44:08
618
原创 java类库的阅读笔记_jdk1.7.0_40_java.io.Serializable
2013 1024:类:java.util.LinkedList笔记:序列化感觉是一个很简单的东西,serialVersionUID在序列化这个对象时,会被附带到对象信息中。调用ObjectInputStream对象的readObject方法时,首先会查找输入流中的对象,能不能在虚拟机中找到对应的类,如果找不到,就抛出java.lang.ClassNotFoundException
2013-10-24 22:29:14
634
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.LinkedList
2013 1022:类:java.util.LinkedList笔记:这个类里面,绝大部分方法的局部变量,都用了final修饰,因此特意找了一下用final修饰有什么好处。有如下三种说法:1、防止自己或者其他人修改变量,以避免失误写错。2、方法的内部类会将方法的局部final变量拷贝到自己的域中,从而可以用到局部变量3、便于编译器进行编译的优化。这里
2013-10-22 23:48:24
661
原创 java类库的阅读笔记_jdk1.7.0_40_java.util.Collections
2013 1019:类:java.util.Collections方法:public static > void sort(List list)笔记:类型变量>的意思是,传入的类型T,需要实现Comparable接口,并且接口中的变量类型,需要是T或者T的父类。比如这种类型是满足T的类型约束的:class A implements Comparable {pub
2013-10-19 12:46:40
779
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人