Go项目
InterestingFigure
Salted fish in hand, I have the world.
展开
-
Golang常见问题
// 三种阻塞方法 defer func() { for { } }() defer func() { select {} }() defer func() { <-make(chan bool) }() // 常见坑 /* 1.不定参数是空接口类型时,传接口数组和变参是都可以通过,但是得到的参数不同 2.数组是值传递 3.map遍历是无序的。...原创 2020-01-06 15:28:44 · 249 阅读 · 0 评论 -
微服务架构下分布式事务解决方案
微服务的发展微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。Hailo有160个不同服务构成,NetFlix有大约600个服务。国内方面,阿里巴巴、腾讯、360、京东、58同城等很多互联网公司都进行了微服务化实践。当前微服务的开发框架也非常多,比较著...转载 2020-01-02 11:04:10 · 208 阅读 · 0 评论 -
Golang的微服务组件之限流器与熔断器
简介在微服务架构里面一个很常见的问题就是服务之间的延迟和通信失败问题,极端的情况下,甚至会因为某个服务的性能下降或者故障宕机,导致访问超时,层层传递,引发雪崩,最终导致整个系统崩溃,而限流器和熔断器(这两个组件都是客户端的)能很好的解决这个问题,提高系统的可靠性和稳定性限流器限流器,从字面上理解就是用来限制流量,有时候流量突增(可预期的比如“双11”,不可预期的微博的热门话题等),会将后端服...转载 2020-01-02 10:52:07 · 1102 阅读 · 0 评论 -
浅谈微服务中的熔断,限流,降级
简介golang的熔断包hystrixgolang 提供了拓展库(golang.org/x/time/rate)提供了限流器组件,提供了 Token bucket (令牌桶算法)在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题...原创 2020-01-02 10:46:00 · 1345 阅读 · 1 评论 -
golang高并发的深入理解
go为什么能做到高并发goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,几十个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易...原创 2019-12-31 17:50:56 · 685 阅读 · 0 评论 -
Uber 内部的 Go 风格规范
Uber 是一家美国硅谷的科技公司,也是 Go 语言的早期 adopter。其开源了很多 golang 项目,诸如被 Gopher 圈熟知的 zap、jaeger 等。2018 年年末 Uber 将内部的 Go 风格规范 开源到 GitHub,经过一年的积累和更新,该规范已经初具规模,并受到广大 Gopher 的关注。本文是该规范的中文版本。本版本会根据原版实时更新。https://github...原创 2019-12-05 15:47:58 · 206 阅读 · 0 评论 -
mysql的事务隔离机制
https://segmentfault.com/blog/lant1.事务的ACID特性{Atomicity 原子性Consistency 一致性:数据库总是从一个一致性的状态 转换到 另一个一致性的状态;Isolation 隔离性:通常来说, 一个事务所做的修改在最终提交以前, 对其他事务是不可见的;Durability 持久性:这里所说的`永久`应该可以理解为 被事务修改的数据 ...原创 2019-06-27 09:55:48 · 281 阅读 · 0 评论 -
Nginx配置代理gRPC的方法
1.nginx安装配置(centos7)一:Nginx和依赖包 Nginx安装包 下载地址:http://nginx.org/en/download.html OpenSSL SSL协议加密解密的工具包 下载地址:https://www.openssl.org/ PCRE 由c语言编写的正则表达式库 下载地址:http://www.pcre.org/ zlib数据压缩库 ...原创 2019-07-05 18:59:27 · 5438 阅读 · 1 评论 -
golang处理excel表格
https://github.com/360EntSecGroup-Skylar/excelize当存储图片到xlsx的时候遇到的两个问题:1.图片缩放建议使用一个开源库(github.com/nfnt/resize),不要使用360库自带的缩放,会有一点问题2.先对单元格做大小控制,再插入图片,否则有可能会导致一些图片被拉伸content, err := base64.S...原创 2019-08-02 16:56:50 · 1507 阅读 · 1 评论 -
推送系统 go库 Centrifugo
该库定义了必须通过各种传输(Websocket、SockJS)发送的自定义协议和消息类型。服务器客户端在内部使用该协议,并为特性提供简单的API——建立持久连接、订阅通道、调用RPC命令等等。./centrifugo genconfig生成配置文件 config.json./centrifugo genconfig -c config.yaml./centrifugo checkconfig...原创 2019-08-19 11:11:33 · 623 阅读 · 0 评论 -
Golang对中文汉字进行拼音排序
sort.Strings排序默认是按照Unicode码点的顺序的。如果需要按照拼音排序, 可以通过GBK转换实现, 自定义一个排序接口, 这里的排序优先级数字>字母>汉字代码如下:package mainimport ( "bytes" "fmt" "io/ioutil" "sort" "golang.org/x/text/...原创 2019-08-20 17:24:50 · 6259 阅读 · 5 评论 -
golang缩放图片写入excel表格
func AddImgToExcel(xlsx *excelize.File, sheet, location string, width, height float64, imgpath string) error { var f io.Reader if strings.HasPrefix(imgpath, "http") { tr := &http.Transport{ ...原创 2019-08-12 14:02:15 · 1852 阅读 · 1 评论 -
vsftpd.conf
# Example config file /etc/vsftpd.conf## The default compiled in settings are fairly paranoid. This sample file# loosens things up a bit, to make the ftp daemon more usable.# Please see vsftpd.co...原创 2019-09-17 15:04:25 · 123 阅读 · 0 评论 -
Seata是一个易于使用、高性能、开源的分布式事务解决方案。
Seata是一个易于使用、高性能、开源的分布式事务解决方案。https://github.com/seata/seata原创 2019-09-26 10:35:41 · 392 阅读 · 0 评论 -
MYSQL高并发的事务问题
高并发事务出现的问题1.第一类丢失两个事务A B 都对同一 数据S 做修改, A修改S成功后,B修改失败发生回滚,回滚的S导致A的修改被覆盖成原先的数据。导致两次对S的修改都失败。READ COMMITTED以及以上的隔离机制都能解决2.脏读还是事务A B处理同一条数据S,在事务A修改了S这条数据但是还未提交数据时,事务B读取了事务A修改后的数据S,然后事务A回滚了,导致事务B读取的该...原创 2019-06-27 09:54:52 · 3582 阅读 · 0 评论 -
深入理解无服务器架构(Faas/Serverless)
原文:https://blog.csdn.net/xialingming/article/details/81369624摘要无服务器架构(Faas/Serverless),是软件架构领域的热门话题。 AWS,Google Cloud和Azure - 在无服务器上投入了大量资金,已经在看到了大量专门针对Faas/Serverless的文章、书籍,开源项目,会议。 但什么是无服务器,为什么(或不...转载 2019-06-13 17:56:31 · 880 阅读 · 0 评论 -
seaweedfs
{FastDFS它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。Seaweedfs (https://github.com/chrislusf/seaweedfs)Seaweedfs 的设计原理是基于 Facebook 的一篇图片存储系统的论文 Facebook-Haystack 说到这个,毛剑也在依这个论文写bfs, 正在开发中,可以跟看从小到大一步...原创 2018-12-24 16:34:24 · 1155 阅读 · 0 评论 -
golang中map使用channel串行化多读多写
type MyMap struct { Data map[int]string ch chan func()}func NewMyMap() *MyMap { m := &MyMap{ Data: make(map[int]string), ch: make(chan func()), } go func() { for { (<-m.ch)...原创 2018-12-24 16:38:12 · 2004 阅读 · 0 评论 -
UUID
package mainimport ( "fmt" "github.com/satori/go.uuid")func main() { // Creating UUID Version 4 // panic on error u1 := uuid.Must(uuid.NewV4()) fmt.Printf("UUIDv4: %s\n", u1.String()) //...原创 2018-12-24 16:38:33 · 229 阅读 · 0 评论 -
分享一个日志系统 zap
https://github.com/uber-go/zappackage mainimport ( "encoding/json" "log" "go.uber.org/zap" "go.uber.org/zap/zapcore")func main() { rawJSON := []byte(`{ "level": "debug", "enco原创 2018-12-24 16:38:55 · 298 阅读 · 0 评论 -
golang性能测试
https://www.jianshu.com/p/cb8a95cc66f0转载 2019-02-14 10:56:34 · 319 阅读 · 0 评论 -
GO语言亿级并发
参考:https://blog.csdn.net/Jeanphorn/article/details/79018205感谢Handling 1 Million Requests per Minute with Go这篇文章给予的巨大启发。workerpool.gopackage mainimport "fmt"type Job interface { Do()}typ...原创 2019-02-14 10:59:14 · 697 阅读 · 0 评论 -
golang日志框架之logrus详细说明
前面的话下面示例代码中的一些import我没做校验,我只是从我的一个测试代码里抠出来的,出现一些错误自己简单处理下就可以用。logrus简介logrus是一个可插拔的、结构化的日志框架。logrus拥有六种日志级别:debug、info、warn、error、fatal和panic可扩展的Hook机制:允许使用者通过hook的方式将日志分发到任意地方,如本地文件系统、标准输出、logs...原创 2019-04-28 17:12:28 · 7400 阅读 · 2 评论 -
需求文档、需求分析报告、需求规格说明书分析
前言在产品研发过程中,《需求文档》与《需求分析报告》以及《需求规格说明书》是产品研发的辅助文档,必不可少。遗憾的是不但外行人傻傻分不清,有时候相关从业者乃至被神化了的产品经理也是分不清楚。是什么导致了分歧与疑惑呢?三种文档名称都包含了需求,对需求的定义到什么程度?接下来,为你揭开需求的前世今生缥缈的面纱。相信搞清楚了需求文档与需求分析报告以及需求规格说明书三者之间的区别和作用,这个问题就可以迎...原创 2019-04-29 11:01:03 · 11422 阅读 · 1 评论 -
Golang http包下FileServer的使用
FileServer文档:https://godoc.org/net/http#FileServer今天看到http的 Handle 方法,所以就像试试,就找到FileServerFileServer: 1.www.xx.com/ 根路径 直接使用 http.Handle("/", http.FileServer(http.Dir("/tmp...原创 2019-04-25 16:54:20 · 4249 阅读 · 2 评论 -
HTTP压测工具之wrk
前言wrk是一款简单的HTTP压测工具,托管在Github上,https://github.com/wg/wrk.wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等. 其实它是复用了 redis 的 ae 异步事件驱动框架. 确切的说 ae 事件驱动框架并不是 redis 发...原创 2019-05-20 17:24:56 · 894 阅读 · 0 评论 -
腾讯云人脸识别接口的使用
文档地址:https://cloud.tencent.com/document/product/867API Explorer该工具提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力,能显著降低使用云 API 的难度,推荐使用。https://console.cloud.tencent.com/api/explorer?Product=iai&Version=201...原创 2019-05-27 18:08:48 · 5498 阅读 · 0 评论 -
seaweedfs使用说明
基本概念master 存储映射关系,文件和fid的映射关系 weed masterNode 系统抽象的结点,抽象为datacenter、rack、datanodedatacenter 数据中心,包含多个rack,类似一个机房rack :属于一个datacenter,类似机房中的一个机架datanode : 存储节点,存储多个volume,类似机架中的一个机器 weed volumev...原创 2018-12-24 16:33:51 · 1960 阅读 · 0 评论