golang

Go

Golang 协程(goroutine) 运行过程 与 并发

65 0

首先我们需要理解进程和线程的关系当运行一个应用程序的时候,操作系统会为这个应用程序启动一个进程,该个进程包含了应用程序在运行中所用需要用到和维护的各种资源的容器每个进程至少包含一个线程每个进程的初始线程被称为主线程执行线程的空间是应用程序本身的空间主线程终止,应用程序也将终止goroutine执行过程前提,goroutine的执行主要依靠调度处理器来完成,如// 创建了两个调度处理器 runtime.GOMAXPROCS(2) 1、创建一个goroutine2、goroutine进入调度处理器全局运行队列

Go

golang 异常处理 在defer中通过recover捕获异常

486 0

处理普通错误 参考文章https://www.runoob.com/go/go-...参考1: http://www.topgoer.com/函数/...参考2: https://zhuanlan.zhihu.com/p/...Golang 没有结构化异常,使用 panic 抛出错误,recover 捕获错误。异常的使用场景简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。package mainimport ("fmt" ) // 举例除数为0

Go

gin(6)-模板渲染

104 0

在golang中模板渲染已经简单到极致了首先看下项目目录`java0904@weigongdeMacBook-Pro templates % tree . ├── html │ └── index.html └── main.go` 代码部分package mainimport "github.com/gin-gonic/gin"func main() {engine := gin.Default()engine.LoadHTMLGlob("html/*")engine.GET("/index", f

Go

go 读写锁实现原理解读

355 0

引言锁是编程开发中用于并发控制的一种同步机制,提供多线程(或协程)之间并发读写一个共享数据的方法。在go语言中使用锁也很简单:var loc sync.Mutex var rwLoc sync.RWMutex var idx int var writeRatio = 3func Inc(){loc.Lock()defer loc.Unlock()timer := time.NewTimer(100

Go

手撸golang GO与微服务 net.rpc之2

48 0

手撸golang GO与微服务 net.rpc之2缘起最近阅读 [Go微服务实战] (刘金亮, 2021.1)本系列笔记拟采用golang练习之gitee: https://gitee.com/ioly/learning.gooopnet/rpc微服务中的进程间通信概述 对于进程间通信的技术,开发者有多种选择。 可以选择基于同步通信的通信机制,比如HTTP RESTful; 也可以选择基于异步通信的方式,Go语言提供了标准的net/rpc包以支持异步。远程过程调用协议(Remote Procedure C

Go

Golang并发原语之-信号量Semaphore

266 0

信号量是并发编程中比较常见的一种同步机制,它会保持资源计数器一直在0-N(N表示权重值大小,在用户初始化时指定)之间。当用户获取的时候会减少一会,使用完毕后再恢复过来。当遇到请求时资源不够的情况下,将会进入休眠状态以等待其它进程释放资源。在 Golang 官方扩展库中为我们提供了一个基于权重的信号量 semaphore 并发原语。你可以将下面的参数 n 理解为资源权重总和,表示每次获取时的权重;也可以理解为资源数量,表示每次获取时必须一次性获取的资源数量。为了理解方便,这里直接将其理解为资源数量。数据结构

Go

Json序列化在golang中的应用

38 0

关于我 作者博客|文章首发 golang对json序列化和反序列化的操作实在是难受,所以说用习惯了高级语言特性,再转到这些偏原生的写法上就会很难受。 不多BB,开始记录。 序列化库的选择 当写个小demo或者做个小工具,没有大规模使用场景,那使用哪个库都是一样的,因为性能的体现并不会很明显。但是如果是在实际项目中使用,且伴随着高并发,大容量等场景,我还是推荐使用json-iterator。 go自带json库 "encoding/json" 官当自带 json-iterator 号称最快的go json

Go

Json序列化在golang中的应用

52 0

关于我 作者博客|文章首发 golang对json序列化和反序列化的操作实在是难受,所以说用习惯了高级语言特性,再转到这些偏原生的写法上就会很难受。 不多BB,开始记录。 序列化库的选择 当写个小demo或者做个小工具,没有大规模使用场景,那使用哪个库都是一样的,因为性能的体现并不会很明显。但是如果是在实际项目中使用,且伴随着高并发,大容量等场景,我还是推荐使用json-iterator。 go自带json库 "encoding/json" 官当自带 json-iterator 号称最快的go json