码哥字节

其他

事务篇:七种分布式事务方案正确使用姿势

BASE理论是对CAP中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual
2021年5月21日
被用户删除
其他

干货 | 神仙练手项目,想要从入门到上手Java的进!

仅仅会那些开源网站上的小项目并不能有效提升我们的实践能力,同时也远远无法达到面试官对求职者的要求,而作为小白的我们又能从哪里去获得被面试官认可的项目经验呢?
2021年5月21日
其他

讲解 Zookeeper 的五个核心知识点

znode(目录节点)。和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。默认有四种类型的znode:
2021年5月19日
被用户删除
其他

《机器学习》、《算法数据结构》、《LeetCode原创题解》开放下载!

这里面的每一篇文章和内容都是我原创手打的,既包含了知识点,也包含了我个人的领悟和总结。应该还是很珍贵的,想要获取资料的小伙伴,请扫描下方二维码关注我的公众号Coder梁,回复关键字【合集包】获取。
2021年5月17日
被用户删除
其他

重构篇:如何利用设计模式优化代码(文末送书)

为什么会说到这些呢?因为有些程序员是有视觉盲区或知识盲区的,主要因为程序员的工作是在承接产品需求,除此之外对业务发展、运营思路、ROI、KPI、GMV、DAU等数据是不关心或关心不到的。
2021年5月17日
被用户删除
其他

成长篇:遇见优秀的人

他会不定期给读者做一些免费的技术分享,同时为了鼓励技术群里的群友学习,他会在每逢过节时给群友赠书(当然,只有他认为勤奋好学的群友才有机会获得赠书),书都是被赠者自己选的.
2021年5月11日
其他

高并发场景下,到底先更新缓存还是先更新数据库?

应用首先会判断缓存是否有该数据,缓存命中直接返回数据,缓存未命中即缓存穿透到数据库,从数据库查询数据然后回写到缓存中,最后返回数据给客户端。
2021年5月10日
被用户删除
其他

【干货】教你打通Git的任督二脉

命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git
2021年5月8日
其他

Linux 写时复制机制原理

复制并重新映射到新的物理内存后,父子进程的虚拟内存就映射到不同的物理内存上,这时父子进程都可以对内存进行写操作而互不影响,所以需要把父子进程的内存读写权限设置为可读写。
2021年5月7日
其他

InnoDB解决幻读的方案--LBCC&MVCC

此处我们演示的是update的情况,对于删除的情况可以认为是update的特殊情况,会将版本链上最新的数据复制一份,然后将trx_id改成删除操作的trx_id,同时在该条记录的头信息(record
2021年5月6日
其他

双12压测引出的线上Full GC排查

实现原理上是对需要序列化的Class使用asm动态生成了代理类,在这里就是Item类,使用SerializeConfig配置动态生成字节码代理类:
2021年4月28日
被用户删除
其他

一万字详解 Redis Cluster Gossip 协议

}}实际发送Gossip消息以下是前方多次调用过的clusterSendPing()方法的源码,代码中有详细的注释,大家可以自行阅读。主要的操作就是将节点自身维护的
2021年4月26日
其他

腾讯面试题:64匹马,8赛道,找出最快的4匹最少要几次?

曾就职华为和美团,中山大学数学与计算机系本科,专注分享数学、算法、科学等硬核知识
2021年4月25日
自由知乎 自由微博
其他

你管这玩意叫 MySQL 索引?

老板看到了我的设计之后,拍了拍我的脑袋,“007,有一手啊,我看你这结构看着像一棵树,我这个人又喜欢吹牛
2021年4月25日
其他

Redis 高可用篇:Cluster 集群能支撑的数据有多大?

错误(负载均衡,数据已经迁移到其他实例上):当客户端将一个键值对操作请求发送给某个实例,而这个键所在的槽并非由自己负责的时候,该实例会返回一个
2021年4月22日
被用户删除
其他

假如易立竞吐槽程序员

该文的作者是码农小说家,文章风格集风趣、幽默、段子、故事、沙雕于一身,用小说的形式讲述互联网人的方方面面,是您加班劳累的必备之选,闲暇放松的锦上添花。推荐点下关注,让有趣的灵魂就此相遇!
2021年4月20日
其他

我用 Kafka 两年踩过的那些非比寻常的坑

根据以往积累的经验,我直接看了kafka的topic的数据,果然上面消息有积压,但这次每个partition都积压了十几万的消息没有消费,比以往加压的消息数量增加了几百倍。这次消息积压得极不寻常。
2021年4月12日
其他

Kafka原理篇:图解kakfa架构原理

