又一个CI/CD系统-Tekton

Tekton是什么? Tekton 是一个强大且灵活的 Kubernetes 原生开源框架,可用于创建持续集成和交付 (CI/CD) 系统。该框架可让您跨多个云服务商或本地系统进行构建、测试和部署,而无需操心基础实现详情。 从定义可知,Tekton是一种新的CI/CD系统,正如常见的Jenkins、Drone、GitLab CI做的事情一样,特殊之处在于它是生于Kubernetes,长于Kubernetes。 安装Tekton 因为Tekton运行环境依赖于k8s,所以我们首先必须得有一个k8s...阅读全文

简书 2020-11-19 12:32:41 wu_sphinx

Golint代码规范检测

[原创地址]https://blog.csdn.net/chenguolinblog/article/details/90665161 一. Golint介绍 Golint is a linter for Go source code. Golint 是一个源码检测工具用于检测代码规范 Golint 不同于gofmt, Gofmt用于代码格式化 Golint会对代码做以下几个方面检查 package注释 必须按照 “Package xxx 开头” package命名 不能有大写字母、下划线等特殊...阅读全文

简书 2020-11-18 19:32:53 张雪良

golang信号处理

信号是IPC之一,下面是常用的信号列表 信号 值 动作 说明 SIGHUP 1 Term 终端控制进程结束(终端连接断开) SIGINT 2 Term 用户发送INTR字符(Ctrl+C)触发 SIGQUIT 3 Core 用户发送QUIT字符(Ctrl+/)触发 SIGILL 4 Core 非法指令(程序错误、试图执行数据段、栈溢出等) SIGABRT 6 Core 调用abort函数触发 SIGFPE 8 Core 算术运行错误(浮点运算错误、除数为零等) SIGKILL 9 Term 无条...阅读全文

简书 2020-11-18 19:32:52 realPeanut

golang xorm 设置字符串默认值

问题起源在使用xorm的过程中,我有了这样一个需求,我需要给一个字段默认值,在插入一条数据的时候,如果我传递了这个字段,就用我传递的,如果没有就使用默认值示例这是我定义的字段我使用InsertOne方法,插入这条数据,但是当你查看这条数据时,却并没有这条默认值解决方案经过调查发现,因为go语言机制的问题,无法知道你是否传入了这个参数,所以只能主动判断解决方案类似于这样,我选择主动omit空字符串:阅读全文

Segmentfault 2020-11-22 12:32:32 木申

在libp2p-rs上开发新协议

本文以floodsub为例,讨论如何在libp2p-rs上开发新协议,详细代码请查看源码。实现两个trait在libp2p-rs中,swarm提供了两个trait:Notifiee用于接收swarm的通知,当有新的连接创建或者连接关闭时,swarm会调用connected()或者disconnected();ProtocolHandler用于读写协议的数据,协议协商成功后,swarm会调用handle()。/// Notifiee is an trait for an object wishin...阅读全文

Segmentfault 2020-11-22 09:32:32 Netwarps

Golang协程并发的流水线模型

背景最近由于性能问题,后端服务一直在做python到golang的迁移和重构。go语言精简优雅,既有编译型语言的严谨和高性能,又有解释型语言的开发效率,出色的并发性能也是go区别于其他语言的一大特色。go的并发编程代码虽然简单,但重在其并发模型和流程的设计。所以这里总结下golang协程并发常用的流水线模型。简单的流水线思维流水线模式并不是什么新奇的概念,但是它能极大地提高生产效率。比如实际生活中的汽车生产流水线,流水线上的每一个流程负责不同的工作,比如第一个流程是拼装车身,第二个流程是安装发动...阅读全文

Segmentfault 2020-11-21 17:32:31 屈天航

Golang开发环境

Golang开发环境搭建 Go 语言开发包 国外:https://golang.org/dl/ 国内(推荐): https://golang.google.cn/dl/ 编辑器 Golang:https://www.jetbrains.com/go/ Visual Studio Code: https://code.visualstudio.com/ 搭建 Go 语言开发环境,需要先下载 Go 语言开发包。 查看操作系统及版本 Windows: image Mac: image Linux: 终...阅读全文

