自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

转载 徒手教你使用zookeeper编写服务发现

zookeeper是一个强一致【不严格】的分布式数据库,由多个节点共同组成一个分布式集群,挂掉任意一个节点,数据库仍然可以正常工作,客户端无感知故障切换。客户端向任意一个节点写入数据,其它节点可以立即看到最新的数据。zookee...

2019-06-23 23:12:21 112

转载 一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现

折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火。无奈之下自己撸了一个简单的任务调度器,结果只花了不到 2天时间,而...

2019-05-29 16:28:06 122

转载 布隆过滤器实战【防止缓存击穿】

为什么引入我们的业务中经常会遇到穿库的问题,通常可以通过缓存解决。 如果数据维度比较多,结果数据集合比较大时,缓存的效果就不明显了。 因此为了解决穿库的问题,我们引入Bloom Filter。适合的场景数据库防止穿库 Googl...

2019-03-22 14:55:50 124

转载 轻量级 Web 框架 Gin 结构分析

Go 语言最流行了两个轻量级 Web 框架分别是 Gin 和 Echo,这两个框架大同小异,都是插件式轻量级框架,背后都有一个开源小生态来提供各式各样的小插件,这两个框架的性能也都非常好,裸测起来跑的飞快。本节我们只讲 Gin ...

2019-03-04 14:06:16 297

转载 分布式系统技术难题--异地多活

什么是异地多活?为了保证系统能够对机房级别的故障进行容错,不会使系统不可用,这就需要在机房级别对系统进行冗余处理。而这就需要在架构上进行良好的设计。来面对多机房场景下的技术挑战。事实上,异地多活最大的挑战在于机房之间的物理距离更...

2019-02-26 16:10:11 76

转载 深入 LevelDB 数据文件 SSTable 的结构

LevelDB 的键值对内容都存储在扩展名为 sst 的 SSTable 文件中,SSTable 的磁盘文件结构比较复杂,读者在阅读本节之前要做好心理准备。如果有任何看得不明白的地方,一定要在下方的问答区及时提问。SSTable...

2019-02-19 14:41:08 102

转载 Golang之轻松化解defer的温柔陷阱

defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后(包括通过return正常结束或者panic导致的异常结束)执行。深受Go开发者的欢迎,但一不小心就会掉进它的温柔陷阱,只有深入理解它的原...

2019-02-14 15:11:49 69

转载 BAT 经典算法笔试题 —— 磁盘多路归并排序

在 LevelDB 数据库中高层数据下沉到低层时需要经历一次 Major Compaction,将高层文件的有序键值对和低层文件的多个有序键值对进行归并排序。磁盘多路归并排序算法的输入是来自多个磁盘文件的有序键值对,在内存中将这...

2019-01-18 08:59:42 78

转载 如何看待阿里巴巴最新的「大中台,小前台」组织架构?

作者:东子链接:https://www.zhihu.com/question/38278138/answer/1640570981.什么是“大中台、小前台”关键词:精准打击、管理高效、资源整合、灵活敏捷阿里巴巴 “大中台、小前台...

2019-01-14 15:43:48 158

转载 BAT 经典算法笔试题 —— 逆转单向链表

不善言谈的优秀程序员在面试中往往是要吃巨亏的,你没有办法通过说话来轻易证明自己的实力。不论是大厂还是小厂,大部分面试官都不具备优秀的面试能力,它们也只能通过三言两语观察一下面试者的表面工夫。老钱就是这样吃了很多亏的程序员,不喜欢...

2019-01-14 15:42:05 98

转载 鸿篇巨制 —— LevelDB 的整体架构

本节信息量很大,我们要从整体上把握 LevelDB 这座大厦的结构。当我们熟悉了整体的结构,接下来就可以各个击破来细致了解它的各种微妙的细节了。一个比喻LevelDB 有点类似于建筑,分为地基和地面两部分,也就是磁盘和内存,而地...

2019-01-10 11:14:56 73

转载 LevelDB 代码撸起来!

LevelDB 的大致原理已经讲完了,本节我们要亲自使用 Java 语言第三方库 leveldbjni 来实践一下 LevelDB 的各种特性。这个库使用了 Java Native Interface 计数将 C++ 实现的 L...

2019-01-07 11:34:17 232

转载 BAT 经典算法笔试题: 镜像二叉树

再过不到 2 个月,互联网行业就要再次迎来面试高峰了。为了让大家能顺利通过所有面试环节必经的笔试阶段,我提前给大伙准备了一套常见的算法笔试题。这套算法题来源于 LeetCode,题目都是 BAT、京东头条滴滴美团等大型互联网公司...

2019-01-07 11:07:08 85

转载 SpringBoot 究竟是如何跑起来的?

