聊一聊python和golang的协程区别

背景最近在做后端服务python到go的迁移和重构,这两种语言里,最大的特色和优势就是都支持协程。之前主要做python的性能优化和架构优化,一开始觉得两个协程原理和应用应该差不多,后来发现还是有很大的区别,今天就在这里总结一下~什么是协程在说它们两者区别前,我们首先聊一下什么是协程,好像它没有一个官方的定义,那就结合平时的应用经验和学习内容来谈谈自己的理解。 协程,其实可以理解为一种特殊的程序调用。特殊的是在执行过程中,在子程序(或者说函数)内部可中断,然后转而执行别的子程序,在适当的时候再返...阅读全文

Segmentfault 2020-11-24 13:32:33 屈天航

云原生如何助力微服务?

随着技术的发展,我们云托管时代逐步的向云原生演进了。所谓云原生,就是将微服务、DevOps的架构理念与云所提供的容器、Serverless无服务器更好的结合,提升资源的使用效率,提高研发运维效率。那么在云原生时代,微服务应该如何与云原生相辅相成呢? 我们来看看微服务的定义,即将一个单体应用拆分成多个微服务,由微服务来一起协同对外提供服务支持。在微服务的运行中就存在这三个问题:1、如何管理微服务的生命周期;2、如何治理不同技术栈微服务之间的通信;3、如何处理不同技术栈的微服务请求?对于如何管理微服...阅读全文

简书 2020-11-20 17:34:40 贵阳北大青鸟

Go语言结构体快速入门

