简单说说 golang 的主要优点

我使用 golang 的时间不多,没有深入研究,算是入门级别,也总结一下使用的心得吧。 我们要考虑一个高性能解决方案,首先要考虑的是:方案是否能解决问题,其次是否足够简单:研发人员能少写代码,运维方便维护部署。下面简单说说 golang 的几个主要优点。 ???? 文章来源:wenfh2020.com 1. 优点 1.1. 高性能-协程 golang 源码级别支持协程,实现简单。协程使用,当底层遇到阻塞会自动切换,也就是逻辑层通过同步方式实现异步,充分利用了系统资源,同时避免了异步状态机的反人类...阅读全文

简书 2020-09-04 00:32:42 wenfh2020

关于Golang的那些事(四)-- 复合数据类型

上一章节讲完了基本数据类型,光有这些基本数据类型,还不足以去处理我们日常的业务,于是我们把基本数据类型做一个聚合,形成了我们常用的四种聚合数据类型:数组、slice、map和结构体,这一章节我们就来聊聊复合数据类型。 数组这个概念在很多语言当中都有,我以前用的Node.js,还有大学学过的Java、C/C++、C#当中都有这个概念,就是具有固定长度且拥有零个或者多个相同数据类型元素的序列。由于数组长度固定,所以在Go中很少用到,slice可以自由的进行长度的缩短和伸长,所以很多场合下都用slic...阅读全文

简书 2020-09-04 00:32:42 llkevin13579

golang微服务框架go-zero系列-3:扩展go-zero,使之支持html模板解析自动化

# 扩展go-zero,使之支持html模板解析自动化 go-zero本身支持html模板解析,我们只需要添加url对应模板解hanlder,实现逻辑就可以了 # 但是winlion太懒了,我甚至想 + 不写任何一个和模板相关的handler + 如果有新的模板,直接把模板到某个特定目录就好,不要动任何go代码 + 在开发环境下没有缓存,修改了模板文件无需重启 需求在这里,开撸吧 # 在代码开始前,你可能需要阅读 [金光灿灿的Gorm V2+适合创业的gol...阅读全文

Go语言中文网 2020-09-03 23:26:51 winlion

golang微服务框架go-zero系列-2:在go-zero中使用jwt-token鉴权实践

# 在go-zero中使用jwt-token鉴权实践 # 阅读本文前你需要阅读 [金光灿灿的Gorm V2+适合创业的golang微服务框架go-zero实战](https://mp.weixin.qq.com/s/NQMDvxvE1kH6MrpW50SUJg) # 创建项目 ## 生成go.mod文件 以如下指令创建项目 ```bash mkdir jwttoken cd jwttoken go mod init jwttoken ``` ## 定义user.a...阅读全文

Go语言中文网 2020-09-03 23:25:52 winlion

golang微服务框架go-zero系列-1:go-zero + gorm V2集成实战

# 为什么使用go-zero ## 可以有第三个选择 + golang圈子不大,微服务框架框架屈指可数:除了go-micro、go-kit,几乎没有其他选择。go-zero为此提供第三个可能。 + go-micro 对webapi支持并不友好,需要运行micro指令,难以定制 ## 创业产品需要一款支持业务成长的框架 我们到底需要什么样的框架?我们需要一款可以支持业务成长的框架!产品运营初期,比如需求验证阶段,我们并不需要采取微服务架构,因为运营成本太高。一款单体应用足以应付。随着业务...阅读全文

Go语言中文网 2020-09-03 23:24:41 winlion

2020-09-03:裸写算法:回形矩阵遍历。

福哥答案2020-09-03: 方法一:模拟,位图方式。 跟 方法二 一样,区别是辅助矩阵visited用位图节约空间。 方法二:模拟。 可以模拟螺旋矩阵的路径。初始位置是矩阵的左上角,初始方向是向右,当路径超出界限或者进入之前访问过的位置时,则顺时针旋转,进入下一个方向。 判断路径是否进入之前访问过的位置需要使用一个与输入矩阵大小相同的辅助矩阵visited,其中的每个元素表示该位置是否被访问过。当一个元素被访问时,将 visited 中的对应位置的元素设为已访问。 如何判断路径是否结束?由于...阅读全文

简书 2020-09-03 22:32:42 福大大架构师每日一题

《K8s源码解析》第一章阅读笔记

# 《K8s源码解析》第一章阅读笔记 > K8s系统特点 - 可移植:支持公有云、私有云、混合云、多重云。 - 可扩展:模块化、插件化、可挂载、可组合。 - 自动化:自动部署、自动重启、自动复制、自动伸缩/扩展。 ## 1.1 K8s发展历史 - 2003-2004年:Google发布Brog系统 - 2013年左右:Google继Brog系统发布Omega集群管理系统 - 2014年左右:Google发布了K8s(作为Brog的开源版本发布) - 2015年左...阅读全文

Go语言中文网 2020-09-03 20:24:47 Scott9

控制语句与数组 golang

if判断 基本控制语句有 if , for , switch 。 if 系列语句和 php 的一些区别,if 条件判断语句不能写小括号,并且在条件判断前可以有初始化操作语句,只能有一个初始化语句, if 下的执行语句由花括号包起来,左花括号必须与 if 同行。 如下: if a, b := 3, 4; a == 3 { fmt.Println(a) fmt.Println(b) } 上面代码块变量 a 和 b 只在当前 if 执行语句内有效,如果在 if 块外也有 a 和 b 两个变量则外部同名...阅读全文