简书 2020-11-18 13:38:04 Payne_Wu

go读书笔记(一)

其实《go in action》是一本不错的go入门书,但是由于在这本书的最开始不讲基本的语法,搞得本人在第二章直接被劝退了,这样一拖就是大半年。之后又陆陆续续地读了几本书,包括《go语言趣学指南》、《go语言编程之旅》、《go语言实战(go in practice)》,但是总是感觉读不进去,最后还是看了《Head First go》才把基本的语法搞清楚了,再读剩下的这几本书,也就更加如鱼得水了。 这篇文档主要是简单记录一下go的基本语法,做一个简单的读书笔记 1 数组 1.1 数组的声明 数组...阅读全文

简书 2020-11-18 13:37:34 韧心222

Golang 源码阅读 --- net/http 与 mux

前言在《服务计算》的第一堂课上,潘老师就强调:golang是为服务而生的语言。如今最流行的服务莫过于 http 服务,而golang官方也用其极其简洁的写法和优秀的服务特性(如高并发)向开发者们证明了这一点。这篇博客正是对于不使用第三方库,仅使用官方提供的程序包: net/http, 搭建http服务的原理,即背后的源码和逻辑的分析。同时,我也会简要的分析一个很常用的库 mux 的实现。从简单的 Http Server 开始golang 运行一个 http server 非常简单,需要这样几个部...阅读全文

Segmentfault 2020-11-21 09:32:32 BOBBAIcl

Golang逃逸分析

前言 本文翻译自 Alysha Gardner 的一篇博文Golang escape analysis 由于原博客创作时间较早,文中的一些编译显示结果可能存在出入,请参照最新的Go版本编译结果。 正文 垃圾回收是Go语言的一项很方便的功能-自动管理内存让代码变得更干净并且内存泄漏更少。然而,GC同样增加了开销,因为程序需要阶段性地停止并且回收没用的对象。Go编译器足够聪明地自动决定一个变量是否应该分配到需要垃圾回收的堆上,或者是否能够分配到声明该变量的函数的栈结构中。栈变量不像堆变量,栈变量不会...阅读全文

简书 2020-11-17 23:33:27 心中的日月_pyihe

ES 分布式搜索的运行机制

ES 分布式搜索的运行机制ES 有两种 search_type 即搜索类型:query_then_fetch (默认)dfs_query_then_fetchquery_then_fetch用户发起搜索,请求到集群中的某个节点。query 会被发送到所有相关的 shard 分片上。每个 shard 分片独立执行 query 搜索文档并进行排序分页等,打分时使用的是分片本身的 Local Term/Document 频率。分片的 query 结果(只有元数据,例如 _id 和 _score)返回给...阅读全文

GO语言实现 一 堆与优先队列

堆与优先队列 优先队列 之前我们讲过队列这种数据结构,队列的特点是先进先出,那什么是优先队列呢?一般来说,优先队列分为两种,一种是最大优先队列,一种是最小优先队列 我们以最大优先队列为例来讲解今天的内容,最大优先队列的进出队列顺序并不是按照先进先出的准则,而是最大值先出 譬如队列 a = [3,1,5,4,2,0,6,9,7],按照最大优先队列的出队列顺序,下一个值应该是 9,然后是 7 使用数组解决最大优先队列一般有两种方法: 将数组排序,每次取出第一个值即可 每次出队列都遍历数组,取出最大值...阅读全文

简书 2020-11-17 21:34:02 YXCoder

Golang websocket.Conn的再封装

我们知道我们可以直接用websocket.Conn进行ws通讯,可是为什么要对他进行二次封装,主要有两个原因。 1,不方便分模块调用 2,websocket.Conn中的很多方法是非线程安全的 线程安全的意思是当多线程调用同一模块时,相对安全的不会出错。 js对ws的简单封装 首先我们稍微优化一下测试前端。 如果不对WebSocket对象封装的话,我们无法手动控制连接的状态。 <!doctype html> <html> <head> <meta charset="utf-8"/> <title...阅读全文

