算法与语言
文章平均质量分 80
1.go/Rust/C++语言;
2.算法、数据结构(熟悉B+树、LSM树等)
Skyego
分布式存储小朋友。
展开
-
数组双指针之快慢有效指针
数组的特点就是长度已知可以直接索引找到,这样就可以两头开工,将时间从O(n)降低到O(log2N),这里的策略即左右手指针数组也有缺点,就是他移动起来费劲,单个节点或者某一连续区域的移动,不能有链表那种从链条中断开再接上的方式,当然也必然不能一个直接和某个节点交换位置这本身不符合要求。对于移动就需要有一些策略,来提高效率。比如快慢有效指针,快的探路,慢的只保留有效的。这样就能避免内部移动带来O(n)的代价,从而导致整体代价为O(n2)。原创 2024-06-28 09:36:44 · 283 阅读 · 0 评论 -
链表题目之模拟类
还有一些题目是没有特别复杂的技巧,但是考察仔细程度以及基本的链表处理能力,从而考察在基本的逻辑处理上考虑的全面和细致层度。这类题目对于业务代码编码能力的鉴定的确是有一些帮助。原创 2024-06-23 11:32:31 · 324 阅读 · 0 评论 -
链表题目之技巧类
这一类的题目有一些必要的点要知道,不然做起来挺困难的,在知道技巧点之后相对来说难度还好。原创 2024-06-18 23:25:12 · 290 阅读 · 0 评论 -
链表题目之指定区间处理
链表中有一些题目是需要知道并且记住对应的技巧的,有一些题目就是基本的链表技巧+手动模拟推演注意细节等。对于需要知道并且记住对应技巧的题目会有专门的一栏进行讲解,此类题目主要有:相交链表、环形链表、回文链表等,这些必须要记住对应的破题的题眼。本文主要是讲指定区间的链表,这类题目有一定的共性,而且常考变形题目也较多。原创 2024-06-13 08:11:25 · 609 阅读 · 0 评论 -
链表题目之基本技巧方法篇
本文给出了基本理论和解题思路,以及给出了部分实例和思考过程,具体思路和题目如下:中间节点:快慢指针,一个走1步,一个每次走两步,直到快的走到尾部。(876、2095)倒数第K个节点:快慢指针,一个先走K个,然后一起走,直到快的走到尾部。(19)头插:记录当前的头结点,新来的节点为新的头,会导致链表逆序/反转(206)尾插:记录当前的尾节点,新来的节点为新的尾,要注意封尾(新来的节点可能尾部不干净)。(21)删除(前任删除法):必须要用前一个节点进行处理,这时候会有很多特例,用虚拟头统一化。原创 2024-06-11 23:59:07 · 844 阅读 · 0 评论 -
动态规划1:基本思路
妈妈再也不用担心我的动态规划基本介绍1.动态规划的一般形式就是求最优值,比如最长公共子序列、最大子段和、最优二叉搜索树等等。2.一般暴力破解的题目,即通过遍历所有情况,得到其中的最优解,均可采用动态规划的方式,保存已经解决的子问题的答案,减少重复计算,进而实现剪枝的目的。3.因重点在于状态转移方式,暂称之为状态转移方程法/递推方式法,不过这种问题要用dp命名变量(Dynamic Programming,DP),更具专业性。4.与分治法不同的是,适合动态规划法求解的问题,经分解得到的子问题往往不.原创 2021-07-11 19:51:11 · 1565 阅读 · 0 评论 -
goland等待锁问题
问题描述:向后台发送了一个URL请求,竟然一直卡住,没有返回,就一直卡着问题分析定位:一开始还以为是网络,还是什么其它奇怪的原因,毕竟之前好好的。这里应该第一时间思考环境的变化,网络、程序版本、还是什么地方变化了。后来又试了好几次,发现还是一样,想到了将Pod的数目改成了2个,于是估计是等待锁或者死锁之类的。通过以下链接获取调试信息:curl “127.0.0.1:43411/debug/pprof/goroutine?debug=1” > 1.outcurl “127.0.0.1:原创 2020-11-01 17:21:52 · 749 阅读 · 0 评论 -
golang 调试
golang 调试debug 接口的方式适用于 集成测试 ,因为测试用例和目标服务不在同一个进程里,需要 dump 目标进程的 goroutine stack 来获取泄漏信息。goroutine stack 通常第一行包含着 Goroutine ID,接下来的几行是具体的调用栈信息。有了调用栈信息,我们就可以通过 关键字匹配 的方式来检索是否存在泄漏的情况了。获取调试信息数据找到go pprof对应的端口: "prof": "17020", docker下的映射: 0.0.0.0:43785-原创 2020-11-01 17:15:57 · 577 阅读 · 0 评论