自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (20)
  • 收藏
  • 关注

原创 学习笔记--mysql索引(五) 聚簇索引和覆盖索引

聚簇索引并不是一种单独的索引类型,而是一种数据的存储方式。InnoDB的聚簇索引实际在同一个结构中保存了B树索引和数据行。也就是说,当表有聚簇索引时,它的数据行实际存放在索引的叶子页中。显然,由于无法把数据和放在两个不同的地方,一个表只能有一个聚簇索引。对于InnoDB来说,默认使用主键作为聚簇索引,所以最好有一个与业务无关且自增的主键,这样会有比较好的插入和删除性能,也就是代理主键。使用业务相关的

2017-01-15 12:15:49 623

原创 学习笔记--mysql索引(四) 多列索引

多列索引有两个意思,一个是在多个列上建立一个索引,另一个意思是在多个列上分别建立索引。比较直观能够想到,如果是在多个列上建立一个索引,那么如果where条件里正好又是这些列,那么将获得较好的性能。如果分别建立索引,where中又有多个分别建立的索引的列,那mysql优化器将如何处理呢?EXPLAIN SELECT sakila.actor.first_name, sakila.actor.last

2017-01-15 11:38:41 374

原创 理解Spring AOP 原理(三)Spring AOP 源码分析

理解了JDK,CGLIB动态代理技术,以及ProxyFactory后,不难理解Spring实现AOP就是扫描AOP配置后生成相应的代理类,按切点(pointcut)和通知器(advisor)配置来织入通知(advice)来实现AOP。核心是动态代理技术。具体看看,先看看@EnableAspectJAutoProxy: 进入AspectJAutoProxyRegistrar: 读注释,可以看出这个

2017-01-02 22:00:31 377

原创 理解Spring AOP 原理(二)JDK,CGLIB动态代理以及ProxyFactory

Spring AOP的底层是基于JDK和CGLIB代理技术来实现的,要理解Spring AOP,需要先对JDK和CGLIB有一定的认识和理解。一. JDK动态代理先看一段Demo示例,首先定义一个接口:public interface DemoInterface { public void service();}该接口的实现:public class DemoImpl implements

2016-12-31 22:27:54 858

原创 理解Spring AOP 原理(一)Spring AOP的Demo应用和相关概念

AOP是Aspect-Oriented Programming的简称,中文就叫面向切面编程。 理论没什么好深究的,要理解Spring AOP,先看一个Spring AOP 的小Demo程序,有代码比较好理解。先写一个简单的Service Demo:import org.springframework.stereotype.Component;@Componentpublic class Test

2016-12-31 11:43:06 353

原创 基于Spring任务调度器实现可动态启停的任务调度器

一. Spring任务调度介绍介绍下Spring的任务调度,启动一个间隔1秒的定时任务,首先开启Spring定时任务:import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableScheduling;@Configuration

2016-12-29 22:00:37 2238

原创 理解spring ioc 原理

