![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 89
魔鬼_
微信:wzq657 |
github:
https://github.com/1156721874
展开
-
几种常见的【排序】与【数据结构】
(一)常见排序import java.util.Arrays;public class Sort {//快速排序 private static int partition(int[] arr, int low, int hight) { int pivotkey = arr[low]; while (low < hight) { w原创 2015-05-31 18:03:08 · 497 阅读 · 0 评论 -
设计模式(11)-组合模式
思想:将 对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致 性。 场景:该 模式的应用场景极其类似,比如像图形系统,如电路设计、UML建模系统,或者像web的 显示元素等,都是那种需要整体和部分具有使用接口上的一定的一致性的需求的结构,实际上,我觉得这样的系统如果不使用Composite模 式将会是惨不忍睹的。 实现:该模式的实现主要就是要表示整体或部原创 2016-01-02 20:10:25 · 422 阅读 · 0 评论 -
设计模式(12)-装饰模式
思想:为一个对象已有的子类添加一些额外的职责。 场景:该模式的使用场景,主要是有的时候我们不愿意定义逻辑上新的子类,因为没有新的逻辑含义上的子类概念,而只是想为一个已存在的子类附加 一些职责。 实现:该 模式的实现主要就是定义一个物理上的新的子类,但是,它只是包含要附加职责的类,传递外部对相同接口的调用,在这个传递调用的通道上附加额外的功能。突然 想到,Decorator模式是不是一定程度上也能原创 2016-01-02 20:29:00 · 378 阅读 · 0 评论 -
设计模式(13)-桥接模式
思想:将一个类的抽象定义和具体实现解耦。 场景:该 模式的典型应用场景是:一个类的抽象定义已经确定,但是,其实现代码甚至原理可能会不同。比如:我们最熟悉的图形界面中的window的 实现,无论在什么操作系统,什么平台的机器上,一个window应具有的抽象定义基本上是一致的, 但是,其实现代码肯定会因为平台不同,机器的代码指令不同而不同。此时,如果希望您写的window类 能跨平台,应用Bridge原创 2016-01-02 20:51:19 · 428 阅读 · 0 评论 -
二进制在权限系统中的应用
基于二进制的权限管理与验证 http://www.cnblogs.com/qfcndtt/archive/2012/08/03/2621713.html 1. 权限值的设定 用二进制来表示权限值应该是按位来设置,每个位占一个,表示一种权限,如: 00000001表示十进制1, 00000010表示十进制2, 00000100表示十进制4, 0原创 2016-04-19 11:27:26 · 1946 阅读 · 0 评论 -
ConcurrentHashMap是弱一致性分析
本文将用到Java内存模型的happens-before偏序关系(下文将简称为hb)以及ConcurrentHashMap的底层模型相关的知识。happens-before相关内容参见:JLS §17.4.5. Happens-before Order、深入理解Java内存模型以及Happens before;ConcurrentHashMap的详细介绍以及底层原理见深入分析ConcurrentHa原创 2016-03-16 21:51:54 · 7475 阅读 · 0 评论 -
数据库事务隔离级别
转发来源:这里写链接内容数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√: 可能出现 ×: 不会出现 脏读 不可重复读 幻读Read uncommitted √转载 2016-05-08 17:42:29 · 356 阅读 · 0 评论 -
设计模式(14)-享元模式
思想:说Flyweight可 能有的朋友第一次看到想象不到是什么样子,其实说他就是一个Pool,你可能就明白了。也就是由一 个Flyweight Factory来管理一族一定数目逻辑上经常需要构建和销毁的细颗粒对象, 例如我们常见的数据库连接池。在Factory内部,并不物理销毁这些对象,而在接到实例化请求时 返回这些被关系对象的实例,从而减少创建销毁这些细颗粒对象的开销。 场景:基 本上所有的需原创 2016-07-23 17:49:41 · 250 阅读 · 0 评论 -
设计模式(15)-模板模式
思想:定 义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使 得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 场景:该 模式实际上是一种非常直观和可理解的OO思想下的代码重用的实现。只需一次性实现一个算法的不变的 部分,并将可变的行为留给子类来实现。各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。模板方法原创 2016-07-23 18:15:08 · 242 阅读 · 0 评论 -
设计模式(16)-备忘录模式
Memento备忘录设计模式是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到以前保存的状态。Memento备忘录设计模式的结构如下: Memento备忘录设计模式有以下3个重要角色:Originator:需要保存内部状态的对象。Caretaker:为Originator保存并恢复状态的对象。Memento:存放Originator内部状态的对象,由Originator进行原创 2016-07-23 18:44:18 · 286 阅读 · 0 评论 -
我是一个线程(修订版)
第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说:“我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了。” 我一脸懵懂,“包裹,什么包裹?” “不要着急,马上你就会明白了,我们这里是不养闲人的。” 果然,没多转载 2016-05-08 19:24:17 · 546 阅读 · 1 评论 -
Hadoop-StringTokenizer
StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。 java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。StringTokenizer(String str, String delim):构造一个用来解析str的StringTokenizer对象, 并提供一个指定的分隔符。原创 2016-08-16 22:50:00 · 963 阅读 · 2 评论 -
linux下搭建RabbitMQ操作
引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。 消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ简介 A原创 2016-08-02 10:24:31 · 9465 阅读 · 0 评论 -
ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
http://my.oschina.net/itblog/blog/547250 http://baidu.blog.51cto.com/71938/1676798 1、ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products • Elasticsearch是个开源分布式搜索引擎,它的特点原创 2016-08-02 21:54:43 · 1944 阅读 · 0 评论 -
centos6.5_64bit安装mysql5.7.1
昨天花了一下午在CentOS6.5 上安装了MySQL,版本为5.7.11,下面介绍一下我安装时候出现的问题 以及解决方法,供大家参考。 1/清除残留 rpm -qa | grep mysql // 这个命令就会查看该操作系统上是否已经安装了mysql数据库 有的话,我们就通过 rpm -e 命令 或者 rpm -e –nodeps 命令来卸载掉 rpm -e mysql // 普通删原创 2016-07-31 23:06:54 · 654 阅读 · 0 评论 -
基于cestos6.5_64bit_MySql5.7.14数据库的安装以及主从复制的配置
http://www.cnblogs.com/tuhooo/p/5189236.html http://www.cnblogs.com/oo-oo/p/mysql_master_slave01.html http://www.cnblogs.com/php5/p/4180232.html 昨天花了一下午在CentOS6.5 上安装了MySQL,版本为5.7.14,下面介绍一下我安装时候出现的问原创 2016-08-04 14:41:39 · 823 阅读 · 0 评论 -
基于cestos6.5_64bit_MySql5.7.14_amoeba2.1.0读写分离
前一篇日志讲了mysql的安装和主从 复制,今天吹吹mysql基于amoeba的读写分离,老规矩说下环境: Linux:centos6.6 Mysql version :5.7.1 Amoeba :2.1.0 MysqlMaster:192.168.19.134 MysqlSlave:192.168.19.135 Amoeba安装在与MysqlMaster在同一台机器:192.168.1原创 2016-08-07 16:22:51 · 690 阅读 · 0 评论 -
ThreadLocal可能引起的内存泄露
threadlocal里面使用了一个存在弱引用的map,当释放掉threadlocal的强引用以后,map里面的value却没有被回收.而这块value永远不会被访问到了. 所以存在着内存泄露. 最好的做法是将调用threadlocal的remove方法. 在threadlocal的生命周期中,都存在这些引用. 看下图: 实线代表强引用,虚线代表弱引用. 每个thread中都存原创 2016-08-20 21:14:53 · 381 阅读 · 0 评论 -
自旋锁、排队自旋锁、MCS锁、CLH锁
自旋锁(Spin lock) 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。 自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。 简单的实现:import java.util.concurrent.atomic.AtomicReference;public class SpinLock {原创 2016-08-21 17:13:16 · 483 阅读 · 0 评论 -
windows下eclipse-luna编译hadoop2.7问题集锦
编译入口: 1、protoc –version’ did not return a version 原因: 没有安装protoc window 环境安装步骤1: 软件准备 (https://github.com/google/protobuf/releases/tag/v2.5.0) protobuf-2.5.0.tar.gz protoc-2原创 2016-10-10 14:18:26 · 422 阅读 · 0 评论 -
rpc(Remote Procedure Call Protocol)简易代码实现
RpcFramework:package rpc;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy原创 2016-10-11 21:55:59 · 483 阅读 · 0 评论 -
设计模式(17)-观察者模式
Observer 思想:定 义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所 有依赖于它的对象都得到通知并被自动更新。 场景:上面描述该模式思想的文字可能显得有些拗口,实际上你也不用想得过于复杂。只要你写过任何的基于图形界面的程序,那么实际上您对他是一 点也不该陌生的。它就是我们每一次鼠标键盘敲击都在我们的程序内部流转着的事件机制的基础。当一个事件发生,则通知订阅该事件的对象。原创 2016-10-27 18:48:39 · 286 阅读 · 0 评论 -
设计模式(18)-责任链模式
Chain of Responsibility 思想:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一 个对象处理它为止。 场景:该模式实际上是对人们常会不自觉地去做的一种代码组织方式的总结而已。有的时候一条消息需要被处理,我们当然可以在一个雷的一个方法中 对他进行所有需要的处理。但是,如果要做的处理很复杂的情形,甚至原创 2016-10-27 19:01:07 · 306 阅读 · 0 评论 -
设计模式(19)-命令模式
Command 思想:将一个动态的执行过程封装成一个对象,可以像处理数据来处理和管理这样的对象,在需要的时候激发该对象的方法就能执行被封装的执行过 程。 场景:该模式在很多时候非常有用,它使得我们对逻辑上已经激发的行为进行优化成为可能,我们不仅可以根据需要改变一组逻辑上以经济法的活动的 顺序,消冗余操作,撤销不必要的操作等。也可以把活动和操作视为资源一样来管理和重用。同时该模式也是许多事务处理机原创 2016-10-27 19:23:29 · 232 阅读 · 0 评论 -
设计模式(20)-中介者模式
Mediator 思想:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 场景:该模式主要用来进行降低一组相互关联调用的对象间的耦合度。如果您发现您的系统的某部分的一组对象间调用极其频繁的坏味道的话,可能您 需要考虑使用该模式来进行一些解耦,否则,这些对象中的任何一个的修改,都将可能导致其他对象许多地方的修改,可维护性原创 2016-10-27 20:23:52 · 300 阅读 · 0 评论 -
设计模式(21)-解释器模式
思想:当 有一个语言需要解释执行, 并且你可将该语言中的句子表示为一个抽象语法树时,定义一个解释器,这 个解释器使用该表示来解释语言中的句子。 场景:其 实,从物理结构上,该模式的代码架构看起来可能和Composite模式一模一样,致使其针对的逻 辑语义不同。Composite模式描述一种一般的整体和部分使用接口上的一致性,而Interpreter模 式则侧重于语言解释器的实现构架。 实现:如原创 2016-10-27 20:41:50 · 259 阅读 · 0 评论 -
设计模式(22)-访问者模式
Visitor 思想:表 示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 场景:其 实你不用去理解上面这句话。该模式其实又是一个在代码的物理结构上和Bridge模式很相似的模 式。但是,其语义,其目的,在逻辑上又是不同的。如果说Bridge,以及上述我称为可视为Bridge扩 展的模式中,作为参数的Bridge类,是作为调用类的被访问对象原创 2016-10-27 21:07:11 · 259 阅读 · 0 评论 -
cmake安装
编译安装cmake 下载cmake源码包cmake-2.8.4.tar.gz,mv到/usr/local/src目录下 [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# tar xzvf cmake-2.8.7.tar.gz [root@localhost src]# cd cmake-2.8.7 [root@local原创 2016-10-18 14:26:40 · 11215 阅读 · 0 评论 -
ArrayBlockingQueue和LinkedBlockingQueue
ArrayBlockQueue和LinkedQueue属于Java.util.current包下的两个封装的线程安全的队列,主要讨论线程安全和阻塞操作的实现 他们之间的关系如下: ArrayBlockQueue: 线程安全和阻塞操作在入队列和取出队列元素都会涉及,先从线程安全进入: 注意:ArrayBlockQueue只有一把锁: /** Main lock guarding al原创 2016-10-29 14:58:59 · 423 阅读 · 0 评论 -
编译构建AliSql
下载: https://github.com/alibaba/AliSQL 放到本地解压: unzip alisql.zip cd <存放编译后文件的目录> cmake <下载的源码目录> 问题1: CMake Error at cmake/readline.cmake:85 (MES原创 2016-10-19 21:17:40 · 983 阅读 · 0 评论 -
CopyOnWriteArrayList和CopyOnWriteArraySet
CopyOnWriteArrayList和CopyOnWriteArraySet应用场合一般 是在读多写少的情况,比如黑名单,他们之间的区别就是list和set的区别,但是在实现上CopyOnWriteArraySet使用CopyOnWriteArrayList来实现的,就像set使用了hashmap,treeset使用treemap,下面先看CopyOnWriteArrayList的添加操作.原创 2016-10-31 20:54:09 · 648 阅读 · 0 评论 -
阿里巴巴 JAVA开发手册 内含大量规范,应用范例.涉及数据库,高并发,集合,索引等等大量干货
原文:http://blog.csdn.net/zp522123428/article/details/53762878阿里巴巴 Java开发手册 Java开发手册 版本号 制定团队 更新日期 备 注 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向Java业界公开 一、编程规约 (一)命名规约 1. 【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能转载 2016-12-20 16:10:55 · 644 阅读 · 0 评论 -
Initialization Demand Holder
public class Singleton {private Singleton(){ System.out.println(Singleton.class);}private static class HolderClass{ private final static Singleton s = new Singleton();}public static Singleton原创 2017-01-09 15:23:57 · 369 阅读 · 0 评论 -
启动hadoop 2.6遇到的datanode启动不了
原文:http://blog.csdn.net/zhangt85/article/details/42078347查看日志如下:2014-12-22 12:08:27,264 INFO org.mortbay.log: Started HttpServer2$SelectChannelConnectorWithSafeStartup@0.0.0.0:50075 2014-12-22 12:08:2转载 2017-01-10 10:48:32 · 286 阅读 · 0 评论 -
线程池的实现原理
当向线程池提交一个任务之后,线程池是如何处理这个任务的呢?本节来看一下线程池 的主要处理流程,处理流程图所示。 从图中可以看出,当提交一个新任务到线程池时,线程池的处理流程如下。 1)线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作 线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。 2)线程池判断工作队列是否已经满。如果工作队列没有满,则将新提原创 2017-03-31 15:56:13 · 6028 阅读 · 1 评论 -
函数式编程(jdk8-常用函数式编程基础类)
在jdk8中什么是函数式接口: 1、被@FunctionalInterface注解修饰的。 2、接口里边只有一个非default的方法。 满足以上2个条件的即为函数式接口,ps:即使一个接口没有被@FunctionalInterface修饰,但是满足2,那么这样的接口也会是函数式接口。 Supplier 概要:不接受参数,返回一个值。 jdk源码: */@FunctionalInter原创 2017-03-26 14:05:47 · 1075 阅读 · 0 评论 -
jdk8新加入的default方法
default方法的加入是为了兼容jdk8以前的版本的需要。 (1)当前有两个接口MyInterface和MyInterface1,它们都有相同名字的default方法,之后实现类Myclass同时implements了MyInterface和MyInterface1,同时Myclass实现了default方法,此时Myclass调用default调的是谁的? (2)一个接口I有一个defaul原创 2017-03-26 14:35:19 · 4031 阅读 · 0 评论 -
jdk8-方法引用
方法引用的形式 方法引用的标准形式是:类名::方法名。(注意:只需要写方法名,不需要写括号)有以下四种形式的方法引用:类型 示例 引用静态方法 ContainingClass::staticMethodName 引用某个对象的实例方法 containingObject::instanceMethodName 引用某个类型的任意对象的实例方法 ContainingType::meth原创 2017-03-26 15:09:55 · 2293 阅读 · 0 评论 -
jdk8-Collector收集器之并行流陷阱与原理
收集器Collector是jdk8中最为重要的接口之一,一个Collector可分为5个部分(第五个是我自己加上的): 1、supplier 2、accumulator 3、combiner 4、finisher 5、characteristicsCollector有三个泛型:public interface Collector<T, A, R> { /** * A fu原创 2017-03-26 17:42:21 · 3808 阅读 · 2 评论 -
如何浅显易懂地解说 Paxos 的算法?
作者:朱一聪 链接:https://www.zhihu.com/question/19787937/answer/82340987 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。之前的回答本来就觉得一些细节处并不严谨,现在回看=/=。我觉得严谨是一个讨论技术的必要条件,觉得现在也有能力写的严谨,于是想把回答改的尽量严谨,最后发现不如重写,顺便补充了我想补充的内转载 2017-03-27 11:56:51 · 3428 阅读 · 0 评论