简书 2020-09-03 19:32:43 与子笑

数组与切片 golang

a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //初始化一个数组 b := a[5:10]//从a切片 fmt.Println(a) fmt.Println(b) c := make([]int, 1, 10)//第一个参数为类型,切片。第二参数为默认元素个数。第三个参数为最大容量,可以不设置默认为默认元素个数 d := a[7:8]//从a中切片 fmt.Println(d, len(d), cap(d)) //*l-1 fmt.Println(len...阅读全文

简书 2020-09-03 19:32:41 与子笑

nginx源码分析--nginx模块解析

nginx的模块非常之多,可以认为所有代码都是以模块的形式组织,这包括核心模块和功能模块,针对不同的应用场合,并非所有的功能模块都要被用到,附录A给出的是默认configure(即简单的http服务器应用)下被连接的模块,这里虽说是模块连接,但nginx不会像apache或lighttpd那样在编译时生成so动态库而在程序执行时再进行动态加载,nginx模块源文件会在生成nginx时就直接被编译到其二进制执行文件中,所以如果要选用不同的功能模块,必须对nginx做重新配置和编译。对于功能模块的选...阅读全文

简书 2020-09-03 17:36:15 linux大本营

01.Go语言环境搭建

[toc] Go语言的前世今生 一、Golang语言的官网 首先我们登录Golang的官方网站:https://golang.org/ image 因为Google和中国的关系,直接登录Golang的官网,需要翻墙。 当然你也可以登录Golang的国内网站:https://golang.google.cn/ image 二、下载 在Mac、Windows和Linux三个平台上都支持Golang。您可以从https://golang.org/dl/下载相应平台的安装包。 image 该网站在国内不...阅读全文

简书 2020-09-03 17:35:31 go以恒

golang微服务框架go-zero系列-2:在go-zero中使用jwt-token鉴权实践

阅读本文前你需要阅读 金光灿灿的Gorm V2+适合创业的golang微服务框架go-zero实战 创建项目 生成go.mod文件 以如下指令创建项目 mkdir jwttoken cd jwttoken go mod init jwttoken 定义user.api 本文设计API如下 描述 格式 方法 参数 返回 是否需要鉴权 用户登录 /open/authorization post mobile:手机号,passwd:密码,code:图片验证码 id:用户ID,token:用户token...阅读全文

简书 2020-09-03 15:33:00 非正式解决方案

零基础开发 nginx 模块

本文大纲 简要介绍 Nginx 动态模块 。 快速搭建简单 开发环境 ,拉取源码并编译 nginx 。 简要介绍 nginx 模块 源码配置与目录结构 ,建立工程框架。 简要介绍 nginx HTTP 模块结构,建立 一个 HTTP 空模块 框架代码。 编写一个简单配置文件,支持以普通用户 测试运行 nginx ,方便后续开发测试。 通过一个 hello world 示例简要介绍 Nginx 配置指令 。 简要介绍 Nginx HTTP 请求处理器 。 简要介绍 Nginx 热更新 (reloa...阅读全文

简书 2020-09-03 15:33:00 阿里云云栖号

Go Dumpling!让导出数据更容易

作者介绍:李淳竹(lichunzhu),TiDB 研发工程师。 Tools SIG Community:主要涵盖 TiDB 数据处理工具,包含 TiDB 数据备份/导入导出,TiDB 数据变更捕获,其他数据库数据迁移至 TiDB 等。 Dumpling 是由 Go 语言编写的用于对数据库进行数据导出的工具。目前支持 MySQL 协议的数据库,并且针对 TiDB 的特性进行了优化。Dumpling 的主要特点包括: 1. 适配 Mydumper,轻松上手。 2. Go 语言编写,定制开发简单。 自...阅读全文

简书 2020-09-03 15:32:59 PingCAP

prometheus监控告警

监控告警-Prometheus 第一章:概述 本章将介绍监控告警的一些基本概念。 1.1 什么是监控告警? 监控是什么? 说白了就是用一种形式去盯着、观察服务器,把服务器的各种行为表现都显示出来,用以发现问题和不足。 告警是什么? 监控和告警这两个词需要分开来理解,监控是监控,告警是告警。监控是把行为表现展现出来,用来观察的。告警则是当监控获取的数据发生异常并且达到了某个临界点的时候,采用各种途径来通知用户、管理员、运维人员甚至是老板。 告警系统中最重要的一个概念之一就是对告警阈值的理解。阈值(...阅读全文

简书 2020-09-03 15:32:58 小小_3ca7

年度最佳【golang】map详解

这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通过阅读其他入门书籍了解。本文的内容比较深入,但是由于我画了各种图,我相信很容易看懂。什么是 map维基百科里这样定义 map:In computer science, an associative array, map, symbol table, or dictionary is an abs...阅读全文

Segmentfault 2020-09-09 09:32:35 去去1002

年度最佳【golang】sync.Map详解

工作中,经常会碰到并发读写 map 而造成 panic 的情况,为什么在并发读写的时候,会 panic 呢?因为在并发读写的情况下,map 里的数据会被写乱,之后就是 Garbage in, garbage out,还不如直接 panic 了。是什么Go 语言原生 map 并不是线程安全的,对它进行并发读写操作的时候,需要加锁。而 sync.map 则是一种并发安全的 map,在 Go 1.9 引入。sync.map 是线程安全的,读取,插入,删除也都保持着常数级的时间复杂度。 sync.map...阅读全文

Segmentfault 2020-09-08 20:32:33 去去1002