自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入学习EnumSet

Set接口的实现类HashSet/TreeSet,它们内部都是用对应的HashMap/TreeMap实现的,但EnumSet的实现与EnumMap没有任何关系,而是用极为精简和高效的位向量实现的,除了实现机制,EnumSet的用法也有一些不同。与TreeSet/HashSet不同,EnumSet是一个抽象类,不能直接通过new新建,EnumSet提供了若干静态工厂方法创建EnumS...

2018-03-25 00:18:40 202

原创 Mybatis源码分析别名实现机制。

在Mybatis中我们经常会用到将某个bean作为参数类型parameterType或者结果返回值类型ResultType,所以很多时候我们需要把完成的Bean的包名在mapper文件中[code="java"] select * from user where c_id=#{id} [/code]Mybatis给我们提供了一种叫别名的机制,意思就是对某个具...

2018-03-03 23:48:49 234

原创 枚举中valueOf用法

Enum的特征如下:1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。   3.Enum默认实现了java.lan...

2018-01-14 11:21:06 54062

原创 mybatis源码学习总结-class.getResource方法与claasloader.getResource方法的区别

Class.getResources(String path) path如果是以 / 开头,就从classpath中去找(classpath可以认为是eclipse的bin目录或者是target的classes目录),如果不以/开头,就以当前类的位置开始找,也就是它有两种搜索方式。.classloader不能以/为开头,classloader.getResource只能从class...

2018-01-14 10:49:03 309

原创 建造者模式

一种场景:客户需要设计一个汽车模型,基本的功能有启动、停止、按喇叭、引擎这些功能,执行的顺序由客户自己控制。时间紧迫的情况下,我们设计出这种模型:[code="java"]public abstract class CarModel { private ArrayList sequence = new ArrayList(); protected abstract...

2017-05-14 19:44:24 126

原创 使用自定义注解搭建简单框架

本文主要介绍如何使用Java运行时级别的注解配合反射来搭建框架,以下是构建sql表的简单例子,阐明了搭建运行时框架的方法1.定义两个运行时注解,分别作用于类和字段表示表名和列名[code="java"]@Retention(RetentionPolicy.RUNTIME)public @interface Table { String name();}@Re...

2017-05-01 00:54:25 168

原创 java注解处理器

[b]注解处理器:[/b]Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement):Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口。除此之外,Java在java.lang.reflect 包下新增了Annotate...

2017-04-30 17:43:13 126

原创 理解注解中的@Inherited

@Inherited: @Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口...

2017-04-30 16:06:30 577

原创 JAVA注解总结

元注解:  元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。 Java5.0定义的元注解:[code="java"]    1.@Target,    2.@Retention,    3.@Documented,    4.@Inherited[/code]...

2017-04-30 12:59:41 175

原创 apache-fileupload文件上传

临时文件的清理:[code="java"]FileCleaningTracker fileCleaningTracker = FileCleanerCleanup.getFileCleaningTracker(servletcontext);DiskFileItemFactory factory = new DiskFileItemFactory(); factory.se...

2017-02-25 01:26:49 144

原创 java泛型理解2

泛型类型注意细节:1.泛型类型变量不能是基本数据类型比如,没有ArrayList,只有ArrayList。因为当类型擦除后,ArrayList的原始类型变为Object,但是Object类型不能存储double值,只能引用Double的值。2.泛型类型没有特定的classArrayList arrayList=new ArrayList(); 因为类型擦除之后,A...

2017-01-07 22:54:22 103

原创 JAVA泛型理解

泛型类型的擦除: [code="java"] ArrayList arrayList1=new ArrayList(); ArrayList arrayList2=new ArrayList(); System.out.println(arrayList1.getClass()==arrayList2.getClass());//结果为...

2017-01-07 22:33:59 108

原创 NIO响应中断

