Go
文章平均质量分 50
狗熊冬天不睡觉
这个作者很懒,什么都没留下…
展开
-
Go语言Mutex加锁流程
plantuml画的Go语言Mutex加锁流程时序原创 2022-12-08 11:41:46 · 477 阅读 · 1 评论 -
Go语言之sync.Map
Go语言的普通map由于不是线程安全的,所以很多时候也会使用sync包的Map来代替。sync.Map是线程安全的,但是也必须使用其提供的接口,接口不多,光看名字就知道其用途。先看下其中基本的结构1. 数据结构type Map struct { mu Mutex // 内部互斥锁,增,改数据会用到,删除可能会用到 read atomic.Value // readOnly 包含部分数据,但是多线程读安全 dirty map[interface{}]*entry // 存原创 2022-05-13 23:48:32 · 1894 阅读 · 0 评论 -
Go语言反射 1
偶然在代码中看到这样一段代码,如下:其实是一个开源的go http client [github.com/guonaihong/gout]。// Body body decoderfunc Body(r io.Reader, obj interface{}) error { if w, ok := obj.(io.Writer); ok { _, err := io.Copy(w, r) return err } all, err := ioutil.ReadAll(r) if原创 2021-09-15 23:00:42 · 268 阅读 · 0 评论 -
四则运算式解析思路
常年写业务代码的我遇到了四则运算,只要我不尴尬,尴尬的就不是我。这里还是记录一下四则运算思路吧,希望在以后工作生活中有用。四则运算在面试中其实也经常会遇到,经常刷LeetCode的应该不会陌生。其实在有一次面试中遇到了类似的问题,当时是计算一个公式中最大的嵌套层数,就是最大的有效的括号的层数。这里就不放什么启发的思路了,直接上步骤。1.定义两个栈,栈A用于存数据,栈B用于存运算符2.运算符优先级,+-*/(), 优先级从左到右依次变高,先计算优先级高的;但是在这里优先级这样定义方便计算 “)(+原创 2021-04-10 09:02:55 · 800 阅读 · 0 评论 -
Go语言 数据库行转列
数据库操作常规的增删改查都是基本要求,比较简单,但是有时会遇到一些特殊的要求。比如行转列的查询,这时会稍微复杂点,这里做一个简单的介绍。比如我们有一个表来存储学生的成绩,我们可能会这样设计这个表:type ClassInfo struct { Id int `gorm:"type:serial;primary_key"` Name string `gorm:"type varchar"`// 学生名字 Class strin原创 2021-04-10 08:58:31 · 290 阅读 · 0 评论