定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0 代码运行如下: 当我们修改了其中的值,让结果显示的更明显一点:    程序编写成功!  

2021年9月21日 0条评论 3点热度 阅读全文

Golang具有运行效率高、内存安全等优良特性,因此是非常适合用来进行服务器开发。使用Golang开发游戏服务器有如下的优点: 运行效率远高于各种脚本语言,大幅度提升服务器承载能力 内存安全,不会像C++服务器那样出现内存错误导致服务器down机 Goroutine能够很好地利用多核计算能力,提升承载能力 Golang本身非常简单好用,大家都喜欢 然而使用Golang编写游戏服务器也面临一定的困难,主要是两个方面: Golang是静态编译语言,难以为提供方便的语法糖从而简化开发工作 Golang无法支持语言层面的热…

2021年8月18日 0条评论 15点热度 阅读全文

圈复杂度 圈复杂度 定义 计算规则 降低圈复杂度手段 降低圈复杂度示例 修改 圈复杂度 定义 圈复杂度 (Cyclomatic complexity) 是一种代码复杂度的衡量标准,也称为条件复杂度或循环复杂度,它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。简称 CC 。其符号为 VG 或是 M 。 计算规则 for +1; if +1; else +1; switch has n cases +n; || +1; && +1…

2021年8月6日 0条评论 7点热度 阅读全文

字符串 统一概述 字符串 定义及数据结构 内存布局 类型互转 迭代 本文整理自Go语言高级编程 统一概述   在主流的编程语言中数组及其相关的数据结构是使用得最为频繁的,只有在它(们)不能满足时才会考虑链表、hash表(hash表可以看作是数组和链表的混合体)和更复杂的自定义数据结构。   Go语言中数组、字符串和切片三者是密切相关的数据结构。这三种数据类型,在底层原始数据有着相同的内存结构,在上层,因为语法的限制而有着不同的行为表现。 Go语言的数组是一种值类型,虽然数组的元素可以被修改,但是数组本身的赋值和函数…

2021年7月26日 0条评论 2点热度 阅读全文

Go 生成C动态库.so和静态库.a 源代码 package main import "C" import "fmt" //export hello func hello(){ fmt.Println("hello world") } //export add func add(a,b int) int { return a+b } func main(){ } 注意:生成C可调用的so时,Go源代码需要以下几个注意。 必须导入 “C” 包 必须在可外部调用的函数前加上 【//export 函数名】的注释 必须是m…

2021年7月6日 0条评论 4点热度 阅读全文

这里我们新建了两个go文件 server.go main.go   server.go: package main import ( "fmt" "net" ) type Server struct { Ip string Port int } func NewServer(ip string,port int) *Server { server := &Server{ Ip: ip, Port: port, } return server } func (this *Server) handle…

2021年5月15日 0条评论 7点热度 阅读全文

JWT鉴权http://blog.fatedier.com/2020/03/28/golang-jwt/ 开启了auth.jwt.verify_claims = on之后,就要求在链接emq的时候,token中的playload信息username字段和链接时候设置的字段一致,否则返回失败   配置文件 /etc/emqx/emqx.conf 日志路径 log.dir = /var/log/emqx  emqx.log   mqtt 之 last will(遗愿) …

2021年4月19日 0条评论 20点热度 阅读全文

缓存击穿:缓存在某个时间点过期时,突然在这个时间点出现对这个key的大量并发请求,此时缓存已过期,请求会直接落在DB上,使得DB瞬间请求量增大,压力骤增。singleflight能够在同一时间有大量针对同一key的请求这种情况,只让一个请求执行去获取数据,而其他协程阻塞等待结果的返回  一、数据结构 type Group struct { mu sync.Mutex // 互斥锁 m map[string]*call // 对于每一个要获取的key有一个对应的call } type call struct…

2021年4月17日 0条评论 18点热度 阅读全文

文章目录 Context Context结构 Context的衍生 WithCancel WithDeadline WithTimeout WithValue Context 使用原则 Context context包不仅实现了在程序单元之间共享状态变量的方法,同时能通过简单的方法,使我们在被调用程序单元的外部,通过设置ctx变量值,将过期或撤销这些信号传递给被调用的程序单元。在网络编程中,若存在A调用B的API, B再调用C的API,若A调用B取消,那也要取消B调用C,通过在A,B,C的API调用之间传递Cont…

2021年4月13日 0条评论 18点热度 阅读全文

1. 规范 gofmt ,大部分的格式问题可以通过 gofmt 解决, gofmt 自动格式化代码,保证所有的 go 代码与官方推荐的格式保持一致,于是所有格式有关问题,都以 gofmt 的结果为准。 goimports ,此工具在 gofmt 的基础上增加了自动删除和引入包。 go vet ,vet 工具可以帮我们静态分析我们的源码存在的各种问题,例如多余的代码,提前 return 的逻辑, struct 的 tag 是否符合标准等。编译前先执行代码静态分析。 golint ,类似 javascript 中的 j…

2021年3月25日 0条评论 39点热度 阅读全文