管理着集群中所有副本和分区的状态机。大家不要被状态机这个词唬住了。理解状态机很简单。先理解模型,即这是什么关于什么模型,然后就是模型的状态有哪些,模型状态之间如何转换,转换时发送相应的变化事件。
2021年4月9日
其他

MySQL索引底层:B+树详解

如果删除15,删除关键字的结点只剩1个关键字,小于⌈5/2⌉-1=2,不满足B+树特点,但是其兄弟节点拥有3个元素(7,8,9),可以借用9过来,如图:
2021年4月6日
其他

Redis 6.X Cluster 集群搭建

每个实例还包含存储此节点配置的文件的路径,默认情况下为nodes.conf,自动创建cluster-config-file
2021年4月5日
其他

Redis 6.X Sentinel 哨兵集群搭建

sentinel26380/sentinel.conf./redis-6.0.9/src/redis-sentinel
2021年3月30日
其他

Redis 日志篇:无畏宕机快速恢复的杀手锏

函数,将一些数据写入到文件的时候,操作系统通常会将写入数据暂时保存在一个内存缓冲区里面,等到缓冲区的空间被填满、或者超过了指定的时限之后,才真正地将缓冲区中的数据写入到磁盘里面。
2021年2月22日
其他

Redis 核心篇:唯快不破的秘密

但是,使用多线程后,没有良好的系统设计,可能会出现如下图所示的场景,增加了线程数量,前期吞吐量会增加,再进一步新增线程的时候,系统吞吐量几乎不再新增,甚至会下降!
2021年1月26日
其他

了解这些,你就可以在Spring启动时为所欲为了

=OptionConverter.getSystemProperty(DEFAULT_INIT_OVERRIDE_KEY,null);
2021年1月12日
其他

打工人,从 JMM 透析 volatile 与 synchronized 原理

每个线程拥有一个「虚拟机栈」,每个「虚拟机栈」拥有多个「栈帧」,而栈帧则对应着一个方法。每个「栈帧」包含局部变量表、操作数栈、动态链接、方法返回地址。方法运行结束则意味着该「栈帧」出栈。
2020年11月2日
其他

从面试角度一文学完 Kafka

