不得不看的十大经典排序

排序算法所谓的排序算法就是将一串记录,按照递增或递减的顺序排列起来。通常提到的一共有十种排序:冒泡、选择、插入、快速、归并、堆、希尔、计数、桶、基数比较类排序:通过比较来决定元素间的相对次序,通常其时间复杂度不能突破O(nlogn),因此又称为非线性时间比较类排序。非比较类排序:不通过比较元素间的相对次序,可以突破基于比较排序的时间下限,以线性时间运行,因此又称为线性时间非比较类排序。时间复杂度:排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性冒泡排序O(n^2^)...阅读全文

Segmentfault 2021-02-09 19:32:36 .container .car 等

一个微服务 Demo 将我三年 Go Web 开发经验传授给你

Golang-microservice-demo本项目为 Golang 开发的一个微服务 server demo,展示了 grpc、gorm 等常用库的使用,以及 k8s、opentracing 等流行生态的适配,错误处理、Context、Chan 等编码技巧,测试驱动开发的尝试。是作者对自己 Go web 开发经验的记录和总结,配套文档可点击链接查看。项目代码:https://github.com/win5do/go-...Dependenciesgrpcgrpc-gatewaygrpc-mi...阅读全文

Segmentfault 2021-02-09 17:32:32 .container .car 等

编写可测试的 Go 代码

测试分类开发涉及的测试主要有以下三种,其他范围更广的测试如 系统测试、功能测试 这里就不介绍了。unit test(单元测试):针对程序模块来进行正确性检验的测试工作,程序单元是应用的最小可测试部件。单元测试要求没有外部依赖。integration test(集成测试):也叫组装测试或联合测试。 在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。集成测试通常会接入db,mq,后端接口等真实依赖。e2e test(端到端测试):从头到尾验证整个软件及其与外部接口的集成。...阅读全文

Segmentfault 2021-02-09 15:32:32 .container .car 等

golang的GMP调度

Golang 调度器四个重要结构 :M P G Sched GMP的结构源码在文件中\src\runtime\runtime2.go 简介 G:goroutine,go程序建立的用户线程。主要保存 goroutine 的运行时栈信息(stack结构体)以及 CPU 的一些寄存器的值(gobuf结构体),还有关联的M,全局队列中下个G等信息。 M:machine 一个M直接关联一个os内核线程,用于执行G。 M会优先从关联的P的本地队列中直接获取待执行的G,它保存了 M 自身使用的栈信息、当 前正...阅读全文

简书 2021-02-07 15:32:39 小刀田田

golang核心编程

golang核心笔记 Go的编译命令 - GOROOT: go当前安装目录 - GOPATH: 工作区的集合,多个用:分隔.工作区是放置 Go 源码文件的目录.三个目录:**src 目录,pkg 目录,bin 目录**。 - GO111MODULE: mod包管理开启 - GOPROXY: go代理,配合GO111MODULE使用 - go env -w GO111MODULE=on - eport GO111MODULE=auto - go mod init [project_name] # ...阅读全文

简书 2021-02-07 12:32:46 voidFan

耗电优化(二):Battery Historian

作者:隋胖胖LoveFat 链接:https://www.jianshu.com/p/c223c95744d3 Battery Historian github地址:https://github.com/google/battery-historian 本文介绍在mac/windows上搭建Battery Historian的基本环境,以及如何采集安卓电量数据,最后如何在Battery Historian上分析电量数据。 一、mac上搭建Battery Historian基本环境 1.安装Doc...阅读全文

简书 2021-02-07 12:32:45 bug音音

我为何从php 加入到 go 的潮流

为何我要说加入go开发是一种潮流,尤其是对于php开发人员,我加入了很多go的开发群或者爱好群,发现大部分人都是从php过来的,原本google开发golang是想让更多的c/c++人员来使用。PHP 语言作为当今最热门的网站程序开发语言,它也是我多年来一直使用的语言,它具有成本低、速度快、可移植性好、内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。首先php是弱类型语言,弱类型的好处就是能提升开发人员的开发效率,加之php有非常强大的array以及对应的数组处理方法,大部分你用得...阅读全文

简书 2021-02-07 12:32:37 游子_9bf5

我为何从php 加入到 go 的潮流!

为何我要说加入go开发是一种潮流,尤其是对于php开发人员,我加入了很多go的开发群或者爱好群,发现大部分人都是从php过来的,原本google开发golang是想让更多的c/c++人员来使用。PHP 语言作为当今最热门的网站程序开发语言,它也是我多年来一直使用的语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。首先php是弱类型语言,弱类型的好处就是能提升开发人员的开发效率,加之php有非常强大的array以及对应的数组处理方法,大部分你用...阅读全文

Go语言中文网 2021-02-07 12:01:10 kocie

小年

日子过的真快,还没反应过来就已经到了小年,距离春节也越来越近了。 小年这天该怎么过?当然要嗨起来!挂灯笼挂彩灯彩球,刚到下午,同学们就早早地把学习区装扮起来。等到晚上就才更热闹了,老师和大学姐给每组发彩纸剪刀,还组织我们亲自写春联。 没过一会儿,人群中爆发出一阵欢呼,有学长大声念他们刚刚写的对联“他年他月她又在何方,她山她水他不在身旁”;有同学争着闹到底是golang天下第一还是java第一;有同学们聚在一起共同为两个厉害的小组填词写对联“尖刀亮刃能伏虎,利剑出鞘可降龙”;比赛,展示,气氛到达了...阅读全文

