现在很多软件配置文件都是.toml格式的了,所以作为运维人员,很有必要了解下toml。官网网址https://toml.io/cn/概念为人而生的配置文件格式。TOML 旨在成为一个语义明显且易于阅读的最小化配置文件格式。TOML 被设计成可以无歧义地映射为哈希表。TOML 应该能很容易地被解析成各种语言中的数据结构。TOML 旨在成为一个最小化配置文件格式,它:语义明显易于阅读能无歧义地映射为哈
结构体验证用gin框架的数据验证,可以不用解析数据,减少if else,会简洁许多。package main import ( "fmt" "time" "github.com/gin-gonic/gin" ) // person type Person struct { //不能位空并且大于10 Age int `form:"age" binding:"re
cookie介绍HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求Cookie由服务器创建,并发送给
数据格式响应package main import ( "net/http" "github.com/gin-gonic/gin" ) // 定义接收数据的结构体 type Login struct { //binding ,required修饰字段,若接收为空值,则报错,是必须字段 User string `form:"username" json:"user" uri:"u
json数据解析和绑定客户端传参,后端接收并解析到结构体package main import ( "net/http" "github.com/gin-gonic/gin" ) // 定义接收数据的结构体 type Login struct { //binding ,required修饰字段,若接收为空值,则报错,是必须字段 User string `form:"userna
表单参数表单参数传输为post请求,http常见的传输格式为四种application/jsonapplication/x-www-form-urlencodedapplication/xmlmultipart/form-data表单参数可以通过PostForm()方法获取,该方法默认解析的是x-www-form-urlencoded或from-data格式的参数<!DOCTYPE html
gin是一个golang的微框架,封装比较优雅,api友好,源码注释比较明确,具有快速灵活,容错方便等特点,对于golang而言,web框架的依赖远要比python,java之类的要小,自身的net/http足够简单,性能也非常不错。安装go get -u github.com/gin-gonic/gin //安装 import "github.com/gin-goinc/gin" //导入基本
冒泡排序冒泡排序属于交换类的排序算法,比如有一段乱序的数,5 9 1 6 8 14 6 49 25 4 6 3第一轮迭代: 从第一个数开始,依次比较相邻的两个数,如果后面的一个数比前面的一个数大,那么交换位置,直接到处理最后一个数,最后这个数是最大的第二轮迭代,因为最后一个数已经是最大的了,重复第一轮操作,但是只处理倒数第二个数第三轮迭代,因为最后一个数已经是最大的了,最后第二个数是次大的,重复第
进程和线程 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。 多个线程程序在一个核的cpu上运行,就是并发;多线程程序在多个核的cpu上运行,就是并行。携程和线程协程,
安装配置etcd3个节点,搭建一个集群#克隆仓库 git clone -b v3.5.0 https://github.com/etcd-io/etcd.git #切换目录执行安装脚本 ./build.sh #添加到环境目录 export PATH="$PATH:`pwd`/bin" #测试 etcd --version集群启动### 第一台 nohup ./etcd --name infr
JSONjson是完全独立于语言的文本格式,是k-v的形式 name:zs应用场景:前后端交互,系统间数据交互json使用go语言内置的encoding/json 标准库编码json使用json.Marshal()函数可以对一组数据进行JSON格式的编码通过结构体生成jsonpackage main import ( "encoding/json" "fmt" ) type Person
RPC和gRPC介绍RPC(Remote Procedure Call),远程过程调用协议,一种通过网络从远程计算机请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议存在,例如TCP/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。所谓过程就是业务处理,计算任务,就是说程序像调用本地方
messageprotobuf中定义一个消息类型是通过关键字message字段指定。消息就是需要传输的数据格式的定义,它类似java中的class,go中的structmessage User{ string username=1; int32 age=2; }对应生成go的结构体type User struct { state protoimpl.Messag
grpc简介gRPC由google开发,是一款语言中立、平台中立、开源的远程过程调用系统,gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端调用微服务架构中,由于每个服务对应的代码库是独立运行的,无法直接调用,彼此间的通信就是个大问题gRPC可以实现微服务,将大的项目拆分为多个小且独立的业务模块,也就是服务,各服务间使用高效的protobuf协议进
templatehtml/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用text/template包。模板示例通过将模板应用于一个数据结构(即该数据结构作为模板的参数)来执行,来获得输出。模板中的注释引用数据接口的元素(一般如结构体的字段或者字典的键)来控制执行过程和获取需要呈
IO输入输出的底层原理终端其实是一个文件,相关实例如下:os.Stdin:标准输入的文件实例,类型为*Fileos.Stdout:标准输出的文件实例,类型为*Fileos.Stderr:标准错误输出的文件实例,类型为*File文件操作相关APIfunc Create(name string) (file *File, err Error)根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0
Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。os.Args获取命令行参数个数package mainimport ( "fmt" "os")//os.Args//获取命令行参数func main() { //os.Args是一个[]string if len(os.Args) > 0 { for index, a
fmtfmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分package mainimport ( "fmt" "os")//fmtfunc main() { //Fprint 将内容输出到一个io.Write接口类型变量w中,实现往文件中写入内容 //只要满足io.Writer接口类型的都支持写入 fmt.Fpr
Cgrouplinux Cgroup 提供了对一组进程及子进程的资源限制,控制和统计的能力,这些资源包括 CPU,内存,存储,网络等。通过 Cgroup,可以方便的限制某个进程的资源占用,并且可以实时监控进程和统计信息。Cgroup 完成资源限制主要通过下面三个组件cgroup: 是对进程分组管理的一种机制subsystem: 是一组资源控制的模块hierarchy: 把一组 cgroup 串成一
docker原理docker 本质其实是一个特殊的进程,这个进程特殊在它被 Namespace 和Cgroup技术做了装饰,Namespace 将该进程与Linux 系统进行隔离开来,让该进程处于一个虚拟的沙盒中,而 Cgroup 则对该进程做了一系列的资源限制,两者配合模拟出来一个沙盒的环境。NamespacLinu
lazydocker,一个简单的 docker 和 docker-compose 终端用户界面,用更懒惰的方式来管理所有的 docker。其界面采用 gocui 开发。特点可以清楚地查看 docker 或 docker-compose 容器环境的状态查看容器 / 服务的日志查看容器度量的 ascii 图可以自定义图来测量任何想要测量的重新启动、移除、重建容器和服务查看给定图像的
go语言学习,两个简单的爬虫案例爬取QQ邮箱package main/*明确目标爬-爬下内容取-筛选想要处理数据*/import ( "fmt" "io/ioutil" "net/http" "regexp")//获取QQ邮箱,简单版本,没有封装,爬出的数据也没有去重var ( // \d 正则 ,代表数字 ReQQEamil = `(\d+)@qq.com`)
概念Go语言使用包(package)的概念来组织管理代码,包是结构化代码的一种方式。和其他语言如JAVA类似,Go语言中包的主要作用是把功能相似或相关的代码组织在同一个包中,以方便查找和使用。在Go语言中,每个.go文件都必须归属于某一个包,每个文件都可有init()函数。包名在源文件中第一行通过关键字package指定,包名要小写。如下所示:package fmt每个目录下面可以有多个.go文件
配置GOPATHGOPATH是一个环境变量,用来表明你写的go项目的存放路径,GOPATH路径最好只设置一个,所有的项目代码都放到GOPATH的src目录下。在windows平台,按照下面的步骤添加到环境变量。例如配置D:\控制面板->属性->系统高级设置windows上一般安装完go后,会有gopath,需要设置。GOPATH填写实际存放代码的地方,即项目目录在path里添加go的
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号