
GO
程序员若风+
这个作者很懒,什么都没留下…
展开
-
golang如何使用rocketmq 附加闭坑指南 建议收藏!!!
当我们的业务达到一定规模,很多业务需要解耦,以及需要流量削峰的时候,我们需要使用MQ来让我们系统能够正常运转。由于rocketmq go 包使用pullConsumer还没实现。所以目前只能使用Subscribe来消费。原创 2023-03-08 11:13:14 · 2471 阅读 · 0 评论 -
【云原生】之Docker搭建rocketmq
其中 172.26.16.1 为宿主机IP地址。搭建NameServer。原创 2023-02-28 17:07:38 · 248 阅读 · 0 评论 -
gin框架中间件深度解析(面试必看)
Gin在golang领域是一个非常有名的框架,也是github上面star最高的一个框架,简单易学,效率还高。所以我们大部分web开发都会使用gin框架来进行开发。但是Gin框架里面有一个比较关键的知识点,其中一个就是中间件。(不只是Gin,很多其他框架也是有中间件的概念)原创 2023-01-28 17:59:55 · 1132 阅读 · 0 评论 -
标签设计方案
根据用户ID取模分片 保证数据均匀落表(同时保证同一用户的身份信息在同一个表上)(缺点:扩容需要做大数据量数据迁移)采用redis队列+go协程来进行洗标签。结合go高并发来实现标签的快速清洗入库以及存储bitmaps。对于存储所有的标签的key值 大约100M的空间足以支持。采用一对多的存储方式 即一个用户对应多条身份标签。按照400W用户 200个标签来设计的话。单个用户耗费的内存 0.0000248M。400W用户耗费内存 99.2M左右。单个标签预计消耗内存0.5M。总涉及标签数据 8亿条数据。原创 2023-01-09 15:21:00 · 1011 阅读 · 0 评论 -
go判断结构体是否实现接口的几种方式
我们在某些特点场景下,需要判断我们定义的结构体是否实现了我们制定的接口。原创 2022-08-23 09:25:50 · 845 阅读 · 0 评论 -
gin注册自定义中间件失效
gin使用总结原创 2022-07-14 15:43:16 · 593 阅读 · 0 评论 -
Go语言高并发实现端口扫描器
学了GO不玩一下那不是很浪费 写了一个端口扫描器 大家可以一起学习下package mainimport ( "flag" "fmt" "net" "runtime" "time")func main() { cores := runtime.NumCPU() runtime.GOMAXPROCS(cores - 1) domainP := flag.String("domain", "", "请输入指定的IP地址") flag.Parse() domain :.原创 2022-05-07 11:00:27 · 851 阅读 · 2 评论 -
go get -u github.com/gin-gonic/gin超时
go get -u github.com/gin-gonic/gin 超时的原因有很多种 一般情况下为没有设置代理设置代理方式 windows下1. 右键 我的电脑 -> 属性 -> 高级系统设置 -> 环境变量2. 在 “[你的用户名]的用户变量” 中点击 ”新建“ 按钮3. 在 “变量名” 输入框并新增 “GOPROXY”4. 在对应的 “变量值” 输入框中新增 “https://proxy.golang.com.cn,direct”5. 最后点击 “确定” 按钮保.原创 2022-05-01 19:38:09 · 1025 阅读 · 0 评论 -
Go语言-使用协程高效计算0-2000内每个数的累加
//启动一个协程,将1-2000的数放入到一个channel中,比如numchan//启动八个协程 从numchan取出数 计算1+..n的值 并存放到reschan//最后等待工作完成后,再遍历reschanpackage mainimport ( "fmt" "runtime")func main(){ cores := runtime.NumCPU() runtime.GOMAXPROCS(cores-1) numChan := make(chan int, 2原创 2022-04-21 21:31:10 · 1218 阅读 · 0 评论 -
Go并发-计算指定范围内的素数
使用Go并发特点 完美利用多核处理 可以拉满CPU频率执行package mainimport ( "fmt" "runtime" _"strconv")func Cal(start int, end int, c chan []int){ arr := make([]int,0) for i:=start;i<=end;i++{ flag := false for j:=2;j<i;j++{ if i%j == 0{ flag = tr.原创 2022-04-17 16:37:59 · 335 阅读 · 0 评论 -
Go语言单元测试
moster.gopackage monsterimport ( _"fmt" "encoding/json" "io/ioutil" _"os")type Monster struct{ Name string Age int Skill string}func (monster *Monster) Store() bool { str,_ := json.Marshal(monster) filename := "D:/a.txt" ioutil.Write.原创 2022-04-16 22:54:03 · 129 阅读 · 0 评论 -
Go语言-json序列化以及反序列化
package mainimport ( "fmt" "encoding/json")type Student struct{ Name string `json: Name` Age int `json:age`}func main(){ str := "{\"name\":\"张三\",\"age\":3}" var student Student json.Unmarshal([]byte(str), &student) fmt原创 2022-04-16 12:02:47 · 315 阅读 · 0 评论 -
Go获取命令行参数
package mainimport ( "flag" "fmt")func main(){ var user string var password string var hostname string var port int flag.StringVar(&user, "u","","用户名称") flag.StringVar(&password, "p","","用户名称") flag.StringVar(&hostname, "h","","原创 2022-04-14 22:36:45 · 1152 阅读 · 0 评论 -
Go语言-统计文件中不同字符数量
package mainimport ( "io" "os" "bufio" "fmt")func main(){ read_file,err := os.Open("D:/Golang/src/go_code/chapter36/main.txt") defer read_file.Close() if err != nil{ fmt.Println("打开失败") } reader := bufio.NewReader(read_file) var原创 2022-04-14 22:03:17 · 393 阅读 · 0 评论 -
Go语言实现冒泡排序-附优化
冒泡排序很多时候我们会被面试问到。了解并清楚冒泡算法原理是非常有必要的,冒泡的含义简而言之就是交换拍排序。轻(小)的元素像泡泡一样浮起来。这样就能做到排序了package mainimport "fmt"//冒泡排序func main(){ slice := []int{50,16,10,8,6} BubblingSort(slice) fmt.Println(slice)}func BubblingSort(arr []int){ var a int flag := .原创 2022-03-20 18:20:07 · 462 阅读 · 0 评论 -
go run 特别慢这是怎么回事啊,windows10
在windows下面执行 go run 每次超级慢后面查询得知 为360的原因 关闭360 就很快了…原创 2022-03-18 22:37:25 · 1936 阅读 · 3 评论 -
windows下golang环境安装-详细教程
工欲善其事,必先利其器 学习一门新语言,首先第一步需要做的就是搭建好开发环境下载golang安装包下载地址:https://golang.google.cn/dl/2. 配置环境变量接下来就是配置我们的环境变量总共需要配置3个环境变量GOROOT=/golang/env/go ##Golang安装目录 与上面的一致PATH= windows下配置go.exe的目录地址GOPATH=/golang/go ##Golang项目目录4. 查看环境变量是否配置成功执行 go env.原创 2022-03-11 22:07:38 · 4175 阅读 · 0 评论 -
Go基础-go常用类型
类型范围booltrue falseint32-2147483648 to 2147483647int64-9223372036854775808 to 9223372036854775807int8-128 to 127int16-32768 to 32767uint80 to 255uint160 to 65535uint(32)0 to 4294967295uint(64)0 to 18446744073709551...原创 2022-02-15 15:32:49 · 156 阅读 · 0 评论 -
实测Go计算性能和PHP计算性能对比
系统环境 一核1G 阿里云服务器php版本 : PHP 7.1.33go版本 :go1.17.7计算代码$s_time = time();//循环100亿次for($i=0; $i<10000000000;$i++){}$e_time = time();echo $e_time-$s_time;package main // 声明 main 包,表明当前是一个可执行程序import ("fmt""time") // 导入内置 fmtfunc main(.原创 2022-02-15 14:12:21 · 1565 阅读 · 0 评论 -
liunx下安装go环境-新手入门必看
编程第一步 最重要的就是先把环境搭好,环境搭好才能开始#安装必须的工具yum install mercurialyum install gityum install gcc# 创建工作目录以及安装gomkdir /golang/envcd /golang/envwget https://golang.google.cn/dl/go1.17.7.linux-amd64.tar.gztar -zxvf go1.17.7.linux-amd64.tar.gzrm -rf go1.17..原创 2022-02-15 11:28:01 · 176 阅读 · 0 评论 -
PHP最全垃圾回收机制讲解和实测-同时对比PHP5和PHP7
为什么要写这么一篇文章?网上有很多讲解垃圾回收机制的文章,但是大多数的都是复制,或者停留在PHP5时代。而且很多都是缺乏实际测试而且例子都是同一个例子。所以我想写一篇文章来详细的描述和实战来理解我们的PHP垃圾回收机制。以及PHP5版本下和PHP7版本下的实际测试。使用什么工具来实测我们的垃圾回收Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。Xdebug2018年的最新版本是Xdebug 2.7.0beta1,release日期原创 2021-12-25 13:53:11 · 300 阅读 · 0 评论 -
golang windows下第二次scanf读取输入失效
发现一个有意思的bugpackage mainimport "fmt"func main() { var av float64 var all float64 for i:=1; i<4; i++ { var a int var b int var c int var d int var e int fmt.Printf("请输入%v班级的成绩 以空格分开\r\n", i) fmt.Scanf("%d %d %d %d %d原创 2021-08-16 17:12:16 · 561 阅读 · 0 评论 -
Golang学习笔记-数据类型
golang所有的数据类型整型字符串布尔派生intstringbool指针类型(Pointer)int8有符号 8 位整型 (-128 到 127)/uint8无符号 8 位整型 (0 到 255)数组类型int16 (-32768 到 32767)/unit16结构化类型(struct)int32/uint32Channel 类型int64/uint64函数类型float32切片类型float64接口类原创 2021-07-24 11:27:31 · 113 阅读 · 0 评论 -
为什么int8的取值范围是-128 - 127
为什么int8取值范围是-128 - 127int8占1个字节,1字节(byte)占8位(bit) 其中最高位代表符号位 1-负号;0-正号 那么最大数值的二进制为:0 1 1 1 1 1 1 1换算成10进制为 从低位到高位开始计算0 1 1 1 1 1 1 10*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^00 + 64原创 2021-07-24 10:54:12 · 4831 阅读 · 0 评论