Micro In Action(尾声): 分布式计划任务

# Micro In Action(尾声): 分布式计划任务 ![Micro In Action](https://s1.ax1x.com/2020/03/28/GkhGy4.png) > 本文作者:Che Dan > > 原文链接:https://medium.com/@dche423/micro-in-action-9-cron-job-dabec09058e1 本文是《Micro In Acton》 系列的最后一篇。 我们在前面的文章中已经探讨过了利于Micro...阅读全文

Go语言中文网 2020-03-28 15:53:57 polaris

leetcode_820

Golang: 思路:最开始的思路接近于枚举法,后来逆向思考了一下,觉得是字典树结构,但是这个实现的效率很低 代码如下: type Words []string func (s Words) Len() int { return len(s) } func (s Words) Less(i, j int) bool { return len(s[i]) > len(s[j]) } func (s Words) Swap(i, j int) { s[i], s[j] = s[j], s[i] } ...阅读全文

简书 2020-03-28 15:32:46 淳属虚构

leetcode_275

Golang: 思路:二分思路往往是想起来很简单,但实现起来很容易出错,主要原因其实就是在于边界问题,这题也是一样 代码如下: func hIndex(citations []int) int { low,high,res:=0,len(citations)-1,0 for low<=high{ mid:=low+(high-low)/2 if citations[len(citations)-mid-1]>=mid+1{ if mid+1>res{ res=mid+1 } low=mid+1 ...阅读全文

简书 2020-03-28 15:32:45 淳属虚构

leetcode_429

Golang: 思路:广度优先实现层序遍历 代码如下: func levelOrder(root *Node) [][]int { var res [][]int var arr[]*Node if root!=nil{ arr=append(arr,root) for len(arr)!=0{ temp:=len(arr) var level []int for i:=0;i<temp;i++{ level=append(level,arr[i].Val) for _,v:=range arr...阅读全文

简书 2020-03-28 15:32:45 淳属虚构

go-内存机制(4)

go的GC机制 GO的GC是并行GC,也就是说GC的大部分清理和普通的go代码是同时运行的,这让GO的GC流程比较复杂。 标记清除(Mark And Sweep) 此算法主要有两个主要的步骤: 标记(Mark phase) = 清除(Sweep phase) 第一步,找出不可达的对象,然后做上标记。 第二步,回收标记好的对象。 操作非常简单,但是有一点需要额外注意:mark and sweep算法在执行的时候,需要程序暂停,即stop the world。 三色标记法 对于Mark And Sw...阅读全文

简书 2020-03-28 15:32:45 GGBond_8488

Micro In Action(七):熔断与限流

[Micro In Action](https://s1.ax1x.com/2020/03/28/GkW63D.png) > 本文作者:Che Dan > > 原文链接:https://medium.com/@dche423/micro-in-action-7-cn-ce75d5847ef4 本文是[Micro](https://micro.mu/)系列文章的第七篇。前面文章覆盖了创建与调用服务的基本流程。 接下来我们将转到一些高级特性。 今天来谈谈**熔断与限流**。 ...阅读全文

Go语言中文网 2020-03-28 15:32:39 polaris

Micro In Action(六):服务发现

![Micro In Action](https://s1.ax1x.com/2020/03/28/Gkcgw6.png) > 本文作者:Che Dan > > 原文链接:<https://medium.com/@dche423/micro-in-action-5-message-broker-d975c2f28a55> 本文是[Micro](https://micro.mu/)系列文章的第六篇。我们将从最基本的话题开始,逐步转到高级特性。 今天来谈谈Micro中的服务发...阅读全文

Go语言中文网 2020-03-28 15:05:49 polaris

Swoole 开发框架 imi v1.1.3 发布,断线重连特性真好用

imi 是基于 PHP Swoole 的高性能协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 服务的开发。 在 Swoole 的加持下,相比 php-fpm 请求响应能力,I/O密集型场景处理能力,有着本质上的提升。 imi 框架拥有丰富的功能组件,可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。 首创毫秒级的注解及代码热更新重启,让你在开发时只管...阅读全文

Segmentfault 2020-03-31 22:32:33 宇润

Go Web编程--给自己写的服务器添加错误和访问日志

错误日志和访问日志是一个服务器必须支持的功能,我们教程里使用的服务器到目前为止还没有这两个功能。正好前两天也写了篇介绍logrus日志库的文章,那么今天的文章里就给我们自己写的服务器加上错误日志和访问日志的功能。在介绍添加访问日志的时候会介绍一种通过编写中间件获取HTTP响应的StausCode和Body的方法。 Go Web 编程系列的每篇文章的源代码都打了对应版本的软件包,供大家参考。公众号中回复gohttp11获取本文源代码 初始化日志记录器 我们先来做一下初始化工作,在项目里初始化记录错...阅读全文

Segmentfault 2020-03-31 15:32:35 Kevin

Hugo以及go语言安装

1.go语言安装 (1)下载 下载地址:[https://golang.org/dl/] or [https://golang.google.cn/dl/] (2) 安装 可以自己选择安装的目录 安装之后需要设置环境变量 我的电脑右键→属性→高级系统设置→环境变量;指向自己的工作目录文件夹,自己新建一个目录即可 图片.png 另外为了操作方便,可以将GOPATH下的bin目录也添加到Path环境变量的末尾,因为使用go get 命令的时候会将编译后的文件放在GOPATH目录下的bin中 图片.p...阅读全文

简书 2020-03-28 03:32:52 531e41e4e774

使用Pipfile代替reqirements.txt

很多语言都提供了环境隔离的支持,例如nodejs的node_module,golang的go mod,python也有virtualenv和pyvenv等机制。为了建立依赖快照,通常会用pip freeze > requirements.txt 命令生成一个requirements.txt文件,在一些场景下这种方式就可以满足需求,但是在复杂场景下requirements.txt就力不从心了。 requirements.txt appdirs==1.4.3 astroid==2.3.3 attrs...阅读全文

简书 2020-03-28 03:32:49 simpleapples

2020-03-27

1、负责公司新产品的后台业务研发; 2、负责在线高并发大流量系统设计及实现; 3、主要实现语言为Python/Golang。 职位要求 1、本科及以上学历,计算机、通信等相关专业; 2、有扎实的编程能力和良好代码品位; 3、有优秀的系统设计能力,能熟练使用Mysql 、Redis、消息队列等常用WEB组件,并能了解工作原理; 4、深刻理解计算机原理,有良好的数据结构和算法基础; 5、有高并发服务设计和实现经验优先; 6、积极乐观,责任心强,工作认真细致,具有良好的团队沟通与协作能力; 7、对产品...阅读全文

简书 2020-03-28 03:32:49 重装大兵

GORM many2many关系表的创建和查询

最近在用golang搭建个人博客的后台,数据库选用了gorm + mySQL的组合,其中文章(articles)和标签(tags)两个表是多对多的关系,由于对数据库不是很熟悉,外加gorm的文档较为简略,在这里踩了很多的坑。现在在这篇文章中总结下实现的方法。 第一步:定义gorm表的struct type Article struct { gorm.Model Title string `gorm:"not null"` Content string `gorm:"not null"` Tags...阅读全文

简书 2020-03-28 03:32:49 _敏讷

go-内存机制(3)

go的内存分配 Golang有一套自己的内存管理机制,自主的去完成内存分配、垃圾回收、内存管理等过程,从而避免频繁的向操作系统申请、释放内存,有效的提升go语言的处理性能。 Golang的内存管理是基于tcmalloc模型设计,但又有些差异,局部缓存并不是分配给进程或者线程,而是分配给P(Processor);Golang的GC是stop the world,并不是每个进程单独进行GC;golang语言对span的管理更有效率。 基本概念 1.Span span是golang内存管理的基本单位,...阅读全文

简书 2020-03-28 03:32:49 GGBond_8488

我设计的golang面试题

1 golang中的引用类型 切片,map,channel和interface2、map如何顺序读取map不能顺序读取,是因为他是无序的,想要有序读取,首先的解决的问题就是,把key变为有序,所以可以把key放入切片,对切片进行排序,遍历切片,通过key取值。3 如何向main函数传参?main不能带参数,没有返回值. 可以使用flag包获取和解析命令行参数阅读全文

简书 2020-03-28 03:32:44 voidFan

GO 语言操作 redis 数据库

redis数据库 是一种高性能的Key-Value数据库 NoSQL数据库 缓存型数据库 key-value型数据库 错误的说法非关系型数据库 1.redis介绍 1.1NoSQL:一类新出现的数据库(not only sql) 泛指缓存型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景 NoSQL中的产品种类相当多: Redis ...阅读全文

51CTO博客 2020-03-27 17:46:59 xjtuhit

golang之 go path和go module

一.go path1.下载golang https://golang.org/dl/从这里选择你需要的包 2.安装 双击 3.输入 go env go env GOPATH=C:\Users\Lenovo\go; 就可以直接用go get 了,都是下载到这个目录 二.go module1.随意建一个目录,go mod init go mod init test 就会多一个文件 go.mod 2.自定义项目为module name cat go.mod 第一行显示 module test 我们可以...阅读全文

Segmentfault 2020-03-31 10:32:33 海生