自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 mvn常用命令

maven//clean compile test package install mvn archetype:create 创建Maven项目mvn compile 编译源代码mvn deploy 发布项目mvn test-compile 编译测试源代码mvn test 运行应用程序中的单元测试mvn site 生成项目相关信息的网站mvn clean 清除项目目

2017-07-20 18:38:56 901

原创 git常用命令

第一次使用gitlib之类仓库,需要将公钥在gitlib上注册Git global setup:git config --global user.name "xiaoming"git config --global user.email "xiaoming@163.com"//添加文件  理解工作区、暂存区的概念git staus  //查看当前工作区状态,是否有文件修

2017-07-16 19:11:27 413

原创 enum枚举应用讲解

枚举的应用主要是,对enum类型,添加自定义的属性,增加构造方法,增加自定义方法(抽象方法),对自定义的属性维护方便详见:参考代码示例31、自定义枚举,剖析枚举原理2、使用枚举enum,查看常用方法3、枚举应用举例4、枚举可以作为快速实现单例的一种方式1、/** * 自定义枚举类 * 枚举相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象

2017-07-16 17:29:20 559

原创 NIO-缓存-通道-选择器

NIO1、通道2、缓冲区 (间接内存-非直接缓冲区,直接内存--直接缓冲区)3、阻塞通道示例4、非阻塞通道示例 ----选择器(多路复用IO模型)---主要是将 通道 和 selector·选择器 进行绑定,基于IO的多路复用模型,使用一个或多进行轮询注册通道,根据状态返回值进行操作1、通道1、NIO中的Channel的主要实现有:FileChannel:用于读

2017-07-03 18:57:07 728

原创 手写实现HashMap代码

了解HashMap底层=数组+链表   HashMap通过链表法来解决hash冲突public interface DIYMap { //Map双列集合 基本功能是 快速取 public V put(K k,V v); //快速取 public V get(K k); //定义一个内部接口 public interface Entry{ public K get

2017-05-08 20:44:54 6763 3

原创 集合迭代时候操作解决方案-ArrayList-Iterator-CopyOnWriteArrayList

1、集合在使用iterator迭代器,迭代集合的时候,不可以对集合类进行操作,否则会通过jdk java代码fail-fast(快速报错机制)抛出异常。fail-fast(快速报错机制)解释(fail-fast机制它是Java集合的一种错误检测机制):集合的内部都维护了一个modCount(版本号),在每一次put、remove的时候,都会对版本号加1。当获取结合的iterator,会

2017-05-08 20:30:30 956 1

原创 哈希表中数组的容量为什么是质数

哈希表中数组的容量为什么是质数 1、HASH函数需要把原始数据均匀地分布到HASH数组里,比如大部分是偶数,这时候如果HASH数组容量是偶数,容易使原始数据HASH后不会均匀分布: 2 4 6 8 10 12这6个数,如果对 6 取余 得到 2 4 0 2 4 0 只会得到3种HASH值,冲突会很多。如果对 7取余 得到 2 4 6 1 3 5 得到6种HASH值,没有

2017-05-01 23:53:48 4217

原创 多线程同步问题-练习题3-笔记整理

练习题3:程序同时启用了4个线程去调用TestDo.doSome()方法,由于TestDo.doSome方法内部的代码是先暂停1秒,  然后在输出以秒为单位的当前时间值,所以,会打印出4个相同的时间值,如下所示:  4:4:1258199615  1:1:1258199615  3:3:1258199615  1:1:1258199615  修改代码,如果有几个线程调用

2017-04-30 16:37:45 618

原创 多线程同步问题-练习题2-笔记整理

练习题2:主线程中代码不断产生数据,然后交给TestDo.doSome()方法去处理,将程序改成有10个线程来消费生产者产生的数据。  这些消费者都调用Test.doSome()来处理,,每个消费者都需要1秒才能处理完,程序应保证这些消费者线程依次有序的消费数据,  只有上一个消费者消费完后,下一个消费者才能消费数据。,但要保证这些消费者线程拿到的数据是有顺序的    题意情景

2017-04-30 16:37:05 451

原创 多线程同步问题-练习题1-笔记整理

练习题1现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。  解决方案:将主线程中产生的数据存入到阻塞队列中,启动的四个消费者线程一次去队列中取数据。题目代码示例:/* 现有的程序代码模拟产生了16个日

2017-04-30 16:34:28 672

原创 同步集合类 -笔记整理13

同步集合1.传统集合类在并发访问时的问题说明。2.传统方式下用Collections工具类提供的synchronzedCollection方法来获得同步集合,分析该方法的实现源码。 得到的同步集合,是在操作集合的增删改方法加了锁,不可以同时操作。3.Java5种提供了如下一些同步集合类:  (1)通过看Java.util.concurrent包下的介绍可以知道有哪些并发集合

2017-04-30 16:25:38 572

原创 可阻塞的队列-笔记整理12

可阻塞的队列一.概述:1.队列包含固定长度的队列和不固定长度的队列。2.什么是可阻塞队列,阻塞队列的作用与实际应用,阻塞队列的实现原理。3.ArrayBlockingQueue:   (1)看BlockingQueue类的帮助文档,其中有各个方法的区别对比的表格。   (2)只有put方法和take方法才具有阻塞功能4.用3个空间的队列来演示阻塞队列的功能和效果。5

2017-04-26 21:39:58 417

原创 线程工具类-通过信号量、计时器等机制控制多线程之间的运行阻塞-笔记整理11

线程工具类1.Semaphore实现信号灯,可以控制访问线程的个数。信号量初始化10,最多只有10个线程并发访问2.CyclicBarrier:提供一种阻塞机制,等待所有线程到达某一点集合之后,再继续向下运行3.CountDownLatch:通过计数器技术,实现一同多,或多通知一4.Exchanger:提供一种阻塞机制,实现俩个线程交换数据  1.Semaphore实现

2017-04-26 21:22:58 710

原创 java5条件阻塞Condition的应用-多路等待通知Lock-Condition使用-笔记整理10

java5条件阻塞Condition的应用Condition的功能类似在传统线程技术中的Object.wait和Object.notify的功能。在等待Condition时,允许发生”虚假唤醒”,这通常作为对基础平台语义的让步。对于大多数应用程序,这带来的实际影响很小,因为Condition应该总是在一个循环中被等待,并测试正在等待的状态声明。某个实现可以随意移除可能的虚假唤醒,但建议应用程序

2017-04-23 15:31:29 1705

原创 对读写锁的深入理解-读写锁技术的妙用---实现缓存

对读写锁的深入理解 参考:http://www.educity.cn/wenda/380140.html  其中有些小理解错误,大体可以接受        参考:http://www.wang1314.com/doc/topic-898895-1.html  主要通过其理解降级锁1、对降级锁的理解2、读写锁技术的妙用----读写锁实现缓存1、锁降级

2017-04-16 23:34:47 1621

原创 java5的线程锁技术-笔记整理9

java5的线程锁技术1.Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。锁是上在代表要操作的资源的类的内部方法中,而不是线程代码中!2、读写锁:分为读锁和写锁,多个读锁不互斥,读锁和写锁互斥,写锁与写锁互斥。这是由JVM自己控制的,你

2017-04-16 22:43:51 532

原创 Callable和Future的应用-笔记整理8

Callable和Future的应用1.Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的。2.Callable要采用ExecutorSevice的submit方法提交,返回的future对象可以取消任务。3.CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Futu

2017-04-16 21:44:43 458

原创 常见线程池和启动定时器线程池-笔记整理7

常见线程池和启动定时器线程池1.线程池的概念:线程池是一种多线程处理形式,处理过程中将任务添加到队列,如果线程池中有空闲的线程,则由该线程去完成这些任务。2.Excecutors类的应用  (1)创建固定大小的线程池:Executors.newFixedThreadPool(3);   (2)创建缓存线程池:Executors.newCachedThreadPool(3

2017-04-16 21:29:47 2236

原创 Java5的线程并发库-笔记整理6

java5原子性操作类的应用 Java5的线程并发库1.看java.util.concurrent包及子包的API帮助文档      看concurrent包的帮助文档页面,对并发库中涉及的内容有一个总体上的介绍。2.了解java.util.concurrent.atomic包:     查看atomic包文档页下面的介绍,可以对基本数据,对数组中的基本数据,对类中的基

2017-04-16 20:01:49 317

原创 多个线程访问共享对象和数据的方式-笔记整理5

多个线程之间共享数据的方式探讨1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,卖票系统就可以这么做。2.如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,有如下两种方式来实现这些Runnable对象之间的数据共享:(1)将共享数据封装在另外一个对象中,然后将这个对象逐一传递给各个Runnabl

2017-04-16 19:45:48 504

原创 ThreadLocal实现线程范围的共享变量-笔记整理4

线程范围内共享变量的概念与作用 1.作用和目的:用于实现线程内的数据共享,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据。2.每个线程调用全局ThreadLocal对象的set方法,就相当于往其内部的map中增加一条记录,key分别是各自的线程,value是各自的set方法传进去的值。在线程结束时可以调用ThreadLocal.

2017-04-16 16:17:06 549

原创 线程的互斥与同步通信-笔记整理3

package cn.wanli.thread;public class TraditionalThreadCommunication {public static void main(String[] args) {final Business business = new Business();new Thread(new Runnable() {@Over

2017-04-16 14:12:30 418

原创 传统定时器技术-笔记整理2

定时器的应用  参考:http://www.fx114.NET/qa-126-102338.aspx   主要是了解定时器使用的技巧,使其间隔相同时间或不同时间一直执行下去,或者某个固定的时刻或日期,执行,有相关的插件可以实现。主要是当遇到问题的时候,想到有这样的解决方案 Timer类:一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

2017-04-16 14:06:01 320

原创 传统实现线程的俩种方式Thread -笔记整理1

     参考:http://www.fx114.net/qa-126-102338.aspx    1、实现线程的俩种方式 继承Thread类,实现Runnable接口2、总结:查看Thread类的run()方法的源代码,可以看到其实这两种方式都是在调用Thread对象的run方法,      如果Thread类的run方法没有被覆盖,并且为该Thread对象设置了一个Runnable对象,该r...

2017-04-16 13:22:41 387

原创 Java动态代理的方式解释

Java动态代理的两种实现方法参考:http://blog.csdn.net/heyutao007/article/details/49738887 AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interce

2017-04-04 16:03:02 392

原创 ThreadLocal学习总结

ThreadLocal学习总结       参考:http://m.blog.csdn.net/article/details?id=10362063ThreadLocal会被他的英文名称误导,其不是一个线程的本地实现版本,它并不是一个Thread,而是ThreadLocalVariable(线程局部变量),命名为ThreadLocalVar更加合适。 线程局部变量(ThreadL

2017-04-04 15:25:35 425

原创 java中四种引用类型

java中四种引用类型参考:深入理解java虚拟机参考:http://www.cnblogs.com/mjorcen/p/3968018.html  引用种类分类的必要性和原因:无论是通过引用计数算法判断对象的引用数量,还是通过根搜索算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在jdk1.2之前。Java中的引用的定义很传统:一个对象的状态只有被引用

2017-04-04 14:24:26 403

原创 Java内存分配划分

深入Java核心Java内存分配原理精讲       参考:http://m.blog.csdn.net/article/details?id=13922147Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分

2017-03-18 22:28:24 388

原创 通过反编译深入理解Java String及intern(笔记整理二)

主要是通过反编译 javap -v 命令 来看代码的执行String是一个特殊的包装类数据。可以用:String str = new String("abc");   String str = "abc"; 两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。而第二种是先在栈中创建一个对String类的对象引用变量s

2017-03-18 22:24:48 449

原创 类的初始化

类的初始化     参考:http://m.blog.csdn.net/article/details?id=17845821 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化:1、遇到new、getstatic、putstatic、invokestatic这四条字节码指令时,如果类还

2017-03-18 21:18:23 470

原创 Memcached基础整理

Memcached基础整理:1、memcached基本简介介绍2、memcached的内存分配策略3、memcached数据过期与数据删除机制4、memcached的分布式算法

2017-03-13 20:52:25 289

原创 Javac编译与JIT编译

Javac编译与JIT编译参考1:http://m.blog.csdn.net/article/details?id=18009455参考2:http://m.blog.chinaunix.net/uid-9789791-id-1997450.html 前端编译:javac编辑,java编辑器将*.java文件编译称为*.class文件的过程。后端编译:在程序运行期间将字节码变

2017-03-13 20:15:30 495

原创 Java回收对象的标记 和 对象的二次标记过程

Java回收对象的标记 和 对象的二次标记过程 一、对象的标记1、什么是标记?怎么标记?         第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理。 至于怎么标记,一般有两种方法:引用计数和可达性分析。 引用计数实现起来比较简单,就是给对象添加一个引用计数器,每当有一个地方引用它时就加1,引用失效时就减1,当计数器为0的时候就标记为可

2017-03-01 21:56:13 5123 5

原创 cookie、session机制解释

cookie、session机制解释 详细参见:http://m.blog.csdn.net/article/details?id=6952954 1、会话(session)跟踪是web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是cookie与session。Cookie通过在客户端记录信息确定用户身份。Session通过在服务器端记录信息确定用户身份。

2017-02-23 23:06:41 368

原创 Java对象的序列化和反序列化

Java对象的序列化和反序列化详细参见:http://www.cnblogs.com/xdp-gacl/p/3777987.html 一、序列化和反序列化的概念把 对象 转换为字节序列 的过程称为对象的序列化。把 字节序列 恢复为对象 的过程称为对象的反序列化。 二、对象序列化的俩个用途:1)把对象的字节序列永久地保存到硬盘上,通常保存在一个文件中2)在

2017-02-23 21:47:33 318

翻译 java异常分类和常见异常

异常类分两大类型:Error类代表了编译和系统的错误,不允许捕获;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行异常类Runtime_Exception和非运行异常类Non_RuntimeException这两个直接的子类。运行异常类对应于编译错误,它是指Java程序在运行时产生的由解释器引发的各种异常。运行异常可能出现

2017-02-20 21:51:26 6918 1

翻译 通过反编译深入理解Java String及intern

通过反编译深入理解Java String及intern 一、字符串问题 二、字符串深入分析(对问题三的深入分析,结合jdk6,7的区别) 三、常见面试题解答

2017-02-14 21:48:27 373

翻译 Java8内存模型—永久代(PermGen)和元空间(Metaspace)

Java8内存模型—永久代(PermGen)和元空间(Metaspace)一、JVM 内存模型二、PermGen(永久代)三、Metaspace(元空间)四、总结

2017-02-14 20:42:46 596

翻译 https和http的区别介绍

总结:https就是在运输层和应用层中间加了个ssl安全套接字层,不是使用的默认的80(http使用)端口,使用的443端口。使用https需要使用ca认证的证书,每年要交一些费用。        和http相比在传输数据的过程中经过加密,更安全些很多网友已经注意到“百度”近日全站都开启了HTTPS加密搜索,打开百度后,其网址前面是https开头,而不是普通的http,

2017-02-09 21:10:57 515

翻译 TCP/IP协议的三次握手及实现原理

资料:           1、简述Socket,IP,TCP三次握手,HTTP协议(有助于理解、记忆和学习)                http://www.tuicool.com/articles/qyUzyir一、TCP报文格式  TCP报文格式图:    上图中有几个字段需要重点介绍下:  (1)序号:

2017-02-09 21:00:39 4692

空空如也

空空如也

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

TA关注的人

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