- 博客(68)
- 收藏
- 关注
原创 机场导航。。。
https://github.com/winston779?tab=repositories&q=&type=&sort=stargazers
2024-06-11 10:13:40
292
原创 【go实现】任意类型结构体比较
func main(){ fmt.Println(Equal(1,1))}func isFunction(arg interface{}) bool { if arg == nil { return false } return reflect.TypeOf(arg).Kind() == reflect.Func}func validateEqualArgs(expected, actual interface{}) error { if expected == nil &&a
2021-11-20 17:37:28
532
原创 20210728
1、垃圾回收2、1.8垃圾回收会不会stw3、goroutine4、数据库视图5、mysql锁6、死锁7、new的对象在堆还是栈,为什么8、数据库三大范式9、软件设置原则10、设计模式11、sql优化
2021-07-29 09:52:51
102
原创 【golang】放苹果
题目描述把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。数据范围:0<=m<=10,1<=n<=10。本题含有多组样例输入。输入描述:输入两个int整数输出描述:输出结果,int型示例1输入:7 3复制输出:8package mainimport ( "bufio" "fmt" "os" "strconv" "strings")/*设f[m][n]为
2021-07-21 18:29:03
188
原创 【golang】二叉树 前序、中序、后序 遍历
拿下面这个树举例牢记三种遍历的规则:注意这里面的前中后指的是跟节点的遍历顺序先序:跟左右中序:左右根后序:左右跟代码实现采用go语言,利用的递归package mainimport "fmt"// 二叉树三种遍历方式type node struct { value string leftNode *node rightNode *node}func main() { n := node{} node := n.newTree() n.bShow(no
2021-07-08 17:50:07
224
原创 【golang】查找兄弟单词
定义一个单词的“兄弟单词”为:交换该单词字母顺序(注:可以交换任意次),而不添加、删除、修改原有的字母就能生成的单词。兄弟单词要求和原来的单词不同。例如:ab和ba是兄弟单词。ab和ab则不是兄弟单词。现在给定你n个单词,另外再给你一个单词str,让你寻找str的兄弟单词里,按字典序排列后的第k个单词是什么?注意:字典中可能有重复单词。本题含有多组输入数据。输入描述:先输入单词的个数n,再输入n个单词。 再输入一个单词,为待查找的单词x 最后输入数字k输出描述:输出查找到x的兄弟单词的个数m
2021-07-07 17:17:27
130
原创 golang 详解协程——errgroup
为什么要有sync.errgroupgo支持并发,一般采用的是 channel 或者 sync.WaitGroup ,来实现各个协程之间的流程控制和消息传递。但是对于开启的成千上万的协程,如果在每个协程内都自行去打印 错误日志的话,会造成日志分散,不好分析。所以我们要实现一种能统一处理各个协程错误的工具什么是 sync.errgroupGo团队在实验仓库中添加了一个名为sync.errgroup的新软件包。 sync.ErrGroup再sync.WaitGroup功能的基础上,增加了错误传递,以及
2021-07-06 14:42:46
1648
1
原创 【golang】链表(输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针)
描述输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。链表结点定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;};正常返回倒数第k个结点指针,异常返回空指针本题有多组样例输入。输入描述:输入说明1 输入链表结点个数2 输入链表的值3 输入k的值输出描述:输出一个整数示例1输入:81 2 3 4 5 6 7 84复制输出:5这道题和链表貌似没有什么关系,他给的结构
2021-07-02 15:59:04
1287
原创 【golang】字符串计数(编写一个函数,计算字符串中含有的不同字符的个数。
编写一个函数,计算字符串中含有的不同字符的个数。字符在ASCII码范围内(0~127,包括0和127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。输入描述:输入一行没有空格的字符串。输出描述:输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。示例1输入:abc复制输出:3package mainimport "fmt"func main() { var
2021-06-30 17:41:14
828
原创 【golang】数据分类处理(信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录)
描述信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。请注意本题有多组输入用例。输入描述:一组输入整数序列I和一组规则整数序列R,I和R序列的第一个整数为序列的个数(个数不包含第一个整数);整数范围为0~0xFFFFFFFF,序列个数不限输出描述:从R依次中取出R,对I进行处理,找到满足条件的I:I整数对应的数字需要连续包含R对应的数字。比如R为23,I为231,
2021-06-30 17:38:22
444
原创 【golang】写出一个程序,接受一个十六进制的数,输出该数值的十进制表示
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。输入描述:输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder.com/discuss/276处理多组输入的问题。输出描述:输出该数值的十进制字符串。不同组的测试用例用\n隔开。示例1输入:0xA0xAA复制输出:10170func main() { input := bufio.NewScanner(os.Stdin) for input.Scan()
2021-06-28 10:48:37
457
原创 利用DEBUG调试,查看程序GMP调用情况
利用DEBUG调试,查看程序GMP调用情况先编译go文件go build test.go开启调试信息GODEBUG=schedtrace=1000 ./test.exe1000指的是打印时间间隔调试后,控制台会输出如下内容SCHED 0ms: gomaxprocs=6 idleprocs=5 threads=6 spinningthreads=0 idlethreads=3 runqueue=0 [0 0 0 0 0 0]我们来分析下上面这些内容的含义(不了解GMP模型的绕道).
2021-06-08 10:25:40
135
原创 git 将A分支的某个commit合并到B分支
有时候我们需要将某个分支的某个提交合并到其他分支。比如自己新建一个分支开发了很多功能,现在要将某一个提交合并到master 发布先查询到对应的commitid,并复制git log切换到目标分支git checkout master将刚刚查询出的提交,合并到目标分支git cherry-pick 123abc最后再更新到远端git push...
2021-06-02 18:34:19
814
原创 git更新本地代码(git reset)
有时候我们想要放弃本地修改,直接把 本地代码更新,和远端保持一致比如 一些经常更新的配置文件。我们在修改前可以更新下,避免冲突更新本地 仓库的代码git fetch --all 利用 git reset 强制覆盖本地代码git reset --hard origin/branchgit pull 检查是否保持一致git pull注意:本地修改会丢失,根据需要在操作前备份...
2021-05-28 15:47:11
645
原创 git 合并多个commit(goland)
用命令合并 commit 多多少少有点麻烦,发现一个更快速的方法如何利用 goland 快速 合并多个commit点击 goland 左下角 git 按钮,会显示你的 gitlog下图是你的 gitlog按住 ctrl 然后点击你想合并的 log(可以选择多个,不连续也可以),选择结束后右键 选择 squash commits编辑 本地合并的 提交信息,打开后默认显示选中log的所有提交信息我把这些信息合并下,然后点击 ok点击 OK 后 git 开始合并,合并成功后 右下角会 .
2021-05-28 15:22:22
2150
原创 分享一个 gland 主题
时隔两个月,我还是下载回来了 goland ,放弃了 vscode。心酸个人比较在意主题这些,一定要看着舒服,就花了一点时间进行了各种配置,先上结果图代码可以忽略,个人比较喜欢这一款,颜色对比很好,看着很舒服下面分享下设置打开 goland 设置,找到 plugin 然后搜索 xcode-dark(小蜜蜂那个就是颜色过于鲜艳)。点击安装即可。字体我设置的是15今天就到这了,我去写代码了,哈哈...
2021-04-25 15:33:01
2052
1
原创 【算法golang】计算字符串最后一个单词的长度,单词以空格隔开。
计算字符串最后一个单词的长度,单词以空格隔开。package main import ( "bufio" "fmt" "os" "strings") func main() { scanner := bufio.NewScanner(os.Stdin) if scanner.Scan() { b := scanner.Text() a := len(b) - strings.LastIndex(b, " ") - 1
2021-04-14 16:55:22
207
原创 go interface 是否可以比较
go interface 是否可以比较interface 有些情况是可以比较的,但分为几种不同的情况空interface 比较不可直接比较类型空interface 实例比较 不赋值import "fmt"type a interface { //bb() int}type b interface { //bb() int}func main() { var c a var d b fmt.Println(c == d)}空接口类型的实例是可以比较的,结果为t
2021-04-12 10:54:35
2638
转载 详解 golang 的 defer (转载收藏)
https://mp.weixin.qq.com/s/FUmoBB8OHNSfy7STR0GsWw
2021-03-18 14:46:38
57
原创 vscode使用技巧(golang)
新公司不让用goland,只能适应下 vscode o(╥﹏╥)o和goland 相同的地方就不说了,比如查询替换。。。浪费编码时光码农黑主题本人喜欢黑色这种风格,vscode这个默认的字体还不错,比goland好文件修改对比后期修改了文件后,在这里可以很直观的观察到修改的文件数量和内容对比。这个功能还好,比goland 好点。查找文件快捷键ctrl + p代码自动补全菜鸡一枚,习惯了代码补全,没这个功能感觉写不了代码了文件 – 首选项 – 设置打开 j.
2021-03-16 17:20:52
737
原创 go http handler
1、handler 概念handler 是一个 inrerface。下面仅有一个方法 ServeHTTPtype Handler interface { ServeHTTP(ResponseWriter, *Request)}ServeHTTP 一共两个参数第一个参数 ResponseWriter 是用来 写相应的第二个参数是 一个指向 request 结构体的指针。这个request 值得就是我们 的请求。里面包含一些请求的信息只要含有我们这个ServeHTTP方法,就是一个han
2021-03-11 15:22:44
933
2
原创 golang 反射
1、什么是反射在运行时 动态获取 变量的 类型(type)和 类别(kind)如果是结构体实例,可以获取到结构体的信息通过反射可以修改 变量的值。可以调用关联的方法反射的包 reflect反射的本质是 运行时 的我们主要学习 其中type 和 value 的方法在反射中 , 变量、interface、和 reflect 之间是可以相互转换的2、反射的应用场景序列化和反序列化不知道函数调用哪个函数,可通过反射来确定3、反射的方法3.1 reflect.TypeOffu
2021-03-10 13:53:39
289
原创 go 类型断言
1、什么是类型断言由于 interface 是 一般类型,不是具体类型。如果要转成具体类型,就需要使用类型断言直接将 x 的值 赋给 a 是不可以的,编译前检查都过不去断言后可成功赋值,输出结果为 52、带检查的类型断言类型断言有时候会失败,比如断言时传入的类型于 interface 指向的类型不一致,这样会导致程序 panic ,无法正常运行我们需要检查断言是否成功以及结果是否有效func main() { var x interface{} a := 1 x =
2021-03-09 15:09:32
350
原创 深入了解golang 的channel
文章目录1、channel 是什么channel的特点2、channel 的数据结构hchan等待队列和发送队列的类型包装 sudog3、channel 分类有缓冲channel无缓冲channel4、channel 的创建4.1 分配 hchan4.2 分配buf4.3 makeChan 源码5、发送数据5.1 对channel加锁5.2 将数据拷贝到 buf5.3 对channel 解锁6、接收数据6.1 先对channel上锁6.2 从 buf 中拷出接收的数据6.3 解锁7、如果发送时,buf 数据
2021-03-08 18:25:06
1360
原创 golang 读写锁原理
读写锁 RWMutex1、概念读写锁和互斥锁都是为了防止并发而加的锁读写锁相比互斥锁,就是增加了对读写的控制读写锁 写写之间是互斥的,读写也是互斥的,但是读锁 是可以添加多个的2、RWMutex 代码type RWMutex struct { w Mutex // held if there are pending writers writerSem uint32 // semaphore for writers to wait for completing
2021-03-05 15:00:28
1273
1
原创 golang 互斥锁原理
互斥锁1、互斥锁概念对于同一份资源来说,为了保证 在多个线程或者协程同时访问的时候,保证数据的读取不会出现错误。互斥锁相对于 读写锁而言更加绝对一些,互斥锁不论是读写,加过锁后,都是互斥的,需要等待2、Mutex 数据结构type Mutex struct { state int32 // 互斥锁状态 sema uint32 // 信号量}sema 表示信号量,用来控制 goroutine 的 阻塞休眠和唤醒。协程阻塞时等待该信号量,协程解锁是释放该信号量并唤醒等待信号量的协
2021-03-04 17:14:53
1291
1
原创 golang的后台编译流程
先了解编译相关的基本概念环境变量相关仅列举一些常用的,其他的环境变量可以通过 go env 命令 来查看1、GOROOTgo语言的安装目录,方便我们找到所安装的SDK2、GOPATHgo的工作源码目录,也就是项目代码文件的存放目录。可以写多个值,查找的时候根据顺序进行查找。比如 项目中配置的包的路径一般是相对于项目而言的。比如 imp的包路径 /laozhao/motuo/baoma。对于项目而言,项目在本地磁盘的路径是D:/a/b/laozhao/… ;这时,必须配置GOPAT.
2021-03-04 10:30:04
458
3
原创 搞懂golang make和new的区别
make和new都是用来分配内存的。相比make,new的使用场景很少。面试经常被问,来看看这两个具体什么区别new// The new built-in function allocates memory. The first argument is a type,// not a value, and the value returned is a pointer to a newly// allocated zero value of that type.func new(Type) *.
2021-03-03 11:43:21
506
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人