旧·时光 | Time

Something that stays in your mind will someday spring up in your life.

火箭男孩的毕业旅行

西塘 - 重庆 - 成都

孟美岐不出意外的出道了,但是看到陈意涵和刘人语落选还是很遗憾的。 6.23 晚我们还在重庆去成都的高铁上,当晚正好是土创的总决选,小赵想在高铁上拿流量看,但是因为路上隧道很多,信号一直时断时续,最终没能看成。当晚到了成都东站安顿下来之后,四个宅男立刻集中起来看了一波总决选的尾声,电视打开的时候节目已经到了宣布名次的时候,其实有悬念的也就只有后三名,刘人语陈意涵没能出道是让我们有点遗...

Redis SDS (简单动态字符串) 源码阅读

Redis 源码阅读系列

只挑选代表性的方法 sds.h #ifndef __SDS_H #define __SDS_H #define SDS_MAX_PREALLOC (1024*1024) #include <sys/types.h> #include <stdarg.h> #include <stdint.h> typedef char *sds; //五种不同的...

LinkedBlockingQueue 源码分析

JDK 1.8 中 LinkedBlockingQueue 的源码分析

简介 LinkedBlockingQueue 是由链表实现的阻塞队列,按照源码注释中的说法既可以是 “无界的”(如果一开始没有指定容量大小,则为 Integer.MAX_VALUE),也可以指定大小,元素按照 FIFO 的形式来访问,队列头部为待的时间最久的元素,尾部则是最少,新元素插在尾部。大多数情况下,链表实现的阻塞队列比数组实现的队列具有更高的吞吐量,这是因为像 ArrayBlock...

深入解析 ThreadLocal 和 ThreadLocalMap

JDK 1.8 中 ThreadLocal api 简介、使用方法、源码分析和其内部类 ThreadLocalMap 的源码分析

Introduction 最近琐事比较多,关于之前决定的阅读 jdk 1.8 源码的计划稍微耽搁了一个月,现在重新捡起来,本文来讲讲 java.lang 包下的 ThreadLocal 结构,先介绍一下 ThreadLocal 的基本用法,之后解析一下它的源码实现,ThreadLocal 字面意思是线程局部变量,能为当前线程存储独属的变量,每个线程往这个结构中读写是线程安全的,因为每个线程都...

[译] Redis Replication

Redis 文档翻译系列

翻译自 Redis Replication 复制 在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确得复制主 Redis 服务器(下文称 master)的内容。每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave 都...

小议 Redis 的主从复制功能

如何在分布式环境下保持不同实例间的数据一致性,是一个难度极大、经久不衰的话题。常见的 MySQL 中为了维持高可用,采用主从配置的方法,Redis 中也有类似的维持一主多从的方式提高 Redis 集群的高可用性的方案,而其中不可避免的则是如何保证主从实例间的数据一致性,复制(Replication)是其解决办法,但是复制是怎么开始的?怎么容错的?复制过程中新进的写操作如何处理等,都是需要仔细...

2017 年终总结

2017 这年发生了很多事,做出了很多决定,跟往年最不一样的是,今年很少以一个学生的身份去思考问题,更多地碰触了社会的一角,开始用更成熟的想法思考未来的路如何走得更快更好,不过既然做出了决定,就不会后悔。

又到了年末了,又到了写年终总结的时候,惯例了,随便聊聊,说到哪是哪。 今天翻了翻去年今日的 2016年关曲调 ,发现里面指定的很多计划今年都没有实现,原因不是没有去努力,而是自己的想法变了,原先的那些决定也就变了,不再存在于计划当中,其中原因有很多不想细讲,可能最根本的是没有钱。原先甚至到现在,我依旧觉得我是个不怎么在乎钱的人,够用就行,没那么多钱也不会成为生活的阻碍,至于什么是 “够用”...

在 Github Pages 搭建的静态博客中添加 https 访问

先看配置完成之后的效果,如下图: Introduction 自从博客搭建伊始,就一直想配一个 HTTPS 上去,付费的自然用不起,况且博主也只是想讲究有个形式而已,裸的 HTTP 网站经常被 Chrome 提醒不安全,而且地址栏逼格不高,所以没事干就折腾一下。 Tools 使用到的方法也非常简单,网上资料较多,但是部分教程步骤不全,因此准备整理一份齐全的,大家可以学一学,让自己的...

