自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (3)
  • 收藏
  • 关注

原创 InnoDB存储引擎_数据库隔离级别(二)

InnoDB存储引擎提供了两个特点1.事务2.行锁关于事务的四种隔离级别,在上篇已经说过了,关于可重复读隔离策略能够防止“幻读”问题,需要根据InnoDB的加锁策略来分析。InnoDB支持的行锁是指通过索引实现对结果记录集合加锁,可以理解为对索引加锁,来保证根据索引搜索的范围内,存在“范围锁”,之所以这么说,是因为如果表中不存在索引,则可能加锁的范围为整张表,即升级为“表锁”。

2016-07-31 14:01:34 575

原创 InnoDB存储引擎_数据库隔离级别(一)

并发访问在许多地方都被使用,用以提高对资源的利用率,例如操作系统中多道程序访问,提高CPU和内存的利用率。与并发紧密相关的就是共享资源的安全访问,通常利用加锁或者限制访问数量的机制来保证数据结构的一致性和操作结果的正确性。数据库中引入事务隔离来保证在一定程度上的正确性,之所以说是一定程度上,因为在并发访问中使用隔离策略,其实是对访问顺序的一个限制,是在向串行化方向的靠拢。所以给出的几种隔离策略

2016-07-30 12:12:25 1318

原创 DNS域名解析

DNS(Domain Name System)域名系统,即域名解析系统,作用就是将浏览器中输入的网址解析为IP地址,然后发起http请求。虽然不知道最初什么原因产生的域名系统,但是一个很明显的驱动力就是直接输入地址来访问网站是太麻烦的。域名的划分有几个等级,最常见的几个顶级的域名域,例如.edu表示的教育机构,.gov表示政府机构等,域名最后的一个“.”,表示根域,不过通常我们都不写,根域名服

2016-07-26 16:41:59 814

原创 类加载机制_双亲委派模型

类加载机制的第一步执行的是类的加载过程,完整的类加载机制包括加载、连接和初始化,其中连接又可以分为验证、准备和解析三个小过程,除了解析过程支持动态绑定发生的时间可能在初始化之后,其他过程按照顺序发生(时间上可重叠)。类的加载是指将表示类信息的二进制字节流转化为虚拟机中以Class对象为代表的数据结构。虚拟机中采用双亲委派模型来表现类的加载结构,JVM中预定义的有三种类型的类加载器:

2016-07-25 19:47:29 536

原创 https分析

简介http(HyperText Transfer Protocol)作为常用的应用层协议,在使用中信息是以明文传输的,很容易发生信息被“嗅探”。为了应对http协议使用中可能发生的攻击,于是诞生了https,从名字可以看出,是对http协议的一个封装,主要提供以下功能:1.对信息加密。防止信息被非法捕获、泄露2.完整性校验。检测信息的完整性,防止信息被篡改3.身份认证。解决信息伪

2016-07-24 15:52:39 566

原创 CopyOnWrite分析

定义:CopyOnWrite机制称为写时复制,理解起来很简单,就是执行修改操作时进行底层数组复制,使得修改操作在新的数组上进行,不妨碍原数组的并发读操作,复制修改完成后更新原数组引用变量。原理:每个修改之前都加上ReentrantLock使并发写操作互斥执行,避免多次数据复制修改。所以能够实现读写分离,但是写写同步执行。读写并发环境中,在将原数组对象引用变量更新为复制修改完成后的数组对

2016-07-23 15:09:53 6934

原创 HashMap与Hashtable(二)

Hashtable与HashMap相同的地方很多,底层数据结构相同,解决散列冲突的方式相同,主要的不同在于Hashtable是线程安全的,当然现在的线程安全定义很泛滥,vector、Hashtable都可以说是线程安全的,不过就是在方法上加上synchronized修饰词,以同步的方式使用。在实际使用时仍然需要额外的代码保证,否则依然会抛出错误vector示例:public class t

2016-07-15 20:21:20 444

原创 HashMap与Hashtable(一)

HashMap和Hashtable作为保存键值对的容器,都是使用一个Entry数组,Entry元素本身又是一个链式结构,所以实现数据结构相同,都是一个数组-链表形式。HashMap主要的属性:static final int DEFAULT_INITIAL_CAPACITY = 16;//默认容量,2的整数次幂static final int MAXIMUM_CAPACITY = 1

2016-07-14 20:12:26 362

原创 ArrayList的remove、序列化(二)

