自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xindoo

代码、算法和人生

原创 今年是冷冬?我爬了北京10年的气温,哟 还真是!

WARNING: 非严谨气相数据分析,旨在表达数据分析过程,结论还是看看就好,更严谨的信息请查阅专业的气相资料。 10月份的北京,仿佛酷热的夏季戛然而止,然后变成了春夏秋冬随机播放的模式,与往年不同的是今年很多人都在说“今年比去年冷多了”。 之前网络上就在传受拉尼娜现象的影响,今年会是个冷冬,...

2020-10-24 09:04:58 3 0

原创 Redis源码剖析之快速列表(quicklist)

@TOC 何为quicklist,上次说到ziplist每次变更的时间复杂度都非常高,因为必须要重新生成一个新的ziplist来作为更新后的list,如果一个list非常大且更新频繁,那就会给redis带来非常大的负担。如何既保留ziplist的空间高效性,又能不让其更新复杂度过高? redis的...

2020-10-18 21:49:15 268 0

原创 Redis源码剖析之压缩列表(ziplist)

本来打算只用一篇文章来讲解Redis中的list,在实际写作过程中发现Redis中有多种list的实现,所以准备拆成多篇文章,本文主要讲ziplist,ziplist也是quicklist的基础。另外还有skiplist,skiplist虽然是list,当主要和set命令相关,所以会放到后面。 本...

2020-10-04 23:00:56 1549 2

原创 面试题精选:单链表排序也能玩出花来

今天国庆节,祝大家中秋节快乐,顺便给大家拜个早年[狗头]。不过最近还在准备面试的同学们不要浪太狠,还是要好好学习的鸭。 单链表的排序在数据结构类的面试题中简直是集大成者,什么排序、链表、链表删除、添加…… 都能体现在单链表排序上,也非常考验候选者的编程基本功,思路说起来很简单,但能不能写出来又是另...

2020-10-01 11:16:54 2320 1

原创 Redis源码剖析之SDS(Simple Dynamic String)

SDS(simple dynamic string)是Redis提供的字符串的封装,在redis中也是存在最广泛的数据结构,它也是很多其他数据结构的基础,所以才选择先介绍SDS。 SDS也兼容部分C字符串API(strcmp,strlen),它如何兼容C字符串我觉得也是有个很sao的操作,等看完我...

2020-09-26 12:47:36 2454 2

原创 面试题精选:字符串替换

字符串处理在程序猿日常工作工作中非常常见,常见到几乎各种语言中都已经封装好了字符串相关的API,我们只需要直接拿过来用就好。就拿Java为例,jdk中的String()类几乎封装了所有字符串相关的操作,其方法数量有近百个,几乎满足了程序猿所有字符串相关的操作。 正是因为这么方便,估计大多数Jav...

2020-09-20 21:25:12 1652 0

原创 Redis源码剖析系列博文开篇&大纲

今年我启动了好几个比较有挑战的个人项目,比如写一门编程语言、成为一名视频UP主、写科幻小说…… 这些项目目前进度都很堪忧,一方面这些项目挑战都比较大,另一方面业余时间还要忙着吃吃喝喝、追剧、刷综艺、睡懒觉…… 不过有个项目进度不至于那么不堪,那就是今天的猪脚——《Redis源码剖析》系列博文,今...

2020-09-20 21:19:50 1245 1

原创 面试题精选:数据伪造

这道题应该算是我原创的的一道题,来源于我遇到的一个具体需求。大致需求是已知一批数和每个数出现的次数,然后写个接口,每次调用都能返回已知数据中的某个数,且返回的概率和原始数据中每个数出现的概率一致,题目描述起来有些绕口,我们来举个实际的例子。 以上面的输入为例,要求实现的接口必须以11.96%的概...

2020-09-13 19:46:33 2711 2

原创 程序猿职场求生指南[手动狗头]

职场法则: 只要你努力工作,办事靠谱,思虑周全,从不给领导添麻烦,从不向领导提要求。勤勤恳恳,兢兢业业…… 坚持下去,公司里的杂活,破事儿,棘手的事就都成了你的,而且你的老板会更有钱。 如何在职场中干最少的活拿最多的钱,一定是困扰大部分社畜的终极难题,今天我将尝试从 工作、社交、生活、团队管理 四...

2020-09-13 12:37:35 8025 8

原创 我背着CSDN偷偷记录了大半年我博客数据[手动狗头]

