- 博客(25)
- 资源 (4)
- 收藏
- 关注
原创 【转载】一致性hash算法与server列表维护(备忘)
普通的hash算法有个很大的问题:当hash的"模数"发生变化时,整个hash数据结构就需要重新hash,重新hash之后的数据分布一定会和hash之前的不同;在很多场景下,"模数"的变化时必然的,但是这种"数据分布"的巨大变化却会带来一些麻烦.所以,就有了"一致性hash",当然学术界对"一致性hash"的阐述,还远远不止这些. 在编程应用方面,最直观的例子就是"分布式缓存",一个
2016-01-22 09:45:06 368
原创 【转载】相对平均分布
本文转载自http://shift-alt-ctrl.iteye.com/blog/1961598 有一个项目用来负责调度集群中的"cron任务",比如一个application中可以配置N个定时任务,这些任务信息最终注册到zookeeper上,并开发了一系列代码用于维护这些任务的"活性";当applicaton中一个server故障,那么这个server上接管的任务,需要迁移到其他ser
2016-01-22 09:45:00 490
原创 【转载】java 排序算法
本文转载自http://shift-alt-ctrl.iteye.com/blog/1888827 一.冒泡排序特点:实现简单,无额外空间消耗,速度较慢,适合数据较少的场景,复杂度为O(N^2)思路:每一轮比较都从头开始,然后两两比较,如果左值比右值大,则交换位置,每一轮结束后,当前轮"最后一个元素"必将是最大的. 场景:算法稳定,数据量较小的场景。时间复杂度O(n^2)
2016-01-22 09:44:55 220
原创 【转载】JVM垃圾回收
本文转载自http://shift-alt-ctrl.iteye.com/blog/1842714 一.对象查找 在对对象回收之前,需要首先查找出亟待回收的对象,在JVM中,采取"根检索"算法来查找"死亡"的对象;这个算法的基本思想是通过一系列名为"GC Roots"的对象作为起始点,从这些节点开始向下搜索,搜索所经过的路径为对象引用链;如果一个对象到GC Roots上没有任何引
2016-01-22 09:44:37 311
原创 SemaphoreTest
package com.ixhong.base.thread;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;public class SemaphoreTest { publ
2016-01-22 09:44:26 311
原创 ExecutorService
一.ExecutorService:它也是一个接口,它扩展自Executor接口,Executor接口更像一个抽象的命令模式,仅有一个方法:execute(runnable);Executor接口简单,但是很重要,重要在这种设计的模式上。。 ExecutorService在Executor的基础上增加了“service”特性的方法:shutdown()、shutdownNow()
2016-01-22 09:44:20 355
原创 CompletionService
一.CompletionService接口提供了可以操作异步任务的功能,其唯一实现的API为ExecutorCompletionService。此API只是可以获取异步任务执行的结果,它不是ExecutorService。其有5个核心方法:Future poll():同步操作,获取并移除第一已经完成的任务,否则返回null。Future poll(timeout):同步操作,获取并移
2016-01-22 09:44:14 443
原创 JDBC中Connection解惑
参考http://shift-alt-ctrl.iteye.com/blog/1967020 关于JDBC中关于Connection的两个疑问: 1.Connection实例是线程安全的吗? 即一个connection实例,在多线程环境中是否可以确保数据操作是安全的?Java代码 private static Connection connection; ...
2016-01-22 09:44:09 3183
原创 【转载】BitSet
本文转载自http://shift-alt-ctrl.iteye.com/blog/2194519 JAVA中BitSet就是“位图”数据结构,根据“位图”的语义,数据的存在性可以使用bit位上的1或0来表示;一个bit具有2个值:0和1,正好可以用来表示false和true。对于判断“数据是否存在”的场景,我们通常使用HashMap来存储,不过hashmap这个数据结构KEY和Value
2016-01-22 09:44:03 349
原创 【转载】JAVA内存模型和线程安全
本文转载自http://shift-alt-ctrl.iteye.com/blog/1845309 一.JAVA内存模型(JMM,JAVA Memory Model): 运行时涉及到两种内存,主内存和工作区内存,其中工作区内存通常为CPU的高速缓存区用来加快内存数据读取操作的(各线程独立).所有的变量内容都存在主内存中,当需要对内存数据进行操作时,数据将会从主存中load到工作区
2016-01-22 09:43:40 276
原创 【转载】并发数据结构
本文转载自http://shift-alt-ctrl.iteye.com/blog/1841084 请首先参考:http://shift-alt-ctrl.iteye.com/blog/1839142一.BlockingDeque阻塞双端队列(线程安全):注意ArrayDeque和LinkedList仅仅扩展了Deque,是非阻塞类型的双端队列。BlockingQueue单向队
2016-01-22 09:43:28 626
原创 BlockingQueue
package com.ixhong.base.thread;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;public class ArrayBlockingQueueTest { public static void main(S
2016-01-22 09:43:22 249
原创 【转载】Reference
本文转载自http://shift-alt-ctrl.iteye.com/blog/1839163 前言:java提供了几种引用类型,以方便编程者跟踪对象生命周期。 Reference抽象类提供了除强引用之外的其他引用类型基本功能。ReferenceQueue是一个队列(内部实现为一个Reference的列表),用于注册那些GC检测到不可达(即将会被回收)对象。 每个r
2016-01-22 09:43:11 387
原创 【转载】ArrayList 中数据删除
本文转载自http://shift-alt-ctrl.iteye.com/blog/1839147 在循环arrayLlist时,经常会遇到remove操作,那么arrayList的remove的底层是怎么做的?AbstractList中,有一个属性modCount,这个属性是跟踪list中数据被修改的次数,任何对list的add/remove操作,都将导致modCount++.在
2016-01-22 09:43:05 526
原创 Lock&Condition
package com.ixhong.base.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ThreeConditio
2016-01-22 09:42:59 328
原创 生产者消费者实例
package com.ixhong.base.thread.base;public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); new Thread(new Producer(ss, "
2016-01-22 09:42:54 367
原创 【转载】JVM类加载机制小结
本文转载自http://shift-alt-ctrl.iteye.com/blog/1845137 一.类加载 虚拟机把class文件加载至内存之后,对字节码数据进行校验/解析/初始化等操作,最终形成可被VM直接使用的java类型,这就是虚拟机类加载机制.类的加载完全可以在运行时进行,这给VM提供了动态加载类提供了可行性. 类生命周期过程大概分为:加载-->校验-
2016-01-22 09:42:48 311
原创 【转载】JVM内存分配与调优参数列表
本文转载自http://shift-alt-ctrl.iteye.com/blog/1842631 一.运行时数据区: 程序计数器:它是一块较小的内存空间,主要作用是当前线程所执行的字节码的行号指示器.由于java虚拟机的多线程是通过轮流切换并分配处理器执行时间的方式来实现的(协作式/抢占式?!),即任何时刻,任一CPU只会正在处理一个线程的指令;为了确保线程切换后能够正确恢复
2016-01-22 09:42:42 350
转载 JMS 概述
本文转载自http://shift-alt-ctrl.iteye.com/blog/1902820一.JMS使用场景: JMS是为"消息"而生,从使用的角度来说,任何可以与业务解耦的数据均可以作为"消息"存储;任何结构化(格式严格,适合解析)但未索引化(不能被随意检索)的数据均可以交付给JMS存储,但尽管JMS不是为存储而生. 1) 异构系统(应用)中,如果数据的交互...
2016-01-22 09:42:36 569
原创 【转载】try-catch
本文转载自http://shift-alt-ctrl.iteye.com/blog/2156937 有时候一些小的细节,确实比较纠结,对于try-catch-finally代码块中代码依次执行,当try中有exception抛出时,将会有catch拦截并执行,如果没有catch区块,那么exception将被添加到“return栈顶”并执行finally。 1) 如果catch中
2016-01-22 09:42:30 355
原创 【转载】Jenkins + Git + Maven + tomcat集成环境搭建
本文转载自http://shift-alt-ctrl.iteye.com/blog/2208786 折腾了好几天,终于吧Jenkins + Git + Maven + tomcat集成环境搭建起来了,最终主要实现“自动构建、部署”web应用。 1、安装环境 操作系统:Centos 6.5 JDK:1.7.x Maven:3.1.x Git: 1.7.1,自建GitLab平台...
2016-01-22 09:42:19 465
原创 【转载】NIO-Selector 详解
本文转载自http://shift-alt-ctrl.iteye.com/blog/1840411 Selector本身为抽象类,AbstractSelector是Selector类的抽象实现类,具体的实现类更加底层(SelectorImpl,位于sun.nio.ch);Selector即为"选择器",支撑了NIO的多路复用.Selector不能直接创建,需要通过Selector.open
2016-01-22 09:42:13 420
原创 【转载】NIO-SelectableChannel
本文转载自http://shift-alt-ctrl.iteye.com/blog/1841324 SelectableChannel("可被选择"通道):抽象类,此类实现了InterruptableChannel接口."可选择"通道,就是noblocking通道,它的实现需要Selector的支持.因此这些Channel取名为"SelectableChannel"是可以理解的.为 了
2016-01-22 09:42:07 1480
原创 【转载】example for NIO
特别声明:本文转载自 QING_____ NIO-Socket通讯,为我们解决了server端多线程设计方面的性能/吞吐量等多方面的问题,它提供了以非阻塞模式 + 线程池的方式来解决Server端高并发问题..NIO并不能显著的提升Client-server的通讯性能(其中包括全局性耗时总和,Server物理机资源开销和实际计算量),但是它可以确保Server端在支撑相应的并发量情况下,对
2016-01-22 09:41:44 393
原创 mac mysql 修改密码
$ sudo /usr/local/mysql/bin/mysqld_safe –user=root & //启动MySQL(也可以通过偏好设置面板来启动)$ sudo /usr/local/mysql/bin/mysqladmin -uroot password yourpassword //设置MySQL密码(注意,这是第一次MySQL密码为空的时候的设置命令,如果是修改密码,还需在-...
2016-01-22 09:41:26 284
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ)
2018-09-02
javahongxi的技术博客
2017-11-05
研究各种Java技术(Springboot+Redis+Dubbo+Rocketmq) 京东技术 www.toutiao.im
2017-09-12
京东核心技术详解 www.toutiao.im
2017-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人