go
文章平均质量分 61
xiangjai
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux 安装protobuf
下载protobuf:安装依赖解压,进入目录,,生成配置脚本生成Makefile文件从Makefile读取指令, 安装更新共享库缓存查看软件的安装位置,是否安装成功原创 2022-09-02 14:25:15 · 1317 阅读 · 1 评论 -
beego禁用3DES和DES弱加密算法--SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】(二)
程序代码nmap重新扫描原创 2022-08-31 15:11:28 · 1292 阅读 · 0 评论 -
Go-加密学(七) - 证书吊销列表(CRL)
一、证书吊销列表(CRL)二、证书吊销列表(CRL)与证书状态在线查询协议(OCSP)三、证书吊销列表(CRL)的作用转载 2022-06-16 17:35:41 · 1896 阅读 · 0 评论 -
Go-加密学(六) - BEGIN CERTIFICATE、BEGIN RSA PRIVATE KEY和BEGIN PRIVATE KEY的区别
1.1、-----BEGIN CERTIFICATE-----格式密钥:1.2、-----BEGIN RSA PRIVATE KEY-----格式:1.3、-----BEGIN PRIVATE KEY-----格式:原创 2022-06-15 15:57:13 · 5653 阅读 · 0 评论 -
Go-加密学(五) - 证书crt、pem、pfx、cer、key 作用及区别
一、编码格式二、相关的文件扩展名原创 2022-06-15 09:37:43 · 11796 阅读 · 0 评论 -
Go-加密学(四) - 证书/SSL/TLS/https单向认证/思维导图
证书/SSL/TLS/https单向认证/思维导图原创 2022-06-10 10:16:09 · 992 阅读 · 0 评论 -
Go-加密学(三) - 消息认证码/数字签名
消息认证码/数字签名原创 2022-06-10 10:09:02 · 718 阅读 · 0 评论 -
Go-加密学(二) - 非对称加密
非对称加密原创 2022-06-09 14:04:29 · 874 阅读 · 0 评论 -
Go-加密学(一) - 对称加密
对称加密原创 2022-06-09 10:38:17 · 749 阅读 · 0 评论 -
go系列-笔记(第六天)
协议: 一组规则。要求使用协议的双方,必须严格遵守协议内容。 网络分层架构: OSI七层模型结构体:物、数、网、传、会、表、应 TCP/IP四层模型:数、网、传、应 各层功能: 链路层:ARP 源mac——目标mac ARP协议作用:借助IP获取mac地址。 网络层:IP 源IP——目标IP IP协议的作用:在网络环境中唯一标识一台主机。 IP地址本质:2进制数。——点分十进制IP地址(s...原创 2021-05-15 22:09:52 · 171 阅读 · 0 评论 -
go系列-笔记(第五天)
目录select超时处理:死锁:互斥锁:(互斥量)读写锁:条件变量:select超时处理: select监听time.After()中channel的读事件。如果定时时间到,系统会向该channel中写入系统当前时间。 select{ case<-time.After(time.Second*5) 定时到达后,要处理的内容 } 死锁: 不是锁的一种!!!是一种错误使用锁导致的现象。 1.单go程自己死锁 ...原创 2021-04-10 12:17:14 · 269 阅读 · 0 评论 -
go系列-笔记(第四天)
channel说明 定义channel: make(chan类型,容量) ch:=make(chanstring): 写端:ch<-"hehe"。写端写数据,读端不在读。写端阻塞 读端:str:=<-ch。读端读数据,同时写端不在写,读端阻塞。 channel同步,数据传递: 写端:ch<-"hehe"。写端写数据,读端不在读。阻塞 读端:str:=<-ch。读端读数据,同时写端不在写,读端阻塞。 ...原创 2021-04-08 21:33:33 · 140 阅读 · 0 评论 -
go系列-笔记(第三天)
并发说明 1S=1000ms 1ms=1000us 1us=1000ns 并行:借助多核cpu实现。(真并行)并发: 宏观:用户体验上,程序在并行执行。 微观:多个计划任务,顺序执行。在飞快的切换。轮换使用cpu时间轮片。【假并行】 进程并发: 程序:编译成功得到的二进制文件。占用磁盘空间。死的11 进程:运行起来程序。占用系统资源。(内存)活的...原创 2021-04-06 21:28:40 · 135 阅读 · 0 评论 -
go系列-笔记(第二天)
目录 结构体: 普通结构体变量定义和初始化: 普通结构体变量的赋值和使用: 结构体变量的比较: 结构体地址: 结构体传参: 结构体指针变量定义和初始化: 结构体地址: 结构体指针传参: 练习: 结构体指针做函数返回值: 字符串处理函数: 打开、创建文件: 写文件: 读文件: 结构体: 是一种数据类型。 typePersons...原创 2021-03-28 13:58:31 · 210 阅读 · 0 评论 -
go系列-笔记(第一天)
目录指针:切片:map:分析图:指针: 指针就是地址。 指针变量就是存储地址的变量。 *p : 解引用、间接引用。 栈帧: 用来给函数运行提供内存空间。 取内存于 stack 上。 当函数调用时,产生栈帧。函数调用结束,释放栈帧。 栈帧存储: 1. 局部变量。 2. 形参。 (形参与局部变量存储地位等同) 3. 内存字段描述值 指针使用注意: 空指针:未被初始化的指针...原创 2021-03-28 09:59:25 · 145 阅读 · 0 评论 -
go语言-互斥锁 读写锁(二十六)
互斥锁在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。也就是将共享资源变成独占资源。互斥锁的应用场景通常是写大于读操作的,它不同于读写锁的读者随意访问,而写者只有一个。它代表的资源就是一个,不管是读者还是写者,只要谁拥有了它,那么其他人就只有等待解锁后,隐约在脑海中浮现出“宝刀屠龙,谁与针锋”的话语。其实我们可以很形象的理解一下互斥锁,资源就好比是一个厕所,很多人都想上厕所,但原创 2021-03-22 21:13:26 · 260 阅读 · 0 评论 -
go语言-Socket编程(二十五)
1. Socket是什么Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用:Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:.原创 2021-03-07 13:24:53 · 197 阅读 · 0 评论 -
go语言-网络概述 网络协议(二十四)
1. 网络协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答OK给传输方;第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A、B之间达成的这个相互遵守的规则即为协议。原创 2021-03-06 23:10:55 · 317 阅读 · 0 评论 -
go语言-select的使用 (二十三)
1.select的作用原创 2021-03-06 17:24:28 · 146 阅读 · 0 评论 -
go语言-Timer的使用 (二十二)
1. Timer的使用//验证time.NowTimer() 只响应一次func main() { //创建一个定时器,设置时间为2s,2s后,往tim通道写数据 timer := time.NewTimer(2 * time.Second) fmt.Println(time.Now()) //2s后,往timer.C写数据,有数据后,就可读取 t := <- timer.C fmt.Println("t = ", t) fmt.Println(time.Now())}原创 2021-03-05 22:22:38 · 611 阅读 · 1 评论 -
go语言-channel使用(二十一)
1. channel介绍原创 2021-02-28 17:50:49 · 576 阅读 · 0 评论 -
go语言-goroutine创建 主协程/子协程 runtime.Gosched runtime.Goexit runtime.GOMAXPROC(二十)
1. 创建goruoutinefunc newTask() { for { fmt.Println("this is new task") time.Sleep(time.Second) //延时1s }}func main() { go newTask() //❤️建一个协程,新建一个任务 for { fmt.Println("this is a main goroutine") time.Sleep(time.Second) //延时1s }}...原创 2021-02-28 16:03:49 · 383 阅读 · 0 评论 -
go语言-文件操作(十九)
标准设备文件使用func main() { //标准设备文件(os.Stdout),默认已经打开,柯直接使用 os.Stdout.WriteString("are you ok?\n") //os.Stdout.Close() //关闭后,无法输入 var a int fmt.Println("please input a:") fmt.Scan(&a)//从标准设备中肚脐内容,放入a中 fmt.Println("a = ", a)}输出are you ok?.原创 2021-02-28 10:52:51 · 1141 阅读 · 0 评论 -
go语言-字符串常用操作函数 字符串转换(十八)
字符串常用操作函数import ( "fmt" "strings")func main() { //是否包含字串 fmt.Println(strings.Contains("hello", "llo")) //Join组合 s := []string{"bac", "de", "fg"} buf := strings.Join(s, "-") fmt.Println("buf:", buf) //Index 查找字串位置 fmt.Println(strings.Index.原创 2021-02-27 16:35:41 · 280 阅读 · 0 评论 -
go语言-error接口的应用 显式调用panic 数组越界导致panic recover的使用(十七)
error接口的应用package mainimport ( "errors" "fmt")func MyDiv(a, b int) (result int ,err error) { err = nil if b == 0 { err = errors.New("1/0 is error") } else { result = a / b } return result, err}func main() { result, err := MyDiv(1,原创 2021-02-26 21:22:57 · 517 阅读 · 0 评论 -
go语言-go接口的继承(十六)
package mainimport "fmt"type Humaner interface { SayHi()}type Personer interface { Humaner Sing(lrc string)}type Student struct { name string id int}//实现接口的sayhifunc (s *Student)SayHi() { fmt.Printf("%s sayhi\n", s.na.原创 2021-02-24 22:40:35 · 160 阅读 · 0 评论 -
go语言-go接口的定义和实现(十五)
package mainimport "fmt"type Humaner interface { SayHi()}type Student struct { name string id int}func (tmp *Student) SayHi() { fmt.Printf("Student%s %d sayhi\n", tmp.name, tmp.id)}type Teacher struct { group string a.原创 2021-02-24 22:33:08 · 216 阅读 · 0 评论 -
go语言-结构体-指针类型和普通类型的方法集(十四)
结构体变量是一个指针变量,它能够调用哪些方法,这些方法就是一个集合,简称方法集package mainimport "fmt"type Father struct { name string sex byte age int}func (p Father) SetInfoValue() { fmt.Println("SetInfoValue")}func (p *Father) SetInfoPointer() { fmt.Println("SetInfoPointe原创 2021-02-10 14:49:33 · 313 阅读 · 0 评论 -
go语言-go语言可见性规则验证(十三)
1. 如果想使用别到包的函数,结构体类型,结构体成员函数名,类型名,结构体成员变量名,首字母必须大写,可见2. 如果首字母是小写,只能在同一个包里使用//如果首字母是小写,只能在同一个包里使用type stu struct {}type Stu struct { //id int //如果首字母是小写,只能在同一个包里使用 Id int}...原创 2021-02-08 10:26:57 · 204 阅读 · 0 评论 -
go语言-内置变量类型以及类型转换(二)
Go 语言中包括以下内置基础类型: 布尔型:bool字符串:string整型:(u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr字符型: byte,rune 浮...原创 2018-06-24 21:33:00 · 716 阅读 · 0 评论 -
go语言-函数(五)
函数返回多个值时可以起名字 仅用于非常简单的函数 对于调用者而言没有区别func div(a int, b int) (int, int) { return a/b, a/b} 返回值类型写在最后面 可返回多个值 函数作为参数 没有默认参数,可选参数func test(a, b int) (int, error) { if a > b { return 1, nil } e...原创 2018-07-08 11:26:44 · 259 阅读 · 0 评论 -
go语言-指针(六)
var a int = 2var pa *int = &a*pa = 3fmt.Println(a)指针不能运算Go使用值传递? 引用传递?Go只有值传递一种方式 var a, b int= 1, 2 swap2(&a, &b) fmt.Println(a, b) func swap2(a , b *int) { *a, *b = *b, *a }...原创 2018-07-08 15:57:20 · 231 阅读 · 0 评论 -
go语言-内建容器之数组(七)
arr2 := [5]int{1,2 ,4} fmt.Println(arr2) printArray(arr2) printArray2(&arr2)func printArray(arr [5]int) { arr[1] = 100 for i, v:=range arr { fmt.Println(i, v) }}输出0 11 1002 43 04 0[...原创 2018-07-08 17:01:47 · 243 阅读 · 0 评论 -
go语言-内建容器之切片Slince(八)
arr := [...]int{0,1,2,3,4,5,6,7} fmt.Printf("arr[2:6]= ", arr[2: 6]) fmt.Printf("\n a[:6] = ", arr[:6]) s1 := arr[2:] fmt.Printf("\n arr[2:] = ", s1) s2 :=arr[:] fmt.Printf("\n arr[:] =", s2)...原创 2018-07-08 22:40:37 · 1008 阅读 · 0 评论 -
go语言-条件语句以及循环语句(四)
for, if后面的条件没有括号if条件里也可以定义变量 var sum int = 0 var i int = 0 for i=0; i<=100; i++ { sum += i } fmt.Println(sum)没有whileswitch不需要break,也可以直接switch多个条件 var str = "abc" switch { case a > 10:...原创 2018-07-02 22:17:47 · 281 阅读 · 0 评论 -
go语言-常量的定义以及枚举类型(三)
常量的定义const fileName = "bcd.txt";#const 数值可作为各种类型使用const a, b = 3, 4var c = int(math.Sqrt(a*a + b*b))使用常量定义枚举类型普通枚举类型const( cpp = 0 java = 1 python = 2 )自增值枚举类型const( got = iota ptython...原创 2018-06-27 23:03:06 · 1092 阅读 · 0 评论 -
go语言-内建容器之map(九)
var mMap map[string]string = map[string]string { "a" : "this is a", "b" : "this is b", } var k, v string for k, v = range mMap { fmt.Printf(k, v) fmt.Println("") } var value = mMap["a.原创 2018-07-14 21:47:57 · 373 阅读 · 0 评论 -
go语言-面向对象之结构体与方法(十)
go语言仅支持封装,不支持继承和多态type node struct { value int left *node right *node} var root node root = node{value:1} //root := node{value:1} root.left = &node{value:2} root.left.right = &node{va...原创 2018-07-15 11:14:26 · 301 阅读 · 0 评论 -
go语言-面向对象之包和封装(十一)
封装1. 名字一般使用CamelCase2. 首字母大写:public3. 首字母小写: private包1. 为结构定义的方法必须放在同一个包内2. 可以是不同文件package queuestype Quene []intfunc (q *Quene) AddQuene(val int) { *q = append(*q, val)}func (...原创 2018-07-29 14:32:51 · 970 阅读 · 0 评论 -
go语言-面向对象之GOPATH以及目录结构(十二)
GOPATH下目录结构1. go build 来编译2. go install 产生pkg文件和可执行文件3. go run直接编译运行src *git repository 1 *git repository 2pkg *git repository 1 ...bin *执行文件1,2,3 go get命令使用gopm来获取无法下载的包例如g...原创 2018-07-29 16:42:54 · 522 阅读 · 0 评论
分享