作为一个数据控+一个有追求的技术博主,总是希望自己能知道自己博客历史每日粉丝数量、阅读量、积分、评论……的数据,然而官方博客管理后台给展示的数据太少了,只有每日访问量、评论数、粉丝数、收藏数这几个数据,而且目前最多只能看最近一个月的数据。 如果想看更久的数据、想看自己积分的变化、想看总排名 周排...

2020-09-06 16:23:04 3104 5

原创 面试题精选:两个线程按顺序交替输出1-100

陆陆续续,各个公司的校招季都开始了,我也成为了我司的校招面试官,最近也面了不少同学了,面试过程中也发现了很多问题,即有面试者的、也有面试官的、更有自己的问题,这里先挖个坑,后续写个博客详细聊聊,感兴趣的同学可以关注下。另外,我也有个专栏《面试题精选》,里面收录我之前写的一些面试题博客,长期更新、永...

2020-09-06 13:56:55 4417 12

原创 Java中synchronized与ReentrantLock性能对比
原力计划

前两天逛博客的时候看到有个人写了一篇博客说ReentrantLock比synchronized慢,这就很违反我的认知了,详细看了他的博客和测试代码,发现了他测试的不严谨,并在评论中友好地指出了他的问题,结果他直接把博客给删了 删了 了…… 很多老一辈的程序猿对有synchronized有个 性能差...

2020-08-23 19:10:15 2669 6

原创 如何把百度伪装成Google

作为技术人使用百度被鄙视?但因为种种原因无法使用Google,为了解决这个尴尬的问题,我特意研发了一款chrome插件,可以将百度的logo换成google的logo,完美的解决这个尴尬的问题。 妈妈再也不用担心我因为用百度搜索技术问题而被同事嘲笑了。 使用效果如下: 看到这也许你有很多的问题...

2020-08-09 19:55:13 9838 31

原创 如何制作一个可以自动更新的Github个人主页
原力计划

Github近期上线一个新的功能,就是你在自己账号下创建一个和自己用户名同名的仓库,并在仓库下创建一个README.md文件,这个文件就会被展示在你的Github个人主页。源于markdown的强大描述能力,你可以在你的Github首页展示各种各样的信息,甚至有人直接将自己个人简历挂上面,极大丰富...

2020-08-09 18:14:58 4618 11

原创 [视频]程序猿到底要不要刷Leetcode?

程序猿到底要不要刷Leetcode.mp4

2020-08-03 10:01:34 864 8

原创 JDK11现存性能bug(JDK-8221393)深度解析
原力计划

这是一篇鸽了很久的博客,因为博客内容和素材早就准备差不多了,但就是一直懒得整理,今天终于下定决心终于整理出来了。 先大致介绍下这个bug,准确说这个应该是jdk11新引入的zgc的一个bug,该bug在被触发的情况下会导致进程CPU使用率会逐渐升高,如果不管的话最终CPU会到100% 影响服务可用...

2020-07-12 13:07:16 6463 6

原创 生日悖论是啥?我用它省了上百G的内存
原力计划

生日悖论: 是指在不少于 23 个人中至少有两人生日相同的概率大于 50%。例如在一个 30 人的小学班级中,存在两人生日相同的概率为 70%。对于 60 人的大班,这种概率要大于 99%。从引起逻辑矛盾的角度来说,生日悖论并不是一种 “悖论”。但这个数学事实十分反直觉,故称之为一个悖论。 生日悖...

2020-07-04 13:44:53 5038 2

转载 为什么美国程序员工作比中国程序员工作轻松、加班少?

转自:量子位(整理)+ 知乎 按惯例,先问是不是,再问为什么。 从知乎回答浏览量看,是的。 那么为什么美国程序员就可以到点下班回家,而中国程序员就要每天“主动”、“无偿”加班呢? 仔细看了群众们热情的回答之后,大概可以分为几派: 1、产品经理不够通情达理,导致效...

2020-07-02 12:22:42 412 2

翻译 一文理解操作系统虚拟内存

原文地址An introduction to virtual memory 计算机是用来执行简单任务的复杂机器:比如 上网、文本编辑、网页服务、视频游戏……,还可以对数据进行操作,图片 音乐 文本 数据库…… 当计算机不使用的时候,程序和数据都安静地躺在磁盘里,即便你关机了数据也会在。运行一个应...

2020-06-25 14:44:58 321 0

原创 Json字段选取器介绍和实现
原力计划

最近为了工作方便写了一个小工具,这个小工具作用很简单,就是从一个json字符串中筛出你想要的部分。 介绍 背景是这样的,我们为了线上调试方便,有个工具可以模拟发起一次数据请求,然后将结果以json的形式展示到页面上。但问题是这个数据包含的信息非常多,动不动就上千行(如上图),但每次debug的时候...