简书 2020-11-17 21:34:00 孟南知

37_GoWeb_如何使用Docker部署Go Web应用

本文介绍了如何使用Docker以及Docker Compose部署我们的 Go Web 程序。 为什么需要Docker? 使用docker的主要目标是容器化。也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机。 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很多的依赖环境或包,甚至对依赖的具体版本都有严格的要求,当开发过程完成后,你希望将应用程序部署到web服务器。这个时候你必须确保所有依赖项都安装正确并且版本也完全相同,否则应用程序可能会崩溃并无法运行。如果...阅读全文

简书 2020-11-17 19:32:52 极风键客

谈谈容器化的实践思路

老实说,这是一个挺大的话题,盲目谈论有点大言不惭,不过,笔记打算从自己的工作经历中聊聊这个话题。 彼时,笔者还在成都,那时Golang还很新,版本还牌1.10以下,容器化在当时的技术领域是一项非常时髦的技术,当时我所在的团队,已经开始尝试服务容器化了,容器的管理平台使用的时开源的容器管理平台Rancher 1.x版本(当时还没有使用k8s,不过运维团队已开始预研),当时团队自动化程度较高,Dockerfile也不是开发自己写的,而是由项目初始化工具生成Dockerfile及.gitlab-ci....阅读全文

简书 2020-11-17 19:32:52 wu_sphinx

5-Dockerfile的相关操作2020-11-17

5-Dockerfile的相关操作 Docker 可以通过解析Dockerfile中的代码说明来自动生成镜像。是一个文本文档,其中包含用户可以在命令行上调用的所有命令来层叠形成镜像。使用用户创建的文档按照层级依次进行多个命令的自动构建镜像的过程 以上是Dockerhub官方对Dockerfile的描述 Dockerfile使用 docker build <PATH>来进行编译成镜像。创建一个Dockerfile之后,执行 docker build . 就可以针对当前目录的Dockerfile制作...阅读全文

简书 2020-11-17 19:32:43 七色花藤蔓

golang实现直播和点播功能

1.概述 刚开始做直播的时候,还是有些懵逼的,毕竟什么推拉流,什么格式协议完全不懂的,还有第三方的接口也是层出不穷,其实简单的说一下,如图(腾讯直播Api里面盗取的) 其实所谓的推流就是主播的客户把我们要的播放内容按特定的流程存放于服务器,当然这里面展示的是腾讯云,完后经过通讯云的转码再让观众去观看(拉取),建议不是很明确基础的小伙伴去了解一下,理解起来还是很方便的.腾讯云传送门而我们今天使用的不是腾讯,而是用golang写好的开源项目livego,livego传送门2.livego 说实话,文...阅读全文

简书 2020-11-17 19:32:42 也许会了

Linux/Mac系统下Golang和Gin框架的安装

1.Golang的安装下载地址:https://gomirrors.org/mac安装:下载直接安装一、Linux安装:1.cd usr/local & mkdir go & cd go2.wget -v https://dl.google.com/go/go1.15.5.linux-amd64.tar.gz(-v 断点下载)3.解压:tar -C /usr/local -zxvf go1.15.5.linux-amd64.tar.gz 4.配置环境变量:我们需要配置 2 个环境变量分别是 GO...阅读全文

简书 2020-11-17 19:32:38 市民老陈

golang 测试工具的go test的使用 go语言单元测试的编写

​ ​ 当我们写好一段代码,就要进行测试,以保证代码的正确性,如果我们不写测试,而是每次把整个项目运行一遍,一方面,运行消耗的资源会更大.另一方面,项目的主要部分可能还没有完成,你本来就要单独写一个文件来进行测试. 总不能几千行代码全部写完再运行看效果. ​ 比如说我现在,写一个视频网站爬虫类的项目,需要把解析下载地址,和视频信息的部分抽象出来, 然后主函数要写命令行解析部分的代码,还有就是多线程下载器部分的代码.首先写的是视频解析部分的代码, 基本上是顺序式执行的代码,首先就是把json解析成...阅读全文

简书 2020-11-17 19:32:38 mudssky