简书 2021-02-07 11:33:22 王语嫣_小20强化班

PySparkStreaming At Least Once与不停机更新实现

目标 1.实现在流式数据处理时,做到At-Least-Once的能力,即保证数据不丢失,保证每条数据“至少被计算1次”。2.实现Streaming任务在需要更新逻辑代码时,做到不停机滚动更新。实现关键点1.从上一次消费的Offset继续消费2.Spark Streaming Gracefully Restart(优雅退出)3.数据处理时增加重试,每个步骤打点log便于对账第三点属于业务自己维护,下面不展开赘述。从上次消费的地方继续消费我们在消费Kafka消息通道时,实质上是将我们“消费的进度”(...阅读全文

golang依赖注入工具wire指南

wire与依赖注入Wire 是一个的Golang依赖注入工具,通过自动生成代码的方式在编译期完成依赖注入,Java体系中最出名的Spring框架采用运行时注入,个人认为这是wire和其他依赖注入最大的不同之处。依赖注入(Dependency Injection)也称作控制反转(Inversion of Control),个人给控制反转下的定义如下:当前对象需要的依赖对象由外部提供(通常是IoC容器),外部负责依赖对象的构造等操作,当前对象只负责调用,而不关心依赖对象的构造。即依赖对象的控制权交给...阅读全文

51CTO博客 2021-02-07 10:22:52 mb6018ead621887

我是如何从 php 转型写 go 的

本来想延续上一个公众号 <<不定期更新的日常>>系列,但是想想还是先写下这篇吧。希望对那些刚转型 Go 或者有意向转型的小伙伴有所帮助。起点去年七月初的时候,在上家公司感觉到毕业以来第一次瓶颈,加上小公司项目半凉的状态,随即提出离职。在交接的过程中,我开始投递简历出来面试,因为学历并不是很好,加之在开源世界并没有什么拿得出手的项目,也就没对大厂抱有希望,整个期间就面了三家公司,拿了其中两家 offer,一家做直播的,一家做电商行业的,选择了电商的那家,不算很大,一千多人还是有的,然后就完成了离职...阅读全文

Segmentfault 2021-02-09 11:32:32 .container .car 等

2021-02-06:假设字符串str长度为N,请问最长回文子串的长度是多少?

福哥答案2021-02-06: 1.动态规划。无代码,见图。 2.中心扩展法。无代码。 3.Manacher算法。有代码,见图。 1)理解回文半径数组。 2)理解所有中心的回文最右边界R,和取得R时的中心点C。 3)理解 L…(i`)…C…(i)…R 的结构,以及根据i’回文长度进行的状况划分。 4)每一种情况划分,都可以加速求解i回文半径的过程。 代码用的是第3种方法,用golang编写,代码如下: package main import "fmt" func main() { fmt.Pri...阅读全文

简书 2021-02-06 22:32:43 福大大架构师每日一题

Go:创建高性能的字符串

【译文】原文地址 我最近一直在用空闲时间来解决LeetCode中的问题,我认为这是一个锻炼Golang的机会,并使用Go作为练习LeetCode的主要语言。Go是一种令人惊叹的编程语言,我从根本上赞同go语言的设计,即一种和C语言一样高性能。而且和JavaScript和Python这些脚本语言一样高效和易于编程。我建议你有机会也学习和尝试下。是的,我非常喜欢Go。 下面回到我LeetCode问题:leetcode 1249,该问题要求删除最少数量的圆括号,直到字符串达到平衡,即字母加上有效圆括号...阅读全文

简书 2021-02-06 22:32:42 汪明军_3145

golang依赖注入工具wire指南

wire与依赖注入Wire 是一个的Golang依赖注入工具,通过自动生成代码的方式在编译期完成依赖注入,Java体系中最出名的Spring框架采用运行时注入,个人认为这是wire和其他依赖注入最大的不同之处。依赖注入(Dependency Injection)也称作控制反转(Inversion of Control),个人给控制反转下的定义如下:当前对象需要的依赖对象由外部提供(通常是IoC容器),外部负责依赖对象的构造等操作,当前对象只负责调用,而不关心依赖对象的构造。即依赖对象的控制权交给...阅读全文

Segmentfault 2021-02-09 08:32:32 .container .car 等

Golang 语言怎么实现访问流量限流?

转载: Golang 语言怎么实现访问流量限流? 介绍 为了保护业务系统不会在访问流量过载的情况下出现问题,我们就需要限流。常见的限流算法有:固定时间窗口限流算法,滑动时间窗口限流算法,漏桶限流算法,令牌桶限流算法。其中固定时间窗口限流算法和滑动时间窗口限流算法比较简单,感兴趣的读者可以自己去研究。 漏桶 所谓漏桶算法,就像一个漏斗一样,把倒入的水比作访问流量,把流出的水比作业务系统处理的请求,当访问流量过大时,漏桶就会积水,甚至水会溢出。 图片来自网络 推荐 uber 团队开源的一个 Gola...阅读全文

简书 2021-02-06 18:32:40 Vicky丶云