2020-06-20 22:54:42 353 0

原创 从0到1打造正则表达式执行引擎(二) NFA转DFA
原力计划

在上篇博客从0到1打造正则表达式执行引擎(一)中我们已经构建了一个可用的正则表达式引擎,相关源码见https://github.com/xindoo/regex,但上文中只是用到了NFA,NFA的引擎建图时间复杂度是O(n),但匹配一个长度为m的字符串时因为涉及到大量的递归和回溯,最坏时间复杂度是...

2020-05-31 20:03:26 957 1

原创 技术团队如何培养新人
原力计划

文章目录对新人设立明确的阶段性目标提高新人培训的优先级和重视程度完善师徒体系增加理论知识的比重模拟实战经验分享定期培训题外话 水一篇我17年写的内容。背景是我当时工作方向上的变化,但一直感觉上手很慢。刚工作时也有这种体会,当时纯觉得自己菜,但后来看了《Site Reliability Engine...

2020-05-18 21:50:50 534 0

原创 面试题精选:循环队列
原力计划

近期在面试找工作的小伙伴们很多啊,我周围就有好几个认识的朋友在找工作,于是我突发奇想在CSDN开了一个面试题精选的专栏,主要会关注一些算法题、设计题,次要会补充一些java面试相关的题(比较本博主是java出身)。其实在此之前已经写过一些相关的文章了,已经整理到专栏里的,后续会持续更新,希望对大家...

2020-05-10 17:06:57 302 0

原创 从0到1打造正则表达式执行引擎(一) 正则表达式转NFA
原力计划

文章目录前置知识有限状态机状态机下的正则表达式串联匹配并连匹配 (正则表达式中的 **|**)重复匹配(正则表达式中的 **? + ***)重复0-1次 ?重复1次以上重复0次以上匹配指定次数特殊符号(正则表达式中的 **. \d \s……**)子表达式(正则表达式 **()**)练习题代码实现建...

2020-05-01 17:28:42 9673 16

原创 面试题精选:求根号2简单?高级算法你肯定不会
原力计划

前两天逛github看到一道很简单的面试题——如何不用库函数快速求出2\sqrt22​的值,精确到小数点后10位! 第一反应这不很简单嘛,大学数据结构课讲二分查找的时候老师还用这个做过示例。但转念一想,能作为大厂的面试题,背后绝对没有那么简单,于是我google了下,结果找到了更巧妙的数学方法,甚...

2020-04-12 20:30:23 931 0

原创 欢迎关注我的微信公众号

公众号注册n年了,但一直都没怎么发过文章,真是五年运营四年敷衍,去年年底在做自我年终总结的时候放下豪言说要开始重新运营公众号了,但一拖就拖到了3月底。这几个月想了好久的公众号定位,大概有些方向了(下文细说),所以决定摒弃我这间歇性踌躇满志持续性萎靡不振的毛病,硬着头皮开更了。 自我介绍 大家好 我...

2020-03-22 23:51:17 459 1

原创 StampedLock源码分析
原力计划

文章目录前言乐观锁 or 悲观锁源码分析构造函数读锁相关API乐观读锁的实现读锁的获取读锁的释放写锁相关API写锁的获取写锁的释放其他API读锁转写锁写锁转读锁转乐观锁ReadLockView和WriteLockView注意事项参考资料 前言 之前已经说过了ReentrantLock Reentr...

2020-03-22 16:22:04 544 0

翻译 技术人必须知道的42个谷歌搜索技巧

前言 作为一个技术人,经常会遇到自己不懂或不知道的东西,这个时候就必须使用搜索引擎搜索相关的资料,当然大部分人都逃不过google,google上的内容繁多,如何快速检索和筛选自己想要的信息却成了问题。其实google提供了高级搜索的方式,只是很多人都不太清楚,配合简单的google搜索表达式,可...

2020-03-15 22:31:11 1052 0

原创 Antlr实战之JSON解析器slowjson

最近一直在学习编译原理,然后就了解到了antlr4这个强大的工具,antlr的全称是(Another Tool for Language Recognition),是一款很强大的词法和语法分析工具,虽然是用java写成的,但它也能生成c++、go……等语言的代码。它的主要作用就是你可以用巴科斯范式...

2020-03-08 20:49:11 671 0

转载 刘未鹏:为什么你应该(从现在开始就)写博客

