![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go学习笔记
文章平均质量分 60
学习笔记
正负日子
这个作者很懒,什么都没留下…
展开
-
Go-Tips goroutine
go协程原创 2022-08-27 13:23:38 · 161 阅读 · 1 评论 -
Go-Tips:map转json-> json转结构体
map转json ,json转struct原创 2022-08-20 21:28:36 · 324 阅读 · 0 评论 -
GoTips-- 内存管理2
内存控制原创 2022-06-10 18:21:13 · 123 阅读 · 0 评论 -
GoTips-- 内存管理
go内存管理原创 2022-06-10 14:23:56 · 136 阅读 · 0 评论 -
GoProject--简易日志收集实现
GoProject–简易日志收集实现mylogger.go自定义一个日志库type LogLevel uint16/* 类型再定义: type A int32 类型别名: type A = int32*/const ( UNKNOWN LogLevel = iota//自增默认数据类型为int,此处显式指定类型为LogLevel DEBUG TRACE INFO WARNING ERROR FATAL)log等级:Go并没有明确意义上的enum定义,可借助iota标识原创 2022-03-28 19:00:51 · 180 阅读 · 0 评论 -
GoTips-- make和new对比
new只接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。同时请注意它同时把分配的内存置为零,也就是类型的零值。package mainimport ( "fmt" "sync")type people struct { m sync.Mutex name string age int sex string}func main() { zzt := new(people) //默认给u分配到内存全部为0 zzt.m.Lock(原创 2022-03-23 19:55:26 · 61 阅读 · 0 评论 -
GoTips--rpc十分简单示例
RPCRemote Procedure Call Protocol —— 远程过程调用协议!IPC: 进程间通信RPC:远程进通信 —— 应用层协议(http协议同层)。底层使用 TCP 实现。像调用本地函数一样,去调用远程函数通过rpc协议,传递:函数名、函数参数。达到在本地,调用远端函数,得返回值到本地的目标。对比:socket通信server端: net.Listen() —— listener 创建监听器 listener.Accpet() —— con原创 2022-03-23 15:56:21 · 3490 阅读 · 0 评论 -
GoTips--GMP
笔记来源:刘丹冰AceldGPM模型 bilibili多进程(线程)在多进程/多线程的操作系统中,解决了单进程阻塞的问题,因为一个进程阻塞cpu可以立刻切换到其他进程中去执行,而且调度cpu的算法可以保证在运行的进程都可以被分配到cpu的运行时间片。这样从宏观来看,似乎多个进程是在同时被运行。但新的问题就又出现了,进程拥有太多的资源,进程的创建、切换、销毁,都会占用很长的时间,CPU虽然利用起来了,但如果进程过多,CPU有很大的一部分都被用来进行进程调度了。协程多进程、多线程已经提高了系统的并发原创 2022-03-13 13:15:52 · 797 阅读 · 0 评论 -
GoProject--Go语言实现简易聊天室
Go语言实现简易聊天室项目结构主程序main.go服务器server.go客户端client.go服务器端主程序main.gopackage mainimport ( "fmt" "example/server")func main() { fmt.Println("服务器开启") server := server.NewServer("127.0.0.1", 8888) server.Start()}server.go服务器API的属性:type S原创 2022-03-09 20:50:23 · 319 阅读 · 0 评论 -
GoTips--牛客输入输出练习
[第七题](A+B(7)_OJ在线编程常见输入输出练习_牛客网 (nowcoder.com))package main import ( ``"bufio" ``"fmt" ``"os" ``"strings" ``"strconv") func main () { ``input := bufio.NewScanner(os.Stdin) ``for` `{ ``if` `ok := input.Scan(); !ok { ``break原创 2022-03-09 11:23:26 · 344 阅读 · 0 评论 -
GoTips--匿名函数and闭包(2)
匿名函数//直接执行func main() { func(s string) { println(s) }("hello,world!") }//复制给变量func main() { add:=func(x,y int)int{ return x+y } println(add(1,2)) }//作为参数func test(f func()) { f() } func main() {原创 2022-03-09 09:58:19 · 84 阅读 · 0 评论 -
GoTips--有关输入输出:bufio包
bufio实现缓存IObufio的Reader和Writer操作一般适用于磁盘IO的读写场景。Readerbufio.Reader 结构包装了一个 io.Reader 对象,提供缓存功能,同时实现了 io.Reader 接 口。type Reader structtype Reader struct { buf []byte rd io.Reader // 底层的io.Reader //r:从buf中读走的字节(偏移);w:buf中填充内容的偏移;原创 2022-03-08 13:16:57 · 797 阅读 · 0 评论 -
GoTips--有关输入输出:fmt包的使用
fmtfmt包使用函数实现I/O格式化常用格式化通用%v 值的默认格式表示%+v 类似%v,但输出结构体时会添加字段名%#v 值的Go语法表示%T 值的类型的Go语法表示布尔%t 单词true或false整数%b 表示为二进制%c 该值对应的unicode码值%d 表示为十进制%o 表示为八进制%x 表示为十六进制,使用a-f%X 表示为十六进制,使用A-F浮点数%e 科学计数法,如-1234.456e+78%E 科学计数法,如-1234.456E+78字符串原创 2022-03-07 21:12:00 · 256 阅读 · 0 评论 -
GoTips--Go退出的三种方式
return ===> 返回当前函数exit ===> 退出当前进程GOEXIT ===> 提前退出当前go程,执行延迟调用package mainimport ( "fmt" "time")func main() { go func() { go func() { defer fmt.Println("延迟调用") func() { fmt.Println("这是子go程内部的函数!") return //这是返回当前函数 /原创 2022-03-06 13:47:03 · 2493 阅读 · 0 评论 -
GoTips--闭包
闭包闭包是什么闭包是一个函数,这个函数包含了他外部作用域的一个变量闭包 = 函数 + 外部变量的引用底层原理函数可以作为返回值函数内部查找变量的顺序:现在自己的内部找,找不到再往外层找package mainimport ( "fmt")//已经给定f1作为接口,来调用传入参数(函数)f()func f1(f func()) { //fmt.Println("this is f1") f()}//f2此时作为传入参数(函数),无法直接使用func f2(x, y in原创 2022-03-06 12:22:33 · 113 阅读 · 0 评论 -
GoProject--cache2go源码阅读
golang:缓存库cache2go介绍cache2go项目地址是一个简单的缓存库,代码量较少,可以学习锁、goroutine等知识代码结构 benchmark_test.gocache.gocache_test.gocacheitem.gocachetable.goerrors.gocacheitem.goCacheItem是缓存表中的条目,代码逻辑很简单/* * Simple caching library with expiration capabilities *原创 2022-03-06 11:41:57 · 178 阅读 · 0 评论 -
Go语言实战--学习笔记--runner
Go语言实战–runner原创 2022-03-03 12:09:02 · 370 阅读 · 0 评论