调度相关的重要数据结构

声明 下面的分析均基于Golang1.14版本。 以下数据结构均做了裁剪,只留了部分调度密切相关的重要结构。 一、G的定义 裁剪了大部分字段,后面填坑把其它字段的作用及用途整理。 type g struct { stack stack // offset known to runtime/cgo G的栈信息含栈的起始和终止地址 m *m // current m; offset known to arm liblink 运行时绑定的M sched gobuf // 运行时的上下文 goid in...阅读全文

简书 2020-05-11 07:32:41 不争_900c

golang 生成个性二维码

前言 好久没发文章了,最近登录看到有朋友评论了golang生成二维码的文章,想了解下生成个性二维码的解决方案! 实现思路 ,网上搜相关资料几乎没有, 没有那就就自己想吧,就去看了下草料二维码; 然后突然就有感觉了 不就是把像素的颜色替换嘛 这还不简单 1 打开二维码图片 2 打开要填充的图片 3 将要填充的图片剪裁成和二维码一样大小 4 分析二维码的每个像素 替换成图片的像素就行了 以下是生成的例子: 例子 image image image image 代码 package main impo...阅读全文

简书 2020-05-11 07:32:41 hi李昊天

官宣:2019 年 Go 开发者调查报告

2019 年 Go 开发者调查 4月20日,Go 官方释出 2019 年的 Go 开发者调研报告。官方非常感谢参与本次调查的数千名Go开发人员。 在2019年,官方收到了 10,975 份问卷,几乎是去年的两倍! 团队成员非常感谢开发者花时间和精力填写这份 Go 开发者调研。 本次调研,官方改进了对开放式、自由文本回答的问题的分析。去年使用的是机器学习来粗略但快速地对这些问卷进行分类。今年,两名研究人员手动分析和分类了这些问卷,允许进行更细致的分析,与去年的数字进行有效的比较。这个变化的目的是提...阅读全文

掘金 2020年05月10日 hantmac

Go读书社区web开发与高性能架构优化

第1章 课程介绍 本章简要介绍项目功能,并介绍怎样通过实践项目学习到开发和架构思路。同时介绍了课程编排的特点和提供了学习本课程的一种思路。第2章 环境搭建 本章主要介绍开发环境的准备工作。包括如何安装Go编译环境、Beego框架、Bee开发工具、MySQL等工具和组件。第3章 V1.0 : Beego快速搭建Web应用【业务快速迭代】 本章主要讲解一个典型的Web应用,从设计到开发再到打包部署的全过程。在开发之前,整体讲解了Web应用架构的思路和路线,并实战开发首页分类模块、搜索模块、评论模块等...阅读全文

Go语言中文网 2020-05-10 22:33:15 tendernesn

自建ngrok服务支持https访问

前言 最近从事第三方平台代小程序实现业务开发,很多业务交互请求需要https,本地调试开发实现不了,不可能把部署到生产服务器调试,那又很不方便。我参考网上很多教程,很多不完整,不系统。我于是整理出完整教程当备用。 专业术语 内网穿透,又叫NAT穿透,是计算机用语,翻译过来就是 你的电脑可以直接被你朋友访问。 通常我们的电脑是无法自己被访问的。因为我们的电脑缺少自己的独立的ip地址。现在ip稀缺,电信运营商已经不会随便分配固定ip给个人。 通常实现内网穿透,是通过路由器上端口映射来实现的。但是路由...阅读全文

简书 2020-05-10 21:32:46 lichongbing

protobuf导出golang,调整默认tag的方法

protobuf导出golang,调整默认tag的方法 问题概述 在protobuf导出到golang的时候,生成的.go文件里的struct的tag是没办法灵活设置的,以下面这个message为例 test.proto syntax=proto3; package test; option go_package = ".;test"; message MyMessage { int64 Code = 1; } 执行protoc --proto_path=. --go_out=. test.pr...阅读全文

简书 2020-05-10 21:32:43 一条大菜狗HS

程序员岗位介绍,我爬取了拉勾网所有技术岗位工资数据,算法工程师平均薪资高达2W

点击观看视频 ↓↓↓ https://www.bilibili.com/video/BV1JV411d7m5 文字版 大家好,我是宁一,一个多月没有更新视频了,这一个多月我都在准备一个店铺商城的云开发小程序项目,项目刚刚开发完,还需要一段时间来写成课程,怕大家把我忘了,先来更新一篇文章~ 最近有个小学弟问我,在招聘网站上面看那些岗位眼花缭乱的,不知道怎样去确定自己的方向 其实这个问题我找工作的时候也遇到过,当时只知道前端后端开发这样的工作,所以找工作也局限在这里,其实程序员技术岗还有许多其他的岗...阅读全文

简书 2020-05-10 19:33:14 l猫宁一

Golang——流程控制

常用if和for,switch和goto属于扩展的 注意:Go 没有三目运算符,所以不支持 ?: 形式的条件判断。 if else func main() { a := 1 if a < 0 { //格式比较严格,{不换行 fmt.Println("小于0") } else if a == 0 { fmt.Println("等于0") } else { //格式比较严格,{不换行 fmt.Println("大于0") } } if判断特殊写法 在if表达式之前添加一个执行语句,再根据变量值进行判...阅读全文

简书 2020-05-10 19:33:12 Cici冬雪

Golang——安装和第一个Go语言

Go(Golang)、静态编译型语言 UTF8编码 1.官网下载安装包(Mac) 安装包完成之后,在命令后确认 $ go version go version go1.14.2 darwin/amd64 # Go语言默认安装目录 $ echo $GOROOT #查看go的相关环境变量 $ go env 2.配置GOPATH GOPATH是一个环境变量,用来表示go项目的存放路径(工作目录)。 GOPATH路径最好只设置一个,所有的项目代码放到GOPATH的src目录下。 3.Go目录结构 在GO...阅读全文

Golang——常用命令

在命令行或终端输入go即可查看所有支持的命令 go get:获取远程包(需提前安装git) go run:直接运行程序 go build:测试编译,检查是否有编译错误 go fmt:格式化源码(部分IDE在保存时自动调用) go install:编译包文件并编译整个程序 go test:运行测试文件 go doc:查看文档(CHM手册)阅读全文

简书 2020-05-10 19:33:10 Cici冬雪

Golang——数据类型

基本数据类型: 整型、浮点型、布尔型、字符串 其它: 数组、切片、结构体、函数、map、通道(channel) 基本数据类型 整型 有符号:int8 int16 int32 int64 无符号:unit8 uint16 uint32 uint64 unit8是byte。 int16对应c语言中的short型 ,int64对应c语言中的long型。 int:自动匹配os,os是32位就是int32,os是64位就是int64。 len():获取对象的长度,返回int package main im...阅读全文

简书 2020-05-10 19:33:10 Cici冬雪

记浅析开源电商框架《flamingo-commerce》

初识 开源地址:https://github.com/i-love-flamingo/flamingo-commerce 首先我们看看效果 官方示例:https://demoshop.flamingo.me 我部署的示例:http://www.itfan.top:3210 尝试自己部署 提供了DEMO,地址:https://github.com/i-love-flamingo/commerce-demo-carotene 我部署的过程(略显坎坷) 踩过的坑: 首先我使用阿里云服务器(国内节点),...阅读全文

简书 2020-05-10 19:33:10 Ralap_

关于golang调用外部程序,一个天大的笑话

当golang调用外部程序时,就是不能正常返回外部程序的输出。 在windows上,搞了我一周,上天入地,测试了无数种可能,想了无数个错误,就是解决不了。 在几近放弃的时候,突然发现一个超简单的事实: 我生成的应用程序名称,就是cmd.exe!!!这和exec.Command调用的执行程序,永远是同一个名称!!! 于是,当我调用外部指定的程序时,永远是在执行自己的golang程序!!!WTF!!!! 而在windows上调用外部程序时,核心代码如下: var cmdExe, cmdOpt, cm...阅读全文

简书 2020-05-10 19:32:43 万州客

Golang 基础语法

环境变量 goroot gopath安装依赖 go get框架 beego leafhello.go package mainimport "fmt"func main() { fmt.Println("Hello, World!")}运行 go run hello.go大写开头 public 小写开头 private结尾不需要分号变量声明 var age int // 声明时赋默认值var length = 1.3 // 自动推断number := 10 // 省略var,只能用于函数体内va...阅读全文

简书 2020-05-10 19:32:42 小小爱1990

mcall systemstack等汇编函数

声明 下面的分析均基于Golang1.14版本。 不同硬件平台使用的汇编文件不同,本文分析的函数mcall, systemstack, asmcgocall是基于asm_arm64.s汇编文件。 不用操作系统平台使用的系统调用不同,本文分析的函数syscall是基于asm_linux_arm64.s汇编文件。 CPU的上下文 这些函数的本质都是为了切换goroutine,goroutine切换时需要切换CPU执行的上下文,主要有2个寄存器的值SP(当前线程使用的栈的栈顶地址),PC(下一个要执行...阅读全文

简书 2020-05-10 19:32:42 不争_900c

golang 生成个性二维码

前言 好久没发文章了,最近登录看到有朋友评论了golang生成二维码的文章,想了解下生成个性二维码的解决方案! 实现思路 ,网上搜相关资料几乎没有, 没有那就就自己想吧,就去看了下草料二维码; 然后突然就有感觉了 不就是把像素的颜色替换嘛 这还不简单 1 打开二维码图片2 打开要填充的图片3 将要填充的图片剪裁成和二维码一样大小4 分析二维码的每个像素 替换成图片的像素就行了 以下是生成的例子: 例子 代码 package main import ( "fmt" "github.com/nfnt...阅读全文

Segmentfault 2020-05-14 18:32:34 李昊天

Go进程的HeapReleased上升,但是RSS不下降造成内存泄漏?

事情是这样的,线上一个服务,启动后RSS随任务数增加而持续上升,但是过了业务高峰期后,任务数已经下降,RSS却没有下降,而是维持在高位水平。 那内存到底被谁持有了呢?为了定位问题,我把进程的各项Go runtime内存指标,以及进程的RSS等指标持续采集下来,并以时间维度绘制成了折线图: 本着DRY原则,我把采集和绘制部分专门制作成了一个开源库,业务方代码可以十分方便的接入,绘制出如上样式的折线图,并通过网页实时查看。git地址:https://github.com/q191201771... ...阅读全文

Segmentfault 2020-05-14 17:32:41 就想叫yoko