
java
文章平均质量分 83
Stray_Cat_Founder
这个作者很懒,什么都没留下…
展开
-
centos7编译openjdk1.7过程及报错解决
1.准备工作 a. 下载openjdk 7 源代码 http://www.java.net/download/openjdk/jdk7u6/promoted/b24/openjdk-7u6-fcs-src-b24-28_aug_2012.zip (粘贴链接,迅雷可下)b. 安装依赖项 我比较懒,没有去找相关内容,参考了https://www.cnblogs.com/zxfdream/p/5411原创 2017-11-14 11:28:24 · 1054 阅读 · 0 评论 -
jmx学习示例
1.jmx是什么 JMX是Java Management Extensioins的缩写,功能是对java程序的管理。不太好理解,下面给出一个例子来说明。2.实例package swim;public interface UserMBean { public void changeName(String name); public void printName();}package原创 2017-11-13 11:15:00 · 309 阅读 · 0 评论 -
kafka问题分析
kafka一个topic会有多个partition,那么生产者怎么确定发送到哪个partition,消费者又怎么确认收取的是哪一个partition的数据呢?要想探究这个问题,我们首先需要确定topic是什么? topic是用户设定的基于某一类型的消息的抽象。那么用户确定下来消息的topic之后,我们需要完成的是对该topic下的消息进行消费。所以就是说一个topic代表的是一个消息的集合,那么pa原创 2017-07-20 12:03:05 · 1842 阅读 · 0 评论 -
kafka学习内容
kafka可以做什么It lets you publish and subscribe to streams of records. In this respect it is similar to a message queue or enterprise messaging system.It lets you store streams of records in a fault-toler原创 2017-07-15 22:24:04 · 391 阅读 · 0 评论 -
cobar源码浅析
网路连接部分网络连接部分是cobar非常重要的部分,它承接着前向连接(面向用户)和后向连接(面向mysql)。通过分析网络连接代码,可以大致看出cobar的数据流向。我们先看看整个连接架构(省略心跳相关内容): 我们再来看看系统初始化代码 // startup processors LOGGER.info("Startup processors ...");原创 2017-07-07 22:26:50 · 709 阅读 · 0 评论 -
一致性hash算法
散列(hash)在我看来就是一个数组,而与数组不同的点在于数组是按顺序写入的,而hash是按照一定的hash算法确定元素在数组中的位置的。hash最难的问题在于会有冲突出现,如果两个object根据相应的hash算法得出的值一样便产生了hash冲突。在所有解决hash冲突的方法中,我最欣赏的是链式解决法,即将hash到同一位置的元素用链表连接。当然还有其它几种处理hash冲突的算法,比如建立公共溢出原创 2017-05-03 11:44:04 · 508 阅读 · 0 评论 -
java线程池-3
线程池主要目的是完成线程的复用以达到降低因为创建销毁线程的开销。来看一段代码public class WeRun { private final static int number = 10; static ExecutorService service = Executors.newFixedThreadPool(number); public static void main(原创 2017-05-01 13:41:41 · 334 阅读 · 0 评论 -
java线程池-2
上文提到了线程的创建过程,这里我们谈一谈线程池创建过程中的关键部分-队列。队列是一种先进先出的数据结构,经常和栈一起讨论,不过今天主讲队列。在该环境下,我们首先看看java的实现结构: 其中BlockQueue继承于Queue,在Queue中定义了add,offer,remover,poll,peek,element等方法。 这些是队列的一些基本操作,包括读取数据、加入数据、读取并移除数据。不同原创 2017-04-30 23:38:48 · 310 阅读 · 0 评论 -
java线程池-1
线程池的出现是为了解决在多线程运行环境下程序频繁创建线程而需要较大的系统开销的问题。解决问题的核心就是线程的复用。现在我们看看java在创建线程池的过程中使用了哪些技术。1.创建方法 ExecutorService service1 = Executors.newCachedThreadPool(); ExecutorService service2 = Executo原创 2017-04-29 22:27:33 · 253 阅读 · 0 评论 -
static相关用法
先看一段程序public class StaticClass { //静态代码块 static{ a = 2; //这里可以赋值,但是不能使用,使用会报错。由static变量加载过程决定的。 System.out.println("StaticClass"); } //静态变量 public static int a = 1;原创 2017-04-22 21:14:34 · 296 阅读 · 0 评论 -
ThreadLocal与局部变量
ThreadLocal和局部变量有什么区别,我们先看一段代码,如下:public class ThreadLocalLearn { static ThreadLocal<IntHolder> tl = new ThreadLocal<IntHolder>(){ protected IntHolder initialValue() { return new I原创 2017-04-22 12:37:18 · 5083 阅读 · 3 评论 -
jdk1.8 ConcurrentHashMap实现相关内容
map 对于一个hashmap来说,它具备的功能有对数据的插入、删除、查询,元素个数的获取,遍历等。而现在的计算机发展使得并发编程越来越重要,因此需要对上面的各类操作保证并发性。重要的无锁使用@SuppressWarnings("unchecked")static final <K,V> Node<K,V> tabAt(Node<K,V>[] tab, int i) { return原创 2017-04-15 13:37:35 · 359 阅读 · 0 评论 -
我认识的jvm
JMM JMM是java memory model的简称。一个java应用程序就是一个java进程,进程是操作系统资源分配的基本单位。也就是说对于一个应用程序,操作系统会分配一块内存区域供该进程使用。当然当内存区域容量不够的时候,操作系统会自动给该进程增加内存空间。一个进程可以产生多个线程,对于每个线程,操作系统只负责调度,当CPU不够的时候,选择某个线程获得时间片开始运行。原创 2017-03-30 22:06:52 · 272 阅读 · 0 评论