Golang
文章平均质量分 86
catch that elf
一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;
展开
-
手把手教你goland远程调试
文章目录简介go环境安装dvl 工具安装开发部署示例程序进行调试验证简介实际工作中难免遇到需要调试服务器上代码的情况,最近项目就遇到了代码在服务上报出tcp握手失败的异常,而本地却正常的情况,日志不好加这里顺便研究了以下golang的远程调试方法,并做记录。这里基于goland和dlv实现go代码的远程调试。远程服务器采用centos7.9go环境安装安装配置下载golang linux安装包,并解压到/root/apps/go 目录,配置环境变量vi /etc/profileexport原创 2021-12-26 13:13:27 · 11865 阅读 · 7 评论 -
etcd用户、角色及证书配置
文章目录访问安全etcd权限分类etcd 访问控制传输安全生成证书配置使用证书访问安全在 2.1 版本之前, etcd 是 一个完全开放的系统,任何用户都可以通过 REST API 修改 etcd 存储的数据。 etcd 在 2.1 版本中增加了用户( User )和角色( Role )的概念,引入了用户认证的功能 。 为了保持向后兼容性和可升级性, etcd 的用户权限功能默认是关闭的 。 etcd 支持安全认证以及权限管理。 etcd 的权限管理借鉴了操作系统的权限管理思想,存在 用户和角色(分组原创 2021-11-17 00:23:20 · 8910 阅读 · 3 评论 -
etcd数据存储及数据多版本控制实现逻辑
文章目录etcdV2数据存储机制etcdV3数据模型数据结构etcdV3MVCC实现etcdV2数据存储机制etcd v2 是一个纯内存数据库,整个数据库在内存中是一个简单的树结构.。写操作先通过 Raft 复制日志文件,复制成功后将数据写人内存。etcd v2 并未实时地将数据写人磁盘, 持久化是靠快照来实现的,具体实现就是将整个内存中的数据复制一份出来, 然后序列化成 JSON ,写人磁盘中,成为一个快照 。做快照的时候使用的是复 制出来的数据库,客户端的读写请求依旧落在原始的数据库上,这样的话原创 2021-11-14 11:59:01 · 4375 阅读 · 1 评论 -
ETCD性能测试
文章目录环境准备Benchmark准备etcdkeeper安装读性能测试写性能测试测试总结etcd集群部署参照 etcd部署及实战etcd自带性能测试工具benchmark,这里使用该工具对etcd集群读写性能进行测试。环境准备准备一个单节点etcd服务,一个三节点etcd集群,部署服务器采用 8C 32G的云服务器。单节点ETCD服务 10.252.161.177:8989三节点ETCD集群10.252.161.179:8989, 10.252.161.179:443, 10.252.161.原创 2021-11-10 23:15:03 · 5120 阅读 · 0 评论 -
ETCD结构、特点及和zookeeper对比
文章目录etcd 是什么etcd结构简介etcd 数据通道etcd通信架构应用场景和ZK对比etcd 是什么etcd 这个名字由两部分组成: etc 和 d ,即 UNIX/Linux操作系统的“/etc” 目录和分布式( distributed )首字母的“d ” 。我们都知道,/etc目录一般用于存 储 UNIX/Linux 操作系统的配置信息 因此etc和d合起来就是一个分布式的/etc 目录。etcd 的寓意是为大规模分布式系统存储配置信息。etcd 的官方定义如下:A highly-ava原创 2021-11-09 23:17:21 · 3466 阅读 · 0 评论 -
Raft一致性算法逻辑详解
文章目录Raft算法基本概念领袖选举日志复制Raft算法基本概念一般情况下,分布式系统中存在如下两种节点关系模型对称 所有节点都是平等的 不存在主节点 。 客户端可以与任意节点进行交互 。**非对称 ** 基于选主模型,只有主节点拥有决策权 。 任意时刻有且仅有一 个主节点,客户端只与主节点进行交互 。基于简化操作和效率等因素考虑, Raft 算法采用的是非对称节点关系模型 。Raft 协议组织的集群中,一共包含如下 3 类角色Leader (领袖)Candidate (候选人)Follo原创 2021-11-09 22:02:34 · 1561 阅读 · 0 评论 -
分布式系统与一致性协议
文章目录CAP理论一致性定义一致性模型复制状态机拜占庭将军问题Paxos协议Raft协议:为可理解而生CAP理论提到分布式系统,就不得不提 CAP 原理。 CAP 原理在计算机科学领域广 为人知,如果说系统架构师将 CAP 原理视作分布式系统的设计准则一点也不为过 。C: Consistency (一致性) 。 这里的一致性特指强一致,通俗地说,就 是所有节点上的数据时刻保持同步 。 一致性严谨的表述是原子读写, 即所有读写都应该看起来是“原子”的,或串行 的 。 所有的读写请求 都好像是 经全局排序原创 2021-11-07 01:42:32 · 401 阅读 · 0 评论 -
Golang代码注释规范及goland代码注释模板配置
文章目录文档目标注释规范总体原则文件注释结构体及接口注释函数及方法注释import规范注释模板配置goLand文件注释模板配置goLand方法修改注释模板配置Goanno方法、接口、结构体注释模板配置文档目标良好的注释对项目后续的开发维护工作十分必要。本文档旨在明确项目开发过程中go代码的注释规范,并提供基于goland的注释模板设置指导。便于开发人员快速配置环境,高效、合规开展工作。注释规范总体原则注释使用单个英文半角空格作为分隔符,避免注释中空格数量及格式混乱。全部使用单行注释,禁止使用多原创 2021-10-24 21:24:23 · 16578 阅读 · 0 评论 -
ETCD部署及实战
文章目录单点部署及启动单点部署及启动文件下载下载安装文件,可以到git上直接下载也可以 点击下载将下载的etcd-v3.2.32-linux-amd64 (1).tar.gz 上传至服务器。解压并启动解压压缩包tar -zvxf etcd-v3.2.32-linux-amd64 (1).tar.gz将解压结果 mv到 opt/etcd 目录,结果如下[root@localhost etcd]# ll /opt/etcdtotal 38940drwxr-xr-x. 2 root原创 2021-04-07 16:20:39 · 6177 阅读 · 0 评论 -
11 Golang反射
文章目录反射介绍reflect包结构体反射反射介绍反射可以再运行时动态获取变量信息,并修改变量内容。是实现动态编程、编写框架的关键。Go程序在运行期使用reflect包访问程序的反射信息reflect包go语言的反射机制中,任何借口都是由一个具体类型(reflect.Type)和具体类型的值(reflect.Value)两部分组成。reflect包还提供了 reflect.TypeOf()和 reflect.Valueof两个函数。来获取任意对象的Value 和 Type示例代码func ty原创 2021-04-02 00:24:01 · 167 阅读 · 0 评论 -
07 面向对象编程-结构、封装、继承、多态、接口
文章目录Struct定义struct 方法Golang支持面向对象编程,但是和传统面向对象有区别,并不是纯粹面向对象的语言,只能说Golang支持面向对象编程特性Golang没有类,通过结构体struct 来实现OOP,非常简洁。Struct定义Struct字段声明语法同变量,创建一个结构体后如果没有为字段赋值 则字段取值为默认值结构体可以进行type 重新定义,Golang默认是新类型结构体是用户单独定义的类型,和其他类型转换时需要有完全相同的字段(名字、个数、类型)struct 每个原创 2021-03-12 00:00:02 · 441 阅读 · 0 评论 -
10 goroutine和channel
文章目录go并发编程概念goroutinechannelgo并发编程概念几乎所有的语言都支持并发编程。go也不例外,且轻量级并发编程(协程)是Golang的重要特性。基本概念进程:进程是程序在操作系统中的一次执行过程。是系统进行资源分配和调度的基本单位线程:是进程的一个执行实例,是程序的最小执行单元,是比进程更小的能独立运行的基本单元。一个进程可以创建和销毁多个线程,一个程序至少有一个进程,一个进程至少包含一个线程并发:多线程程序在单核上运行,就是并发,某一时刻只有一个线程在执行,多个线程轮流执原创 2021-03-28 21:47:06 · 208 阅读 · 0 评论 -
09 单元测试
文章目录Go原因中自带一个轻量级的测试框架 testing 并自带go test 命令,来实现单元测试和性能测试。可以基于testing框架进行 函数的测试,也可以进行压力测试.编写方式编写测试用例文件 如:main_test.goimport testing 包,并编写测试用例方法 如:func TestSum(t *testing.T)执行 命令 go test -v 运行测试用例示例代码//测试用例文件package mainimport( "fmt" "testing"原创 2021-03-28 00:04:19 · 134 阅读 · 0 评论 -
08 文件操作及JSON格式转换
文章目录文件操作打开文件和关闭文件JSON格式转换文件操作os.File 封装所有文件相关操作,File是一个结构体打开文件和关闭文件访问文件func Open (name string)(file *File ,err error)打开一个文件用于后续操作,操作成功则返回文件对象,否则返回异常信息fun (f *File) Close () error关闭文件使文件不能读写, 返回可能出现错误。func OpenFile(name string,flag int,perm fileMod原创 2021-03-27 16:19:43 · 339 阅读 · 0 评论 -
06 数组、切片和map
文章目录数组切片String和slice数组数组可以存放多个相同类型的数据数组定义:var 数组名[数组大小] 数据类型数组元素的访问:数组名[下标] ,下标从0 开始数组的地址可以通过 数组名来获得 &数组名数组中各个元素地址间隔是根据数组中数据类型决定的 ,如:int64 ->8 int32->4注意事项一旦声明数组长度固定不能动态变化var arr[] int 这样定义时,其实是定义了一个切片数组中的元素可以是任何数据类型,但是不能混用数组创建后如果没有赋值原创 2021-03-06 20:18:30 · 296 阅读 · 0 评论 -
05 函数、包和错误处理
文章目录函数包init函数匿名函数闭包函数的defer变量作用域常用函数错误处理函数完成某一功能程序指令集合定义语法func 函数名(形参列表)(返回值列表){ 执行语句 return 返回值列表}示例代码func main () { fmt.Println("结果==",cal(1.1,3.0,'+'))//4.1}func cal ( n1 float64, n2 float64,opreator byte)( float64){ var res float64 swi原创 2021-03-06 15:51:09 · 191 阅读 · 0 评论 -
04 程序流程控制
文章目录顺序控制分支控制if分支控制switch分支控制循环控制for循环控制while 和 do while跳转控制语句 break continue goto return程序流程控制决定程序是如何执行的,程序控制语句一般包括:顺序、分支、循环顺序控制程序默认自上到下执行,中间不会跳转。Golang中采用合法的前向引用,变量必须先定义后使用(部分语言中 支持 先试用 后定义,程序执行过程会自动优化)分支控制if分支控制if支持单分支、双分支和多分支控制语法如下基本语法if 条件表达式1原创 2021-03-05 15:18:28 · 107 阅读 · 1 评论 -
03 运算符
文章目录算术运算符赋值运算符比较/关系运算符逻辑运算符位运算符其他运算符运算符优先级算术运算符进行数值变量的运算,如下示例程序func test5(){ // var i int = 1 i = i+2 fmt.Println(i) //3 //var i2 = i++ // 报错 unexpected ++ at end of statement i++ fmt.Println(i) //4 //++i// 报错 syntax error: unexpected ++ //f原创 2021-03-05 10:09:29 · 186 阅读 · 1 评论 -
02 Golang变量及数据类型
文章目录变量的定义及使用数据类型整型浮点型变量的定义及使用变量定义语法: var 变量名 数据类型局部变量:定义在语句块中(如方法)的变量全局变量:定义在语句块外的变量变量声明方式:指定变量类型,声明后如果不赋值则使用默认值根据值自行判断变量类型省略var 使用 := 赋值,左侧变量不能是已经声明过的,否则报错支持多变量声明(局部变量和全局变量都支持),见示例代码示例代码//全局变量声明var gn1 = 100var gn2 = "jack"//一次声明多个全局变量var原创 2021-03-05 00:25:21 · 356 阅读 · 1 评论 -
01 Golang简介、环境安装及示例程序
文章目录语言介绍产生及发展应用领域环境安装程序下载配置及测试示例程序编写及运行语言介绍产生及发展核心研发团队三个大牛: Ken Thompson(肯 汤普森)、 Rob Pike(罗布 派克)、Robert GriesemerGoogle创造Golang的原因:计算机硬件频繁更新,性能提高很快,主流编程语言无法利用多核多CPU的有事软件编程复杂度越来越高,维护成本也越来越高,缺乏一个足够简洁高效的语言C/C++项目运行速度虽然很快,但是存在内存泄露的问题。总结:目前主流的编程语言要么开原创 2021-03-04 14:43:09 · 177 阅读 · 1 评论