对象的序列化作为一种存储对象为字节序列的方式,可以将对象保存到本地文件或者通过网络进行传输,是RMI对象或参数传递的基础。对象的序列化会在输出流中保留一个序列化编号,当再次通过该对象输出流对同一个对象进行序列化时,只会存储一个编号,而不会存储整个对象。这种方式虽然可以保证在执行反序列化时,得到的仍然是同一个对象,但是同样使得第一次序列化后,对对象执行的修改在后续序列化中得不到保存,当然前提是使

2016-07-11 15:40:25 479

原创 ArrayList的remove、序列化(一)

ArrayList作为常用的集合,经常使用,这里有两个需要注意一下的地方,分别是remove方法和序列化操作。remove先举个小示例:public class t{ public static void main(String[] args){ ArrayList arr=new ArrayList(); arr.add("a"); arr.add("b"); ar

2016-07-11 13:57:16 2461

原创 报数问题

之前碰到的一个机试题,当时脑袋掉牛角里去了,半天没闹明白。没事写出来提醒自己一下,天热心烦做事需冷静。题目:10人组成的一个队列,从前向后进行报号,号码从前向后递增,依次为1,2,3---10,报号之后的人退出队列,有两种报号策略,策略A:依次报号,例如1号之后是2号,策略B:间隔报号,例如2号之后是4号。计算n次之后的报号的和的最大值示例:10个人,号码1~10,7次报号第

2016-07-10 19:45:44 2305

转载 Java并发编程:深入剖析ThreadLocal

想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。  以下是本文目录大纲:  一.对ThreadLocal的理解  二.深入解析ThreadLocal类  

2016-07-07 06:55:40 605

转载 Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们

2016-07-07 06:52:31 374

原创 线程池

线程池作为一种线程资源管理机制,引入的出发点是将任务的执行和提交分离。任务的执行一般不会在当前线程(调用者线程)中进行,而是委托为一个服务,例如线程池。利用Executor框架构造线程池,实现对任务的执行策略的管理,在ExecutorService中提供了对线程池本身的管理。线程作为一个大对象,构造对象和回收对象都是需要一定资源消耗,线程池可以实现对线程对象的重复利用,以此削减执行任务需要的时

2016-07-07 00:13:41 357

原创 Comparable、Comparator比较器

Comparable和Comparator都是用作元素比较的接口,Comparable位于java.lang包下,Comparator位于java.util包下,从名字以及路径可以大概看出来,Comparable倾向于使得实现该接口的类本身成为可比较的(常见的例如Cloneable,Serializable,当然Serializable处于java.io包下,因为人家更偏于表现出可传输特性),都是

2016-07-06 16:33:09 312

原创 CountDownLatch、CyclicBarrier和Semaphore

CountDownLatch和CyclicBarrier作为协调线程运行顺序的控制机制,Semaphore一般用作资源限制访问条件。CountDownLatch常用方法有public CountDownLatch(int count)public void await() throws InterruptedExceptionpublic boolean await(long ti

2016-07-03 13:41:14 378

原创 Lock、Condition

因为虚拟机的优化技术,使用synchronized锁带来的性能开销越来越低,也不再是之前所谓的重量级锁。但是其本身的加锁机制限制了在灵活性和细粒度方面的拓展,例如在阻塞等待获取锁时不能响应中断(当然可以添加额外的代码实现响应中断),并且synchronized维持的是一种排他锁,在加锁的策略中没有考虑任务的类型。在JDK1.5之后引入locks包,作为对加锁策略一个补充,synchronize

2016-07-02 17:42:08 349

原创 wait()、sleep()以及yield()函数

wait()、sleep()以及yield()三个函数都可以实现任务的暂停执行,只是根据不同的出发点,调用不同的函数实现效果不同。sleep()静态函数常用形式,指定毫秒数public static void sleep(long millis) throws InterruptedException指定毫秒数以及精确的纳秒(第二个参数为int类型,因为纳秒数范围[0-9999

2016-07-02 14:43:20 510

原创 synchronized、wait、notify、notifyAll

因为同一个进程的线程之间可以共享同一个进程空间,所以实现线程的数据共享是很容易的(当然在并发中实现数据结构的一致性则另当别论),也可以使用管道流来进行线程通信(没必要)。此处只说协调控制机制synchronized、wait、notify、notifyAll使用Java语言内置关键字synchronized来进行加锁,可以保证任务执行的可见性和原子性,从而实现同步执行。synchroniz

2016-07-02 11:44:20 425

平衡二叉树(AVL树)

平衡二叉树插入节点和删除节点

2016-08-15

红黑树代码

红黑树插入、删除节点

2016-08-15

可证明安全的基于位置P2P密钥交换协议

在传统的https中,提供一种不使用证书的协商通讯密钥的方式。

2016-07-24

空空如也

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

TA关注的人

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