随笔分类 -  golang

go语言使用go-sciter创建桌面应用(九) 通过view.window创建新窗口后,如何加载后端数据
摘要:前端通过view.window创建新窗口后,如何在新窗口中加载后端数据,主要有两种方法: 1、通过在go里面使用DefineFunction定义方法,供前端使用,来获取数据。 2、前端使用view.request请求接口,来获取后端数据。 main.go的代码如下: package main imp 阅读全文
posted @ 2020-06-10 16:10 怀素真 阅读(2089) 评论(0) 推荐(0) 编辑
golang中time.After一直无法跳出select循环
摘要:问题的代码如下,在for select 循环中,本想通过 time.After 设置超时时间,但一直无法退出。 package main import ( "fmt" "math/rand" "time" ) func main() { ch := make(chan int) go func() 阅读全文
posted @ 2020-04-19 20:59 怀素真 阅读(1241) 评论(0) 推荐(1) 编辑
golang 常用的正则查找与替换
摘要:package main; import ( "regexp" "fmt" "strings" ) func main() { //1、过正则来判断字符串是否匹配 if ok, _ := regexp.Match("^[0-9a-zA-Z_]+$", []byte("hello")); ok { fmt.Println("ok"); } //上面的例子也可以通过Match... 阅读全文
posted @ 2018-01-22 16:12 怀素真 阅读(37506) 评论(0) 推荐(0) 编辑
golang xml和json的解析与生成
摘要:golang中解析xml时我们通常会创建与之对应的结构体,一层层嵌套,完成复杂的xml解析。 反之,通过创建结构体对象,生成xml数据 json数据的解析,很多时候我们并不知道json的具体结构,这就需要我们灵活使用interface{}和类型断言来进行解析。 通过结构体对象生成json数据 阅读全文
posted @ 2018-01-21 22:08 怀素真 阅读(8891) 评论(0) 推荐(1) 编辑
golang 通过fsnotify监控文件,并通过文件变化重启程序
摘要:一、下载我们需要的包 二、使用fsnotify监控文件 测试结果如下: 我们在tmp目录下的操作都被捕捉到了,但是fsnotify有一个问题,它无法递归的帮我们捕捉子目录、孙子目录的操作事件,这需要我们自已来实现。 还有一个问题就是当们修改文件夹名称时,fsnotify中event.Name仍然是原 阅读全文
posted @ 2017-08-01 15:49 怀素真 阅读(24418) 评论(2) 推荐(4) 编辑
golang 实现延迟消息原理与方法
摘要:实现延迟消息具体思路我是看的下面这篇文章 实现延迟消息最主要的两个结构: 环形队列:通过golang中的数组实现,分成3600个slot。 任务集合:通过map[key]*Task,每个slot一个map,map的值就是我们要执行的任务。 原理图如下: 实现代码如下: 测试结果如下: 阅读全文
posted @ 2017-07-26 14:15 怀素真 阅读(6002) 评论(0) 推荐(0) 编辑
golang 创建一个简单的连接池,减少频繁的创建与关闭
摘要:一、连接池的描述图片如下: 二、连接池代码如下: 三、8080服务端代码如下: 测试结果如下: 阅读全文
posted @ 2017-07-25 17:12 怀素真 阅读(7923) 评论(1) 推荐(0) 编辑
golang 创建一个简单的资源池,重用资源,减少GC负担
摘要:package main; import ( "sync" "errors" "fmt" ) //代码参考《Go语言实战》中第7章并发模式Pool //如果哪个类型实现了Resource接口中的两个方法,我们就认为该类型是资源 type Resource interface { Close(); IsClosed() bool; } //工厂方法,用于创建新资源 type Fa... 阅读全文
posted @ 2017-07-24 17:35 怀素真 阅读(1223) 评论(0) 推荐(0) 编辑
golang sync.Pool包的使用和一些注意地方
摘要:package main; import ( "sync" "fmt" "net" "runtime" ) //sync.Pool是一个可以存或取的临时对象集合 //sync.Pool可以安全被多个线程同时使用,保证线程安全 //注意、注意、注意,sync.Pool中保存的任何项都可能随时不做通知的 阅读全文
posted @ 2017-07-24 11:57 怀素真 阅读(5845) 评论(0) 推荐(0) 编辑
golang语言中bytes包的常用函数,Reader和Buffer的使用
摘要:bytes中常用函数的使用: bytes中Reader和Buffer的使用: 阅读全文
posted @ 2017-07-22 15:47 怀素真 阅读(14568) 评论(0) 推荐(0) 编辑
golang语言中sync/atomic包的学习与使用
摘要:package main; import ( "sync/atomic" "fmt" "sync" ) //atomic包提供了底层的原子级内存操作 //类型共有六种:int32, int64, uint32, uint64, uintptr, unsafe.Pinter //操作共五种:增减, 比较并交换, 载入, 存储,交换 func main() { //增减操作 var... 阅读全文
posted @ 2017-07-22 11:04 怀素真 阅读(6567) 评论(0) 推荐(0) 编辑
golang 简单的实现内 网 穿 透,用户访问本地服务。
摘要:一、功能描述: 客户端通过访问外网服务器上指定端口,间接访问自已本地的内网服务。 二、原理图如下: 三、实现代码如下: server.go代码: client.go代码: 四、测试 1、先把server.go上传到外网服务器上,安装GO环境,并编译,然后运行server 2、在本地编译client. 阅读全文
posted @ 2017-07-21 17:05 怀素真 阅读(2920) 评论(0) 推荐(0) 编辑
golang 创建一个简单的广播echo服务器
摘要:package main; import ( "net" "fmt" "bufio" ) //里面的代码部分参考cmu440课程 //https://github.com/cmu440/p0 //广播服务器接口 type MultiEchoServer interface { //开始 Start( 阅读全文
posted @ 2017-07-20 11:14 怀素真 阅读(1140) 评论(0) 推荐(0) 编辑
golang 使用 protobuf 的教程
摘要:1、下载protobuf的编译器protoc 地址: window: 下载: protoc-3.3.0-win32.zip 解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。 当然也可放在其他目录,需加入环境变量,能让系统找到protoc.ex 阅读全文
posted @ 2017-07-13 17:50 怀素真 阅读(37619) 评论(1) 推荐(2) 编辑
golang语言中os包的学习与使用(文件,目录,进程的操作)
摘要:os中一些常用函数的使用: os中一些常用文件函数的使用: os中关于进程的操作: 阅读全文
posted @ 2017-07-10 16:31 怀素真 阅读(6072) 评论(0) 推荐(1) 编辑
golang语言中os/user包的学习与使用
摘要:package main; import ( "os/user" "fmt" ) func main() { //返回当前用户的结构 u, _ := user.Current(); fmt.Println(u.Name); //用户主目录 fmt.Println(u.HomeDir); //用户名 阅读全文
posted @ 2017-07-10 13:44 怀素真 阅读(513) 评论(0) 推荐(0) 编辑
golang语言中os/signal包的学习与使用
摘要:package main; import ( "os" "os/signal" "fmt" ) //signal包中提供了两个函数 //Notifyf()用于监听信号 //Stop()用于停止监听 func main() { ch := make(chan os.Signal); //notify用于监听信号 //参数1表示接收信号的channel //参数2及后面的表示要... 阅读全文
posted @ 2017-07-10 12:31 怀素真 阅读(980) 评论(1) 推荐(1) 编辑
golang语言中os/exec包的学习与使用
摘要:package main; import ( "os/exec" "fmt" "io/ioutil" "bytes" ) func main() { //在环境变量path中查找可执行二进制文件 //返回完整路径或者相对于当前目录的一个相对路径 file, _ := exec.LookPath("go"); fmt.Println(file); //返回一个cmd cm... 阅读全文
posted @ 2017-07-10 11:29 怀素真 阅读(1117) 评论(0) 推荐(0) 编辑
go语言net包rpc远程调用的使用
摘要:一、基于http的RPC 服务端: 客户端: 二、基于tcp的RPC 服务端: 客户端: 三、JSON RPC 方式 jsonrpc方式是数据编码采用了json,而不是gob编码。 服务端: 客户端: 阅读全文
posted @ 2017-06-17 11:13 怀素真 阅读(5353) 评论(0) 推荐(3) 编辑
go语言websocket使用与客户端html5调用
摘要:我们通过使用如下库创建websocket服务 websocket服务端的代码如下: html客户端代码如下: json格式: 阅读全文
posted @ 2017-06-16 15:06 怀素真 阅读(1106) 评论(0) 推荐(0) 编辑