今天转载一篇刘未鹏10多年前的一篇博客《为什么你应该(从现在开始就)写博客》,我觉得总结的非常好,上大学的时候我就看过了,因为这篇博客所以我从13年开始坚持写博客。刘未鹏最近博客也不更了,可能他的博客慢慢就沉下去了,但我觉得他很多优质的内容不能沉,就比如这篇文章,我觉得很适合初入CSDN、刚开始学...

2020-03-01 18:33:20 562 1

翻译 Java volatile 关键词

文章目录变量可见性问题Java volatile可见性保证volatile 完全可见性保证指令重排序挑战Java volatile和有序性(Happens-Before)保证volatile还不够什么时候volatile就足够了?volatile的性能考量原文地址 Java中的volatile关键...

2020-02-23 19:41:58 273 0

原创 如何做好一个面试官

找到了我17年写的一篇关于面试官的思考,没有发在csdn上,经过三年的时间,今天看来某些想法不够成熟,所以整理修改后重新发出来。 首先声明一点,我没怎么面试过别人,只是参加过几场面试,经历的面试官只有小20个吧,所以根本没有资格去评判某个面试官是不是合格的面试官。但经过我最近的一些经历,以及朋友...

2020-02-20 21:42:56 4811 6

翻译 10行命令60秒快速定位性能瓶颈

文章目录总述1. uptime2. dmesg|tail3. vmstat 1每列的含义4. mpstat -P ALL 15. pidstat 16. iostat -xz 17. free -m8. sar -n DEV 19. sar -n TCP,ETCP 110. top后续分析 今天...

2020-02-05 14:56:32 983 0

原创 ReentrantReadWriteLock源码解析

上回说到ReentrantLock,今天来谈谈读写锁(ReentrantLock)和其具体实现ReentrantReadWriteLock。看这篇文章前,强烈建议你回到先读懂ReentrantLock,因为ReentrantReadWriteLock其实是在ReentrantLock的基础上实现的...

2020-02-03 20:54:50 854 0

原创 我的2019年终总结

时光荏苒,岁月如梭,不知不觉一年又过去了。19年的互联网格外的不景气,到处充斥着暴雷、裁员,然而这些都和我无关,但这些都让深刻认识到了困难时期抱着大厂大腿的好处(还好我18年没跳槽去小厂,哈哈)。 回到年终总结,这已经是我连续第七年写年终总结了(文末可以看到其他年份的),首先我们来回顾下去年立的...

2020-01-13 09:44:14 3616 5

原创 Web服务压测神器wrk

wrk是一款开源的高性能http压测工具(也支持https),非常小巧,可以执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧非常好用。虽然很早之前我就知道有这么个工具了,当时学习这个工具的时候我还拿它压测了我们的个人网站xindoo....

2019-12-29 16:29:04 4417 1

原创 ReentrantLock源码解析

谈到多线程,就不避开锁(Lock),jdk中已经为我们提供了好几种锁的实现,已经足以满足我们大部分的需求了,今天我们就来看下最常用的ReentrantLock的实现。 其实最开始是想写一篇关于StampedLock的源码分析的,但发现写StampedLock前避不开ReentrantReadWri...

2019-12-20 19:19:37 1985 0

原创 布隆过滤器(BloomFilter)原理 实现和性能测试

布隆过滤器是一种大家在学校没怎么学过,但在计算机很多领域非常常用的数据结构,它可以用来高效判断某个key是否属于一个集合,有极高的插入和查询效率(O(1)),也非常省存储空间。当然它也不是完美无缺,它也有自己的缺点,接下来跟随我一起详细了解下BloomFilter的实现原理,以及它优缺点、应用场景...

2019-11-21 19:28:08 5748 2

翻译 Google是如何做Code Review的

听说今天发原创有徽章,先占个坑,等周末有空补上内容。 本篇博客内容 我和几个小伙伴一起翻译了google前一段时间放出来的Google’s Engineering Practices documentation,之后我会整理一下放在这里。 翻译后的github仓库https://github.co...

2019-10-27 16:28:20 5806 4

原创 用正则表达式匹配3的任意倍数

正则表达式能匹配3的任意倍数?(注意是任意倍数) ,我曾经也很震惊,但确实可以。我5年多前练习正则表达式,在Regex Golf这个正则表达式测试网站上发现了这个题,当时完全没有任何头绪,于是我在知乎提问正则表达式如何匹配 3 的倍数 ,但是得到了好多知乎大佬的关注,也上了当天的热榜。 排名第一的...

2019-10-20 12:12:14 5293 5

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