Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname 和cobra add cmdname 如果命令输入错误,将提供智能建议,如 app srver,将提示s
首先需要下载 go get golang.org/x/text/encoding/simplifiedchinese go get golang.org/x/text/transform package main import ( "bytes" "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text/transform" &quo
定义的各种姿势原生定义a := struct{}{}1struct{} 可以就认为是一种类型,a 变量就是 struct {} 类型的一种变量,地址为 runtime.zerobase ,大小为 0 ,不占内存。 重定义类型golang 使用 type 关键字定义新的类型,比如: type emptyStruct struct{}1定义出来的 emptyStruct 是新的类型,
一、下载 GoLang 最新版 进入 /usr/local 目录 cd /usr/local 下载到当前目录 wget https://golang.google.cn/dl/go1.18.2.linux-amd64.tar.gz 解压 tar -xvf go1.18.2.linux-amd64.tar.gz 二、配置 配置环境变量打开 /etc/profile 配置文件 vim /etc/profile 增加配置 #=
概要 最近遇到一个需求,golang应用部署在远程机器,远程机器在内网,部署之后不方便再次登录此远程机器去升级。 因此,需要golang应用自动检查是否需要升级,如果需要升级,则下载二进制后自升级。 自升级库 golang自升级的库有好几个,比较之后决定采用: https://github.com/jpillora/overseer
一、通常的实现方法 实现sort.Interface接口中的3个方法:Len方法、Less方法以及Swap方法,即可通过调用sort包中的Sort方法实现结构体数组的排序。(二维数组可以类比为结构体数组)其中: (1)Len方法表示获取该数组的长度,通常返回len方法返回值。 (2)Less方法表示排序比较方法,通常参数为两个索
Go语言内置flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 os.Args 如果你只是简单的想要获取命令行参数,可以像下main的代码示例一样使用os.Args来获取命令参数。 package main import ( "fmt" "os" ) //os.Args demo func main() { //os.Args是一
https://stackoverflow.com/questions/31650192/whats-the-full-name-for-iota-in-golang 一个常量块中,一个常量没有赋值,取上个常量的值 iota从0开始,每行++ 不推荐使用iota
Golang面向对象 1. Golang没有类,Go的结构体相对于其它编程语言的类 2. Golang去掉了传统OOP语言的继承、方法重载、构造函数和析构函数、隐藏的指针等等 3. Golang仍有面向对象编程的继承、封装和多态的特性,只是实现方式不同 创建结构体实例的四种方法 type Cat s
目录1.TCP网络编程2.HTTP网络编程2.1 HTTP2.2 HTTPS3.RPC网络编程3.1 基于TCP的RPC3.2 基于HTTP的RPC3.3 基于jsonRpc的RPC golang net包 1.TCP网络编程 server.go package main import ( "fmt" "log" "net" "os" "time" ) func main() { // 建
在排行榜中实现分数和时间排序 分数相同则按照时间排序 需求分析 redis中zset的long为int64 转为十进制是19位 时间戳10位 毫秒时间戳13位 高位存分数7位 十进制 7位 8字节中拆分 最高位不可用 还剩43位 高22位存分数 低41位存时间戳 golang 代码 package main import ( "fmt"
五种基础排序算法对比 五种基础排序算法对比 1:冒泡排序 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排
在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/bosima/ylog/releases/tag/v1.0.1 工程实践中,我们往往还需要对日志进行采集,将日志归集到一起,然后用于各种处
关于golang指针的理解和引用 引用:https://studygolang.com/articles/29273 一、Go指针理解 Go 有指针,但是没有指针运算。你不能用指针变量遍历字符串的各个字节。在 Go 中调用函数的时候,得记得变量是值传递的。 通过类型作为前缀来定义一个指针’ * ’:var p * int。现在
golang os.OpenFile几种常用模式 os.O_WRONLY | os.O_CREATE | O_EXCL 【如果已经存在,则失败】 os.O_WRONLY | os.O_CREATE 【如果已经存在,会覆盖写,不会清空原来的文件,而是从头直接覆盖写】 os.O_WRONLY | os.O_CREATE | os.
Golang标准日志库提供的日志输出方法有Print、Fatal、Panic等,没有常见的Debug、Info、Error等日志级别,用起来不太顺手。这篇文章就来手撸一个自己的日志库,可以记录不同级别的日志。 其实对于追求简单来说,Golang标准日志库的三个输出方法也够用了,理解起来也很容易: Print用于记录一
golang开源的协程池项目:github.com/gammazero/workerpool 下面是一段使用 demo package main import ( "fmt" "github.com/gammazero/workerpool" "time" ) func main() { wp := workerpool.New(2) requests := []string{"alpha"
当有比较复杂的替换字符串的需求时候 可以使用我封装的这个函数,通过正则表达式把字符串替换掉 func ReplaceStringByRegex(str, rule, replace string) (string, error) { reg, err := regexp.Compile(rule) if reg == nil || err != nil { return "", errors.Ne
1. 什么是服务器雪崩 雪崩是由于局部故障被正反馈循环,从而导致的不断放大的连锁故障,雪崩通常是由于整个系统中,一个很小的部分出现故障,进而导致整个系统不可用 雪崩出现的根本原因就是系统过载,如果在系统过载的情况下,不进行任何控制,那么会导致系统雪崩 想要避免雪崩有几种常见的方
go 语言中函数是一等公民,因此针对函数的使用也可以多种多样。在go语言中函数可以作为函数参数传递,也可以作为函数的返回值返回。 function type就是一种典型的应用。 关于function type 官方的定义如下 A function type denotes the set of all functions with the same parameter
// 复制 采用系统默认缓冲区大小 func Copy(dst Writer, src Reader) (written int64, err error){} // 复制 自定义缓冲区大小 func CopyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error) {}
游戏服务器资源大全 目录 游戏服务器资源大全 网络 协议 持久化 Log 游戏AI 工具库 开源服务器 运维 学习资源 其他 网络 网络相关的库和工具 Java Netty - Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持 Mina - Apache Mina是一个
最近在测试服务器的 UDP 接口, 最开始我使用 python 协程制造负载, 但是单机负载一直不高. 刚好最近在学习 golang 相关的内容, 就用 golang 实现了一个 UDP 施压的程序. 在编写 golang 程序的过程中经常要用到 goroutine 与 channel. 读取 channel 中的内容是阻塞的, 而且官
1)在golang v1.11之后的版本,自己开发的项目代码不用放进系统变量$GOPATH目录的src子目录下,见:https://www.cnblogs.com/mayanan/p/15401036.html 2)golang的package相当于命名空间,是一个逻辑组织; 3)一个项目只能有一个main函数,main函数所在的文件的头部的package名称应该为main。
在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止