摘要: 原文:http://blog.csdn.net/vange/article/details/5407625 JAVA 内部静态类--解析静态内部类的使用目的与限制 解析静态内部类的使用目的与限制 在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特 阅读全文
posted @ 2015-08-31 14:58 yweihainan 阅读(3019) 评论(0) 推荐(1) 编辑
摘要: 例1,表中有主键(可唯一标识的字段),且该字段为数字类型 1 测试数据 2 查找id最小的重复数据(只查找id字段) 3 查找所有重复数据 4 查找除id最小的数据外的重复数据 5 删除重复数据,只保留一条数据 id最小的 例2,表中没有主键(可唯一标识的字段),或者主键并非数字类型(也可以删除重复 阅读全文
posted @ 2015-08-30 21:57 yweihainan 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 索引使用策略及优化 MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本章讨论的高性能索引策略主要属于结构优化范畴。本章的内容完全基于上文的理论基础,实际上一旦理解了索引背后的机制,那么选择高性能的策略就变成了纯粹的推理,并 阅读全文
posted @ 2015-08-29 10:47 yweihainan 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.uml.org.cn/sjjm/201107145.asp 1 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一,例如下面 阅读全文
posted @ 2015-08-29 10:30 yweihainan 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: 1 索引(index) 索引是一个单独的、物理的数据库结构, 它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单 他的作用和字典的目录是一样的,就是为了加快查询的速度。 使用它来快速查找具有特定值的记录, 如果没有索引,执行查询时候必须从第一条记录开始扫描整个表的记 阅读全文
posted @ 2015-08-29 10:02 yweihainan 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法 对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的。 原因很简单:锁对象只有一个 一次只能被一个线程拥有 而访问非同步方法不需要锁对象 阅读全文
posted @ 2015-08-28 15:35 yweihainan 阅读(1860) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.cnblogs.com/dolphin0520/p/3920385.html 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须 阅读全文
posted @ 2015-08-28 15:13 yweihainan 阅读(306) 评论(0) 推荐(1) 编辑
摘要: 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行。在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 1 Timerjava.lang.Object | java.util.Timer public class Timer extends Obj 阅读全文
posted @ 2015-08-28 15:01 yweihainan 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 下面内容转载自:http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: 这里直接实现一个Timer 阅读全文
posted @ 2015-08-28 14:47 yweihainan 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callab 阅读全文
posted @ 2015-08-28 14:18 yweihainan 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 一 关键类的实现 1 ThreadPoolExecutor类 java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。 下面我们来看一下ThreadPoolExecutor类的具体实现源码。 阅读全文
posted @ 2015-08-28 11:59 yweihainan 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务 阅读全文
posted @ 2015-08-28 10:56 yweihainan 阅读(55631) 评论(2) 推荐(4) 编辑
摘要: 原文:http://www.cnblogs.com/dolphin0520/p/3932906.html 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是: 阅读全文
posted @ 2015-08-28 10:28 yweihainan 阅读(639) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。 其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒 阅读全文
posted @ 2015-08-28 10:00 yweihainan 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 一 概述 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能 因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。 因此Java5.0开始针对多线程并发访问设 阅读全文
posted @ 2015-08-28 09:52 yweihainan 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 1 Java中的集合 Java中的集合分为同步的集合(线程安全)和线程不安全的集合 例如 : ArrayList和Vector的区别: 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一倍 阅读全文
posted @ 2015-08-27 16:53 yweihainan 阅读(1946) 评论(0) 推荐(0) 编辑
摘要: 1 对象增强的手段 * 继承 被增强的对象固定的 增强的内容也是固定的 使用继承会使类增多 * 动态代理(AOP) 被增强的对象可以切换 增强的内容也可以切换:事务处理 日志 ... ... 参看:Java 动态代理 * 装饰者模式 被增强的对象是可以切换的 增强的内容是固定的 2 Decorato 阅读全文
posted @ 2015-08-27 16:38 yweihainan 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 一 从单例模式说起 在singleton 单例模式一文中我们详细了解Java中单例模式的实现,不了解的可以先阅读之。 在该文最后我们给出了双重校验锁来保证既实现线程安全,又能够使性能不受很大的影响的单例模式 代码如下: “双重检查加锁”机制的实现会使用关键字volatile, 它的意思是:被vola 阅读全文
posted @ 2015-08-27 15:08 yweihainan 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 1.可重入锁 如果锁具备可重入性,则称作为可重入锁。 像synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制: 基于线程的分配,而不是基于方法调用的分配。 举个简单的例子,当一个线程执行到某个synchronized方法时,比如说method1, 阅读全文
posted @ 2015-08-27 11:30 yweihainan 阅读(3147) 评论(0) 推荐(0) 编辑
摘要: 一.synchronized的再次讨论 使用synchronized关键字来标记一个方法或者代码块,当某个线程调用该对象的synchronized方法或者访问synchronized代码块时, 这个线程便获得了该对象的锁,其他线程暂时无法访问这个方法,只有等待这个方法执行完毕或者代码块执行完毕,这个 阅读全文
posted @ 2015-08-27 11:19 yweihainan 阅读(375) 评论(0) 推荐(1) 编辑