Ioc容器是Spring的核心,Spring的依赖反转由Ioc实现,同时,几乎其他所有的Spring特性都依赖Ioc容器。Ioc容器是Spring框架最核心的部分。先说一段容器启动的Demo代码:public class IocDemo { static AnnotationConfigApplicationContext annotationConfigApplicationContext

2016-12-29 21:49:21 747

原创 学习笔记--mysql explain

在select关键字里增加explain关键字,mysql会在查询上设置一个标记,这时执行查询时返回执行计划中每一步信息,而不会直接返回。这是调优分析SQL语句的一个重要手段。对一个表的查询,explain会返回一行信息,如果对多个表连接查询则会返回多行信息explain 有2个变种,一是explain extended,效果是可以通过紧接其后的运行show warnings看到这个生成的语句。而是

2016-12-28 22:00:30 367

原创 学习笔记--mysql索引(三) 独立的列,前缀索引和索引的选择性

索引可以提高查询效率,但需要正确的索引策略才能发挥效果(测试中的示例数据库为mysql的sakila数据库,链接:http://dev.mysql.com/doc/sakila/en/)。独立的列,索引不能是表达式的一部分。比如: EXPLAIN SELECT * from sakila.actor WHERE actor_id=5; 在sakila.actor表中,actor_id是主键,有

2016-12-26 21:33:33 1381

原创 学习笔记--mysql索引(二) B树索引的介绍和限制,好索引的标准

Mysql的索引使用最多是B树索引,使用B树数据结构来存储数据,大多数mysql引擎都支持这种索引。但每种存储引擎实现的方式并不相同,具体的数据结构也不一样,比如InnoDB使用的是B+树,在索引中存储数据和原数据相同,并且根据主键引用被索引的行。而MyISAM则使用前缀压缩技术,索引中存储的数据是压缩过的,根据数据物理位置引用被索引的行。 B树的抽象表示: 理解一下这张图,

2016-12-22 20:57:29 475

原创 学习笔记--mysql索引(一) 索引使用,index,key,primary key, unique

所有MySQL列类型都可以被索引,对相关列使用索引是ᨀ高SELECT操作性能的最佳途 径。根据存储引擎可以定义每个表的最大索引数和最大索引长度,MyISAM和InnoDB 存储引擎的表默认创建的都是BTREE索引,支持前缀索引,即对索引字段的前N个字符创建索引。MyISAM存储引擎支持FULLTEXT索引,并且只限于CHAR、VARCHAR和TEXT列,默认情况下,MEMORY存储引擎使用HASH

2016-12-19 21:40:04 5592

原创 使用HttpClient不设置超时将导致线程永久等待

最近在做一个定时任务,每一个小时使用HttpClient去访问一个外部服务器拉去一组数据,使用一个大小为10的线程池启动拉取线程,昨天外部服务器挂了一次,然后发现我自己的服务器上的线程池也挂了,提交的新task全部无法执行。奇怪的是外部服务器昨天挂了,今天就恢复了,我自己的服务器今天应该也自动恢复才对啊,我重启了自己的服务器的进程就OK了,但为什么线程池会挂呢,即使外部服务恢复了,本地线程池必须要重

2016-12-19 10:45:50 10322

原创 学习笔记--mysql常用数据类型总结

Mysql数据类型包括:整数类型,实数类型,字符串类型,日期时间类型,位类型,特殊类型。整数类型 包括tinyint, smallint, mediumint, int, bigint,对应存储空间分别为8,16,24,32,64位存储空间,长度上来说,tinyint对应java中的byte,8位;smallint对应java中short,16位;int与java中int对应,32位;bigin

2016-11-21 21:00:35 357

原创 理解事务的ACID和隔离级别

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),事务是一个数据库概念。但我理解数据库也是一款软件,只是遵循了数据库SQL标准,理解事务,先看看数据库软件的逻辑结构,这是mysql的逻辑结构: 可见mysql支持多客户端访问,对应到mysql里面就是多线程(通常一个客户端对应mysql内部一个处理线程),底层的存储引擎就是负责向持久化介质(硬盘,存

2016-11-13 15:50:12 2945 2

原创 理解JAVA的Semaphore信号量

先解释下信号量要解决什么问题,打个比方,一个任务,需要从网卡读取参数,而且同一个时间只允许最多2个线程读取一个网卡的参数,现在有4个线程需要读取这个参数,那么理想情况是所有时间都有且只有2个线程在同时读取参数,这个时候就是信号量Semaphore登场了。public class CompletionServiceDemo { static final Semaphore semp = new

2016-11-12 20:45:13 298

原创 理解java的CompletionService

CompletionService是JAVA多线程工具箱中个又一大利器,这个东西用来解决什么问题合适?我一个任务,任务完成后有一个输出值,这个时候就要用到Future和Callable了,如果我同时运行2个这样的任务,然后需要在主线程中获取这2个任务的返回值。比较直观的想法就是使用一个list来保存这2个任务的Future对象,依次调用get方法来取值,但这样做有一个问题,保存在list中的5个对象

2016-11-12 20:11:27 255

原创 理解java的 CountDownLatch 和 CyclicBarrier

所谓CountDownLatch,字面理解就是计数,然后闭锁,所谓闭锁,就是在闭锁到达结束状态之前,这扇门一直是关闭着的,不允许任何线程通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。举个栗子说明,比如两个任务,任务一可以并发进行,任务二则要等到至少2个任务一完成后才能开始public class CountDownLatchDemo { static final CountDown

2016-11-12 14:29:41 701

原创 理解java读写锁 ReadWriteLock

如果说ReetrantLock是一种互斥锁的话,那么还有一种锁叫读写锁ReadWriteLock。通俗点说,互斥锁相当一个线程持有这个锁以后,其他任何线程都不能再获取这个锁了,但可以设想2个线程对一个公共内容读写的场景,如果一个线程对公共内容进行写操作,那么另一个线程这不能读也不能写这个内容,但如果一个线程对公共内容进行读操作,那实际应该允许另个一线程对该内容进行读操作,但禁止写操作,即读-读允许,

2016-11-12 13:49:58 354

原创 理解java的ReetrantLock

关于java多线程并发控制,除了内置关键字synchronized外,还有lock,lock的一个实现类就是ReetrantLock,Lock可以实现更灵活的多线程并发控制。如何使用,举个栗子public class ReetrantLockDemo { static final Lock lock = new ReentrantLock(); static Runnable run

2016-11-12 13:10:49 1041

转载 理解java 序列化

1、什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。2、什么情况下需要序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候;3、如何实现序列化 将需要序列化的类实现Se

2016-11-03 21:24:40 211

转载 总结分析Java常见的四种引用

从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。  1.强引用  本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也

2016-11-03 20:38:22 170

转载 String,StringBuffer 和StringBuilder

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)String类型是Java内的对象,是个不可变的对象,当每次对String进行改变时都需要生成一个新的String对象,然后将指针指向一个新的对象,如果在一个循环里面,不断的改变一个对象,就要不断的生成新的对象,而且对象多了,Java的垃圾自动回收机制会开始工作,所以效率

2016-11-01 21:07:35 210

转载 搞懂JAVA集合类--线程安全问题(五)

基本的Java集合类中, 线程安全的有Venctor和Hashtable,其余的ArrayList,LinkedList,HashMap,HashSet,TreeSet,LinkedHashSet,HashMap,TreeMap都不线程安全。可以由java.util.Collections来创建线程安全的集合,如:Connections.synchronizedSet(SetT>); Conn

2016-11-01 20:55:30 279

转载 搞懂JAVA集合类--线程安全问题(六)

基本的Java集合类中, 线程安全的有Venctor和Hashtable,其余的ArrayList,LinkedList,HashMap,HashSet,TreeSet,LinkedHashSet,HashMap,TreeMap都不线程安全。可以由java.util.Collections来创建线程安全的集合,如:Connections.synchronizedSet(Set); Connectio

2016-11-01 20:54:41 315

转载 搞懂JAVA集合类--HashSet, LinkedHashSet, TreeSet(五)

HashSet, LinkedHashSet, TreeSet分别使用HashMap,LinkedHashMap和TreeSetMap作为底层实现HashSet 的实现其实非常简单,它只是封装了一个 HashMap 对象来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 key 来保存,而 HashMap 的 value 则存储了一个 PRESENT,它是一个静

2016-10-31 19:14:31 232

转载 搞懂JAVA集合类--HashTable, LinkedHashMap, TreeMap(四)

HashTable, LinkedHashMap, TreeMap相比HashMap不那么常用。HashTable和HashMap大体差不多,有几点区别: 1. 我们从他们的定义就可以看出他们的不同,HashTable基于Dictionary类,而HashMap是基于AbstractMap。 2. HashMap可以允许存在一个为null的key和任意个为null的value,但是HashTab

2016-10-31 18:18:38 167

转载 搞懂JAVA集合类--HashMap(三)

HashMap底层是哈希表实现(格式像数组链表的组合):HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。由于存储位置由hashCode确定,所以此类不保证映射的顺序,因为新插入值特别是它不保证该顺序恒久不变。HashMap 的实例有两个参数影响其性能:初始容量( 默认值为 16) 和加载因子(默认0.75)。当哈希表中的条目数超

2016-10-31 17:23:33 193

转载 搞懂JAVA集合类--List的实现 ArrayList、Vector、LinkedList(二)

ArrayList还是Vector,在它们内部都是使用一个数组来保存数据的。开发过程中,在使用它们任何一个的时候,你都需要记住这一点。你在往一个ArrayList或者Vector里插入一个元素的时候,如果内部数组空间不够了,ArrayList或者Vector就要扩展它的大小。Vector在默认情况下是增长一倍的大小,而ArrayList增加50%的大小。只要你合理的使用这些类,你就可以结束你在增加新

2016-10-31 16:23:25 217

转载 搞懂JAVA集合类--集合类框架(一)

上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。发现一个特点,上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNe

2016-10-31 15:33:39 184

原创 Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(五)源码下载地址以及总结

前面4篇博客详细阐述了如何使用Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(通信录)。这是该CURD系统完整源代码下载:http://download.csdn.net/detail/liuxiang87/9618474另外,在整个编码完成以后,可以使用Maven进行打包,Maven install: 这个操作完成后,target目录下就有包了: 下面也把这

2016-09-01 07:04:51 718

原创 Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(四)构建前端

上一篇完成了后端数据库,映射和Service 的构建,本篇来完成前端部分。 前端部使用于SpringMVC为MVC框架,使用ThymeLeaf,首先在pom中增加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta

2016-09-01 06:48:58 1079

原创 Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(三)构建后端

上一篇我们已经成功搭建了一个SpringBoot的工程,在这个基础上实现一个通信录功能的CURD的Demo程序,本篇讲述如何构建后端部分。由于重点是演示SpringBoot,我们就简化这个通信录,在Mysql中新建一个Person表,包含Id,Name和Phone三个字段,初始化SQL语句如下:CREATE TABLE `Person` ( `id` int(11) unsigned NOT N

2016-08-31 08:33:38 1651 1

原创 Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(二)搭建SpringBoot工程

第一步是构建SpringBoot工程,我使用的IDE是Eclipse,SpringBoot官方提供了一个很好用的插件,为了更具一般性,我就是不使用插件了,直接新建一个Maven工程: 一路选择next,配置下Group信息: 点击Finish,完成Maven工程的创建。这时的这个工程在Eclipse里面看到的目录结构应该是这样的: 到目前为止就是构建一个普通的Maven工程,并无特别之

2016-08-31 06:56:45 890

原创 Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(一)Spring Boot介绍

说起搭建WEB服务,以前用的是SSH,构建一个WAR包后扔给容器,里面各种XML配置文件。对于长期项目来说,初始时这么搞一下倒不是什么问题,但有时候比如只需要做一个内部工具,业务逻辑非常简单,如果再这么去搞一套,可能搭建这套东西时间远大于写业务逻辑的时间。那么有没有什么框架可以简化这个过程?找了一圈,发现SpringBoot还不错。先看看SpringBoot官网介绍:Spring Boot make

2016-08-31 05:29:49 1779

原创 通过自定义JAVA注解来理解JAVA注解

什么是JAVA注解?这是百度百科的解释:定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。作用分类: ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 ②代码分析:通过代码里标

2016-08-14 19:49:34 268

原创 贡献一个JAVA代码在线格式化工具

最近决定开始使用CSDN写技术博客,作为分享和个人总结提升,发现CSDN的富文本编辑器对JAVA代码支持得不好,使用默认的编辑器,把代码弄出来就是这个效果:public class Hello { public static void main(String[] args){ System.out.println("hello world"); }}        实在太丑,切换到m

2016-08-14 19:14:33 1368

原创 JAVA自定义注解示例详解

什么是JAVA注解?这是百度百科的解释:       定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。       作用分类:      ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】

2016-08-14 11:23:44 265

原创 java常用多线程知识大全(二)

五. 线程组:JAVA中ThreadGroup表示线程组,可以在创建Thread时在构造函数中指定线程组,不指定默认为父线程的线程组。线程组提供activeCount()、interrupt()、isDaemon、setDaemon()等方法可以操作线程组中所有线程。六. 线程异常特殊处理机制:可以通过Thread的static setDefaultUncaughtExceptionHan

2016-08-06 13:16:33 250

原创 JAVA常用多线程知识大全(一)

一.  创建线程方法包括:1. 继承Thread创建后调用start()方法启动;2. 实现runnable接口后作为Thread的target创建,调用Thread的start()方法启动;3.实现Callable的target创建,调用Future()方法启动线程,后续可以调用get()方法获取Callable二. 控制线程:1. Thread的join()方法可以让当前线

2016-07-11 16:08:49 309

转载 JAVA 集合性能特性汇总

JAVA集合平时使用较多的是ArrayList和HashMap,其实还有很多不常用的,总结下其特点和性能,以备使用 1.  Set有2种典型实现,HashSet 和 TreeSet, TreeSet就是排序的的Set,由于TreeSet内部需要红黑算法树来维持其排序,添加和查询方面HashSet都优于TreeSet,通常除非需要一个排序的Set情况外,都使用HashSet。HashSet还

2016-07-03 20:29:49 667

Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(通信录)完整可执行Jar包

Spring Boot+JPA+Mysql+ThymeLeaf快速构建CURD系统(通信录)完整可执行Jar包 包含所有依赖包 博客文章地址:http://blog.csdn.net/liuxiang87/article/details/52381282

2016-09-01

md5加密指导文档

md5加密指导文档

2014-01-09

linux开发总结

linux开发总结

2013-11-28

C++开发指导2

C++开发指导2

2013-11-13

C++ 开发指导

C++ 开发指导

2013-11-12

语音增强算法的改进

语音增强算法的改进

2013-11-11

java并发个人心得

java并发个人心得

2013-05-15

自己编写的语音增强MATLAB代码

经过实验验证有效的语音增强算法,直接可运行,对非冲击噪声有较好的去噪效果。 lx_main为主程序,NS_lxwz为噪声估计模块,lxG_wz为增益估计模块,noise_sound为测试用含噪语音。 算法原理参见本人的文章《一种引入延迟的语音增强算法》

2011-06-08

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part10.rar

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part10.rar

2010-03-03

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part09.rar

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part09.rar

2010-03-03

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part08.rar

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part08.rar

2010-03-03

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part07.rar

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part07.rar

2010-03-03

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part06.rar

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part06.rar

2010-03-03

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part05.rar

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part05.rar

2010-03-03

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part04.rar

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part04.rar

2010-03-03

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part03.rar

Aptana.Studio part03

2010-02-23

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part02.rar

Aptana.Studio part02

2010-02-23

Aptana.Studio.Professional.v1.2.7.024774.Incl.KeyMaker.and.Patch-DVT.part01.rar

Aptana是一个基于Eclipse的集成开发环境,其最广为人知的是它非常强悍的JavaScript编辑器和调试器。去年Aptana吸收了Radrails项目,添加了非常强大的Ruby on Rails支持。但是Aptana前进的脚本并未停止。随着苹果公司iPhone手机的发布,Aptana也推出了功能完备的iPhone集成开发功能,在Adobe公司的RIA产品AIR推出不久之后,Aptana就支持了AIR的开发环境。如今Aptana Studio 1.0支持如下几大方面的开发功能: 1、AJAX开发环境 × HTML/JavaScript/CSS编辑器 × prototype/dojo等常见AJAX类库集成和提示 × JSON编辑器 2、Adobe AIR开发环境 3、Apple iPhone开发环境 4、Ruby on Rails开发环境 5、PHP开发环境 6、JavaScript调试器

2010-02-23

Free JavaScript Editor

一款小巧好用的javascript编辑工具

2010-01-25

空空如也

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

TA关注的人

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