GolangRoadmap.com V2.2.0版本发布

​​​V2.2.0版本更新01会员中心自从V2.0.0版本上线订阅功能后,有很多求"知"欲望很强的小伙伴,一口气就把仅上的6本宝典全部订阅了(感谢支持)。这让我想到一个问题,如果以后宝典有了100部,那一个新用户来后,如果想订阅全部宝典,岂不是要订阅一百次?Oh,my god!如果是我,我会疯掉的。所以从这个需求点出发,我想到了要提前把我之前规划的会员功能开发出来了,于是说干就干。先为基础用户表扩充几个字段:会员类型(类型一:7天体验用户、类型二:年度会员、类型三:永久会员)会员过期时间(类型配...阅读全文

Go语言中文网 2020-11-17 18:36:19 itmrtan

go-zero 如何扛住流量冲击(一)

不管是在单体服务中还是在微服务中,开发者为前端提供的API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性。即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪。go-zero 集成了开箱即用的 限流器 。其中内置了两种限流器,也对应两类使用场景:种类原理场景periodlimit单位时间限制访问次数需要强行限制数据的传输速率tokenlimit令牌桶限流限制数据的平均传输速率,同时允许某种程度的突发传输本文就...阅读全文

Segmentfault 2020-11-20 16:32:33 kevinwan

你以为只是简单的排序?(二)

上一篇文章中分享了冒泡排序、插入排序、选择排序这三种排序算法,它们的时间复杂度都是O(n^2),比较高,适合小规模数据的排序。这篇文章,分享两种时间复杂度为O(nlogn)的排序算法,归并排序和快速排序。这两种排序算法适合大规模的数据排序,更加的常用一些归并排序归并排序思想归并排序核心思想:将待排序的数据分成前后两个部分,然后对前后两个部分的数据分别进行排序,再将前后两部分合并,得到的结果就是排好序的数据了语言很抽象,看图归并排序使用的就是分治思想。分治,顾名思义,就是分而治之,将一个大问题分解...阅读全文

Segmentfault 2020-11-20 14:32:35 书旅

HTTP2服务器推送的第一次尝试

来自公众号:新世界杂货铺在HTTP1.x中,访问一个页面,浏览器首先获取HTML资源,然后在解析页面时增量地获取其他资源,服务器必须等待浏览器发出请求后才下发页面内资源。而服务器实际上是知道页面内资源有哪些的,如果服务器能够在浏览器显式请求资源之前就将资源推送到浏览器,页面加载速度将会大大提示,这也是本篇的主旨。本篇主要分为两个部分,第一部分是用go实现的服务器推送例子,第二部分是自签名证书。为什么会有自签名证书,这里笔者先卖个关子,继续阅读后文将会守得云开见月明。服务器推送例子目前仅有HTTP...阅读全文

Segmentfault 2020-11-20 11:32:33 新世界杂货铺

1.干饭的才艺(工厂方法模式)

工厂方法模式(Factory Method) 包括两种实现方法: 1.简单工厂模式(Simple Factory) 2.工厂方法模式(Factory Method) 1.简单工厂模式 将对象的创建过程,用一个公共的函数封装起来,外部只需要调用该函数即可.很多go源码中都在使用这种方法.当看到NewXXX开头的函数,基本都是这种模式的体现. 啥也不说,上才艺 package simple import ( "fmt" ) type FoodKind int const ( MeatKind Foo...阅读全文

简书 2020-11-17 06:32:38 池鱼rain

03-Docker基础知识

1 虚拟化技术与Docker的比较 什么是虚拟化技术 虚拟化技术就是在一台物理计算机上,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟服务器,这样做的话,一台物理服务器便可以安装多个应用程序,达到资源利用的最大化,而且多个应用之间相互隔离,如下图所示: image.png 虚拟机的优点 可以把资源分配到不同的虚拟机,达到硬件资源的最大化利用 与直接在物理机上部署应用,虚拟更容易扩展应用。 云服务:通过虚拟机虚拟出不同的物理资源,可以快速搭建云服务。 虚拟机的不足...阅读全文

36_GoWeb_优雅地关机或重启

我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢? 阅读本文需要了解一些UNIX系统中信号的概念,请提前查阅资料预习。 优雅地关机 什么是优雅关机? 优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行Ctrl+C关闭服务端时,会强制结束进程导致正在访问的请...阅读全文

简书 2020-11-16 21:32:38 极风键客

2020-11-16:手写代码:leetcode第406题。假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。

2020-11-16:手写代码:leetcode第406题。假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。 福哥答案2020-11-16: ①排序。按照【身高】降序排列。如果【身高】一样,按照【人数】升序排列。 ②插入。遍历这个队列,按照【人数】插入相应位置。 采用leetcode里的代码,golang代码如下: func reconstructQueue(people [...阅读全文

简书 2020-11-16 21:32:38 福大大架构师每日一题

ES Search Template

ES Search Template所谓 search template 搜索模板其实就是:预先定义好查询语句 DSL 的结构并预留参数搜索的时再传入参数值渲染出完整的 DSL ,最后进行搜索使用搜索模板可以将 DSL 从应用程序中解耦出来,并且可以更加灵活的更改查询语句。例如:GET _search/template { "source" : { "query": { "match" : { "{{my_field}}" : "{{my_value}}" } } }, "params" : {...阅读全文

Segmentfault 2020-11-20 10:32:33 rife

Golang 类型实现 String方法

示例一 func (c ConOne) String () string { return fmt.Sprintf("My name is %v", c) } func main() { c := ConOne{"张三"} fmt.Println(c.String()) /* 死循环,因为Conone实现了 String()方法,当格式化输出"自身"c时自动使用String方法; 在String方法内调用格式化自身,因此导致递归调用,错误信息: runtime: goroutine stack ...阅读全文

简书 2020-11-16 18:32:38 Dcbamboo

Golang 打包发布到各个平台

前言 使用Golang方便之处就在于可以直接打包二进制文件 不需要配置Golang的环境和依赖就可以直接跑起来 开发环境: Windows 10 GoLand 2020.2 Go 1.15.1 打包发布到Centos set GOOS=linux set GOARCH=amd64 # open in Terminal go build main.go 打包发布到Windows set GOOS=windows set GOARCH=amd64 # open in Terminal go buil...阅读全文

简书 2020-11-16 18:32:38 grey_sky

Golang对excel进行处理

之前有关Golang的文章主要是基于Golang的标准库来讲解的,今天我们来看看Golang的一个开源库,它可以用来处理xlsx文件,首先下载包go get github.com/tealeg/xlsx我们通过一个简单的例子看看这个包如何使用,这个例子主要实现输入列名,将表格中该列的所有数据进行显示。代码如下所示: package main import ( "bufio" "fmt" "os" "github.com/tealeg/xlsx" ) func main() { if len(os...阅读全文

简书 2020-11-16 18:32:38 也许会了

即行思考——2020秋季

我的一段小经历 8月,我喜欢上了一个女孩,在即刻上认识的网友,作为一个直男,相比于以往把天聊死的结局,我们之间相谈甚欢,会分享一些自己生活中的琐事,也会谈谈自己对一些事物的观点。 10月国庆后我们见过三次面,(10.8)第一次是我们几个即友一块出来玩,当然我是想单约她的,但考虑到初次见面难免会有所尴尬,然后我们约在了轰趴馆一起玩游戏;(10.17)第二次是她主动约的我吃饭,我也刚好“在她家附近”玩,然后还看了场电影,主动送她回家,没有太多故事,就一次很正常的朋友见面,我感觉到我们之间关系更近一步...阅读全文

简书 2020-11-16 11:32:40 沙蒿

一键安装 K8s 以及在K8s上部署Go服务

通过Rancher一键部署k8s服务 地址: https://rancher.com/quick-start/ 命令 sudo docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher 然后访问你的docker机器的IP地址就可以看到一个叫local的k8s环境,不过不知道是不是我操作不对,我不能使用这个集群 点击添加集群,自定义一通默认到最后给你一个docker命令执行后我们就...阅读全文

简书 2020-11-16 11:32:40 hwholiday

2020-11-15:手写代码:行有序、列也有序的二维数组中,找num,找到返回true,否则false?

福哥答案2020-11-15: 此题来源于leetcode240和剑指 Offer(第 2 版)面试题4。 1.线性查找。 从二维数组的坐下角开始查找。如果当前元素等于目标值,则返回 true。如果当前元素大于目标值,则上移。如果当前元素小于目标值,则右移。 2.线性查找+二分查找。 当前元素上移和右移,采用二分法。要用到如下两道题: 2.1.在一个有序数组中,找<=某个数最右侧的位置。 2.2.在一个有序数组中,找>=某个数最左侧的位置。 golang代码如下: package main im...阅读全文

简书 2020-11-15 23:32:38 福大大架构师每日一题

(Mysql)对数据库设计时设计标识字段引发的一些思考

前言哈喽,everybody,我是asong。今天asong教你们一个mysql优化设计状态标识。学会了他,我们的DB结构看起来更清晰,也避免了DB结构过大的问题,具体怎么设计,下面你就看我怎么操作就好了~~~背景我们在很多应用场景中,通常是需要给数据加上一些标识,已表明这条数据的某个特性。比如标识用户的支付渠道,标识商家的结算方式、商品的类型等等。对于这样的具有有限固定的几个值的标识,我们通过枚举的方式来标识就可以了,但是对于一些同时具有多个属性且变化比较大的就显然不合适了,举个很简单的例子,...阅读全文

Segmentfault 2020-11-19 18:32:33 asong

基于Beanstalkd的goalng延时任务队列

beanstalkd-go 描述 简单快速的通用工作队列 作为学习目的为初衷,用golang完全实现了 Beanstalk 功能 协议说明 里程碑 2020-11-14 : 所有指令全部实现完成,但仅限内存。 2020-11-15 : binlog持久化支持 快速开始 使用go get安装 GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u -v github.com/sjatsh/beanstalkd-go 手动编译 make...阅读全文

简书 2020-11-15 21:32:39 打瞌睡滴花花

Go 并发编程之 Mutex

友情提示:此篇文章大约需要阅读 5分钟45秒,不足之处请多指教,感谢你的阅读。 订阅本站我们比较常见的大型项目的设计中都会出现并发访问问题,并发就是为了解决数据的准确性,保证同一个临界区的数据只能被一个线程进行操作,日常中使用到的并发场景也是很多的:计数器:计数器结果不准确;秒杀系统:由于同一时间访问量比较大,导致的超卖;用户账户异常:同一时间支付导致的账户透支;buffer 数据异常:更新 buffer 导致的数据混乱。上面都是并发带来的数据准确性的问题,决绝方案就是使用互斥锁,也就是今天并发...阅读全文

Segmentfault 2020-11-19 15:32:34 Meng小羽