等不一样,消息中间件采用分布式中间代理的方式进行通信。如图所示,采用了消息中间件之后,上游业务系统发送消息,先存储在消息中间件,然后由消息中间件将消息分发到对应的业务模块应用(分布式生产者
2020年10月12日
其他

终极解密输入网址按回车到底发生了什么

头,数据包才能够正确传输,到了目的地后把头部去掉,就可以拿到真正的数据。这个很容易理解,设置起点与终点,不同协议贴上不同的头部,到了对应目的地就拆下这个头部,提取真正的数据。
2020年10月9日
其他

高性能解决线程饥饿的利器 StampedLock

方法,第一个使用了乐观读,使得读写可以并发执行,第二个则是使用了读锁转换成写锁的编程模型,先查询缓存,当不存在的时候从数据库读取数据并添加到缓存中。
2020年9月21日
其他

透视HTTPS建造固若金汤的城堡

重点就是使用非对称加密的“私钥”加密原文的摘要,对方则使用非对称加密的公钥解密出摘要,再比对解密出的原文通过摘要算法计算摘要与解密出的摘要比对是否一致。这样就能像签署文件一样证明消息确实是你发送的。
2020年9月14日
其他

不可不知的软件架构模式

软件可以说是人类创造的最复杂的系统类型。软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。而理解运用这些复杂性的人并没有太多的变化。
2020年8月26日
其他

Tomcat 高并发之道原理拆解与性能调优

的构造函数,防止无限添加任务导致内存溢出。而且默认是无限制,就会导致当前线程数达到核心线程数之后,再来任务的话线程池会把任务添加到任务队列,并且总是会成功,这样永远不会有机会创建新线程了。
2020年8月17日
其他

数据库系统设计概述

在数据到达与离去速度不匹配的地方,就应该使用缓冲技术。缓冲技术好比是一个水库,如果上游来的水太多,下游来不及排走,水库就起到“缓冲”作用,先让水在水库中停一些时候,等下游能继续排水,再把水送往下游。
2020年7月27日
其他

Tomcat 架构原理解析到架构设计借鉴

设计就是要找到系统的变化点和不变点。这里的不变点就是每个组件都要经历创建、初始化、启动这几个过程,这些状态以及状态的转化是不变的。而变化点是每个具体组件的初始化方法,也就是启动方法是不一样的。
2020年7月6日
其他

如何把百万级别的订单根据金额排序

「码哥」带大家学习的算法类比「超跑型赛车」,用于特殊场景能实现飞快速度。快排、归并是经济实用型小轿车。而桶排序、计数排序、基数排序则是赛道上的跑车竞速,也叫做线性排序。
2020年6月22日
其他

服务设计思考:平台化

人。所以两人维护一个项目,一人主导,一人辅助,两人交叉合作是一个很好的团队合作模式。如图形成一个网状模式(红色线代表主导,黑色线辅助)。这样每一个项目都将有两个熟悉的人。
2020年6月17日
其他

经典 O(nlogn) 复杂度算法之快排

快速排序的名字起的是简单粗暴,因为一听到这个名字你就知道它存在的意义,就是快,而且效率高!它是处理大数据最快的排序算法之一了。虽然
2020年6月8日
其他

分而治之归并排序

把数组从中间分成左右两部分,然后对左右两部分分别排序,再将排序号的两部分合并在一起,最后整个序列有序。其实就是运用了分治思想,顾名思义,就是分而治之,将一个大问题分解成小的子问题。
2020年6月4日
其他

Druid:通过 Kafka 加载流数据

{PATH_TO_DRUID}/quickstart/tutorial/wikiticker-2015-09-12-sampled.json上面命令会向
2020年6月1日
其他

经典 O(n²)比较类排序算法

为何要区分这三种时间复杂度?第一,通过复杂度可以大致判断算法的执行次数。第二,对于要排序的数据有的无序、有的接近有序,有序度不同不同对于执行时间是不一样的,所以我们要区分不同数据场景下算法的性能。
2020年5月25日
其他

LSM设计一个数据库引擎

为提升数据库系统的写性能,我们发现磁盘的顺序写性能远远大于随机写性能,甚至性能高于内存的随机写。所以在很多偏向写性能的数据库系统中,以牺牲一部分读性能和增大写放大的情况下引入了
2020年5月22日
其他

递归最佳解析

对于递归代码,我们不要试图去弄清楚整个递和归的问题,这个不适合我们的正常思维,我们大脑更适合平铺直叙的思维,当看到递归切勿妄想把递归过程平铺展开,否则会陷入一层一层往下调用的循环。
2020年5月18日
其他

你常听说的WAL到底是什么

信息。这样做的目的可以通过一个例子来说明。假设一个程序在执行某些操作的过程中机器掉电了。在重新启动时,程序可能需要知道当时执行的操作是成功了还是部分成功或者是失败了。如果使用了
2020年4月29日
其他

Mysql:小主键,大问题

「数据」用于描述客观实在的,本身没有意义。只有在根据主观需求组织之后,通过一定方式满足人认识事物的过程才具有了意义。所以数据需要被检索,被组织。则主键第三个作用:
2020年4月20日
其他

Mysql 存储大数据量问题

「水平拆分」与「垂直切分」相比,相对来说稍微复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库中,对于应用程序来说,拆分规则本身就较根据表名来拆分更为复杂,后期的数据维护也会更为复杂一些。
2020年4月15日
其他

7.双向链表的优雅实现

节点分别保存现女友、前女友、跟备胎的联系方式,这样就能够实现一三五轮换运动(往前看有前女友,往后看有备胎),通过不同指针变可以找到前女友跟备胎。就像渣男拥有她们的联系方式。
2020年4月13日
其他

6.单向链表实现的正确方式

o);}抽象链表模板看起来是不是很像骚包,接着我们再抽象一个抽象类,后续我们还会继续写双向链表,循环链表。双向循环链表。把他们的共性放在抽象类中,将不同点延迟到子类实现。
2020年4月10日
其他

你应该知道一些其他存储——列式存储

列的存储上其实是不需要存储博客数量这么大的数据量的;二来相同的列数据类型一致,这样利于数据结构填充的优化和压缩,而且对于数字列这种数据类型可以采取更多有利的算法去压缩存储。
2020年4月8日
其他

5.链表导论-心法篇

电影中我们看过,一个特务只知道自己上级、下级的信息,地下党通过这种单线联络的的方式灵活隐秘的传递着消息。链表家族也有多种分类,最简单的单链表、循环链表、双向链表、双向循环链表。
2020年4月1日
其他

Apache Druid 底层存储设计(列存储与全文检索)

部分的大小则是数据大小和列基数的乘积。压缩将在这里为我们提供帮助,因为我们知道,对于“列数据”中的每一行,只有一个位图具有非零的条目。这意味着高基数列将具有极为稀疏的可压缩高度位图。Druid
2020年3月30日
其他

4.线性表之数组

「数组作为非常基础的数据结构,通过下标随机访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能做到极致。所以为了减少一次减法操作,数组选择了从
2020年3月25日