Golang里面没有类,用结构体实现面向对象的编程特性。非常简洁。没有extends,通过匿名字段来实现。Golang中面向接口编程是非常重要的特性。 package main import ( "fmt" "encoding/json" ) func main() { //结构体的定义 type cat struct { Name string Age int hobby string } //map的key为学号,map的值为结构体,包含名字,年龄和地址。 var cat1 cat cat1...阅读全文

简书 2020-11-20 17:34:37 Jaeyok

Go语言快速入门笔记(番外篇一)

本篇主要记录一些小tip,而不是完整知识点的记录tip1:应用程序的入口的包必须是main,必须有main方法tip2:main函数不支持返回值和传参,需要通过os.exit 和 os.arg(虽然没啥用)func main() { if os.Args[1] == "1" { os.Exit(0) } else { os.Exit(-1) } }tip3:连续常量的定义iota 从0开始自增,一个const里 iota不会重置const ( one = 1 + iota two three f...阅读全文

Segmentfault 2020-11-24 12:32:33 彩笔梳子

算法:冒泡排序法的原理

冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾下面用流程来描述冒泡排序的运作过程:假设有一个数组 arrpackage main import "fmt" func main() { var arr [5]int = [5]int{-1, 2, 7, 3, ...阅读全文

Segmentfault 2020-11-24 12:32:32 大步点点

golang 读写二进制文件

需求 我们需要对一些文本进行"明文加密",何为"明文加密"? 从一些错乱的数据中,提取我们想要的数据. 明文加密 生成错乱的数据(可以随机生成) 我们需要对自己的ip加密 例:lksdjfljflasjfls45fosfonsfalshfs89lsiflaj0asd8sldjfalsd 只需从上面的字符串提取数字即可,45.89.0.8 这里只是举个简单例子 正题 把该文本写入二进制文件 import ( "bytes" "encoding/binary" "fmt" "io" "os" ) f...阅读全文

简书 2020-11-20 12:32:52 吃馍夹菜

golang 读写二进制文件

需求我们需要对一些文本进行"明文加密",何为"明文加密"?从一些错乱的数据中,提取我们想要的数据.明文加密生成错乱的数据(可以随机生成)我们需要对自己的ip加密 例:lksdjfljflasjfls45fosfonsfalshfs89lsiflaj0asd8sldjfalsd只需从上面的字符串提取数字即可,45.89.0.8这里只是举个简单例子正题把该文本写入二进制文件import ( "bytes" "encoding/binary" "fmt" "io" "os" ) func main()...阅读全文

Segmentfault 2020-11-24 08:32:32 吃馍夹菜

golang实现计算时间差工具

golang实现计算时间差工具 帮同事写了一个简单的小脚本,用go语言实现,输入两个时间,可以计算这两个时间的差值。 代码比较冗余,但也实现了基本功能. 比如你要计算15:46和23:21之间的时间差值,你应该按照此格式输入:15:46 23:21 至于单位,小时:分钟 与 分钟:秒钟 的输入都是可以用的,因为都是60进制 Talk is cheap, then show you the code package main import ( "fmt" "strconv" "strings" )...阅读全文

libp2p-rs 关于监测指标的实现

模块地址: https://github.com/netwarps/l...libp2p-rs 作为一个 p2p 网络项目,有时候我们可能需要观察网络数据的收发情况,并对其进行收集和汇总。基于这个前提,设计了一个 metric 模块去实现相关内容。metric实现构想由于 libp2p 支持连接多个 peer,而每个 peer 支持的 protocol 类型也不尽相同。我们不但需要汇总收发包的数据,同时也需要根据 peer_id 和 protocol,去分类记录相应的网络流量情况。很明显,这是一...阅读全文

Segmentfault 2020-11-23 17:32:33 Netwarps

Go协程池,通俗易懂的解释,还请大佬们多多指正

协程池主要是为了减少 go 协程频繁创建、销毁带来的性能损耗,虽然可以忽略不计,但是网上说特殊情况还是有用的。 另外一个就是限制协程的数量,避免无限制的协程创建 那这个协程池通俗易懂来讲,比如老板给员工分配任务: 老板领了一堆任务,得找工人干活呀, 那领导就拿出一个任务,给一个空闲的员工 A,再把下一个任务,给另外一个空闲的员工 B 。 问题在于: 1. 不能招无限个员工 2. 员工是可以重复处理多个任务的 这时候 A 或者 B,指不定谁先忙完了 如果有人忙完了,领导...阅读全文

Go语言中文网 2020-11-20 10:49:08 sunshinev123

阿里云 CentOS 7.6 yum 安装 go(golang) 语言环境

版权声明:本文为博主原创文章,转载请注明出处【by:待孤君临天下】前言:记录下安装过程以便下次有需要无需百度!1、查询服务器 yum 里是否有 golang 输入 yum search golang yum search golang 2、输入 yum install golang 进行安装 (过程中输入 y) yum install golang 3、输入 go version go version阅读全文

简书 2020-11-20 05:32:42 待孤君临天下

go runtime

零 前置知识 操作系统的每个进程都认为自己可以访问计算机的所有物理内存,但由于计算机必定运行着多个程序,每个进程都不能拥有全部内存。 为了避免了进程直接访问实际的物理地址,操作系统会将物理内存虚拟为一个数组,每个元素都有一个唯一的物理地址(PA)。 物理存储其器中存储着一个页表(page table),该表即虚拟地址与物理地址的映射表,读取该也表,即可完成地址翻译。 假设一个程序访问地址为0x1001的内存,实际上,该数据并不一定是存储在0x1001的物理地址中,甚至也不在物理内存中(如果物理内...阅读全文

简书 2020-11-19 22:45:24 voidFan

golang sync.Pool使用

golang是一个自动垃圾回收的语言,创建对象的时候无需关心他的回收,但是由于垃圾回收机制有一个STW(stop-the-word,暂停时间),频繁的创建和清理对程序的性能还是有影响的。所以我们可以讲需要用到的对象存起来当缓存来使用。 sync.pool是golang标准库中提供的一个通用的数据结构,可以创建池化的对象。把不用的对象回收,避免被清理,使用的时候直接取用。 sync.pool主要有两个方法Get和Put,以及一个New字段。 New的字段类型是函数func() interface{...阅读全文

简书 2020-11-19 22:45:24 陈陈陈_6150

golang后台开发常用标准库

## 一 Go的数据库接口#### 1.1 接口介绍Go官方没有提供数据库驱动,而是为开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,这样做的好处是:框架迁移极其方便。 Go数据库标准包位于以下两个包中:- database/sql:提供了保证SQL或类SQL数据库的泛用接口- database/sql/driver:定义了应被数据库驱动实现的接口,这些接口会被sql包使用#### 1.2 sql.Registersql.Register位于database/s...阅读全文

简书 2020-11-19 22:45:24 voidFan

Go 协程池解析~通俗易懂

协程池主要是为了减少 go 协程频繁创建、销毁带来的性能损耗,虽然可以忽略不计,但是网上说特殊情况还是有用的。那这个协程池通俗易懂来讲,比如老板给员工分配任务:老板领了一堆任务,得找工人干活呀, 那领导就拿出一个任务,给一个空闲的员工 A,再把下一个任务,给另外一个空闲的员工 B 。这时候 A 或者 B,指不定谁先忙完了如果有人忙完了,领导就把下一个任务,给先忙完的人。A/B 就是协程池里面的两个协程下面这段代码,完成了如下功能协程池数量上限控制、最大空闲时间设置定时清理空闲协程清理,释放内存任...阅读全文

Segmentfault 2020-11-23 13:32:32 jaysun

某美团程序员爆料:筛选简历时,用go语言的基本不看!网友:当韭菜还当出优越感了!

程序员使用的语言有鄙视链吗?有人说有,有人说没有。一个美团员工发帖说,筛选简历时用go语言的基本不看。短短一句话,把对go语言的鄙视体现得淋漓尽致,难道go语言真的不如其他语言?​ 和他一样想法的前阿里程序员说,因为用java的人多,简历也多,他们也优先选择用java的程序员。​一个前腾讯程序员说,go语言适合开发一些简单的中间件,但因为没有面向对象,没有工业级的包管理工具,不太适合业务逻辑比较复杂的场景,缺乏抽象与继承,go的项目做大了会非常难以维护。​ 还有人说go语言比较原始,是专科生语言...阅读全文

Segmentfault 2020-11-23 10:32:34 Mr.Z

Go语言快速入门笔记(一):基础语法部分

写在前面:本系列为java程序员转go的快速学习笔记,涉及基础语法、进阶知识、简单实战三大部分基础语法本节主要讲解 go 语言的数据类型、变量的申明和赋值、条件语句、循环语句。一、数据类型和大多数后端语言一样,go 语言数据类型也可分为基本数据类型和引用数据类型go 语言基本数据类型如下:布尔型:go 用 bool 表示整型:Go 里面有 int8 int16 int32 uint64 ,分别对应 Java 中的 byte short int long,同时 Go 里面还有专门 表示无符号数的 ...阅读全文

Segmentfault 2020-11-22 16:32:33 彩笔梳子

Go语言常用内置包简介

标准的Go语言代码库中包含了大量的包,并且在安装 Go 的时候多数会自动安装到系统中。我们可以在 $GOROOT/src/pkg 目录中查看这些包。下面简单介绍一些我们开发中常用的包。1) fmtfmt 包实现了格式化的标准输入输出,这与C语言中的 printf 和 scanf 类似。其中的 fmt.Printf() 和 fmt.Println() 是开发者使用最为频繁的函数。格式化短语派生于C语言,一些短语(%- 序列)是这样使用:%v:默认格式的值。当打印结构时,加号(%+v)会增加字段名;...阅读全文

Segmentfault 2020-11-22 14:32:32 code

go-zero之web框架

go-zero 是一个集成了各种工程实践的 web 和 rpc 框架,其中rest是web框架模块,基于Go语言原生的http包进行构建,是一个轻量的,高性能的,功能完整的,简单易用的web框架服务创建go-zero中创建http服务非常简单,官方推荐使用goctl工具来生成。为了方便演示,这里通过手动创建服务,代码如下package main import ( "log" "net/http" "github.com/tal-tech/go-zero/core/logx" "github.co...阅读全文

Segmentfault 2020-11-22 12:32:33 kevinwan

机器人微信消息推送实现方案

微信群是一个聚集志同道合朋友们的公共场所,量化交易圈子的微信群也不例外。最近有不少发明者量化的用户总是提问,如何可以随心所欲的向微信群推送消息,比如自己的策略发出了交易信号,但是又不想自动化交易,希望让机器人提供的信号作为参考发到微信群中。 为此大概看了一下微信接口,发现需要公众号才行,并不是特别的方便。所以决定另辟蹊径,尝试了一下以下方案。由于作者水平有限,仅仅只能完成此需求的最基本功能,各位看官仅当参考。 实现方案 决定使用Golang编写,需要用到Golang的一个库github.com/...阅读全文

简书 2020-11-19 12:32:42 发明者量化FMZ