PriorityQueue 源码分析

PriorityQueue 的源码分析和整体类层结构分析

UML diagram 首先,我们来规矩来看看 PriorityQueue 的 UML 类图,被蓝线圈起来的部分是我们第一次接触到的新朋友,蓝线之外的接口或抽象类都在之前的文章中涉及到过了,感兴趣的可以翻看前几篇文章。 AbstractQueue 先来看看 AbstractQueue 抽象类,继承自 AbstractCollection,并且实现了 Queue 接口。内部构造非常简...

HashMap 源码分析

长文慎入,HashMap 的源码分析和整体类层结构分析

UML 类图 不知道大家还记不记得在 ArrayList 那篇文章中,我谈到说不定存在 AbstractSet、AbstractMap 等抽象类的事情,那是基于对类层设计的猜想,现在看到 HashMap 的层级类图之后,我们会发现确实存在 AbstractMap 这个抽象类,也印证了整个 Java 集合类的设计确实遵循严格的规范,这是值得我们仔细体会和学习的。 Map 老规矩,我们分析...

LinkedList 源码分析

LinkedList 的源码分析和整体类层结构分析

UML 类图 我们可以跟 ArrayList 的 UML 图对比一下,发现由蓝线圈起来的范围,是 ArrayList 也有的(但值得注意的是,LinkedList 没有实现 RandomAccess 接口,这很好理解因为本身链接表就不支持数组那样的 index 随机访问),而 AbstractSequentialList、Queue 和 Deque 这一个抽象类和两个接口,是在 Link...

ArrayList 源码分析

ArrayList 的源码分析和整体类层结构分析

UML 图 先看一下 ArrayList 涉及的 UML 类图,从大局上把握一下类结构: 我们先讲一下整个类图涉及的接口和抽象类: 最顶层是 Iterable 接口,Iterable 意思是可迭代的,用于形容接口很合适。 紧接着是 Collection 接口,继承自 Iterable,并添加了一些集合类的常用函数:size()、isEmpty()、c...

我理解的: 什么是一本好的技术书籍

其实想写这篇文章的原因是,前几天看了本国人写的、书名很唬人的技术书,书也挺厚目录也很高逼格,价格不菲,但是读了几章真的被气到了,很失望,觉得好的技术书确实太少了,且看且珍惜。

前言 基本从 9.11 面完了爱奇艺和点评之后,就一直没有投递新的公司,反正自己除了已经拿到手的 offer,其他唯二想去的也就只有阿里和头条了,而阿里已经没戏,头条也一直被卡在笔试,想想真的是 naive,头条内推笔试第一场的题目确实挺容易的,可能是我最接近面试的时候…然而没做好,也再次提醒自己是个算法渣,虽然后来补招的时候约我面试,不过那时候想想还是拒了,北京太远,头条加班也太凶,可能因...

网站技术架构总结

最近看完了《大型网站技术架构核心原理与案例分析》这本书,书里主要涉及的都是技术知识而非代码实现,读下来之后感觉对自己的知识面还是有加深的,起到了很好的深化作用,巩固了之前的薄弱环节,而且对于面试时一些架构设计、分布式数据一致性问题都感到有了更好的回答思路,总之确实是一本适合入门的好书。

重点网站架构技术 缓存 缓存是改善系统性能的第一手段。缓存之所以有效,因为用户的热点数据往往只集中在某20%上。 CDN 全称内容分发网络,实际上是部署在距离用户最近地点的网络服务商,用户的访问请求总是先到达距离最近的网络服务商处,在那里会缓存一些网站的静态资源,既不需要访问数据库就能获取的,这样可以第一时间返回结果给用户,改善用户体验,例如爱奇艺这样的视频网站一定是在全国各地都会有 CD...

Java 注解工作原理

什么是注解 注解也叫 元数据,为方便在代码中添加信息提供的一种形式化方法。它们可以提供用来完整描述程序所需的信息,而这些信息无法用 Java 来表达,因此注解使得我们能够以将由编译器来测试和验证的格式,存储有关程序的额外信息。注解同样还有利于代码阅读和编译器类型检查等。Java SE5 内置了三种,定义在 java.lang 中的注解: @Override:表示当前的方法定义将覆盖超...