随笔分类 -  go

摘要:Go strings.Builder 字符串拼接操作优化 最开始的时候,可能会使用如下的操作: 与许多支持string类型的语言一样,golang中的string类型也是只读且不可变的。因此,这种拼接字符串的方式会导致大量的string创建、销毁和内存分配。如果你拼接的字符串比较多的话,这显然不是一 阅读全文
posted @ 2018-04-10 08:31 shhnwangjian 阅读(3423) 评论(0) 推荐(0)
摘要:httprouter使用pprof 参考:https://github.com/feixiao/httpprof https://xguox.me/go-profiling-optimizing.html/ 性能分析参考:https://github.com/caibirdme/hand-to-ha 阅读全文
posted @ 2018-04-03 10:27 shhnwangjian 阅读(908) 评论(0) 推荐(0)
摘要:go httprouter 源码包 https://github.com/julienschmidt/httprouter 用例 https://github.com/gsingharoy/httprouter-tutorial/tree/master/part4 go http 源码分析 http 阅读全文
posted @ 2018-02-14 10:37 shhnwangjian 阅读(486) 评论(0) 推荐(0)
摘要:go build go build,是我们非常常用的命令,它可以启动编译,把我们的包和相关的依赖编译成一个可执行的文件。 go help build 帮助命令 以上这三种写法,都是使用当前目录编译的意思。因为我们忽略了packages,所以自然就使用当前目录进行编译。 这种方式是指定包的方式,这样会 阅读全文
posted @ 2018-02-14 09:54 shhnwangjian 阅读(376) 评论(0) 推荐(0)
摘要:websocket介绍 The WebSocket Protocol RFC6455,这个是WebSocket的RFC文档,所以内容非常全面(当然只涉及协议,不涉及具体实现),不过内容太多,如果是初次了解,可以挑自己感兴趣的看看。 《WebSocket 是什么原理?为什么可以实现持久连接?》,这个是 阅读全文
posted @ 2018-01-17 10:14 shhnwangjian 阅读(815) 评论(0) 推荐(0)
摘要:go 方法 Golang中的任何自定义类型,都可以有方法,而不仅仅是struct。 定义:func (recevier type) methodName(参数列表)(返回值列表){} 方法的访问控制,通过大小写控制 如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法 阅读全文
posted @ 2018-01-13 22:52 shhnwangjian 阅读(254) 评论(0) 推荐(0)
摘要:go实现Windows服务注册 1、nssm下载:http://nssm.cc/download 2、服务注册 nssm.exe install 服务名 程序 样例如下: 3、服务启动 4、服务卸载 nssm.exe remove 服务名 实现方法二 通过代码控制,依赖包github.com/kar 阅读全文
posted @ 2018-01-12 17:41 shhnwangjian 阅读(1029) 评论(0) 推荐(0)
摘要:需求:实现用户特权,可以满足下面1个或多个条件 红名 达人 vip会员 vip超级会员 蓝钻用户 红钻用户 1、实现方法一:可以根据数据库字段,每个特权用一个字段,进行判断缺点:每增加一个特权,要进行表字段扩展,代码修改。 2、实现方法二:用一个字段表示多个特权,这个方式需要用到位操作概念 假设定义 阅读全文
posted @ 2018-01-02 14:03 shhnwangjian 阅读(542) 评论(0) 推荐(0)
摘要:Context 使用原则 1、不要把Context放在结构体中,要以参数的方式传递 2、以Context作为参数的函数方法,应该把Context作为第一个参数,放在第一位。 3、给一个函数方法传递Context的时候,不要传递nil,如果不知道传递什么,就使用context.TODO 4、Conte 阅读全文
posted @ 2017-09-21 10:08 shhnwangjian 阅读(542) 评论(0) 推荐(0)
摘要:etcd介绍 GitHub:https://github.com/coreos/etcd 官网:https://coreos.com/etcd/ 下载:https://github.com/coreos/etcd/releases/ 概念:高可用的分布式key-value存储,可以用于配置共享和服务 阅读全文
posted @ 2017-09-20 11:16 shhnwangjian 阅读(683) 评论(0) 推荐(0)
摘要:安装导入 使用 阅读全文
posted @ 2017-09-18 14:31 shhnwangjian 阅读(444) 评论(0) 推荐(0)
摘要:安装导入 使用 配置文件内容 代码 阅读全文
posted @ 2017-09-15 16:56 shhnwangjian 阅读(357) 评论(0) 推荐(0)
摘要:安装导入 使用 阅读全文
posted @ 2017-09-15 16:07 shhnwangjian 阅读(641) 评论(0) 推荐(0)
摘要:kafka简介 kafka (官网地址:http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。 下载地址:http://kafka.apache.org/downloads 消息的发布(publish)称作producer,消息的订阅(subscri 阅读全文
posted @ 2017-09-14 16:25 shhnwangjian 阅读(1262) 评论(0) 推荐(0)
摘要:安装导入 使用 1、同步生产者 2、消费者 阅读全文
posted @ 2017-09-14 15:53 shhnwangjian 阅读(619) 评论(0) 推荐(0)
摘要:安装导入 github: https://github.com/go-sql-driver/mysql https://github.com/jmoiron/sqlx Doc: http://godoc.org/github.com/jmoiron/sqlx http://jmoiron.githu 阅读全文
posted @ 2017-09-13 10:11 shhnwangjian 阅读(1159) 评论(0) 推荐(0)
摘要:go http编程 Go原生支持http,import(“net/http”) Go的http服务性能和nginx比较接近 几行代码就可以实现一个web服务 1、http server 2、http client 3、http常见请求方法 Get请求 Post请求 Put请求 Delete请求 He 阅读全文
posted @ 2017-09-12 14:55 shhnwangjian 阅读(1508) 评论(0) 推荐(0)
摘要:go redis 1、安装导入 使用第三方开源的redis库: github.com/garyburd/redigo/redis github:https://github.com/antirez/redis Doc:http://godoc.org/github.com/garyburd/redi 阅读全文
posted @ 2017-09-11 14:23 shhnwangjian 阅读(314) 评论(0) 推荐(0)
摘要:TCP编程 1、客户端和服务器 2、服务端的处理流程 监听端口 接收客户端的链接 创建goroutine,处理该链接 3、客户端的处理流程 建立与服务端的链接 进行数据收发 关闭链接 服务端代码 客户端代码 发送http请求 阅读全文
posted @ 2017-09-11 11:01 shhnwangjian 阅读(553) 评论(0) 推荐(0)
摘要:go 单元测试 文件名必须以_test.go结尾 编写的测试用例函数名以Test开头,传入参数固定 使用go test执行单元测试 样例: 代码文件calc.go 单元测试代码文件calc_test.go 执行命令go test -v 阅读全文
posted @ 2017-09-08 16:57 shhnwangjian 阅读(162) 评论(0) 推荐(0)