- 博客(72)
- 资源 (12)
- 收藏
- 关注
转载 java-源码解读-jdk1.6-LinkedHashMap与HashMap
摘要: HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以LinkedHashMap自然会拥有HashMap的所有特性。比如,LinkedHashMap的元素存取过程基本与HashMap基本...
2018-04-03 15:16:58 334
原创 Linux-Linux零拷贝原理
这是译文 源文请参考源文。到目前为止,几乎所有人都听说过Linux下所谓的零拷贝功能,但我经常遇到对这个主题没有完全了解的人。 正因为如此,我决定写几篇文章,深入探讨这个问题,希望能解开这个有用的特性。在这篇文章中,我们从一个用户的角度看零拷贝,血淋淋的内核级细节被有意省略。什么是零拷贝?为了更好地理解问题的解决方案,我们首先需要了解问题本身。让我们来看看网络服务器处理的简单过程中所涉及到的内容,...
2018-03-26 19:59:03 709
原创 算法-大数据量的定时超时
需求:一个集合Map<key,last_update_time>,多线程实时的往集合里添加数据,要求集合里的数据在30秒后过期并删除。实现:方法一:轮询扫描法启动一个线程,当map不为空时,轮询扫描这个map,看每个元素的last_update_time是否超过30秒,如果超过,作超时处理。方法二:多timer触发对集合中的每个元素启动一个timer,30秒后触发,对该元素作超时处理。...
2018-03-01 09:20:43 750
转载 java-Java对象的强、软、弱和虚引用原理
1.Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。 但有时候情况并不这...
2018-02-01 14:32:07 418
转载 算法-Gossip
Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易。为了寻求Gossip的本质,下面的内容主要参考Gossip的原始论文:<<Efficient Reconciliation and Flow Control for Anti-Entropy Protocols>>。 1. Gossip背景Gossip算法如其名,灵感来自
2018-01-16 13:47:15 356
转载 Linux-io模型
1. Linux下的五种I/O模型1)阻塞I/O(blocking I/O)2)非阻塞I/O (nonblocking I/O)3) I/O复用(select 和poll) (I/O multiplexing)4)信号驱动I/O (signal driven I/O (SIGIO))5)异步I/O (asynchronous I/O (the POSIX aio_fun
2018-01-03 16:10:29 329
转载 缓存行
我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我在上一篇文章中提到RingBuffer后,我们收到一些关于RingBuffer中填充高速缓存行的评论和疑问。由于这个适合用漂亮的图片来说明,所以我想这是下一个我
2017-11-28 10:57:38 2393 1
原创 storm-并行度
什么让 topology(拓扑)可以运行worker 进程, executors(执行器)和 tasks(任务)。一个 worker 进程 执行一个 topology(拓扑)的子集. 一个 worker 进程属于一个指定 topology(拓扑)。并且针对该 topology 的一个或多个组件(spouts 或 bolts)来说会运行一个或更多的 executors(执行器)。一个
2017-11-26 10:19:30 330
原创 storm-窗口
1. 简介Storm可同时处理窗口内的所有tuple。窗口可以从时间或数量上来划分,由如下两个因素决定:窗口的长度,可以是时间或Tuple数量;滑动间隔(sliding Interval),同样也可以是时间或Tuple数量,后面Sliding Window中介绍;2. Window2.1 Tumbling Window按照固定的时间间隔或者Tuple数量划分窗口。下面例子就
2017-11-25 18:32:57 594
原创 storm-组件
Boltbolt的主要方法:declareOutputFileds(OutputFieldsDeclarer declarer) ;prepare(Map conf,TopologyContext context,OutputCollector collector); 仅在Bolt开始处理Tuple之前调用;execute(Tuple input);处理一个bolt的输入cle
2017-11-24 09:36:00 342
原创 java-源码解读-线程池实现原理-1
为什么要使用线程池合理利用线程池能够带来三个好处。(复制过来的,懒)第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。线程池的使用先定义线...
2017-11-22 20:09:39 371
原创 storm-ACK的实现原理
异或运行基本原理异或xor也叫半加运行,其运行法则相当于不带进位的二进制加法:0 xor 0=01 xor 1 = 00 xor 1 =11 xor 0= 1异或运行特性1.交换律 a xor b=b xor a2.结合律a xor (b xor c)= (a xor b) xor c3.自反性a xor a=0a xor b xor b=a
2017-11-22 16:27:13 569
转载 HBase -ROOT-和.META.表结构(region定位原理)
在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer。什么叫相应的RegionServer?就是管理你要操作的那个Region的RegionServer。Client本身并不知道哪个RegionServer管理哪个Region,那么它是如何找到相应的RegionServer的?本文就是在研究源码的基础上揭
2017-11-01 20:15:42 559
转载 kerberos认证过程
一、 基本原理Authentication解决的是“如何证明某个人确确实实就是他或她所声称的那个人”的问题。对于如何进行Authentication,我们采用这样的方法:如果一个秘密(secret)仅仅存在于A和B,那么有个人对B声称自己就是A,B通过让A提供这个秘密来证明这个人就是他或她所声称的A。这个过程实际上涉及到3个重要的关于Authentication的方面:Se
2017-11-01 20:14:07 810
原创 java-源码解读-线程池提交之execute和submit有何不同
先上测试用例package com.phl.threadpool;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/** * @Title:SubmitExecuteMain * @Descripti...
2017-09-28 14:42:21 3655
原创 java-源码解读-java类加载机制
作为一个java程序员,估计没有人不知道java的类加载机制是委托父加载器加载,也知道java有这么几大类加载器,分别是BootStrapClassLoader,ExtClassLoader,AppClassLoader以及自定义类加载器。但对于他们的之间的关系是怎样建立起来,估计很少有人说得清楚,下面就通过最权威的源码(jdk1.8),回答以上问题。ClassLoaderjava用Cla
2017-09-21 10:53:34 609
原创 java-源码解读-线程池实现原理-0
线程池初识我们一般这样使用线程池:public class ExecutorServiceDemo { public static void main(String[] args) { // 创建一个线程池对象,控制要创建几个线程对象。 ExecutorService pool = Executors.newFixedThreadPool(2); ...
2017-08-16 19:38:55 651
原创 maven-常用plugin备忘
tomcat org.apache.tomcat.maven tomcat7-maven-plugin 2.1 /device-manager-provider utf-8 8001 tomcat JAVA_OPTS -Xms256m
2017-08-14 20:06:05 585
原创 java-源码解读-FutureTask
使用场景java多线程编程中,我们经常使用线程池提交任务,并且通过Future来获取任务执行的结果,以此达到异步或者并行执行的效果。通常我们是这样使用线程池:public class ExecutorServiceDemo { public static void main(String[] args) { // 创建一个线程池对象,控制要创建几个线程对象。 ...
2017-07-18 10:39:53 2510 2
转载 spring-Spring 和SpringMVC 的父子容器关系
Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但是在实际项目中,同时配置Spring和SpringMVC时会出现一些奇怪的异常,比如Bean被多次加载,多次实例化,或者依赖注入时,Bean不能被自动注入,但是明明你已经将该Bean注册了的。找原因还是要看问题的根源,我们从容
2017-04-18 15:29:50 462
转载 IntelliJ IDEA 16 本地LicenseServer激活(破解)
IntelliJ IDEA 16 本地LicenseServer激活(破解)IntelliJ IDEA 是Java开发利器,用社区版不爽,干催就用旗舰版,这个是收费的,需要licence。网上找到了一个帖子 http://blog.csdn.net/rickyit/article/details/50600723,可以通过服务器激活。 最近IntelliJ IDEA 16激活不
2017-04-09 18:14:36 410
转载 Restful形式接口文档生成之Swagger与SpringMVC整合
笔者目前正在搭建一套API服务框架,考虑到客户端能够更方便的调用API服务(这里说的更方便是指避免不厌其烦地解说各接口需要的参数和返回结果),于是决心为每个接口生成详细的说明文档。网上搜索了一下,发现了Swagger这个东西,感觉不错,界面也比javadoc生成的页面要美观,而且网上关于Swagger和springmvc整合的文章不少(遗憾的是大多雷同且不完整)。本文详细介绍Swagger和Spr
2017-03-13 10:24:52 575
转载 Swagger与SpringBoot的整合
Swagger可视化API,不仅能查看API,还能测试1.引入相关JARdependency> groupId>com.mangofactorygroupId> artifactId>swagger-springmvcartifactId> version>1.0.2version>dependency>dependency> groupId>o
2017-03-13 10:02:20 488
转载 zookeeper-数据与存储
1. Zookeeper技术内幕 1.1. 数据与存储1.1.1. 内存数据 数据结构: ZooKeeper的数据模型是一棵树,而从使用角度看, Zookeeper就像一个内存数据库一样。在这个内存数据库中,存储了整棵树的内容,包括所有的节点路径、节点数据及其ACL信息等,Zookeeper会定时将这个数据存储到磁盘上。1.1
2017-02-15 09:32:38 10198
转载 zookeeper-服务器角色介绍
1. Zookeeper技术内幕 1.1. 各服务器角色介绍1.1.1. Leader Leader服务器是整个zookeeper集群工作机制中的核心,其主要工作有以下两个。 l 事物请求的唯一调度和处理者,保证集群事务处理的顺序性。 l 集群内部各个服务器的调度者。 请求处理链
2017-02-15 09:31:59 2289 2
转载 zookeeper-系统模型
1. Zookeeper技术内幕1.1. 系统模型1.1.1. 数据模型 树zookeeper名字空间由节点znode构成,其组织方式类似文件系统,其中各个节点相当于目录和文件,通过路径作为唯一标识。事务ID 在传统数据库中事务具有所谓的ACID特性:即原子性、一致性、隔离性、和持久性。 在Zookeeper中,事务是指
2017-02-15 09:30:38 576
转载 zookeeper-通信协议
1. Zookeeper技术内幕1.1. 通信协议 基于TCP/IP协议,zookeeper实现了自己的通信协议来完成客户端与服务端、服务端与服务端之间的网络通信。Zookeeper通信协议整体上的设计非常简单,对于请求,主要包含请求头和请求体,而对于响应,则主要包含响应头和响应体。1.1.1. 协议解析:请求部分 GetDataRe
2017-02-15 09:29:45 3134
转载 zookeeper-客户端
1. Zookeeper技术内幕 1.1. 客户端1.1.1. 服务器地址列表 Zookeeper构造方法中传入的地址,使用逗号分隔的多个IP地址和端口的字符串, 192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181 Zookeeper客户端在连接服务器的过程中
2017-02-15 09:28:58 526
转载 zookeeper-会话
1. Zookeeper技术内幕 1.1. 会话1.1.1. sessionID生成 4个基本属性: sessionlD:会话ID,用来唯一标识一个会话,每次客户端创建新会话的时候,ZooKeeper都会为其分配一个全局唯一的sessionID。 TimeOut:会话超时间。客户端在构造ZooKeeper实例的时候,会配置一个
2017-02-15 09:28:18 690
转载 zookeeper-服务器启动
1. Zookeeper技术内幕 1.1. 服务器启动 集群版zookeeper服务器启动流程 1.1.1. 数据加载1.1.1.1. 加载快照文件 1.1.1.2. 加载事物日志文件 1.1.2. 启动ServerCnxnFactory 启动过程中,创建一个固定大小的线程池workerPool,
2017-02-15 09:27:24 486
原创 java-synchronized与volatile
重排序的影响重排序不会给单线程带来内存可见性的问题。多线程中,线程交互执行时,重排序可能会造成内存可见性的问题。synchronized 即能保证可见性,又能保证原子性。volatile只能保证可见性,不能保证原子性。导致共享变量在线程间不可见的原因1.线程的交叉执行2.重排序结合线程交叉执行3.共享变量更新后的值没有及时更新到主内存中synchron...
2016-10-12 10:28:18 337
转载 java-调试hotspot
转自 http://blog.csdn.net/pange1991/article/details/51580969一、下载并安装Netbeans 7.0.1 (c/c++) http://share.weiyun.com/6292e450ed1c88423812e268f355a108或者官网下载https://netbeans.org/community/rel
2016-08-31 09:43:39 580
原创 java-编译openJdk
Using java runtime at: /opt/jdk1.7.0_04/jreError occurred during initialization of VMUnable to load native library: /opt/jdk1.7.0_04/jre/lib/i386/libjava.so: symbol JVM_SetNativeThreadName, versio
2016-08-30 15:12:46 1921 1
原创 java-类初始化
类初始化时机遇到new ,getstatic,putstatic,或invokestatic 这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。这4条指令最常见的java代码场景是:使用new关键字实例化对象的时候。读取或设置一个类的静态字段(被final修饰,已在编译期把结果放入常量池的静态字段除外)使用java.lang.reflect包的方法对类进行反
2016-08-24 13:29:59 386
原创 javascript-this
this指的是谁?this 指的是调用链上的最近的一个对象。function fa(){ alert(this.constructor);}调用方式:fa(); fa定义了一 个函数(对象),但没有实例化这个对象,此时fa的域为window,也是第一调用fa的对象。调用方式:var b=new fa();此时new了一个对象,所
2016-08-18 15:39:54 427
原创 java-jar的格式
ManifestDefault ManifestWhen you create a JAR file, the default manifest file simply contains the following:Manifest-Version: 1.0Created-By: 1.7.0_06 (Oracle Corporation)hese lines sh
2016-07-28 19:41:28 1653
原创 java-ContextClassLoader的意义
Thread的实现化过程:public Thread() { init(null, null, "Thread-" + nextThreadNum(), 0);}private void init(ThreadGroup g, Runnable target, String name, long stackSize) { ini
2016-07-06 13:22:15 593
dubbo分步式服务
2015-08-05
android中文帮助文档
2012-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人