不得不说 SpringBoot 太复杂了,我本来只想研究一下 SpringBoot 最简单的 HelloWorld 程序是如何从 main 方法一步一步跑起来的,但是这却是一个相当深的坑。你可以试着沿着调用栈代码一层一层的深入进...

2019-01-05 17:24:51 131

转载 LevelDB 入门 —— 全面了解 LevelDB 的功能特性

本节我们将全面了解一下 LevelDB 的各种特性。LevelDB 的开发语言是 C++,考虑到会使用 C++ 语言的同学不是很多,在本节我们将使用 Java 语言来描述 LevelDB 的特性。其它语言栈的同学也不必担心,因为...

2019-01-04 16:45:50 186

转载 《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor

到目前位置我们一直在编写单文件代码,只有一个 main.go 文件。本节我们要开始朝完整的项目结构迈进,需要使用 Go 语言的模块管理功能来组织很多的代码文件。细数 Go 语言的历史发展,模块管理经历了三个重要的阶段。第一阶段是...

2018-12-27 15:44:42 94

转载 既生 Redis 何生 LevelDB ?

了解 Redis 的同学都知道它是一个纯内存的数据库,凭借优秀的并发和易用性打下了互联网项的半壁江山。Redis 之所以高性能是因为它的纯内存访问特性,而这也成了它致命的弱点 —— 内存的成本太高。所以在绝大多数场合,它比较适合...

2018-12-26 16:33:58 56

转载 《快学 Go 语言》第 14 课 —— 反射

反射是 Go 语言学习的一个难点,但也是非常重要的一个知识点。反射是洞悉 Go 语言类型系统设计的法宝,Go 语言的 ORM 库离不开它,Go 语言的 json 序列化库离不开它,Go 语言的运行时更是离不开它。笔者在学习反射功...

2018-12-24 17:03:52 96

转载 《快学 Go 语言》第 14 课 —— 魔术变性指针

本节我们要学习一些 Go 语言的魔法功能,通过内置的 unsafe 包提供的功能,直接操纵指定内存地址的内存。有了 unsafe 包,我们就可以洞悉 Go 语言内置数据结构的内部细节。unsafe.PointerPointer ...

2018-12-19 17:08:18 64

转载 深入 Java Timer 定时任务调度器实现原理

使用 Java 来调度定时任务时,我们经常会使用 Timer 类搞定。Timer 简单易用,其源码阅读起来也非常清晰,本节我们来仔细分析一下 Timer 类,来看看 JDK 源码的编写者是如何实现一个稳定可靠的简单调度器。Tim...

2018-12-17 15:52:43 61

转载 《快学 Go 语言》第 13 课 —— 并发与安全

上一节我们提到并发编程不同的协程共享数据的方式除了通道之外还有就是共享变量。虽然 Go 语言官方推荐使用通道的方式来共享数据,但是通过变量来共享才是基础,因为通道在底层也是通过共享变量的方式来实现的。通道的内部数据结构包含一个数...

2018-12-14 16:17:27 68

转载 打通 Java 任督二脉 —— 并发数据结构的基石

每一个 Java 的高级程序员在体验过多线程程序开发之后,都需要问自己一个问题,Java 内置的锁是如何实现的?最常用的最简单的锁要数 ReentrantLock,使用它加锁时如果没有立即加成功,就会阻塞当前的线程等待其它线程释...

2018-12-11 14:27:57 138

转载 保卫 Java 应用程序的安全沙箱机制你需要了解一下

