翔云

Just try, don't shy. 最新文章请点击
随笔 - 294, 文章 - 0, 评论 - 27, 阅读 - 49万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Golang

摘要:golang自带内存回收机制 GC。GC通过独立的进程执行,它会搜索不再使用的变量,并释放。需要注意的是,进行GC会占用机器资源。 GC是自动进行的。如果要手动进行GC,可以调用runtime.GC()函数,进行显式GC。 SetFinalizer 一个对象object被GC时,如果需要执行一些特殊 阅读全文

posted @ 2019-02-07 17:37 翔云123456 阅读(1211) 评论(0) 推荐(0) 编辑

摘要:go cache是一款类似于memached 的key/value 缓存软件。它比较适用于单机执行的应用程序。 go cache实质上就是拥有过期时间并且线程安全的map,可以被多个goroutine安全访问。 下面举例说明其用法。 Demo output 2019/02/05 17:49:32 f 阅读全文

posted @ 2019-02-05 18:11 翔云123456 阅读(5570) 评论(0) 推荐(0) 编辑

摘要:Martini是一个功能强大的软件包,用于在Golang中快速编写模块化Web应用程序/服务。 下载 Demo server.go 启动一个HTTP server,监听3000端口。 编译和执行 client请求 参考 "github martini" 阅读全文

posted @ 2019-01-19 22:21 翔云123456 阅读(283) 评论(0) 推荐(0) 编辑

摘要:本文介绍golang中如何进行反向代理。 下面例子中, proxy server接收client 的 http request,转发给true server,并把 true server的返回结果再发送给client。 1.proxy server proxyServer.go代码如下所示。 pro 阅读全文

posted @ 2019-01-19 19:52 翔云123456 阅读(4893) 评论(0) 推荐(0) 编辑

摘要:golang 语言,在打开mysql DB时,有时会用到timeout,readTimeout两个参数。 1.timeout 建立连接超时时间 例如, "30s", "0.5m" or "1m30s". 2.readTimeout I/O读超时时间 例如, "30s", "0.5m" or "1m3 阅读全文

posted @ 2018-12-23 17:18 翔云123456 阅读(1243) 评论(0) 推荐(0) 编辑

摘要:golang中的原子操作在sync/atomic package中。 下文以比较和交换操作函数为例,介绍其使用。 CompareAndSwapInt32 比较和交换操作是原子性的。 判断参数addr指向的值是否与参数old的值相等, 如果相等,用参数new的新值替换掉addr存储的旧值,否则操作就会 阅读全文

posted @ 2018-12-15 22:59 翔云123456 阅读(3458) 评论(0) 推荐(0) 编辑

摘要:go callvis 是github上一个开源项目,可以用来查看golang代码调用关系。 安装 安装graphviz 安装go callvis 用法 例如,以 "orchestrator" 项目为例,其代码已经下载到本地。 如果没有focus标识,默认是main 例如,查看github.com/g 阅读全文

posted @ 2018-11-24 09:54 翔云123456 阅读(4774) 评论(0) 推荐(0) 编辑

摘要:golang提倡使用通讯来共享数据,而不是通过共享数据来通讯。channel就是golang这种方式的体现。 Channel 在golang中有两种channel:带缓存的和不带缓存。 带缓存的channel,也就是可以异步收发的。 不带缓存的channel,也就是同步收发的。 发送: • 向 ni 阅读全文

posted @ 2018-11-16 17:40 翔云123456 阅读(476) 评论(0) 推荐(0) 编辑

摘要:问题 编译文件时报错: /usr/local/go/pkg/tool/darwin_amd64/link: /usr/local/go/pkg/tool/darwin_amd64/link: combining dwarf failed: Unknown load command 0x32 (50) 阅读全文

posted @ 2018-11-16 16:51 翔云123456 阅读(2025) 评论(0) 推荐(0) 编辑

摘要:要判断interface 空的问题,首先看下其底层实现。 interface 底层结构 根据 interface 是否包含有 method,底层实现上用两种 struct 来表示:iface 和 eface。eface表示不含 method 的 interface 结构,或者叫 empty inte 阅读全文

