Kylin_Mountain
码龄12年
  • 140,935
    被访问
  • 78
    原创
  • 1,519,100
    排名
  • 64
    粉丝
  • 0
    铁粉
关注
提问 私信

个人简介:A golang programer.

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2010-05-27
博客简介:

KylinMountain的笔记

查看详细资料
个人成就
  • 获得20次点赞
  • 内容获得57次评论
  • 获得42次收藏
创作历程
  • 57篇
    2020年
  • 14篇
    2015年
  • 2篇
    2013年
  • 5篇
    2012年
  • 6篇
    2011年
成就勋章
TA的专栏
  • Golang
    7篇
  • LeetCode探索 Go语言实现
    50篇
  • Redis
  • MySQL
  • Android
    20篇
  • 杂
    4篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    架构
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

GopherChina 2020 Go Programming Patterns 学习笔记篇2

本篇继续学习左耳朵耗子老师的Go Programming Patterns下半部分,PPT太长了,70多页。Topic 10 函数化的选项配置由于Golang不允许使用同一个名字来命名函数,必须是不同的名称,即使参数不同,这与Java不一样,java的方法签名是包含参数的。所以遇到那种多个参数来实例化一个变量的,就会比较麻烦。会有类似代码产生:type Server struct { Addr string Port int Protocol string Timeout time.Dura
原创
发布博客 2020.12.09 ·
145 阅读 ·
0 点赞 ·
0 评论

GopherChina 2020 Go Programming Patterns 学习笔记篇1

今天学习的是左耳朵耗子老师的 Go Programming PatternsTopic 1 Slice我们知道Slice是一个结构体type SliceHeader struct { Data uintptr Len int Cap int}一个var a []int 是nil,但是它的len和cap都将是零,因为值是初始化这个slice结构体的零值,即SliceHeader{ Data: nil, Len: 0, Cap: 0,}PPT里讨论的是slice的共享内存,在
原创
发布博客 2020.11.27 ·
194 阅读 ·
0 点赞 ·
0 评论

Golang 基本类型字符串、数组和Slice

字符串String字符串的底层表示type StringHeader struct { Data uintptr Len int}Data 指向底层的字符数组Len 表示字符串的长度Go语言中,所有的文件都采用UTF-8编码,字符常量也是用的是UTF-8字符编码集。UTF-8 是可变长的编码方式,比如ASCII码 就用一个字节表示,中文就是3个字节表示。我记得ASCII的UTF-8编码是最高位为0。使用range 轮询字符串,所出来的是utf-8编码的符文rune。比如"Hello你
原创
发布博客 2020.08.12 ·
159 阅读 ·
0 点赞 ·
0 评论

Golang 逃逸分析

以下摘自https://studygolang.com/articles/21788和https://zhuanlan.zhihu.com/p/91559562,仅做笔记使用。1. 为什么要做逃逸分析我们提到go语言中对象内存的分配不是由语言运算符或函数决定,而是通过逃逸分析来决定。为什么要这么干呢?其实说到底还是为了优化程序。如果分配到栈上,待函数返回资源就被回收了如果分配到堆上,函数返回后交给gc来管理该对象资源,栈资源的分配及回收速度比堆要快,所以逃逸分析最大的好处应该是减少了GC的压力。
原创
发布博客 2020.08.12 ·
223 阅读 ·
0 点赞 ·
0 评论

Golang 深入浅出map

网上很多博客都对map的内部实现讲了很多,很多人可能看完都绕晕了,看完可能装载因子是多少,扩容倍率是多少还是没搞清楚。没错我就是这样子,QAQ。直接给出结果,装载因子6.5,扩容倍率是2倍,采用拉链法。这个拉链法并不是传统意义上的数组加链表,而是数组桶加数组的形式。接下来我们一步一步简单说明好了。map的创建,一般是通过make来初始化的,编译时会将make替换为如下的runtime makemap。可以看到,它返回的是一个叫做hmap的指针,这也是为何说map是一个指针,所以参数传递放心大胆的传,内部
原创
发布博客 2020.08.11 ·
108 阅读 ·
0 点赞 ·
2 评论

Go语言中Goroutine如何退出

在Go语言中,启动一个协程Goroutine很方便,一行代码的事儿,比如go runTask()。但是如果runTask要在运行中途退出呢?有人说用channel,那么如何在web请求中,每次拿到那个channel呢?没写过的人,一时半会还真想不清楚。我们在web请求中,启动了一个goroutine来运行某个任务,就像这样 go runTask()。它的内部是一个for循环,循环获取数据,同时检查任务的运行状态。如果不再是运行状态了,就可以退出了。如果我们的流程是这样的,启动任务A,假设它跑在gorou
原创
发布博客 2020.07.23 ·
1269 阅读 ·
0 点赞 ·
0 评论

leetcode 探索 哈希表 快乐数

题目编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:1^2 + 9^2 = 828^2 + 2^2 = 686^2 + 8^2 = 1001^2 + 0^2 + 0^2 = 1分析这
原创
发布博客 2020.07.11 ·
82 阅读 ·
0 点赞 ·
0 评论

leetcode 探索 哈希表 两个数组的交集

题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。分析通过遍历一遍数组1,然后加入到map中。这样再遍历数组2,遇到数组1中有的,就加入结果集,同时要注意到题目要求结果集是唯一的,那么我们在遇到过之后,就要把map中
原创
发布博客 2020.07.11 ·
108 阅读 ·
0 点赞 ·
0 评论

leetcode 探索 哈希表 只出现一次的数字

题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4分析此题有两种解法,第一种借用辅助空间来实现,遍历一遍记录每个元素出现的次数。再遍历一次,找出只出现一次的元素。第二种就比较巧妙了,使用了位运算异或,即所有数如果相同,那么他们的结果就会为0,因为相同。所以把所有
原创
发布博客 2020.07.11 ·
88 阅读 ·
0 点赞 ·
0 评论

leetcode探索 哈希表 存在重复元素

题目给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: truehttps://leetcode-cn.com/explore/learn/card/hash-table/204/practical-application-hash-set/805/分析使用hashmap,循环时候,判断当前数值是否已经在map中了。解法func containsDup
原创
发布博客 2020.07.11 ·
152 阅读 ·
0 点赞 ·
0 评论

leetcode 探索 队列与栈 用队列实现栈

题目使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空分析用go里的slice就好了。解法type MyStack struct { Space []int}/** Initialize your data structure here. */func Constructor() MyStack { return MyStack{}}/** Push ele
原创
发布博客 2020.07.08 ·
49 阅读 ·
0 点赞 ·
0 评论

leetcode 探索 队列与栈 用栈实现队列

题目使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。分析用两个栈即可实现队列,push不变,只要在pop时候把push的栈,导入到另外一个栈,即实现了栈的倒置,也就是队列。A栈后进先出,比如push进去1 2 3 4 5,那么出栈就是5 4 3 2 1。将出栈的元素再入栈到栈B,则变成5 4 3 2 1。所以1又到了第一位。解法type MyQueue s
原创
发布博客 2020.07.08 ·
57 阅读 ·
0 点赞 ·
0 评论

leetcode 探索队列与栈 克隆图

题目给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。邻接列表 是用
原创
发布博客 2020.07.07 ·
53 阅读 ·
0 点赞 ·
0 评论

leetcode 探索队列与栈 逆波兰表达式

题目根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9分析逆波兰表达式,其实就是扫描到运算符的时候,就从栈里弹出两个元素进行计算,计算
原创
发布博客 2020.07.03 ·
58 阅读 ·
0 点赞 ·
0 评论

leetcode 探索队列与栈 每日温度

题目请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。分析这个题第一个想法是双指针,即从左侧向
原创
发布博客 2020.07.03 ·
98 阅读 ·
0 点赞 ·
0 评论

leetcode探索队列与栈 有效的括号

题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true分析这题比较简单,使用栈的LIFO的特性,如果是左边的括号就进栈,如果是右边的括号,就与栈顶元素比较,是他的另外一边,就弹栈。继续前进,利用了括号成对的特性,即最内层的左括号
原创
发布博客 2020.07.03 ·
73 阅读 ·
0 点赞 ·
0 评论

leetcode 探索队列与栈 最小栈

题目设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,nu
原创
发布博客 2020.07.03 ·
64 阅读 ·
0 点赞 ·
0 评论

leetcode 探索 队列与栈 完全平方数

题目给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.分析仍然是广度优先搜索BFS,注意step的增加,要每一轮或者说每一圈搜索结束后,再增长。BFS三大核心,visited,queue,step。解法func numSquares(n int
原创
发布博客 2020.07.03 ·
91 阅读 ·
0 点赞 ·
0 评论

leetcode 探索 队列与栈 打开转盘锁

题目你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表可以解锁的数
原创
发布博客 2020.07.01 ·
54 阅读 ·
0 点赞 ·
0 评论

leetcode 每日打卡 用两个栈实现队列

题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“appendTai
原创
发布博客 2020.06.30 ·
148 阅读 ·
0 点赞 ·
0 评论
加载更多