- 博客(14)
- 收藏
- 关注
原创 树和二叉树的转换
树和二叉树是两种不同的数据结构,树实现起来比较麻烦,但是树可以转换为二叉树进行处理,处理完以后再从二叉树还原为树。 下面说说转换的方法: 1. 树转换为二叉树 (1) 树中所有相同双亲结点的兄弟结点之间加一条连线。 (2) 对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线。 (3) 整理所有保留的和添加的连线,使每个
2017-02-19 16:53:59 1344
转载 深入理解Java ClassLoader
转载地址:http://blog.csdn.net/xyang81/article/details/7292380一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都
2017-02-16 09:53:10 795
原创 这些绕来绕去的题目……
有些题目,基础,但是,绕来绕去的头疼!罗列如下做一下记载,一是巩固自己的基础知识,二是提醒自己犯过的错误不要再犯!1、Test.main() 函数执行后的输出是()public class Test { public static void main(String [] args){ System.out.println(new B().getValue()
2017-02-15 22:06:33 644
转载 Shell中各种括号
最近看脚本,被各种括号弄晕了,特此查了一下,在这里记录。一、小括号,圆括号()1、单小括号 () ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。 ②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,
2017-02-15 14:39:15 401
原创 JAVA类加载机制
类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Jav
2017-02-15 11:34:04 310
原创 JAVA BIO和NIO及简单实现
最近简单研究了一下JAVA的NIO,话说出来这么久了,感觉这一块一直是空白,用的也比较少。但是感觉socket io这部分在以后工作中的高并发项目可能会用到,所以最近抽空研究了解了一下。1、阻塞IO阻塞IO比较简单,就是用普通的socket去写,因为没有什么太复杂的处理。建立一个socket,然后,获取它的inputstream和outputstream,然后进行读写操
2017-02-14 16:01:21 594
原创 线程通信中的CountDownLatch和CycliBarrier
一、CountDownLatch一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需要重置计数,
2017-02-10 15:32:04 1614
原创 并发容器——CopyOnWrite
什么是CopyOnWrite容器 CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnW
2017-02-09 16:22:25 422
原创 并发容器——ConcurrentHashMap
HashMap是非线程安全的,Hashtable是线程安全的,但是由于Hashtable是采用synchronized进行同步,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。 ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。Concurr
2017-02-09 16:14:00 318
原创 Kafka中的coordinator
在0.9以前的client api中,consumer是要依赖Zookeeper的。因为同一个consumer group中的所有consumer需要进行协同,进行下面所讲的rebalance。但是因为zookeeper的“herd effect”与“split brain”,导致一个group里面,不同的consumer拥有了同一个partition,进而会引起消息的消费错乱。为此,在0
2017-02-09 11:00:28 6747
原创 Kafka 几个关键概念和采用策略
关键概念介绍topic以下是kafka的逻辑结构图: 每个topic也就是自定义的一个队列,producer往队列中放消息,consumer从队列中取消息,topic之间相互独立。broker与上图对应的是kafka的物理结构图:每个broker通常就是一台物理机器,在上面运行kafka server的一个实例,所有这些broker实例组成kafka的服务器
2017-02-09 10:31:08 6121
转载 Kafka log结构解读
引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partition的关系。partition是以文件的形式存储在文件
2017-02-08 21:05:48 2276
翻译 Kafka:A Distributed Streaming Platform
最近开始学习Kafka,开头免不了要看一堆官方介绍和先驱者写的介绍博客,为了完整性,我也翻译+摘抄一些,保存做学习用。---------------分割线---------------------------------------Kafka作为一个分布式的流平台,这到底意味着什么?我们认为,一个流处理平台具有三个关键能力:发布和订阅消息(流),在这方面,它类似
2017-02-08 20:54:33 1107
原创 同步/异步 & 阻塞/非阻塞
一、同步/异步同步/异步, 它们是消息的通知机制。同步:在发出一个功能调用时,在没有得到结果之前,该调用就不返回。异步:当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用者,或通过回调函数处理这个调用。所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换
2017-02-08 20:50:03 506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人