[Golang软件推荐] Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家. 附上: 喵了个咪的博客:w-blog.cn go-commons-pool-Github地址:github.com/jolestar/go-commons-pool 1.连接池 在使用之前我们需要先了解清楚连接池的概念,总结下来...阅读全文

简书 2020-02-21 14:32:47 文振熙

吃葡萄

有三种葡萄,每种分别有a,b,c颗,有三个人,第一个只吃第一种和第二种葡萄,第二个人只吃第二种和第三种葡萄,第三个人只吃第一种和第三种葡萄。 适当安排三个人使得吃完所有葡萄,并且三个人中吃的最多的那个人吃得尽量少。 输入描述: 第一行数字T,代表数据组数 接下来T行,每行三个数a,b,c,数字用空格间隔 1 <= a, b, c <= 108,1 <= T <= 10 输出描述: 对于每组数据,输出一行一个数字表示三个人中吃的最多的那个人吃的数量。 例如: 输入 2 1 2 3 1 2 6 输出...阅读全文

简书 2020-02-21 14:32:45 CancerTiN

leetcode_357

Golang: 思路:简单DP,这里可以注意到,当n>10,即这个数字的长度>10后,所有这个长度的数字都会有重复的现象发生,所以也可以直接穷举。 代码如下: DP的放在这里,双百时空间复杂度 func countNumbersWithUniqueDigits(n int) int { if n<0{ return 10 } arr1:=make([]int,11) arr1[0],arr1[1]=1,10 temp:=9 flag:=9 for i:=2;i<len(arr1);i++{ te...阅读全文

简书 2020-02-21 14:32:44 淳属虚构

字节跳动国际化广告团队招人啦!

字节跳动国际化广告团队招人啦! KevinMatrix KevinMatrix May the force be with you! 我们是谁? TikTok Ads(https://ads.tiktok.com/)是字节跳动的国际化广告平台,支撑公司旗下TikTok、TopBuzz、BuzzVideo、Helo、Vigo、BaBe、News Republic等国际化App的商业变现。 平台的广告推荐技术领先业界,在确保用户体验的前提下,结合用户的消费兴趣和行为习惯,通过创意...阅读全文

Go语言中文网 2020-02-21 13:50:12 shaw

图解kubernetes Pod生命周期事件生成器

PLEG(PodLifecycleEventGenerator)主要是用于周期性检测Pod的运行状态,从而对比Pod前后状态生成事件从而触发kubelet进行Pod容器状态的校证,让我们一起来初探下其内部实现机制 1. 图解设计 1.1 Pod事件生成 Pod事件生成主要是根据对应Pod前后的状态对比来实现,首先通过runtime来获取当前节点的所有Pod的列表,并将对应的状态进行保存,这样在下一个轮训周期就可以通过前后状态的对比去发现状态发生改变的Pod的容器,并且产生对应的事件 1.2 事件...阅读全文

Segmentfault 2020-02-25 12:32:34 仔仔

Dig101:Go之聊聊struct的内存对齐

Dig101: dig more, simplified more and know more 经过前边几篇文章,相信你也发现了,struct几乎无处不在。 string,slice和map底层都用到了struct。 今天我们来重点关注下struct的内存对齐, 理解它,对更好的运用struct和读懂一些源码库的实现会有很大的帮助。 在此之前,我们先明确几个术语,便于后续分析。 字(word) 是用于表示其自然的数据单位,也叫machine word。字是电脑用来一次性处理事务的一个固定长度。 ...阅读全文

Segmentfault 2020-02-25 12:32:33 newbmiao

如何在Kubernetes中将Envoy用作负载均衡器

在当今分布式的世界中,单体架构越来越多地被多个,更小,相互连接的服务(不管是好是坏)所取代,代理和负载平衡技术似乎正在复兴。除了老玩家以外,近年来还涌现出几种新的代理技术,它们以各种技术实现,并以不同的功能进行普及,例如易于集成到某些云提供商(“云原生”),高性能和低内存占用,或动态配置。 可以说,两种最流行的“经典”代理技术是NGINX(C)和HAProxy(C),而其中的一些新成员是Zuul(Java),Linkerd(Rust),Traefik(Go),Caddy(Go)和Envoy(C+...阅读全文

Segmentfault 2020-02-25 09:32:34 iyacontrol

Go http2 和 h2c

了解一下http2和h2c (HTTP/2 over TCP,HTTP/2 without TLS)。 http/1.1 的服务器 我们经常会在代码中启动一个http服务器,最简单的http/1.1服务器如下所示: http.Handle("/foo", fooHandler) http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q", html.Escape...阅读全文

博客园 2018-10-24 00:08 gao88

Golang 高效编写(整理)

这是一篇如何编写高效 Golang 语言程序的文章。这是从一些开发者的经验总结中整理出来的。根据这篇文章,你可以编写出一篇更高效的 Golang 程序。 尽量使用直接的类型interface{} 提供了 golang 中的 interface 类似于 java 的 interface、PHP 的 interface 或 C++ 的纯虚基类。通过这种方式可以提供更快捷的编码。但是这种方式也带来了一些问题,最大的问题还是性能问题。 12345678// method 1a.AA()// method...阅读全文

ipfans's Blog 2014-12-18 00:00 ipfans's Blog

channel 和 select 控制 goroutines

最近有一个需求是在一个常驻内存的程序中结束相关任务。在 Go 中,创建一个 goroutine 非常简单,只需要 go 一下就可以了,但是如果我创建了很多 goroutine,想要结束怎么办? 比如说我有一个死循环的例子 1234567891011121314151617181920package mainimport ("fmt" "sync" "time")func main() {queue := make(chan int, 20) var wg sync.WaitGroup for {...阅读全文

ipfans's Blog 2014-04-28 00:00 ipfans's Blog

Beego 的几个小 Tips

Beego 框架不错,个人比较喜欢,关键是还有一些开发工具很实用,封装了很多实现,不需要自己做很多工作,在不考虑效率的前提下,都是可以接受的范畴。 自定义错误页面Beego 默认自己带了一些错误页面,在 error.go 文件中进行了定义。以 404 为例: 12345678910// show 404 notfound error.func NotFound(rw http.ResponseWriter, r *http.Request) {t, _ := template.New("beeg...阅读全文

ipfans's Blog 2014-04-01 00:00 ipfans's Blog

如何"优雅"地发布 go module 模块

前言 截止到go1.13, go 官方推出的包管理工具go module已经发布三个版本了,网上也有很多文章介绍如何使用go module(推荐观看附录中Go夜读的视频和官方Wiki),但是大部分都是讲如何引用别人的go module模块,鲜有提到如何发布自己的go module包的文章。本文将主要介绍如何“优雅”地发布自己的go module模块。 本文的代码和命令均在 ubuntu 19.10 中运行,go 的版本为 1.13.5 pkg.go.dev简介 go.dev 是go官方团队于20...阅读全文

掘金 2020年02月20日 YouEclipse

网易Golang从入门到精通 百度网盘 百度云

章节1:Golang环境搭建章节2:数据类型章节3:字符串原理和时间日期类型章节4:流程控制章节5:函数介绍1章节6:函数详解2章节7:数组章节8:切片章节9:指针类型章节10:map数据类型章节11:package介绍章节12:结构体介绍一章节13:结构体介绍二章节14:IO操作一章节15:IO操作二章节16:接口讲解1章节17:日志库项目开发(接口应用实战)章节18:反射详解章节19:单元测试和调试章节20:并发编程章节21:select和线程安全章节22:网络编程章节23:web编程基础章...阅读全文

简书 2020-02-21 09:32:47 kaixinduo

leetcode_91

Golang: 思路:DP这类的题一般都不简单,需要考虑的很全面,稍有不慎就翻车,这题挂了三次,全是最简单的测试用例上,成功的把自己通过率拉到了平均线上。 这题是常态DP,没啥难度,但这题需要注意几个点: 字符串第一个字符如果为0,可直接返回0 字符串中间出现了0,那么要查看0前一位是不是1或者是2,不是可以直接返回0 代码如下: func numDecodings(s string) int { if len(s)==0{ return len(s) } if s[0]=='0' { retu...阅读全文

简书 2020-02-21 09:32:46 淳属虚构

go-grpc-流式接口(streaming rpc)

上一篇我们介绍了rpc最基本的应用,今天我们来看看rpc的另外一个数据交互方式streaming rpc,也就是流式接口。 streaming rpc相比于simple rpc来说可以很好的解决一个接口发送大量数据的场景。 比如一个订单导出的接口有20万条记录,如果使用simple rpc来实现的话。那么我们需要一次性接收到20万记录才能进行下一步的操作。但是如果我们使用streaming rpc那么我们就可以接收一条记录处理一条记录,直到所以的数据传输完毕。这样可以较少服务器的瞬时压力,也更有...阅读全文

Segmentfault 2020-02-25 09:32:33 旧梦发癫

[Go - Note] Channel 阻塞deadlock和panic情况,以及close channel

阻塞: 发生一直阻塞时,会报如下deadlock错误: fatal error: all goroutines are asleep - deadlock! 无缓存channel: 通道中无数据,但执行读通道。 通道中无数据,向通道写数据,但无协程读取。 有缓存channel: 通道的缓存无数据,但执行读通道。 通道的缓存已经占满,向通道写数据,但无协程读。 Panic: 1.向已经关闭的channel写。2.关闭已经关闭的channel。 close channel: You needn't ...阅读全文

Segmentfault 2020-02-24 22:32:31 Arboat

leetcode_322

Golang: 前言:这题我为了省时间空间,用了递归和map,但是没想到,还不如别人直接数组来的快,不想优化了,下次会直接用上数组。代码不推荐使用,就这样。 思路:这题是不能用贪心的,因为贪心的思路不能证明可以解这题。是的,如果确定要求最优解,除非能证明贪心可行,不然不推荐使用贪心。这题举个例子,有1元、5元,11元,f(n)表示换n元零钱需要的最小硬币数量,贪心的思路是,如果n>11,应该先用最大的,但在这个例子里,15元=11元+1元*4,贪心需要五个硬币,实际上呢,15=5元*3。动态规划...阅读全文

简书 2020-02-20 19:33:17 淳属虚构

Go语言的转义字符(escape char)

1.说明:常用的转义字符有如下:(1)\t:表示一个制表符,通常使用它可以排版。(2)\n:换行符(3)\\:一个\(4)\”:一个"(5)\r:一个回车 2.在Golang中注释有两种形式 (1)行注释1.1:基本语法//注释内容(2)块注释(多行注释)1.2:基本语法/*注释内容*/使用细节:1.对于行注释和块注释,被注释的文字,不会被Go编译器执行。2.块注释里面不允许有块注释嵌套(注意一下)阅读全文

简书 2020-02-20 19:33:16 阿泽记录生活记录爱

leetcode_300

Golang: 思路:用一个数组arr,arr[i]表示以nums中以i为下标的元素所构成的最长上升子序列的长度,举个例子:[1,3,6,7,9,4,10,5,6],i=4时,即nums[i]=9,则arr[4]表示的是9作为最长上升子序列的最后一位时,这个序列的最大长度。最后,遍历这个数组arr,看下最大值,那么就是最长上升子序列的长度。 代码如下: func lengthOfLIS(nums []int) int { if len(nums)<=1 { return len(nums) } ...阅读全文

简书 2020-02-20 19:33:15 淳属虚构