- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 堆排序
原理:http://blog.csdn.net/morewindows/article/details/6709644实例:package com.mylearn.algorithm.sort;import org.apache.commons.lang.xwork.StringUtils;/** * Created by Intelli
2013-11-27 10:00:00 622
原创 快速排序
快速排序原理设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N
2013-11-27 09:58:21 569
原创 归并排序
归并排序原理归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。值得注意的是归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序
2013-11-27 09:56:34 627
原创 选择排序
选择排序原理n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:①初始状态:无序区为R[1..n],有序区为空。②第1趟排序在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。……③第i趟排序第i趟排序开始时,当前有
2013-11-27 09:56:10 465
原创 直接插入排序
直接插入排序原理直接插入排序(straight insertion sort)的作法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于稳定的
2013-11-27 09:55:45 601
原创 冒泡排序
冒泡排序思想它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。实例package com.mylearn.algorithm.sort;import org.apache.
2013-11-27 09:55:19 576
转载 mongo资源
mongo 分片:http://www.cnblogs.com/huangxincheng/archive/2012/03/07/2383284.html
2013-11-26 17:27:39 404
转载 主从复制
主从复制转:http://machael.blog.51cto.com/829462/239112/Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要
2013-11-26 17:25:29 548
原创 zookeeper的一些好博客连接
http://www.jiacheo.org/blog/122 分布式锁http://zookeeper.apache.org/doc/r3.3.2/zookeeperOver.html#ch_DesignOverview http://www.cnblogs.com/shanyou/archive/2012/09/22/2697818.html http://
2013-11-26 15:19:33 654
原创 Zk实现分布式锁
Zk实现分布式锁原理:在分布式环境中,如果多个server一起访问,可能会造成垃圾数据或重复执行,这时需要对资源(如数据库)限制单server访问,我们可以考虑用到分布式锁。用zookeeper可以轻松实现。基本思想: 1. 创建虚拟节点 2. 虚拟节点排序 ,获取最小的节点名称 3. 比较当前jvm创建的节点路径和最小的节点名称,如果想当则持有锁,否则等
2013-11-26 15:16:17 7490
原创 Zookeeper Java API 实例
Zookeeper Java API 实例Api介绍表 1 org.apache.zookeeper. ZooKeeper 方法列表方法名方法功能描述String create(String path, byte[] data, ListACL> acl,CreateMode createMode)创建一个给定的目录节
2013-11-26 15:06:08 4851
原创 Zookeeper部署
Zookeeper部署下载包去官网下载最新版本: http://hadoop.apache.org/zookeeper/,解压到一个目录,如图:修改配置1. 修改host[root@localhost zk]# vi /etc/hosts增加如下host:切记,不要加横杠,最开始参考一篇blog,设置host为slave-01的形式,发现总是启动报错,后来发现pin
2013-11-26 15:05:22 1017
原创 线程同步
线程同步 监视器java监视器支持两种线程:互斥和协作。java虚拟机通过对象锁来实现互斥,允许多个线程在同一个共享数据上独 立而不干扰地工作。协作则通过object类的wait方法和notify方法来实现,允许多个线程为了同一个目标而共同工作。我们将监视器比作一个建筑物,里面有很多房间,房间里面有一些数据,并且同一个时间只能被一个线程占据。一个线程进入房间到离开为止,独占其
2013-11-22 12:05:16 898
转载 JVM client模式和Server模式的区别
JVM client模式和Server模式的区别JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。AD:2013云计算架构师峰会课程资料下载这里向大家描述一下JVM client模式和Server模式两者的区别和联系,JVM如果不显式指定是-Server模式还是-client模式,JVM能
2013-11-22 11:25:44 1184
原创 垃圾回收
垃圾回收一、如何判断对象需要被回收1.1 引用计数法给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;当计数器为0,说明对象不在被使用,可以被回收。当计数器非0,说明对象正在被使用,不会被回收。缺点: 无法解决循环引用。如 ObjectA.instance=B; ObjectB.instance=C; ObjectC.instance=
2013-11-22 11:13:39 957
原创 JVM内存介绍
JVM一、Jvm概述 根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存将会包括如上几个运行时数据区域(就是上图的内存区域)。1.1程序计数器: 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循
2013-11-21 22:24:56 1660 1
原创 JVM之java栈
JVM之java栈简介与程序计数器一样,Java虚拟机栈(JavaVirtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。每当启动一个新
2013-11-21 19:43:01 1332
原创 SoftReference和WeakReference
SoftReference和WeakReference一、简介1. 引用Java中没有指针,只有引用,其实相当于对对象本体的一个昵称,一个代表,一个对象可以有多个引用,当所有引用指向null后,此对象就失去了引用,就可以被垃圾回收。垃圾回收算法中的引用计数法就是按照引用数量来计算的,下章具体介绍。2、强引用 平时我们编程的时候例如:Object object=new Ob
2013-11-20 10:54:06 866
原创 压轴大戏:J.U.C之AQS
J.U.C之AQS一、AQS简介AQS的设计目标是成为依靠单个原子 int 值来表示状态的大多数同步器的一个有用基础。子类必须定义更改此状态的受保护方法,并定义哪种状态对于此对象意味着被获取或被释放。假定这些条件之后,此类中的其他方法就可以实现所有排队和阻塞机制。子类可以维护其他状态字段,但只是为了获得同步而只追踪使用 getState()、setState(int) 和 compareA
2013-11-19 10:14:49 892
原创 J.U.C之Condition
J.U.C之Condition一、Condition简介条件队列:它使得一组线程能够通过某种方式来等待特定的条件变成真。传统队列的元素是一个个数据,而与之不同的是,条件队列中的元素时一个个正在等待相关条件的线程。正如每个Java对象都可以作为一个锁,每个对象同样可以作为一个条件队列,并且Object中的wait、notify和notifyAll方法就构成了内部条件队列的API。对象的内
2013-11-14 14:18:17 579
原创 J.U.C之Lock
J.U.C之Lock一、Lock介绍在Java5.0之前,在协调对象的访问时可以使用的机制只有synchronized和volatile。Java5.0增加了一种新的机制:ReentrantLock。与之前提到过的机制相反。ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。与内置加锁机制不同的是,Lock提供了一种无条件的、可
2013-11-14 11:42:33 662
原创 J.U.C之Exchanger
J.U.C之Exchanger一、简介可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。 内存一致性效果:对于通过 Exchanger
2013-11-12 17:15:47 583
原创 J.U.C之Semaphore
J.U.C之Semaphore一、简介Semaphore是一个计数信号量,从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个acquire,然后再获取许可。每个release添加一个许可,从而可能释放一个正在阻塞的获取者。初始值为1的Semaphore可以用作互斥体(mutex),并具备不可重入的加锁语义:谁拥有了这个唯一的许可,谁就拥有了互斥锁。构造方法可以传
2013-11-11 16:48:28 613
原创 J.U.C之CyclicBarrier
J.U.C之CyclicBarrier一、CyclicBarrier简介CyclicBarrier:循环栅栏。这是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时的CyclicBarrier很有用。因为该Barrier在释放等待线程后可重用,所以称为循环的barrier。我们已经看到通过闭锁来启动一组相关
2013-11-11 15:16:55 814
原创 J.U.C之CountDownLatch
J.U.C之CountDownLatch一、CountDownLatch介绍CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程等待。用给定的计数初始化CountDownLatch。由于调用了CountDown方法,所以在当计数达到0之前,await方法会一直阻塞。之后,会释放所有等待的线程,await的所有后续调用都将立即返回。
2013-11-10 22:03:17 493
原创 J.U.C之Atomic&CAS
J.U.C之Atomic&CAS一、并发自增实例package com.mylearn.thread.atomic;import java.util.concurrent.CountDownLatch;import java.util.concurrent.atomic.AtomicInteger;/** * Created by IntelliJ
2013-11-08 16:28:43 840
原创 J.U.C之CopyOnWriteArrayList
一、引子:List 删除public static void main(String args[]) { List lst = new ArrayList(); lst.add("first"); lst.add("second"); lst.add("third"); lst.add
2013-11-08 10:55:03 552
原创 J.U.C之ConcurrentHashMap分析
ConcurrentHashMap分析一、ConcurrentHashMap介绍与HashMap一样,ConcurrentHashMap也是一个基于散列的Map,但它使用了一种完全不同的加锁策略来提供更高的并发性和伸缩性。ConcurrentHashMap并不是将每个方法都在同一个锁上同步并使得每次只能有一个线程访问容器,而是使用一种粒度更细的加锁机制来实现更大程度的共享。这种机制称为分段
2013-11-07 16:08:02 950
原创 缓存思想分析
缓存思想分析1. 基本思想缓存,大家都知道,有值直接用;无值,计算后放入缓存系统后供下次使用。定义一个目标接口:Computablepackage com.mylearn.cache;/** * Created by IntelliJ IDEA. * User: yingkuohao * Date: 13-11-5 * Time: 下午5:0
2013-11-06 11:47:20 768
原创 J.U.C之Future
Future1. Callable介绍Executor框架使用Runnable作为其基本的任务表示形式。Runnable是一种有很大局限的抽象,虽然run能写入到日志文件或者将结果放入某个共享的数据结构,但它不能返回一个值或抛出一个受检查的异常。许多任务实际上都是存在延迟的计算——执行数据库查询,从网络上获取资源,或者计算某个复杂的功能。对于这些任务,Callable是一种更好的抽象:
2013-11-06 11:46:16 889
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人