![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
koral chen
打工不为赚钱为什么,世界和平么!
life is fucking moving!
展开
-
cpu三级缓存与程序运行效率
原创 2021-03-21 15:58:50 · 502 阅读 · 0 评论 -
内存对齐
原创 2021-03-18 11:53:25 · 74 阅读 · 0 评论 -
Go Context包之cancelCtx实现
涉及的两个重要基础知识点: 1. 关闭的channel里面读取数据默认永远有个零值兜底 2. select里面加上default就不会阻塞cancelCtx实现:package realizeimport "sync"//必备知识://从开启的channel读数据会阻塞,但从关闭的channel里面读取数据,依然可以接受到之前已经成功发送的数据;如果channel中已经没有数据的话将产生一个零值的数据,这个零值在关闭的channel里面是无限的,可以一直读到//实现...原创 2020-08-16 13:57:39 · 957 阅读 · 0 评论 -
Go 接口引用兼容传值(接口指针兼容值)
////go接口传引用兼容传值(常见于框架实现)////////当一个结构实现接口时,只有值实现时,使用值和指针都可以//当一个结构实现接口时,既有指针实现,也有值实现时,使用值传递会报错//当一个结构实现接口时,既有指针实现,也有值实现时,使用指针传递实现package mainimport ( "fmt" "reflect")func main() { st := newStudent("zhangsan", 18) //testI(st) //报错 Cannot us.原创 2020-08-14 10:41:48 · 364 阅读 · 0 评论 -
Go Echo
Echo web框架是go语言开发的一种高性能,可扩展,轻量级的web框架。Echo框架默认其实只包含了MVC框架的C部分,就是负责url路由和控制器部分。至于V视图部分和M数据操作部分我们可以随意使用自己喜欢的工具库来操作。一个简单的例子:package mainimport ( "fmt" "github.com/labstack/echo" "github.com/labstack/echo/middleware" "net/http")var totalRe...原创 2020-07-28 14:27:12 · 1507 阅读 · 0 评论 -
多人聊天室【channel通信】
服务端// *************思路********************// 实现基本流程与乞丐版保持一致,只是在存储连接上修改为channel通信、发送消息上也修改为channel通信// 1.消息通道:message channel、entering channel、leaving channel// 2.客户端连接通道:clients channelpackage mainimport ( "bufio" "fmt" "io" "log" "net")typ原创 2020-07-22 16:18:01 · 2175 阅读 · 0 评论 -
多人聊天室【乞丐版】
服务端://聊天服务端/******************乞丐版思路(非channel通信)**********************/// 1.记录每个客户端连接// 2.返回给每个客户端对应的信息package mainimport ( "bufio" "fmt" "io" "log" "net")type client chan string //sent-only chan , 客户端类型var ( clients []net.Conn)func原创 2020-07-22 00:15:09 · 134 阅读 · 0 评论 -
go实现一个最简单的协程池管理
package mainimport ( "fmt" "time")func main() { //1.建任务 t := NewTask(func() error { fmt.Println(time.Now()) return nil }) //2.建协程池 p := NewPool(4) //3.将任务丢进entrychannel go func() { for { p.EntryChannel <- t } }() //4.启动协程 p.原创 2020-07-02 22:04:43 · 446 阅读 · 0 评论 -
Go语言精髓 • 【第6章 Channel通道】
本章节关键词CSP模型 无缓存Channel/有缓存Channel 主线程信息通知1 定义 在讲 channel 之前,有必要先提一下 CSP 模型,传统的并发模型主要分为 Actor 模型和 CSP 模型,CSP 模型全称为 communicating sequential processes,CSP 模型由并发执行实体(进程,线程或协程),和消息通道组成,实体之间通...原创 2020-04-27 05:51:04 · 165 阅读 · 0 评论 -
Go语言精髓 • 【RabbitMQ消息队列中间件】
1.定义和特征RabbitMQ是面向消息的中间件,用于组件之间的解耦,主要体现在消息的发送者和消费者之间无强依赖关系(不用因发送和消费者的改变而额外开发);2.RabbitMQ特点高可用,扩展性,多语言客户端,管理界面3.主要使用场景流量削峰,异步处理,应用解耦4.安装命令【windows】 安装erlang,RabbitMQ依赖erlang 安装Rabbi...原创 2020-04-19 13:55:31 · 383 阅读 · 1 评论 -
Go语言精髓 • 【第5章 go圣经上的一个并发小例子】
修改clock2来支持传入参数作为端口号,然后写一个clockwall的程序,这个程序可以同时与多个clock服务器通信,从多服务器中读取时间,并且在一个表格中一次显示所有服务传回的结果,类似于你在某些办公室里看到的时钟墙。如果你有地理学上分布式的服务器可以用的话,让这些服务器跑在不同的机器上面;或者在同一台机器上跑多个不同的实例,这些实例监听不同的端口,假装自己在不同的时区。像下面这样:$...原创 2020-04-16 01:04:00 · 275 阅读 · 0 评论 -
Go语言精髓 • 【第2章 IntelliJ+Go环境搭建】
IntelliJ环境的搭建流程就是一般的组件安装过程1.打开IntelliJ插件菜单file -->setting -->plugins (快捷键ctl+alt+s)2.搜索Go,并下载安装3.创建项目file --> new --> project --> Go Modules(vgo)注意,proxy会被工具设定为默认direct,改动...原创 2020-04-14 06:08:13 · 298 阅读 · 0 评论 -
Go语言精髓 • 【第3章 基础语法】
本章节关键词变量类型写在变量后 编译器可推测变量类型 没有char,只有rune(专门节讲解) 原生支持复数类型2.1 内建变量类型bool,string 整数 (u)int, (u)int8, (u)int16 ,(u)int32, (u)int64, uintptr(指针)加u无符号整数,不加u有符号整数;有符号整数分两类:规定长度的,不规定长度的(跟系统来,32位...原创 2020-03-22 11:31:31 · 177 阅读 · 0 评论 -
Go语言精髓 • 【第1章 环境搭建】
安装部门没有什么技巧,记住步骤和几个注意点就行1. https://studygolang.com/dl 下载go的安装包,建议1.13以上版本;2. go version 查看是否正确安装和版本,go env 查看配置信息;3. go 1.13开始增加镜像功能(添加国内镜像代理),在 goproxy.cn 中有设置代理的方法(有fq同学可以忽略);$ go env -w GOP...原创 2020-03-07 23:08:36 · 466 阅读 · 1 评论