protoc go插件编写之四 (实现生成自己的proto文件)

前面几篇文章讲述了protoc 的原理,实现,及参数,这里终于要开始动手了。 准备工作 安装go 1.14 在一个新的目录下, 建立一个go项目 go mod init github.com/kekek/protoc-gen-foo go get google.golang.org/protobuf@v1.21.0 ⚠️: 这里文件夹的名字及其重要,必须以protoc-gen- 开头, 比如proto-gen-foo plan 在此示例中,我们想扩展Protobuf编译器以添加方法Foo(),该...阅读全文

简书 2021-03-16 17:33:24 癞痢头

Go html/template

Golang的html/template包实现了数据驱动的模板,用于生成可对抗代码注入且安全HTML输出。 html/template包提供了和text/template包相同的接口,html/template是对text/template的二次封装并增加了安全性的处理。 模板渲染存在跨站脚本攻击的风险,本质上是网站将用户的输入不作转义写入到生成的页面中。若用户提交一段浏览器脚本,则会在用户页面中执行,进而产生不可预知的风险。 html/template会自动开启安全模式将需要编码的数据处理成纯...阅读全文

简书 2021-03-16 17:33:24 JunChow520

Go FileServer

文件服务器 Golang标准库net/http中提供了http.FileServer方法会返回一个使用FileSystem接口root提供文件访问服务器的HTTP处理器,可方便地实现静态文件服务器。 http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path"))) http.Dir()方法会返回http.Dir类型用于将字符串路径转换为文件系统 http.FileServer()方法返回的是fileHandler实例,f...阅读全文

简书 2021-03-16 15:33:06 JunChow520

2021-03-15:手写代码:单链表选择排序。

