- 博客(16)
- 收藏
- 关注
原创 Golang slice使用注意事项
package mainimport "fmt"func main() { { arr := []int{2, 3, 5, 7, 11, 13} sli := arr[0:3] // sli里保存的是arr元素的地址 sli[1] = 999 // 这个操作会同时改变变量arr里的元素 fmt.Println("arr=====", arr) fmt.Println("sli=====", sli) } fmt.Println("----------------
2021-10-09 14:53:23 168
原创 协程交替输出字符串
题目编写代码,通过多线程方式,按照下述需求打印给定字符串a) 并行线程数N作为入参,N取值范围为[1,5],要求线程同时运行b) 线程1只能打印字符A;线程2只能打印字符B;线程3只能打印字符C;线程4只能打印字符D…/c) 实现线程交替打印:A1B2C*3…,即根据传入线程数,当N = 3 输出结果为:ABBCCCABBCCC…当N = 4 输出结果为:ABBCCCDDDDABBCCCDDDD…d) 尽量考虑性能最优Go代码package mainimport ( "flag"
2021-09-03 13:14:44 258
原创 Go的“继承“与python的区别
package mainimport "fmt"type Base struct{}func (b *Base) GetName() string { return "base"}func (b *Base) PrintName() { fmt.Println("++++++" + b.GetName() + "-----")}type A struct { Base}func (a *A) GetName() string { return "aaaa"}fun
2021-06-30 21:48:38 168
原创 shell命令提取文件里以某字符结尾的单词
假设有一个文件,想提取里面的以字符b结尾的单词,文件中的单词之间可能有空格、tab或多个空格。示例文件:$ cat a.logaaaaa ssss ddddd12dd aaab cccasdb 1111asdsad bbbbaaassd bbbbb bbbaba脚本:$ cat x.shfor ii in `cat a.log`do if [[ "$ii" =~ b$ ]]; then echo $ii fidone结果:$ b
2021-04-06 21:21:12 2073 1
转载 自旋锁 - 搬运自维基百科
自旋锁自旋锁是计算机科学用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种忙等待。一旦获取了自旋锁,线程会一直保持该锁,直至显式释放自旋锁。自旋锁避免了进程上下文的调度开销,因此对于线程只会阻塞很短时间的场合是有效的。因此操作系统的实现在很多地方往往用自旋锁。Windows操作系统提供的轻型读写锁(SRW Lock)内部就用了自旋锁。显然,单核CPU不适于使用自旋锁,这里的单核CPU指的是单核单线程的CPU,因为,在同一时间只有一个线程是处在运行状态,假设运行线
2021-03-30 22:41:28 301
原创 Golang slice和map判等
借助reflect.DeepEqual可以实现两个slice和map的判等操作。但是注意都说reflect是比较耗费性能的,如果真的对性能比较敏感的话自己写个for循环一个一个比较去吧。package mainimport ( "fmt" "reflect")func main() { // ============ slice 判等 ============ { var a = []int{11, 22, 33} var b = []int{11, 22, 33} fm
2021-03-23 23:13:13 238
原创 Golang defer函数内的变量问题
package mainimport ( "errors" "fmt")func FooDefer(n int64) (err error) { defer func() { if err != nil { fmt.Println("error in defer is :", err) } }() if n <= 0 { // 这里err变量虽然没有被明确赋值,但是在defer函数内依然可以取到错误信息 return errors.New("n <= 0"
2021-03-16 17:53:52 690
原创 Mac配置Iterm2炫酷终端
简介类似教你配置命令行的的文章网上有好多,大多都是长篇大论,这里出一个可能是全宇宙最简单的配置教程。开始配置安装zsh命令行输入zsh,如果没有报错,则说明你的环境是支持zsh的,就不用去装了,如果没有zsh,可以使用brew install zsh来装。安装oh-my-zsh官网:https://ohmyz.sh/oh-my-zsh是一个zsh的主题管理器。安装一个强大的主题 powerlevel10k官方github:https://github.com/romkatv/powerl
2021-03-13 13:42:14 2827 1
原创 Golang如何遍历实现了相同接口的不同数组
假设有多个数组,每个数组里面存的是相同的结构体,且结构体都实现了某个接口。怎么通过一个通用的方法,调用该接口。package mainimport ( "fmt" "reflect")// 接口type ICommon interface { GetName() string GetAge() int64}func GetNames(list interface{}) []string { names := make([]string, 0) switch reflect
2021-03-05 15:39:33 1125
原创 Python3虚拟环境venv使用
前言Python的包管理工具pip install默认是全局安装,即同一个包在一台机器上只能有一个版本。有的时候因为兼容性的问题,我们想让不同的项目使用不同的包版本。这时候,Python的虚拟环境就出现了。示例注意:以下示例使用python3演示。使用命令python3 -m venv myProject新建一个虚拟环境,该命令会创建一个文件夹,里面包含了一个没有第三方依赖包的干净的python环境。使用命令source ./myProject/bin/activate加载虚拟环境环境变量
2021-01-29 00:14:18 3633
原创 Python语法糖介绍
前言作为一门优秀的脚本语言,Python提供了很多好玩又实用的功能,一般称为语法糖,这里列举几个。简化if … else#!/usr/bin/env python3def main(): animals = ['cat','dog','bird','pig'] if "dog" in animals: print("dog在列表里") else: print("dog不在列表里")if __name__ == '__main__':
2021-01-28 23:03:06 1034 1
原创 Go语言入门 - 环境搭建(二)
Go环境变量上一篇写的比较简单,这里介绍下Go常用的一些环境变量。将以下内容追加在你的shell预加载配置文件里,大多数是~/.bashrc文件,使用zsh的用户对应的是~/.zshrc,编辑完成之后使用source ~/.bashrc(zsh用户使用 source ~/.zshrc)使上述配置生效,或者直接重启shell也行。# 比较通用的配置export GOROOT=/usr/local/go/binexport GOPATH=$HOME/Workspaceexport GOBIN=$GO
2021-01-26 23:10:11 141
原创 Go语言入门 - 环境搭建(一)
下载Go语言官方网站: https://golang.google.cn 需要科学上网。考虑到中国用户需求,官方提供了一个墙内的地址 https://golang.google.cn登陆到首页后,点击Download,选择自己操作系统的安装包,下载最新版本的就行。安装官方有介绍,也可以看下 https://golang.google.cn/doc/installWindows别用Windows了,不想介绍,装个虚拟机或者换成Linux系统吧。Mac双击下载的安装包,下一步即可。Lin
2021-01-26 22:46:18 149
原创 从“一台机器可以建立多少个连接“说起,65535?
一些常识计算机使用二进制编码,逢二进一。一个字节是8位(8bit)。tcp协议里规定端口号用2个字节表示。两个字节能表示的最大数为 2^16=65536。常见误区基于以上常识,很多同学都有这样的想法:一个连接就占用一个端口号,所以一台机器能建立多少个连接就取决于机器能开多少个端口。tcp协议里用2个字节表示端口,考虑到0号端口不可用,一台机器最多只能开2^16-1=65535个端口。所以一台机器最多只能同时建立65535个连接。对吗?以上描述有哪些问题。问题分析首先如何定义
2021-01-24 15:37:11 2175
原创 Mac上使用iterm2配置ssh的正确姿势!像xshell一样丝滑~
前言连接远程服务器的工具有很多,本人也基本都折腾过,总结下来体验最好、使用人数最多的两款非xshell和SecureCRT莫属,看下对比图:工具支持的平台会话复制是否有免费版正版价格XshellWindows支持有¥988+SecureCRTWindows、Mac、Linux支持无¥900+相信大多数人都是用习惯了但“买不起”的,虽然网上有很多破解版,但是老觉得用着不踏实(这玩意会不会有木马?有没有后门?我的密码泄露了怎么办?)。替代方案对于使用
2021-01-10 00:15:27 19379 6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人