- 博客(472)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 vim如何自动补全,ycm配置
Ubuntu配置vim更新2018年11月8号 用了一段时间的Ubuntu 18简直太方便了。三步操作全部配完!!!git clone https://github.com/chxuan/vimplus.git ~/.vimpluscd ~/.vimplus./install.shcentos7配置ycm更新2018/11/29,对文章进行重新排版大牛的开源项目,一个键配置完...
2018-11-29 15:30:52
5008
3
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 送东阳马生序
余幼时即嗜学。家贫,无从致书以观,每假借于藏书之家,手自笔录,计日以还。天大寒,砚冰坚,手指不可屈伸,弗之怠。录毕,走送之,不敢稍逾约。以是人多以书假余,余因得遍观群书。既加冠,益慕圣贤之道 ,又患无硕师、名人与游,尝趋百里外,从乡之先达执经叩问。先达德隆望尊,门人弟子填其室,未尝稍降辞色。余立侍左右,援疑质理,俯身倾耳以请;或遇其叱咄,色愈恭,礼愈至,不敢出一言以复;俟其欣悦,则又请焉。故余虽愚...
2018-09-30 21:13:42
939
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 链表面试大全
这里处理的全部是单链表:typedef struct node { char *data; struct node *next; } node_t;我们约定一个打印链表的函数:void list_display(node_t *head){ for (; head; head = head->next) printf("%s ",...
2018-09-28 22:47:37
238
原创 一步获取LeetCode的cookies
leetcode pluginplugin 下载https://github.com/shuzijun/leetcode-editor/blob/master/README_ZH.md获取登陆的cookies浏览器F12。console输入javascript:document.cookie 打完收工
2022-04-21 09:24:42
4815
3
原创 micro/protoc-gen-micro 不见了
micro/protoc-gen-micromicro/protoc-gen-micro
2022-03-27 22:19:53
893
3
原创 25. K 个一组翻转链表
25. K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]code/** * Definition for singly-l
2022-02-21 23:29:42
190
原创 23. 合并K个升序链表
23. 合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists =
2022-02-21 11:47:06
254
原创 148. 排序链表
148. 排序链表给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 * 104] 内-105 <= Node.val <= 105进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链
2022-02-21 11:46:02
408
原创 为什么LeetCode过一段时间又不会了
为什么上个月刚做过的LeetCode今天做又不会了怎么从这个迷宫的左上角走到右下角?看起来好像很给力,但是花时间还是可以找得到答案。看了答案之后可以很清楚,这是正解。只有一个问题:我怎么就没立刻想到? 当在看题解或者听别人讲授思路的时候,你就是按照正确的路线在走迷宫。而过了一个月,你重新再做一次的时候就又会把所有可能遍历一次。答案在展现给人的时候,我们都会觉得它显而易见。因为难点不在于答案本身,而在于方向。如何找到这个方向呢?在于搜索能力,以及经验与练习。DFS或者BFS把所有的可
2022-02-01 11:16:32
447
原创 Intelij 添加php注释
没有methodParameters())groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ((i < params.size() - 1) ? '\\n':'')}; return r
2020-11-09 17:32:57
209
原创 303. 区域和检索 - 数组不可变
303. 区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不可变。会多次调用 sumRange 方法。https://leetcode-c
2020-09-25 21:15:27
228
原创 链表相加 2. 两数相加
2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807https://leetcode-cn.com/pro
2020-09-25 11:59:06
293
原创 Go 语言实现 23 种设计模式适配器
Go 语言实现 23 种设计模式适配器将一个类型的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的类可以一起工作。Example_onepackage mainimport "fmt"// Adaptee 适配者type MyLegacyPrinter struct{} func (l *MyLegacyPrinter) Print(s string) (newMsg string) { newMsg = fmt.Sprintf("Legacy Printer:
2020-07-18 14:17:13
285
原创 Go 语言实现 23 种设计模式 单例模式
Go 语言实现 23 种设计模式 单例模式单例模式单例模式是一种常用的软件设计模式,在使用过程中,单例对象的类只有一个实例。使用单例模式,1 可以节省内存等资源,例如windows操作系统的资源管理器只有一个就够了。2 方便配置管理,例如,服务器的配置信息存放在一个文件中,配置信息由一个单例实例统一读取,进场中的其他对象通过这个单例实例获取配置信息。实例1下面这段代码有什么问题,从多线程角度思考,就会发现下面的代码是非线程安全的,比如有两个线程都在调用NewInstance1函数,线程A在执行到if
2020-07-18 13:52:43
669
原创 Go 语言实现 23 种设计模式(修饰器)
修饰器修饰器模式就是在不改变对象内部结构的情况下,动态扩展它的功能。Example_onetype Object func(string) stringfunc Decorate(fn Object) Object { return func(base string) string { ret := fn(base) ret = ret + " and Tshirt" return ret }}func Dressing(cloth string) string { ret
2020-07-18 13:07:16
274
原创 gorm踩的坑
gorm的那些坑1. db.SingularTable(true)在Gorm中,表名是结构体名的复数形式,列名是字段名的蛇形小写。即,如果有一个user表,那么如果你定义的结构体名为:User,gorm会默认表名为users而不是user。db.SingularTable(true) 让grom转义struct名字的时候不用加上s2. Rows.Next() 需要关闭user := new(User)rows, err := engine.Where("id >?", 1).Rows(us
2020-07-09 19:16:25
4229
原创 goland远程调试Docker
开发环境goland windows10Docker centos IP:123.57.43.91操作原理及流程goland通过tcp/8080(应该选取2375,登录阿里云开启这个端口,这里临时采用)端口与docker-host通信, 发送docker指令,然后让linux执行,通过docker指令,创建image,运行container,实现host与container之间目录挂载,端口映射等操作。然后使用SFTP进行代码的上传 。配置端口和重启sudo vim /lib/systemd/s
2020-06-26 11:36:14
2399
原创 goland中grpc的安装
安装 gRPC网络环境允许的同学安装 gRPC 非常方便,直接执行以下命令即可安装完成:go get -u -v google.golang.org/grpc为什么已经翻墙了可是goland还是不行?Fetching https://google.golang.org/grpc?go-get=1https fetch failed: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeou
2020-06-23 09:19:50
952
原创 DFS
1254. 统计封闭岛屿的数目func closedIsland(grid [][]int) int { var num int for i:=0; i<len(grid); i++ { for j:=0; j<len(grid[0]); j++ { if grid[i][j] == 0 && dfs(grid, i, j) { num += 1 } } } return num}func dfs(grid [][]int, i, j
2020-06-14 11:09:59
231
原创 Redis运维和开发学习目录
Redis运维和开发学习笔记-全书思维导图Redis运维和开发学习笔记(1) Redis简介Redis运维和开发学习笔记(2) redis持久化Redis运维和开发学习笔记(3)redis搭建集群Redis运维和开发学习笔记(4) Redis参数意义Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令Redis运维和开发学习笔记(7) 内存管理和过期策略...
2020-06-11 14:56:53
246
原创 循环链表的反转
206. 反转链表func reverseList(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } p := reverseList(head.Next) head.Next.Next = head head.Next = nil return p}循环链表的反转func reverse(head, key *ListN
2020-06-09 15:38:09
1573
原创 LeetCode (合集)合并链表和数组
LeetCode 88. 合并两个有序数组 golangLeetCode 21. 合并两个有序链表 golang
2020-05-12 17:22:45
258
原创 LeetCode 88. 合并两个有序数组 golang
88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]...
2020-05-12 17:20:03
251
原创 LeetCode 128. 最长连续序列 golang
128. 最长连续序列【困难】给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。Code// 解题思路// 将所有nums中元素录入numMap// 对每个numMap中元素,检测是否是第一个起始元素,如果不是起始元素,skip;如果是,对该元素循环+1从numMap找到该元素对应的最长currentLength
2020-05-11 16:23:45
385
原创 LeetCode(合集)括号 golang
LeetCode(合集)括号20. 有效的括号 golang(三)22. 括号生成 golang 图解
2020-05-11 15:24:22
204
原创 LeetCode 20. 有效的括号 golang(三)
20. 有效的括号这个题做了三次,前两次的解法现在觉得是算不得正确的。看的多写得少做的多总结少给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: falseMefunc isValid(s
2020-05-11 15:22:19
240
原创 LeetCode(集合)队列和栈的相互实现 golang
手写!!!225. 用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。你可以假设所有操
2020-05-10 15:45:39
241
原创 LeetCode(合集)删除数组中的元素(26,80,283)
26. 删除排序数组中的重复项80. 删除排序数组中的重复项 II golang283. 移动零 golang
2020-05-10 13:52:23
172
原创 283. 移动零 golang
283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。Codefunc moveZeroes3(nums []int) { j := 0 for i := 0; i < len(nums); i++ { if nums[i] == 0 { continue } nums[j]
2020-05-10 13:16:46
181
原创 80. 删除排序数组中的重复项 II golang
80. 删除排序数组中的重复项 II给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,1,2,3,3]
2020-05-10 13:16:05
202
原创 26. 删除排序数组中的重复项 golang
26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度
2020-05-10 13:15:18
183
原创 45. 跳跃游戏 II golang 动态规划
45. 跳跃游戏 II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。Codefunc jump(nums []int) int { length :=
2020-05-09 23:04:18
231
原创 1346. 检查整数及其两倍数是否存在 golang
1346. 检查整数及其两倍数是否存在1346. 检查整数及其两倍数是否存在给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。更正式地,检查是否存在两个下标 i 和 j 满足:i != j0 <= i, j < arr.lengtharr[i] == 2 * arr[j]示例 1:输入:arr = [10,2,5,3]输出:true解释:N = 10 是 M = 5 的两倍,即 10 = 2 * 5 。示例
2020-05-09 19:25:19
459
原创 LeetCode 33. 搜索旋转排序数组 golang
33. 搜索旋转排序数组三个测试用例, 这个题的难度是二分法的左侧条件很难写出来。4 5 6 0 1 2 31 2 3 4 5 6 05 1 2 3 4( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度...
2020-05-06 23:52:44
171
原创 LeetCode(合集)两数之和总结 (1,167,1346)
两数之和 1167. 两数之和 II - 输入有序数组 golang一个数组是否存在两个数是target的整数倍?如果有人知道这是LeetCode哪个题,给我说一下给每个数做整除,然后在遍历...
2020-04-29 21:26:56
170
原创 1190. 反转每对括号间的子串 golang反转字符串
1190. 反转每对括号间的子串557. 反转字符串中的单词 III 344. 反转字符串 golang 这个题比较新,但是面试竟然被问到了。10分钟之内没写出来给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“d...
2020-04-29 11:26:18
501
1
原创 6.824 Raft lesson4 2020(一)
raft实现距离上一篇文章一个月,因为6.824的课程看不懂,基础知识薄弱。现在了解一点Raft算法(自己动手实现一遍)还需要其他分布式相关的基础知识(实现一个分布式对象存储系统),然后再去继续学习。总结一下,如果直接就去学习6.824的课程收效甚微,一定要有一定基础知识储备才可以!Raft算法简单实现。package mainimport ( "fmt" "log" "mat...
2020-04-26 21:27:18
593
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人