2021-03-15:手写代码:单链表选择排序。 福大大 答案2021-03-15: 遍历链表,找出最小元素,链表里删除最小元素,最小元素放在需要返回的链表里。 代码用golang编写,代码如下: package main import "fmt" func main() { //head := &ListNode{Val: 4} //head.Next = &ListNode{Val: 2} //head.Next.Next = &ListNode{Val: 1} //head.Next.Ne...阅读全文

简书 2021-03-16 15:33:06 福大大架构师每日一题

GoLang 的协程调度和 GMP 模型

转自:https://blog.csdn.net/yanglingwell/article/details/103538730 GoLang 是怎么启动的 关于 GoLang 的汇编语言,请查阅 参考文献[1] 和 参考文献[2] 编写一个简单的 GoLang 程序 main.go, 用 go build -o main main.go 编译生成可执行文件 main import "fmt" func main(){ fmt.Println("Hello, World!") } 使用 gdb m...阅读全文

简书 2021-03-16 15:33:05 o0O0o_b39d

golang to docker

PS:自行安装 Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Vs Code 快速创建 Dockerfile 文件: 1:F1 或 Ctrl+Shift+P(俗称万能键) :打开命...阅读全文

简书 2021-03-16 15:32:42 出逃酱er

Go text/template

服务端渲染 Golang为模板操作提供了丰富的支持,嵌套模板、导入函数、表示变量、迭代数据等都很简单。若需要比CSV数据格式更复杂的电脑关系,模板可能是一个不错的解决方案。模板的另一个 应用是网站的页面渲染。 Golang内置text/template和html/template两个模板库,html/template库为HTML提供了完整的支持,包括普通变量渲染、列表渲染、对象渲染等。 text/template是Golang标准库,实现数据驱动模板以生成文本输出,可理解为一组文本按照特定格式嵌...阅读全文

简书 2021-03-16 15:32:42 JunChow520

手撸golang GO与微服务 Saga模式之6

缘起 最近阅读<<Go微服务实战>> (刘金亮, 2021.1) 本系列笔记拟采用golang练习之 Saga模式 saga模式将分布式长事务切分为一系列独立短事务 每个短事务是可通过补偿动作进行撤销的 事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用 Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。 可以通过下面的两个公式理解Saga模式。 T = T1 T2 … Tn T = TCT Saga模式的核心理念是...阅读全文

简书 2021-03-16 15:32:42 老罗话编程

修改文件夹下面所有.jpg文件名demo ->欢迎加入微信交流群一起交流学习go

go 小白一枚,建了一个关于go的微信交流群 欢迎大家加入,加我微信拉群 微信号:XU1014129578 暗号 :gogogo 朋友想把文件夹中的图片名称加上当前文件夹名的前缀,文件数量有点大,所以找我帮忙。 网上找了一段代码(如:GetAllfiles() ) 修修改改搞定了... ``` package main import ( "fmt" "io/ioutil" "os" "strings" ) func GetAllFiles(dir...阅读全文

Go语言中文网 2021-03-16 14:57:05 Mr_Pon

手撸golang GO与微服务 Saga模式之6

缘起最近阅读<<Go微服务实战>> (刘金亮, 2021.1)本系列笔记拟采用golang练习之Saga模式saga模式将分布式长事务切分为一系列独立短事务每个短事务是可通过补偿动作进行撤销的事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。 可以通过下面的两个公式理解Saga模式。 T = T1 T2 … Tn T = TCT Saga模式的核心理念是避免使用长期持...阅读全文

Segmentfault 2021-03-18 16:32:33 ioly

无意间发现 Google 代码模板,分享给大家!

对于代码规范,不少朋友自己心中也没有个标准,基本都是怎么喜欢怎么来,但是这样并不是一个好的习惯,心中没有标杆,写出来的代码通常会比较难阅读,难以维护,更有可能出现意外的 BUG。通常在公司开发产品,并不是全部都是一个人完成的(大神另说),一般都是多人协助完成的,每个都负责一个模块,每个人开完自己的负责的模块后,再做代码合并等工作,那么这个时候团队开发中的代码规范就很重要的了。当然,每个公司都有自己的代码规范,但是我觉得要学习好的代码规范,要向行业顶尖的公司学习,Google作为技术顶尖公司,它的...阅读全文

Segmentfault 2021-03-16 13:32:36 Santiago

如何利用事件溯源思想实现分布式任务编排的容错?

在做分布式系统集成的时候,当一个功能涉及到多个平台的时候,通常面对的问题都是如果失败了怎么办?今天就给大家分享一个新思路-基于事件溯源实现分布式协调我们的挑战在进行正式开始之前我们需要先介绍下我们的场景是什么,要解决的问题是什么。场景在应用管理平台建设中需要整合内部的多个平台,比如容器、虚机、监控、发布、cmdb、负载等多个平台,每个平台都只负责某一部分功能,但是比如我们要做一个虚机扩容、灰度发布等通常就需要操作多个平台;如果是全部都是基于k8s的可能还好一点,但是对于一些公司这种平台建设早于容...阅读全文

Segmentfault 2021-03-18 15:32:36 仔仔

后起之秀go语言你了解吗?助你年薪30W+

前言随着云计算越来越普及,企业原来以内部IDC机房为载体的IT基础架构也逐渐发生了很大的变化,企业的业务系统除了部署在原来物理架构外,可能部署在vMware私有云、spenstack,私有云、阿里云公有云、AWS公有云、腾讯云、Azure等等各种云平台之上,形成了更加复杂在多云1T基础架构。那么我们该如何对多云主机进行管理和运维呢?今天我们就给大家分享一个Go语言的案例。一、项目思路整个代码的实现思路其实很简单,首先,每个云平台都有开放API接口,可以通过命令行工具TCCLI以及curl命令调用...阅读全文

51CTO博客 2021-03-15 22:13:28 mob604756edd67c

手撸golang GO与微服务 Saga模式之4

缘起 最近阅读<<Go微服务实战>> (刘金亮, 2021.1) 本系列笔记拟采用golang练习之 Saga模式 saga模式将分布式长事务切分为一系列独立短事务 每个短事务是可通过补偿动作进行撤销的 事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用 Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。 可以通过下面的两个公式理解Saga模式。 T = T1 T2 … Tn T = TCT Saga模式的核心理念是...阅读全文

简书 2021-03-15 18:34:15 老罗话编程

goroutine(协程)

有一个需求场景如下,这引出了goroutine的知识点。 需求场景 一、快速入门小结1、主线程是一个物理线程,直接作用在cpu上的,是重量级的,非常耗费cpu资源。2、协程从主线程开启的,是轻量级的线程,是逻辑态。对资源消耗相对小。3、Golang的协程机制是重要的特点,可以轻松地开启上万个协程。其他编程语言的并发机制一般是基于线程的,而开启过多的线程会导致资源耗费很大。这里就凸显了Golang在并发上的优势了。二、Go协程和Go主线程1、Go主线程(有程序员直接称为线程/也可以了解为进程):一...阅读全文

简书 2021-03-15 18:34:15 柯帆

go语言gc实现、触发机制

算法: 标记-清除:从根变量开始遍历所有引用的对象,引用的对象标记为"被引用",没有被标记的进行回收。 优点:解决了引用计数的缺点(不能很好的处理循环引用,而且实时维护引用计数,有也一定的代价。) 缺点:需要STW,即要暂时停掉程序运行。 代表语言:Golang(其采用三色标记法) stop the world 是gc的最大性能问题,对于gc而言,需要停止所有的内存变化,即停止所有的goroutine,等待gc结束之后才恢复。 触发 阈值:默认内存扩大一倍,启动gc 定期:默认2min触发一次g...阅读全文

简书 2021-03-15 18:33:31 超鸽带你飞

关于面试

语言:1,熟练掌握html5,css3,javascript,ajax2,掌握PHP、java、python中至少一种web开发语言(不少公司都有特定需求吧,奇虎还招golang)3,框架/库:MooTools,YUI,Angular,jQuery,Dojo.4,UI框架:BootStrap,Foundation,Semantic UI,Kendo5,CSS制作工具/编译器:SaaS/LESS6,JavaScript服务端运行时:Node.js,Ringo7,JS模块化规范:AMD,CMD,Co...阅读全文

简书 2021-03-15 18:33:31 开坦克的贝塔_1b7c

记一次无类型常量的思考

常量可以是有 类型 的也可以是无类型的。字面值常量, true , false , iota 以及一些仅包含无类型的恒定操作数的 常量表达式 是无类型的。 func main() { // 无类型常量: 没有显示或者隐式声明其类型的常量,在一些特定的场景下编译器会自动赋予合适的类型 // 如果操作的双方都是没有声明类型的话,可以进行操作 fmt.Println('n' / 2.5) // 其中rune类型的基础类型是int32,却能与flaot64 进行除操作(只是看起来的 类型,实际是无类型)...阅读全文

简书 2021-03-15 18:33:31 Casso_W