上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 介绍 Paxos算法是一个高容错性的分布式一致性算法。去年学习过Paxos算法,一直没将整理到博客。现在将经典Paxos算法相关内容整理到博客上。 经典Paxos算法本身也并不是太难理解,Lamport从期望的结果出发,通过增强条件一步步反推,最终发掘出可以保证了系统一致性的Paxos算法。如果能仔 阅读全文
posted @ 2017-09-06 00:06 活在夢裡 阅读(832) 评论(0) 推荐(0) 编辑
摘要: 1. 背景与简介 在Java中异步任务的处理,我们通常会使用Executor框架,而ThreadPoolExecutor是JUC为我们提供的线程池实现。 线程池的优点在于规避线程的频繁创建,对线程资源统一管理,在任务到达时能快速响应。 本文从JUC的ThreadPoolExecutor源码出发来剖析 阅读全文
posted @ 2017-08-25 18:53 活在夢裡 阅读(2710) 评论(1) 推荐(1) 编辑
摘要: 1. 背景与简介 Future是Java执行异步任务时的常用接口。我们通常会往ExecutorService中提交一个Callable/Runnable并得到一个Future对象,Future对象表示异步计算的结果,支持获取结果,取消计算等操作。在Java提供的Executor框架中,Future的 阅读全文
posted @ 2017-08-16 17:27 活在夢裡 阅读(2946) 评论(2) 推荐(2) 编辑
摘要: 1. 背景 最近团队内部技术分享,我做了个关于AQS的分享。ppt中涵盖的部分要点内容,现在整理到博客上。 关于AQS本身的源码解读,可以参考 "我之前的博文" 。 2. 要点梳理 下面是一些技术分享的要点梳理。 2.1 LockSupport的实现 AQS中的阻塞/唤醒最终是基于LockSuppo 阅读全文
posted @ 2017-08-14 19:30 活在夢裡 阅读(1602) 评论(1) 推荐(0) 编辑
摘要: 1. 背景 在之前的 "AbstractQueuedSynchronizer源码解读" 中,介绍了AQS的基本概念、互斥锁、共享锁、AQS对同步队列状态流转管理、线程阻塞与唤醒等内容。其中并不涉及Condition相关的内容。本文主要介绍AQS中Condition的实现即ConditionObjec 阅读全文
posted @ 2017-07-21 21:20 活在夢裡 阅读(3431) 评论(0) 推荐(0) 编辑
摘要: 1. 背景 本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用。 注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5.1.42版本 。 2. 预编译语句是什么 通常我们的一条sql在db接收到最终执行完毕返回可以 阅读全文
posted @ 2017-07-06 09:36 活在夢裡 阅读(43238) 评论(6) 推荐(8) 编辑
摘要: 本文介绍在Mac上搭建Hive环境。 建议首先配置好Hadoop,搭建与配置可以参考我之前的博文 "Mac Hadoop的安装与配置" 。 当然你也可以选择使用Docker搭建环境,本文不作介绍。 安装 对于MacOs,推荐使用HomeBrew安装hive,一步到位。 创建元数据库 Hive默认用d 阅读全文
posted @ 2017-07-02 13:24 活在夢裡 阅读(12002) 评论(1) 推荐(1) 编辑
摘要: 背景 本文整理一些Hadoop YARN的相关内容。 简介 YARN(Yet Another Resource Negotiator)是Hadoop通用资源管理平台,为各类计算框架(离线MR、在线Storm、内存计算Spark等)提供统一的资源管理和调度。 它提供的功能有: 统一资源管理和调度 : 阅读全文
posted @ 2017-06-29 14:11 活在夢裡 阅读(1063) 评论(0) 推荐(0) 编辑
摘要: 编译OpenJDK主要为了学习HotSpot,编译过程在很多相关书籍中都有所涉及,但由于机型、机子具体环境的不同,很难有资料能够一步到位。还是得碰到具体问题通过上网查来一个个解决。 下载OpenJDK 由于网络环境还不错,所以这里采用通过版本管理来下代码。 安装mercurial版本管理 接下来cl 阅读全文
posted @ 2017-06-15 16:22 活在夢裡 阅读(6103) 评论(2) 推荐(0) 编辑
摘要: 1. 背景 在之前 "介绍MySQL执行计划的博文" 中已经谈及了一些关于子查询相关的执行计划与优化。本文将重点介绍MySQL中与子查询相关的内容,设计子查询优化策略,包含半连接子查询的优化与非半连接子查询的优化。其中非半连接子查询优化由于策略较少不作详细展开。 2. 子查询概念 子查询简单理解就是 阅读全文
posted @ 2017-06-15 02:14 活在夢裡 阅读(6755) 评论(0) 推荐(2) 编辑
摘要: 1. 背景 AQS(java.util.concurrent.locks.AbstractQueuedSynchronizer)是Doug Lea大师创作的用来构建锁或者其他同步组件(信号量、事件等)的基础框架类。JDK中许多并发工具类的内部实现都依赖于AQS,如ReentrantLock, Sem 阅读全文
posted @ 2017-06-03 17:52 活在夢裡 阅读(19651) 评论(18) 推荐(27) 编辑
摘要: 背景 在应用程序中,时常会碰到需要维护一个map,从中读取一些数据避免重复计算,如果还没有值则计算一下塞到map里的的小需求(没错,其实就是简易的缓存或者说实现记忆化)。在公司项目里看到过有些代码中写了这样简易的缓存,但又忽视了线程安全、重复计算等问题。本文主要就是谈谈这个小需求的实现。 实现 Ha 阅读全文
posted @ 2017-05-30 22:13 活在夢裡 阅读(1742) 评论(3) 推荐(2) 编辑
摘要: 1. 背景 ThreadLocal源码解读,网上面早已经泛滥了,大多比较浅,甚至有的连基本原理都说的很有问题,包括百度搜索出来的第一篇高访问量博文,说ThreadLocal内部有个map,键为线程对象,太误导人了。 ThreadLocal非常适合对Java多线程编程感兴趣的程序员作为入门类阅读,原因 阅读全文
posted @ 2017-05-20 15:39 活在夢裡 阅读(22451) 评论(35) 推荐(61) 编辑
摘要: CR与LF CR(carriage return),中文名称“回车”;LF(line feed),中文名称“换行”。无论是初学编程的小白还是入行十年的资深,总会有人搞不清楚这两者的区别。回车与换行到底是什么关系呢? CR与LF的来历 首先需要说明的是“回车”指的是'\r',ASCII码为0xOD(1 阅读全文
posted @ 2017-05-17 01:37 活在夢裡 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 背景 在DockerCon17上,Docker发布了两个新的开源项目 "LinuxKit" 和 "Moby" 。而原来在Github上托管的docker也随着 "PR 32691" 的合入正式变为Moby。这究竟是什么情况? 介绍 Docker官方已经正式发布了Moby项目的介绍: "INTRODU 阅读全文
posted @ 2017-04-22 18:43 活在夢裡 阅读(12068) 评论(1) 推荐(2) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页