- 博客(59)
- 资源 (1)
- 收藏
- 关注
原创 数组双指针之快慢有效指针
数组的特点就是长度已知可以直接索引找到,这样就可以两头开工,将时间从O(n)降低到O(log2N),这里的策略即左右手指针数组也有缺点,就是他移动起来费劲,单个节点或者某一连续区域的移动,不能有链表那种从链条中断开再接上的方式,当然也必然不能一个直接和某个节点交换位置这本身不符合要求。对于移动就需要有一些策略,来提高效率。比如快慢有效指针,快的探路,慢的只保留有效的。这样就能避免内部移动带来O(n)的代价,从而导致整体代价为O(n2)。
2024-06-28 09:36:44
330
原创 链表题目之模拟类
还有一些题目是没有特别复杂的技巧,但是考察仔细程度以及基本的链表处理能力,从而考察在基本的逻辑处理上考虑的全面和细致层度。这类题目对于业务代码编码能力的鉴定的确是有一些帮助。
2024-06-23 11:32:31
359
原创 链表题目之指定区间处理
链表中有一些题目是需要知道并且记住对应的技巧的,有一些题目就是基本的链表技巧+手动模拟推演注意细节等。对于需要知道并且记住对应技巧的题目会有专门的一栏进行讲解,此类题目主要有:相交链表、环形链表、回文链表等,这些必须要记住对应的破题的题眼。本文主要是讲指定区间的链表,这类题目有一定的共性,而且常考变形题目也较多。
2024-06-13 08:11:25
665
原创 链表题目之基本技巧方法篇
本文给出了基本理论和解题思路,以及给出了部分实例和思考过程,具体思路和题目如下:中间节点:快慢指针,一个走1步,一个每次走两步,直到快的走到尾部。(876、2095)倒数第K个节点:快慢指针,一个先走K个,然后一起走,直到快的走到尾部。(19)头插:记录当前的头结点,新来的节点为新的头,会导致链表逆序/反转(206)尾插:记录当前的尾节点,新来的节点为新的尾,要注意封尾(新来的节点可能尾部不干净)。(21)删除(前任删除法):必须要用前一个节点进行处理,这时候会有很多特例,用虚拟头统一化。
2024-06-11 23:59:07
905
1
原创 MIT6.824-Raft笔记6:不一致log处理、日志快照
本部分主要是关于不一致的日志是怎么决策和取舍的。同时对于日志的恢复,通过快照的方式提高恢复的效率。
2023-12-13 22:00:00
1176
原创 MIT6.824-Raft笔记5:leader选举约束及持久化
本文主要是leader选举相关的一些约束条件,以及为了满足这些约束条件,需要将部分重要数据进行持久化。
2023-12-10 11:12:19
989
原创 MIT6.824-Raft笔记4:leader选举及随机超时时间
为什么要有leader以及leader的选举过程和避免一直选不出来的"大杀器"随机超时时间。
2023-12-01 20:00:00
2104
原创 MIT6.824-Raft笔记3:Raft日志、应用层和raft之间的日志“传递“
raft的日志到底是干什么的,为什么raft的日志这么重要?raft在应用程序中,作为被调用的库,和上层应用的关系是什么?
2023-11-28 21:00:00
1137
原创 MIT6.824-Raft笔记:Raft初探、副本间log时序
从宏观角度说明raft在程序中的作用,和客户端的关系,以及多个副本之间的关系;从微观角度说明多个副本之间raft对日志处理的流程。
2023-11-25 12:50:33
1123
原创 二-内存模型及所有权和引用、借用
上文示例,其实就是所有权转移,Rust通过一个堆内的“对象”,只能有一个变量拥有它的所有权这种方式,就能很好的追踪何时可以自动GC,在编译的时候,追踪这个对象的所有权变量,以及这个变量的使用情况,就可以在不用的时候释放内存。这样的限制,避免一个堆内存被多个变量指向,一是写代码的人容易勿删导致悬垂引用,二是只有一份所有权的情况下,编译器就可以盯着有所有权的这个变量的生命周期的范围,从而知道啥时候到期进行自动GC。学c++的同学,可能联想到,如果这个指针,在最后一行打印之前,被Delete了,那的确会异常。
2023-11-19 12:18:22
387
原创 第一篇-专题说明及当前进度
从知道Rust、决定要学Rust到开始学Rust经历了一些时间,后面进一步了解C++之后又鉴定了学习Rust的必要性。鉴于Rust学习来有些痛苦,有点难,以及工作中暂时用不到、目前主要是go,本身Rust也不能像其他语言那样学习等原因,决定在学习、实践的同时,进行记录和分享,既是对自己的记录同时也是一种督促,同时或许能起到些许作用,为其他人的学习的路上提供一些正面、负面的参考。自己作为三年多的Go语言程序员,也仔细阅读了两三本go语言的书,也写了一些比较重要的项目和一些流水账式的代码。
2023-11-05 16:10:51
399
原创 dd简单使用-存储视角
简单粗暴 随叫随到的工具dd 单纯的用 open + read + seek + write 这四个 api 在做文件操作,除了 iflag 可以多指定一些打开参数之外,没有任何魔法。
2023-11-04 18:21:25
366
原创 ESDB Processing Extremely Skewed Workloads in Real-time论文翻译
ESDB,基于elasticsearch提出了动态二次哈希作为处理极端倾斜工作负载的解决方案以及对查询和副本数据文件同步的优化
2022-06-28 21:00:00
1031
原创 golang简单定时执行功能
golang中的cron功能完整全面,但是如果只需要定时每天在某个时间点执行某任务,只需要如下简单实现。获取到自定时间的Durationimport ( "testing" "time")//SetTime 获取到自定时间的Duration 误差在1s内//计算设置时间和当前时间的差值,大于当前时间则返回,否则为第二天的时间func SetTime(hour, min, second int) (d time.Duration) { now := time.Now() setTim.
2021-11-21 21:02:41
3393
2
原创 go tool pprof自动化检测
注意控制频率,因为可能会STW问题背景平时查看问题,可以通过go tool进行查看,内存,函数栈,CPU等信息,但是如果需要定时获取内存信息,查看内存占用排名较高的函数是不是某个特定的函数,就需要调研go tool的高阶使用方案。梳理调研经过调研 pprof可以通过添加参数获取不同的指标,详见https://github.com/google/pprof/blob/master/doc/README.md如下两个例子,第一个获取文本格式的数据,以cum排序,显示10条数据,也就是获取cum排序前十
2021-11-02 18:30:37
355
原创 Lecture 04: VMware FT(MIT6.824)
这一节课更多地讨论一些关于容错(Fault-Tolerance)和复制(Replication)的问题以及VMware FT。容错本身是为了提供可用性,比如计算机硬件和网络都有可能出现问题,这里所使用的工具就是复制。那么复制到底能处理何种故障?4.1 FailuresFail-stop faults简单来说复制能够处理单台计算机的fail-stop故障,如果某些东西出现故障,只是单纯的停止运行,而不是运算出错误结果。 比如电源线、服务器风扇导致CPU过热停止运行、网络等故障。网络隔离场景很有趣,因为
2021-09-02 22:58:16
806
原创 Lecture3:GFS (MIT6.824)
笔者的个人理解以注释的方式书写。这门课程的主要内容是“大型存储”,GFS是这门课里有关如何构建大型存储系统的众多案例学习的第一篇。存储是一种关键的抽象,很多系统要么是设计的简单易用的存储接口,要么是基于底层存储进而构建。在分布式系统中,可能有各种各样重要的抽象可以应用在分布式系统中,但是实际上,简单的存储接口往往非常有用且极其通用。构建分布式系统大多都是关于如何设计存储系统,或是设计其它基于大型分布式存储的系统。因此我们会更加关注如何为大型分布式存储系统设计一个优秀的接口,以及如何设计优秀的存储系统的.
2021-08-25 21:10:06
480
原创 Lecture 1:分布式系统的主要技术思想 (MIT6.824)
笔者的个人理解以注释的方式书写。1.1 分布式系统的驱动力和挑战(Drivens and Challenges)分布式系统的核心是通过网络来协调,共同完成一致任务的一些计算机。分布式计算之所以如此重要的原因是,许多重要的基础设施都是在它之上建立的,它们需要多台计算机或者说本质上需要多台物理隔离的计算机。在你设计一个系统时或者面对一个你需要解决的问题时,如果你可以在一台计算机上解决,而不需要分布式系统,那你就应该用一台计算机解决问题。有很多的工作都可以在一台计算机上完成,并且通常比分布式系统简单很多。.
2021-08-22 22:56:26
416
原创 动态规划1:基本思路
妈妈再也不用担心我的动态规划基本介绍1.动态规划的一般形式就是求最优值,比如最长公共子序列、最大子段和、最优二叉搜索树等等。2.一般暴力破解的题目,即通过遍历所有情况,得到其中的最优解,均可采用动态规划的方式,保存已经解决的子问题的答案,减少重复计算,进而实现剪枝的目的。3.因重点在于状态转移方式,暂称之为状态转移方程法/递推方式法,不过这种问题要用dp命名变量(Dynamic Programming,DP),更具专业性。4.与分治法不同的是,适合动态规划法求解的问题,经分解得到的子问题往往不.
2021-07-11 19:51:11
1624
原创 go tools pprof 快速使用笔记
目标:快速安装 + 成功使用上,主要是应对工作当中突然需要使用这个进行分析,并且之前没用过的情况安装1.首先安装go并配置环境go version 判断是否成功2.安装go tools到github上下载go tools(https://github.com/golang/tools%E3%80%82%E8%A7%A3%E5%8E%8B%E8%AF%A5%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%
2021-04-08 13:09:02
1035
原创 讲给Java/C++开发者的Go高效并发编程-学习笔记
Channel 没有buffer的,需要发送和接收的同时准备好,不然另一方就会阻塞住可以用channel实现 futureRate Limit 限流不是限制并发量,而是限制请求的频率,比如一分钟可以处理10个,但是可能10个都是第一秒请求,就需要进行限制。可以通过token实现Trapsgolang都是传值的,slice 和 channel也是传值的,只不过复制了结构里面的指针上图,第一个所有值都是一个,第二个才是正确的。上图,第一个 会导致其他的go routine 泄露,因为用的无
2021-01-17 18:07:47
222
原创 HDFS负载均衡1-Data Node负载均衡
Hadoop 分布式文件系统(Hadoop Distributed File System),简称 HDFS,被设计成适合运行在通用硬件上的分布式文件系统。GFS是谷歌一篇论文上所阐述的一个分布式文件系统。两者均将数据分为一个分片(chunk/block/partition),以及对应会有多个副本,分别分布在不同的Node节点上,从而能够满足高可用以及稳定性的要求。但是对于一个Node以及其具体所包含的某个disk上,如果一个disk写满了,上面的所有副本都是只读状态,进而无论这个分片其它副本是否可写,
2020-12-15 22:04:12
1152
原创 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
800
原创 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
632
原创 go语言接口与duckTyping
go语言接口与duckTyping何为duck Typing个人通俗解释:不同于类的界门纲目科属种,这种才是鸭子;而是凡是具有鸭子的功能,那就可以认为其是鸭子。结合代码层面大概是:并非得继承接口(并非一定是鸭科,河鸭属),而是一个sruct只要实现了里面的方法,就可以用这个接口进行调用(就是鸭子了)非常简单的代码func main(){ var bbb BBB bbb = AAA{123} // 这里对于cesGGG()无所谓AAA实现其他的,只要实现了需要的接口就可以调用,亦
2020-05-19 18:18:37
838
原创 GoLand Test framwork quit unexpectedly
莫名遇到GoLand Test framwork quit unexpectedly问题,如下图,在目录下,使用go test .可以 ;百度无果,后发现文件夹命名导致冲突:(t *testing.T) ,和testing重名。以及在编译器出问题时,可以用命令试一下。...
2020-05-18 18:48:35
1904
原创 PostgreSQL备份恢复
PostgreSQL备份恢复假死如果dump出来的是单个表,那么恢复就必须是单个表,即-t tableName背景:postgreSQL 提供的备份功能 pg_dump:不支持跨数据库操作、不支持部分数据需要备份的并非整个DB,而是其中的部分表1.备份表结构这里主要需要的信息有:建表SQL、表的主键外键、表的索引先通过导出数据库结构的方式,用户模式下pg_dump -U postg...
2020-05-18 12:05:50
124
原创 32个知识点
一、面试岗位选择1.公司&团队:第一维度为业务/团队小公司大公司核心业务/团队〇✔边缘业务/团队✖〇2.岗位匹配度:与自己发展方向越匹配越好面试准备面试准备决定面试成功与否影响面试成败三大基石:能力,面试,沟通 第一,优秀的技术基本功是必要条件,没有技术能力其他的无从谈起。 第二,注重平衡心态,过于紧张...
2020-05-18 12:01:47
850
原创 Kettle日常使用汇总整理
Kettle日常使用汇总整理Kettle源码下载地址:https://github.com/pentaho/pentaho-kettleKettle软件下载地址:https://sourceforge.net/projects/pentaho/files/Data%20Integrationkettle-plugin源码下载地址:https://gitee.com/niva...
2019-06-10 17:58:41
1198
原创 kettle表输出和插入/更新的区别
kettle表输出和插入/更新的区别源表、目标表共有的字段,表输入不会更改,只同步新的字段。插入/更新,会更新,同时亦会插入新的字段
2019-05-31 15:52:02
6496
原创 FATAL: role "postgres" does not exist 解决
安装了数据库,然而登录时出现了FATAL: role "postgres" does not existwindows 找到bin目录下,命令窗口:createuser -s postgresLinux等类似:/Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres...
2019-05-29 14:12:34
13445
转载 SpringMVC关于json、xml自动转换的原理研究[附带源码分析]
SpringMVC关于json、xml自动转换的原理研究[附带源码分析]转载:https://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html目录前言 现象 源码分析 实例讲解 关于配置 总结 参考资料前言SpringMVC是目前主流的Web MVC框架之一。如果有同学对它不熟悉,那么请...
2019-04-13 17:45:30
214
commons-fileupload-1.3.1.jar commons-io-2.2.jar
2019-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人