- 博客(225)
- 资源 (1)
- 收藏
- 关注
原创 滑动窗口算法技巧
在我刷了一些滑动窗口相关的题目之后,发现很有技巧性,只要掌握了解题思路,就会很简单,所以我决定用这篇帖子记录一下,也帮助同样在刷滑动窗口相关题目的同学。
2023-10-09 21:29:02
539
原创 单调栈和单调队列可以很简单
我觉得单调栈和单调队列的题目很有特点,而且理解了它的特点能够很轻松容易地解决一系列题目,所以决定用这篇帖子记录一下,也想以此来帮助在刷同样类型题目的朋友们。
2023-09-25 09:13:17
157
原创 手撕 LFU 缓存
LFU 的缩写是 Least Frequently Used,简单理解则是将使用最少的元素移除,如果存在多个使用次数最小的元素,那么则需要移除最近不被使用的元素。LFU 缓存在 LeetCode 上是一道困难的题目,实现起来并不容易,所以决定整理和记录一下。
2023-09-18 09:49:42
382
原创 从 LinkedHashMap 源码到手撕 LRU 缓存
最近在刷 LeetCode 上LRU缓存的题目,发现答案中有 LinkedHashMap 和自己定义双向链表的两种解法,但是我对 LinkedHashMap 相关源码并不清楚,所以准备学习和记录一下。如果大家想要找刷题路线的话,可以参考。
2023-09-10 09:56:49
554
原创 深入理解线段树
线段树是常用的维护的数据结构,它可以在 O(logn) 的时间复杂度下实现单点修改、区间修改、区间查询(区间求和、区间最大值或区间最小值)等操作,常用来解决 RMQ 问题。RMQ(Range Minimum/Maximum Query) 问题是指:对于长度为 n 的数列 A,回答若干询问 RMQ(A, i, j) 其中 i, j
2023-09-05 10:01:53
202
原创 深入理解树状数组
关于各类区间和问题有很多种解法,我们可以根据题目要求选择解题的方向:、树状数组和线段树和线段树和线段树数组区间修改,区间查询:线段树树状数组是其中能解决问题最多的,而且它相比于线段树代码量更少更简单,是我们。在本文我们对线段树进行介绍,并在文末附上相关的习题供大家练习。如果大家想要找刷题路线的话,可以参考。
2023-08-28 09:11:30
170
原创 高性能MySQL实战(三):性能优化
这篇主要介绍对慢 SQL 优化的一些手段,而在讲解具体的优化措施之前,我想先对 EXPLAIN 进行介绍,它是我们在分析查询时必要的操作,理解了它输出结果的内容更有利于我们优化 SQL。为了方便大家的阅读,在下文中规定类似 key1 的表示二级索引,key_part1 表示联合索引的第一部分,unique_key1 则表示唯一二级索引,primary_key 表示主键索引。和是本文的前置知识,欢迎大家阅读。原文收录在我的中,欢迎Star和获取原文。
2023-08-21 09:24:05
1066
原创 高性能MySQL实战(二):索引
我们在上篇中已经建立好了表结构,这篇我们则是针对已有的表结构和搜索条件为表创建索引。除此之外,我还会讲一些关于索引必须要了解的知识。原文收录在我的 Github 中,欢迎Star和获取原文。
2023-08-14 09:06:51
206
原创 高性能MySQL实战(一):表结构
最近因需求改动新增了一些数据库表,但是在定义表结构时,具体列属性的选择有些不知其所以然,索引的添加也有遗漏和不规范的地方,所以我打算为创建一个高性能表的过程以实战的形式写一个专题,以此来学习和巩固这些知识。原文还是收录在我的中,欢迎Star和获取原文。
2023-08-07 09:05:22
216
原创 实战:工作中对并发问题的处理
最近在接口联调时发生了数据并发修改问题,我想把这个问题讲解一下,并把当时提出的解决方案进行实现,希望它能在大家以后在遇到同样的问题时提供一些借鉴和思考的方向。原文还是收录在我的Github中,欢迎Star和获取原文。
2023-07-31 08:45:54
200
原创 事务,不只ACID
应用在运行时可能会发生数据库、硬件的故障,应用与数据库的网络连接断开或多个客户端端并发修改数据导致预期之外的数据覆盖问题,为了提高应用的可靠性和数据的一致性,事务应运而生。从概念上讲,事务是应用程序将多个读写操作组合成一个逻辑单元的一种形式,这样其中所有的读写操作都被视为单个操作来执行,要么成功提交,要么失败回滚,不存在任何部分成功和部分失败的情况。现在,几乎所有的关系型数据库和一些非关系型数据库都支持事务。
2023-07-24 15:33:56
127
原创 分布式服务高可用实现:复制
本文的内容大多数来自于《数据密集型应用系统设计》,也夹杂着一些我个人对复制的理解,原文收录在我的 Github: enthusiasm 中,欢迎Star和获取原文。
2023-07-10 08:52:00
191
原创 从流处理来深入理解消息队列
在《数据密集型应用系统设计》这本书中关于流处理的部分提到了消息队列相关的知识,我觉得它对理解和之后使用消息队列中间件有很大的帮助,遂将其中重要的部分总结出来,但也更推荐大家去看原书
2023-07-03 08:30:00
424
原创 分布式批处理:MapReduce初探
MapReduce 是一个编程模型(框架),它采用“分治”的处理模式:首先将数据进行分块,之后对数据进行处理,包括Map阶段和Reduce阶段。Map阶段是对输入的数据进行整合,通过定义的输入格式获取文件信息和类型,并且确定读取方式,最终将读取的内容以键值对的形式保存。Reduce阶段则是对Map阶段生成的数据进行二次处理,从而获得我们想要的计算结果。
2023-06-26 09:03:16
398
原创 分布式事务:XA和Seata的XA模式
上一篇博客介绍了保证分布式事务提交的两阶段提交协议,而XA是针对两阶段提交提出的接口实现标准,本文则对XA进行介绍。
2023-06-21 09:07:08
942
原创 从2PC和容错共识算法讨论zookeeper中的Create请求
最近在读《数据密集型应用系统设计》,其中谈到了zookeeper对容错共识算法的应用。这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以准备以此文对共识算法和2PC做梳理和区分,也希望它能帮助像我一样对这两者有误解的同学。
2023-06-13 20:38:34
1008
原创 JVM内存变化分析实战
基于不准确的数据判断和推测:JVM堆内存变化是年轻代中的对象在进行垃圾回收时被转移到老年代导致的,但是没有准确的数据支撑这个结论看起来非常牵强,而且还有一点需要注意:项目服务端使用Netty搭建,调用本地方法在本地内存中生成的对象虽然不直接占用堆内存,但是它也会有在Java堆里的对象作为这块内存的引用,不清楚这会不会造成堆内存的升高。由于本次压测的关注重点并不在此,而在于内存和CPU的最大使用情况,所以之后并没有调整数据采集时间间隔再进行压测,如果之后再进行压力测试应注意该参数的设置。
2023-06-04 19:06:21
867
原创 Netty服务开发及性能优化
Netty是一个异步基于的框架,可以看做是对NIO和BIO的封装,并提供了简单易用的API、Handler和工具类等,用以快速开发高性能、高可靠性的网络服务端和客户端程序。
2023-04-11 09:21:34
472
原创 如果职场也有感情和人与人之间的帮助的话
如果我稍微有一点儿能力让大家过得好,能承担起一些微不足道的责任,哪怕它看起来会很傻,哪怕它不符合主流的观念,哪怕它掺杂了太多感情在里面儿,那也别说什么,就先让我去做吧,趁着热血没凉,也趁着我还想…
2023-03-06 09:00:03
534
原创 关于算法学习和刷题的建议
大家好,我是方圆。最近花时间学了学算法,应该算是我接触Java以来第一次真正的学习它,这篇帖子我会说一些我对算法学习的理解,当然这仅仅是浅浅的入算法的门,如果想深挖或者是有基础的人想提升自己,我觉得这篇文章不合适;如果你是算法小白或者是大一、大二有充裕时间的同学,它可能真的稍微有一点点帮助。
2023-02-27 09:09:59
649
原创 方圆的2022年度书单,不只技术
今年读的闲书仍然比较杂,没有开始专题阅读,怪就怪在手头屯书太多,暂时消化不掉。技术书以电子书为主,实体书只在居家办公的时候抽时间读了几本。
2022-12-26 10:03:48
279
原创 工作中对InheritableThreadLocal使用的思考
大家好,我是方圆。最近在工作中结合线程池使用 InheritableThreadLocal 出现了获取线程变量“错误”的问题,看了相关的文档和源码后在此记录。
2022-11-15 09:37:45
453
原创 如果生活中有什么结解不开,那就打个蝴蝶结吧
罗翔老师有一段采访:“你看小卖部里卖3块钱的水到了五星级酒店能卖50块,所以一个人的价值跟矿泉水一样,关键是看平台,但是即便你是五星级酒店里50块钱的水,你也要记住,其实你不过是小卖部里3块钱的水,而且可能你连3块钱都不值”。
2022-10-17 09:17:59
551
2
原创 方圆的秒杀系统优化方案实战,(十)Kafka实现异步削峰
这篇到了异步实现削峰,对应代码分支是increae_mq,借助的MQ我选择的是Kafka。
2022-06-27 09:20:25
1660
原创 方圆的秒杀系统优化方案实战,(九)Sentinel限流和Nacos配置
大家好,我是方圆。这篇博客将在缓存的基础上,添加限流,并使用Nacos进行配置,对应分支increase_sentinel。
2022-06-23 14:39:40
426
原创 方圆的秒杀系统优化方案实战,(八)商品库存缓存的初始化、扣减和新增
这篇我们来写商品库存在缓存中的初始化、扣减和增加相关的代码,对应的分支是increase_stock_cache,源码以该分支为准。
2022-06-23 14:36:47
554
2
原创 方圆的秒杀系统优化方案实战,(七)操作对缓存的更新
这篇写的是秒杀活动、商品在执行发布、上线和下线操作时对缓存的更新,对应分支是increase_refresh_cache,源码以该分支为准。
2022-06-22 15:53:31
218
原创 方圆的秒杀系统优化方案实战,(六)分布式缓存
这篇我们将在本地缓存的基础上引入分布式缓存,开发分支对应increase_distributed_cache,它是在increase_local_cache分支基础上进行开发和拓展的。
2022-06-22 15:53:10
227
原创 方圆的秒杀系统优化方案实战,(一)想说的话
之前在部门业务中开发过类似秒杀的功能,但是因为QPS并不是很高,所以使用到的技术栈和指定的业务方案比较简单。但是我对此并不满意,再加上之前校招的时候跟着视频写过一个秒杀系统,回头看它觉得它实在是太low了,借着这些引子,想把那些网上听过的不错解决方案实现。为了方便大家参考和仿写,或者是从0到1的开发,我打算,它也像是这个秒杀系统不断演进一样,能够面对更大规模的并发量。
2022-05-31 21:22:35
335
1
原创 我还没来得及问问mentor的名字,他就被开除了...
我不知道我的第一任mentor叫什么名字,只记得HR领我过去的时候,简单的介绍了一下,“方圆,他以后就是你的mentor,demo陈”...
2022-05-30 08:55:06
349
1
原创 面对第一份实习,是经历也是“看见”
大家好,我是方圆。实习是大家踏入职场的第一步,由单纯的学生过渡到职场人,这篇帖子不仅是实习生活中的思考,还包含了从学生到职场人在观念上、和行动上的转变,也写了入职实习后的真正能实践的点,希望对大家有所启发。
2022-05-23 11:14:56
327
原创 缓解迷茫焦虑的最好方法:用自己的方式好好生活
大家好,我是方圆。工作近一年来我有过很多思绪,可随着时间的冲刷或变淡或遗忘,能留下来的,都是我为此挣扎过或被纷扰过的,可能它现在看起来很幼稚,但如果有一天大家感受迷茫和焦虑时它能有一点儿启发,那么也算是这段经历最大的价值了。2. 遗留下来的记忆2.1 善用孤独入职初期我有两种孤独,一是脱离校园群居生活之后的孤独,另外是来自融入职场的孤独。在《纳闷集》中提到孤独和读书的很有意思的一个点,在这里分享出来:书籍的全部意义在于使人善用自己的孤独。 这里书籍并不单纯的指读书,可以换成任何自己喜
2022-05-20 09:49:40
299
原创 代码工程能力比较差,入职后会被同事嫌弃吗?
1. 烦心事儿大家好,我是方圆。最近收到一些牛油儿的私信,“哎呀,方圆,我觉得自己代码工程能力比较差,光背八股文了,入职可能写不出像样的代码”,“方圆,我最近要入职XX了,我需不需要再对此准备些什么,拿到offer之后光玩了,申请入职突然慌了”等等类似的问题,就借着这篇帖子和大家聊聊天吧。2. 只会八股文,只会Hello World会不会因此被嫌弃,或者难以上手工作?除了绝对的大佬以外,大家其实都一样。 只要入职了能用Git把代码顺利拉下来就算胜利。我觉得一点儿都没有夸张,在入职比较长一段时间内都是
2022-04-22 11:38:21
1087
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