如果你经常阅读源码,你会发现 Java 的源码中到处都有类似于下面这一段代码classFile{//判断一个磁盘文件是否存在publicbooleanexists(){SecurityManager...

2018-12-10 15:39:31 64

转载 《快学 Go 语言》第 12 课 —— 神秘的地下通道

不同的并行协程之间交流的方式有两种,一种是通过共享变量,另一种是通过队列。Go 语言鼓励使用队列的形式来交流,它单独为协程之间的队列数据交流定制了特殊的语法 —— 通道。通道是协程的输入和输出。作为协程的输出,通道是一个容器,它...

2018-12-06 16:09:21 87

转载 《快学 Go 语言》第 11 课 —— 千军万马跑协程

协程和通道是 Go 语言作为并发编程语言最为重要的特色之一,初学者可以完全将协程理解为线程,但是用起来比线程更加简单,占用的资源也更少。通常在一个进程里启动上万个线程就已经不堪重负,但是 Go 语言允许你启动百万协程也可以轻松应...

2018-12-03 15:29:57 92

转载 老大难的 Java ClassLoader,到了该彻底理解它的时候了

ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里。网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人。本文我带读者彻底吃透 ClassLoader,以后...

2018-12-03 15:26:26 74

转载 《快学 Go 语言》第 10 课 —— 错误与异常

Go 语言的异常处理语法绝对是独树一帜,在我见过的诸多高级语言中,Go 语言的错误处理形式就是一朵奇葩。一方面它鼓励你使用 C 语言的形式将错误通过返回值来进行传递,另一方面它还提供了高级语言一般都有的异常抛出和捕获的形式,但是...

2018-11-29 11:30:41 90

转载 《快学 Go 语言》第 9 课 —— 接口

接口是一个对象的对外能力的展现,我们使用一个对象时,往往不需要知道一个对象的内部复杂实现,通过它暴露出来的接口,就知道了这个对象具备哪些能力以及如何使用这个能力。我们常说「佛有千面」,不同的人看到的佛并不一样。一个复杂的复合对象...

2018-11-27 11:45:44 81

转载 《快学 Go 语言》第 8 课 —— 程序大厦是如何构建起来的

本节我们要开讲 Go 语言在数据结构上最重要的概念 —— 结构体。如果说 Go 语言的基础类型是原子,那么结构体就是分子。分子是原子的组合,让形式有限的基础类型变化出丰富多样的形态结构。结构体里面装的是基础类型、切片、字典、数组...

2018-11-23 11:48:29 50

转载 《快学 Go 语言》第 7 课 —— 诱人的烤串

字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言里的字符串是「字节」串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快...

2018-11-22 11:42:05 99

转载 《快学 Go 语言》第 7 课 —— 冰糖葫芦串

字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言里的字符串是「字节」串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快...

2018-11-22 11:40:59 83

转载 Go 语言切片的三种特殊状态 —— 90% 的开发者都忽视了

我们今天要来讲一个非常细节的小知识,这个知识被大多数 Go 语言的开发者无视了,它就是切片的三种特殊状态 —— 「零切片」、「空切片」和「nil 切片」。切片被视为 Go 语言中最为重要的基础数据结构,使用起来非常简单,有趣的内...

2018-11-21 15:45:08 67

转载 《快学 Go 语言》第 5 课 —— 神奇的切片

切片无疑是 Go 语言中最重要的数据结构,也是最有趣的数据结构,它的英文词汇叫 slice。所有的 Go 语言开发者都津津乐道地谈论切片的内部机制,它也是 Go 语言技能面试中面试官最爱问的知识点之一。初级用户很容易滥用它,这小...

2018-11-21 15:43:43 67

转载 《快学 Go 语言》第 4 课 —— 低调的数组

只要掌握了数据结构中的四大法宝,就可以包打天下,他们是:array 、linked list 、hash table、binary tree 。这四大法宝可不是各自为战的,灵活结合才能游刃有余。比如,一个用 hash table...

2018-11-21 15:42:22 49

转载 《快学 Go 语言》第 3 课 —— 分支与循环

程序 = 数据结构 + 算法上面这个等式每一个初学编程的同学都从老师那里听说过。它并不是什么严格的数据公式,它只是对一般程序的简单认知。数据结构是内存数据关系的静态表示,算法是数据结构从一个状态变化到另一个状态需要执行的机器指令...

2018-11-21 15:41:18 56

转载 《快学 Go 语言》第 2 课 —— 变量什么的最讨厌了

任何一门语言里面最基础的莫过于变量了。如果把内存比喻成一格一格整齐排列的储物箱,那么变量就是每个储物箱的标识,我们通过变量来访问计算机内存。没有变量的程序对于人类来说是可怕的,需要我们用数字位置来定位内存的格子,人类极不擅长这样...

2018-11-19 16:53:35 68

转载 《快学 Go 语言》第 1 课 —— Hello World

Go 语言的 Logo最初 Go 语言的 Logo 是一只可爱的土拨鼠,土拨鼠昼伏夜出的习性让它显得很有 Geek 范。土拨鼠的行动其实并不敏捷,不过它繁殖能力很强,生长发育的很快。到了 2018年,Go 语言重新制定了 Log...

2018-11-19 16:52:34 60

转载 短小精悍之 Redis 命令行工具有趣的罕见用法

我们天天都在使用 Redis 内置的命令行工具 redis-cli,久而久之以为它就是一个简单的交互式 Redis 数据结构手工操作程序,但是它背后强大的功能绝大多数同学可能闻所未闻。本节我们一起来挖掘这些鲜为人知的有趣用法。执...

2018-11-16 15:01:36 61

转载 不安分的 Go 语言开始入侵 Web 前端领域了

从 Go 语言诞生以来,它就开始不断侵蚀 Java 、C、C++ 语言的领地。今年下半年 Go 语言发布了 1.11 版本,引入了 WebAssembly 技术,浏览器端 Javascript 的垄断地位也开始遭遇 Go 语言的...

2018-11-14 16:03:50 50

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除