不同于IO,NIO通道会自动地相应中断,代码如下:public class NIOBlocked implements Runnable{ private final SocketChannel sc; public NIOBlocked(SocketChannel sc) { this.sc=sc; } @Override public void run(...

2012-11-30 15:59:55 165

原创 桥接模式

现实中场景:发送提示消息从业务上看,消息又分成普通消息、加急消息和特急消息多种,不同的消息类型,业务功能处理是不一样的: 加急消息是在消息上添加加急,而特急消息除了添加特急外,还会做一条催促的记录,多久不完成会继续催促。从发送消息的手段上看,又有系统内短消息、手机短消息、邮件等等。考虑简单情况: 消息先只是实现发送普通消息,先实现系统内短消息和邮件。...

2012-11-30 09:55:10 130

原创 单例模式

单例模式分为两种:懒汉式和饿汉式,先看下懒汉式的实现:[code="java"]public class Singleton { /** * 定义一个变量来存储创建好的类实例 */ private static Singleton uniqueInstance = null; /** * 私有化构造...

2012-11-29 17:27:56 98

原创 逻辑运算与移位运算

[code="java"]源码:正数的补码与原码相同例+7 源码:00000111 补码 :00000111 (用8位二进制表示一个数)[/code][code="java"]负数的补码: 符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。[/code] -7 源码: 10000111 ,其绝对值为00000111 取反加一:11111001 为-7补码...

2012-11-27 14:56:55 729

原创 线程中断

线程的中断"interrupt"线程的"中断"不是让线程停止java中线程的中断(interrupt)只是改变了线程的中断状态,这个中断状态改变后带来的结果,是无法确定的,有时它更是让停止中的线程继续执行的唯一手段.不但不是让线程停止运行,反而是继续执行线程的手段.一个线程在调用interrupt()后,自己不会抛出InterruptedException异常,如果线程...

2012-11-15 16:04:29 121

原创 数字证书和数字签名的理解

数字签名的理解:[code="java"]1.张三有两把钥匙,一把是公钥,另一把是私钥。2.张三把公钥送给他的朋友们----李四、王五、赵六----每人一把。3.李四给张三写信,写完后用张三的公钥加密,达到保密的效果。4.张三收信后,用私钥解密,看到信件内容。5.张三给李四回信,写完后用Hash函数,生成信件的摘要(digest)。6.张三使用私钥,对这个摘要加密,生成"数...

2012-11-15 16:02:36 354

原创 js正则表达式-非捕获组

(?=X) X,通过零宽度的正 lookahead。零宽度正先行断言,仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。例如,\w+(?=\d) 表示字母后面跟数字,但不捕获数字(不回溯)(?!X) X,通过零宽度的负 lookahead。零宽度负先行断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,\w+(?!\d) 表示字母后面不跟数字,且不捕获数字。(?...

2012-10-27 16:27:32 582

原创 JS正则表达式基础

[b]正则表达式的作用:[/b] 测试字符串的某个模式 替换文本 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字 [code="java"]var re = new RegExp();//RegExp是一个对象,和Aarray一样 //但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去 ...

2012-10-26 19:44:34 114

原创 js中array基础知识

slice方法:提取字符串的某个部分,并以新的字符串返回被提取的部分。(浅复制)[code="java"]var arr = ["zhong","guo","ren"]; arr.slice(0); //["zhong","guo","ren"] arr.slice(1); //["guo","ren&q

2012-10-26 10:05:03 143

原创 apply和callback的使用

JS中 没有new 的对象在对象里的this是不存在的例如:[code="java"]function a(){  this.b="hi";  this.c=function(){alert('hi');}}alert(a.b);//out undefinedtry{a.c();}catch(e){  alert(e->getmess...

2012-10-25 20:01:13 343

原创 JS中"=="与"==="的区别

JS中判断是否相等有"=="和"==="两种符号,它们之间有很多不同。1.==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。 2.==只要求值相等,===表示恒等于,比较的两边要绝对的相同 如下例子:[code="java"]alert(0 == ""); // true alert(0 == false); // true alert(""...

2012-10-25 19:38:40 89

原创 Js中的回调

======================JS中的回调=====================Js中的callback机制,即回调.JS中用到回调的几种情况:1.动态加载(外部)js的时候,在加载完成之后进行一些操作,可以使用callback2.加载iframe时也可以通过callback执行一些操作3.ajax的使用,提交请求后得到的返回值用callback机制解析使用...

2012-10-25 19:12:46 111

原创 Jquery extend()使用

* 1.对象合并: * 对象合并不区分调用者,jQuery.extend与jQuery.fn.extend完全一致 * 也就是说对jQuery对象本身及jQuery所构造的对象没有影响 * 对象合并根据参数区分,参数中必须包括两个或两个以上对象 * 如:$.extend({Object}, {Object}) 或 $.extend({Boolean},{O...

2012-10-25 18:52:17 71

原创 深入理解classloader

一、获取Class的方法1.直接用(类名.class)2.对象.getClass()3.Class.forName("类的全限定名")[code="java"] Class c = String[].class; System.out.println("c===>"+c); c = new String[1].getClass(); ...

2012-10-10 16:58:07 75

原创 url重写

[b]1.什么是url重写?[/b]其实就是把带一大堆参数的url,变成一个看上去很规矩的url。 例:/test.jsp?id=1234 ,重写后,可以用/test/1234.html [b]2.url重写的好处[/b] 第一:有利于搜索引擎的抓取,因为现在大部分的搜索引擎对动态页面的抓取还比较弱,它们更喜欢抓取一些静态的页面。 而我们现在的页面大部分...

2012-10-09 17:34:13 80

原创 LDAP基础

1.[b]什么是LDAP? [/b]LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP。LDAP目录也是一种类型的数据库,但是不是关系型数据库。2.[b]LDAP的优势:[/b]LDAP协议是跨平台的和标准的协议,...

2012-10-09 15:01:36 315

原创 关于数字签名基础知识

1.消息摘要[code="java"]public class MessageDigestExample { public static void main(String[] args) throws Exception { String beforeDegist = "asdf"; System.out.printl...

2012-10-08 17:40:52 252

原创 Apache与Tomcat负载均衡

**************apache安装*********************************1.官网下载httpd-2.0.64.tar.gz2.解压文件 tar zxvf httpd-2.0.64.tar.gz,加压后文件夹为httpd-2.0.643.进入目录httpd-2.0.64,执行命令./configure --prefix=/usr/local/apac...

2012-08-26 16:55:31 84

原创 组播Socket基础

组播是比单播宽比广播窄的目标性更强的点对点通信。组播将数据从一台主机发送给多个不同的主机。数据只传到某些通过加入组播组的客户端。程序员和网络管理员不用负责选择在哪些点上复制数据,甚至不用负责发送多个副本。Internet路由器会处理这些事情。应用程序只将数据报包发送给组播地址,路由器将确保包被发送到改组播组中的所有主机。组播地址:称为组播组的一组主机所共享的地址...

2012-05-28 22:27:58 281

原创 HashMap原理

[b]概述:[/b]HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。[b]HashMap的数据结构:[/b]HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体[code="java"]transient Entry[] table;...

2012-04-29 17:27:38 70

原创 JAVA UDP基础

UDP是在IP上发送数据的另一种协议。不可靠,无法知道数据是否到达,也无法知道数据的不同部分是否已发送时的数据到达。UDP为什么有使用之地:在实时音频或视频中丢失或交换数据包只会出现噪声。噪声是可以容忍的。但是不可容忍停顿,UDP的实现分为两个类:DatagramPacket(将数据字节填充到数据报的UDP包中)和DatagramSocket(可以收发UDP数据...

2012-04-04 23:44:37 99

原创 JAVA回调

[b]接口回调:[/b] 实现了接口的类创建对象的引用赋值给接口变量,那么接口变量就可以调用接口实现类的方法,这就称为接口回调。(通知相应的对象调用相应的方法)[code="java"]public interface CallBack { void execute();}[/code][code="java"]public class Tools {...

2012-04-04 22:58:29 78

原创 使用内部类有什么好处

使用内部类在java编程高级设计中是必须的,它能使你的代码更加优雅,但是它最大的作用是解决class单继承的问题。例如:[code="java"] public interface One { public void inOne(); } public interface Two { public void inTwo(); ...

2012-03-17 12:41:05 124

原创 服务器端Socket基础

ServerSocket 的生命周期:1.创建ServerSocket对象2.使用accept()方法 监听端口的入站连接3.调用Socket的getInputStream()与getOutputStram()获得客户端通信的流4.服务器和客户端根据协商的协议交互5.服务器或者客户端关闭连接6.服务器返回2 等待下一个连接到来...

2012-03-17 00:13:03 102

原创 Java 客户端Socket

Socket进行的操作步骤为:[code="java"]1.连接远程服务器2.本地和远程主机从socket取得输入流和输出流.3.数据传输完毕,一端(Http)或者两端关闭连接.[/code]构造函数Socket(String host,int port)throws UnknownHostException,IOExceptionm 的作用是 1.创建Socket对象 2...

2012-03-16 23:17:01 103

原创 Socket基本概念

服务器运行的时候可以监听多个客户端的连接请求。管理客户连接请求的任务是由操作系统来完成的。操作系统把这些连接请求存储在一个先进先出的队列中。许多操作系统限定了队列的最大长度,一般为50。当队列中的连接请求达到了队列的最大容量时,服务器进程所在的主机会拒绝新的连接请求。只有当服务器进程通过ServerSocket 的accept()方法从队列中取出连接请求,使队列腾出空位时,队列才能继续加入新的...

2012-03-05 23:03:16 114

原创 从ByteBuffer中获取基本类型

我们可以从ByteBuffer中产生出不同类型值的方法 [code="java"]public class Test{ public static final int BSIZE=1024; public static void main() { ByteBuffer bb=ByteBuffer.allocate(BSIZE);...

2012-03-04 14:03:42 293

原创 Service

public class MainActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private Button startService,redirectButton; public static...

2012-02-21 20:04:26 87

java技术教程

一本很不错的电子书,适合初学者

2008-03-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除