posted @ 2018-11-04 13:17 翔云123456 阅读(12390) 评论(0) 推荐(0) 编辑

摘要:golang提供内建函数cap用于查看channel缓冲区长度。 cap的定义如下: Example output: ch1 buffer len:0 ch2 buffer len:2 阅读全文

posted @ 2018-11-04 10:15 翔云123456 阅读(2354) 评论(0) 推荐(0) 编辑

摘要:WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范。 在golang语言中,目前有两种比较常用的实 阅读全文

posted @ 2018-10-20 17:33 翔云123456 阅读(10324) 评论(2) 推荐(0) 编辑

摘要:gopacket 是golang语言使用的网络数据抓取和分析的工具包。 本文简单介绍如何使用gopacket进行网络抓包。 下载gopacket Demo 代码中,抓取与端口3306相关的数据,也就是mysql通信数据。 抓取到的数据包 对抓取到的mysql数据感兴趣的同学,可以参考 "Mysql 阅读全文

posted @ 2018-10-20 11:44 翔云123456 阅读(8744) 评论(0) 推荐(0) 编辑

摘要:在实际开发中,经常会遇到需要定制json编解码的情况。 比如,按照指定的格式输出json字符串, 又比如,根据条件决定是否在最后的json字符串中显示或者不显示某些字段。 如果希望自己定义对象的编码和解码方式,需要实现以下两个接口: 对象实现接口后,编解码时自动调用自定义的方法进行编解码。 下面例子 阅读全文

posted @ 2018-10-17 18:54 翔云123456 阅读(2563) 评论(0) 推荐(0) 编辑

摘要:mysql在传输层使用的TCP协议。一个TCP payload可能有多个mysql packet。如下图所示。 | TCP head | TCP payload| | | | | |(mysql packet1, mysql packet2,mysql packet 3...) 下面通过抓包分析其结 阅读全文

posted @ 2018-10-16 19:58 翔云123456 阅读(1481) 评论(0) 推荐(0) 编辑

摘要:可以通过内建函数len查看channel中元素的个数。 内建函数len的定义如下: func len(v Type) int \ The len built in function returns the length of v, according to its type: Array: the 阅读全文

posted @ 2018-10-16 19:35 翔云123456 阅读(1016) 评论(0) 推荐(0) 编辑

摘要:连接数据库的方式有两种:TCP和Unix域socket。 本文使用Unix domain sockets连接数据库。关于TCP连接数据库可以参考 "Go 操作mysql使用举例" 下面例子中,演示了使用show命令查看数据库连接信息的过程。 mysql show processlist; + + + 阅读全文

posted @ 2018-10-13 17:48 翔云123456 阅读(372) 评论(0) 推荐(0) 编辑

摘要:哨兵模式是Redis集群管理的一种方式。 下面以Go语言为例介绍其使用方式。 使用举例 哨兵方式client端的实现原理 client查询集群中的master节点。 client查询Master 其代码如下: 基本过程是:使用redis 服务器地址,创建连接,发送请求,返回Redis Master地 阅读全文

posted @ 2018-07-22 12:25 翔云123456 阅读(891) 评论(0) 推荐(0) 编辑

摘要:PUBLISH 将信息 message 发送到指定的频道 channel 。 可用版本: = 2.0.0 时间复杂度: O(N+M),其中 N 是频道 channel 的订阅者数量,而 M 则是使用模式订阅(subscribed patterns)的客户端的数量。 返回值: 接收到信息 messag 阅读全文

posted @ 2018-06-29 14:53 翔云123456 阅读(162) 评论(0) 推荐(0) 编辑

摘要:以下测试,使用的Go版本是1.8.3 不设置 如果没有调用runtime.GOMAXPROCS 去设置CPU,Golang默认使用所有的cpu核。 测试机器CPU有4个核,测试代码开启4个goroutine,从测试结果看4个核心全部跑满。 测试代码如下: 设置CPU使用 GOMAXPROCS set 阅读全文

posted @ 2018-06-27 17:53 翔云123456 阅读(9784) 评论(3) 推荐(0) 编辑

点击右上角即可分享
微信分享提示