自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 go 使用 sync.RWMutex

简述读写锁的使用,以及注意点。

2024-01-02 13:04:47 4452

原创 go 源码解读 sync.RWMutex

简述sync包中读写锁的源码。读写锁(RWMutex)是一种并发控制机制,用于在多个 goroutine 之间对共享资源进行读写操作。它提供了两种锁定方式:读锁和写锁。读锁(RLock):多个 goroutine 可以同时持有读锁,而不会阻塞彼此。只有当没有写锁被持有时,读锁才会被授予。这样可以实现多个 goroutine 并发地读取共享资源,提高程序性能。写锁(Lock):写锁是排它的,当某个 goroutine 持有写锁时,其他所有 goroutine 都无法获得读锁或写锁。

2023-12-28 17:01:28 9909 1

原创 go 使用 - sync.Metux

简述使用metux使用的方法, 使用的注意点, 已经使用情况。

2023-12-27 16:02:26 5158

原创 go 源码解读 - sync.Mutex

mutex 是 一种实现互斥的同步原语。(go-version 1.21) (还涉及到Go运行时的内部机制)

2023-12-27 15:19:39 14174 3

原创 go 使用 - sync.WaitGroup

waitgroup 是等待一组并发操作完成得方法。Goroutines对Go来说是独一无二的(尽管其他一些语言有类似的并发原语)。它们不是操作系统线程,它们不完全是绿色的线程(由语言运行时管理的线程),它们是更高级别的抽象,被称为协程(coroutines)。协程是非抢占的并发子程序,也就是说,它们不能被中断。

2023-12-27 11:03:49 813

原创 go xorm 存库处理null值

Go 的结构体不直接支持整数类型的 NULL 值。整数类型(如 int、int64 等)是非指针类型,不能直接存储 NULL 值。然而,你可以使用指针类型来模拟整数类型的 NULL 值。通过将整数字段定义为指针类型,可以将其设置为指向整数值或者为 nil(NULL)。go 的结构有默认值, 这样从数据库获取的时候, null 值会被解析成 0 , 而0 在系统是一个有效值。指针可以读到 数据库的null 值, json 解析的时候 也能 转成null 值,。

2023-05-23 15:29:36 15108

原创 go 源码解读 - sync.WaitGroup

在 Go 语言中,sync.WaitGroup 是一个并发编程的同步工具,用于等待一组 Goroutine 执行完毕。当需要等待多个 Goroutine 完成任务后才能执行下一步操作时,我们可以使用 sync.WaitGroup 实现协程间的同步。它提供了三个方法,分别用于计数、计数减一和等待协程执行完毕。具体来说:Add(delta int) 方法可以用于增加 WaitGroup 的计数器。每次调用 Add(),计数器就会增加 delta。如果delta 为负数,则会减少计数器。

2023-05-09 14:40:37 15447

原创 go源码解读 - sync.once

2、延迟初始化:在程序运行过程中需要用到某个资源时,通过sync.once 动态初始化改资源。2、当执行f 函数的过程中发生了error, 现有的 sync.once 无法感知的,3、执行一次的操作: 只需要执行一次的配置加载、数据清理等操作。1、不可以重复调用DO 方法, 会导致死锁。1、单例模式: 确保全局只有一个实例对象。

2023-05-04 13:36:48 14811

原创 go源码解读-sync.pool

sync.pool 是go 内置的对象池技术, 管理临时对象,这些对象可以单独保存和检索, 减少GC次数特点:1、 池不可以指定大小2、 Get 没有的话会新生成一个对象3、对象的周期取决于GC的周期从go doc可以看到sync.pool 主要暴露Get 和 Put 两个方法, 以及一个New。:用New初始化pool一个实例,获取的调用Get , 释放资源的时候调用Put使用实例:gin 中使用。

2023-04-26 15:59:08 584

原创 Leecode---141、142环形链表

leetcode 刷题

2023-01-05 14:33:19 544

原创 sqlite3 字符串分割

sqlite字符串分割处理函数 : substr(string str,num start,num length)@param str : 需要处理的字符串@param start: 开始位置@param length: 长度 (该值可不填, 默认到字符串结尾)sqlite> select ip from l3intf;12.1.3.3/24sqlite>sqlite> select substr(ip,1,4) from l3intf;12.1sqlite> s

2022-02-28 11:47:25 4765

原创 翻译tools

在做一个区域组件的国际化,然后做了一个小的翻译工具。这是中文的区域文件。百度翻译ap文档:https://api.fanyi.baidu.com/product/11const COUNT_NRL="http://api.fanyi.baidu.com/api/trans/vip/translate"type reqParam struct{ Q string `json:"q"` From string `json:"from"` To string `json:"to"` Appi

2020-10-27 15:13:11 645

原创 golang 获取当前路径

str, _ := os.Getwd()

2020-05-22 15:45:55 2667

原创 go 实现广播

type BroadcastService struct {// This is the channel the service will listen on…chBroadcast chan int// and forward it to these.chListeners []chan int// Requests for new listeners to be added…chNewRequests chan (chan int)// Requests for listeners to

2020-05-18 11:34:02 279

原创 git cherry-pick 使用

//将dfa546246提交,cherry过来git cherry-pick dfa546246//查看合并版本中的文件状态git status -s //在暂存区中将XXX.go的修改reset掉git reset HEAD xxx.go//将xxx.go修改在该分支彻底丢弃git checkout XXX.go//提交git commit ...

2020-05-13 15:22:34 123

原创 postman访问服务器没有相应,Could not get any response

postman访问服务器没有相应Could not get any responseThere was an error connecting to .Why this might have happened:The server couldn't send a response:Ensure that the backend is working properlySelf-signed SSL certificates are being blocked:!1、关掉这个2、添加

2020-05-09 13:51:12 800

原创 卸载重载postrgesql

wsl上的postgresql有点问题然后准备重装,然后遇到了一些问题,记录一下psql: error: could not connect to server: FATAL: Peer authentication failed for user “postgres” sudo -u postgres psql -U postgres还有一种方法,将peer authentiction...

2020-04-29 16:27:52 312

原创 go 类型断言

rr,ok:=mapsy.Load(did) //从sync.Map中加载数据,rr类型是interface{} if !ok{ return nil}value, ok := rr.(*Robot) //将rr转成自己需要的类型,这里是Robot(自己定义的struct)if !ok { return}...

2020-04-24 10:44:18 145

原创 go 计时器------time,Ticker

ticker结构,一个有计时的通道的定时器,到一个时间点就触发。// A Ticker holds a channel that delivers `ticks' of a clock// at intervals.type Ticker struct { C <-chan Time // The channel on which the ticks are delivered. ...

2020-04-23 17:15:32 308

原创 LeetCode(7)--------199二叉树的右视图

var re []int func rightSideView(root *TreeNode) []int { re = []int{} dfs(root,0)//遍历二叉树 return re }func dfs(node *TreeNode,level int){ if node==nil{ return ...

2020-04-22 10:36:25 93

原创 LeetCode解题(6)--------1248统计[优美子数组](go)

循环调用一个函数,然后进行匹配如果奇数满k个累加,想着暴力法美滋滋,然后去提交了,报了超时,我看了他的测试用例(见截图)func numberOfSubarrays(nums []int, k int) int { if len(nums)==0{ return 0 } sum:=0 h:=k for...

2020-04-21 20:42:34 116

原创 Goland------设置头文件注释

2020-04-21 11:04:14 578

原创 LeetCode(5)-----岛屿数量

美好的一天从练手感开始这应该是昨天的每日一题,用的递归,不难,就不阐述了func numIslands(grid [][]byte) int { var count = 0 if len(grid)==0{ return 0 } for i:=0;i<len(grid);i++{ for j:=0;j&lt...

2020-04-21 09:20:02 93

原创 LeetCode(4)-----整数的各位积和差(go)

看代码看的睡着了快,做一个简单的算法清醒一下。过于简单不阐述了func subtractProductAndSum(n int) int { var num []int for ; n/10 != 0 ; n=n/10 { num=append(num,n%10) } num=append(num,n) sum ...

2020-04-20 17:34:55 112

原创 LeetCode解题(3)---55. 跳跃游戏(go)

题目描述遍历每个位置,并计算当前位置是否可达用max 保存当前位置可以跳转的最大距离每遍历一个位置,判断这个位置i与max的大小,如果i大说明之前的所有位置的都没有跳跃到当前位置,当前位置不可达直接返回false.func canJump(nums []int) bool { //长度 length := len(nums) var max int ...

2020-04-17 17:11:07 128

原创 go基础 ---- math

fmt.Println(math.Abs(-5)) // 取绝对值 fmt.Println(math.Floor(3.1)) // 向下取整 fmt.Println(math.Floor(3.8)) // 向上取整 // 默认没有四舍五入,可以这么实现 var num float64 = 1.2 fmt.Println(math.Floor(nu...

2020-04-17 16:25:44 175

原创 wsl[ubuntu]安装redis

1、安装makeyjq@LAPTOP-NL8TU5I4:/usr/local$ sudo apt-get update... yjq@LAPTOP-NL8TU5I4:/usr/local$ sudo apt-get make...yjq@LAPTOP-NL8TU5I4:/usr/local$ sudo apt-get install gccReading package lis...

2020-04-16 10:11:03 669

原创 wsl安装postgres

wsl安装postgressudo apt-get install wget ca-certificateswget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -sudo sh -c ‘echo “deb http://apt.postgresql.org/pub/re...

2020-04-16 09:09:23 531 1

原创 IRIS 框架学习一

IRIS 框架1、介绍用go语言开发web架构,速度最快的web框架。Iris是一款Go语言中用来开发web应用的框架,该框架支持编写一并在任何地方以最小的机器功率运行,如Android、ios、Linux和Windows等。该框架只需要一个可执行的服务就可以在平台上运行了。Iris框架以简单而强大的api而被开发者所熟悉。iris除了为开发者提供非常简单的访问方式外,还同样支持MVC。另...

2020-04-10 15:02:36 1387

原创 开发工具使用(囤好货,护头)

1、在线比较两个文档的差异http://www.jq22.com/textDifference2、web接口测试postman

2020-04-10 10:10:19 106

原创 Linux端口被占用-----Listen tcp :9111 :bind :address already in use

netstat -nap| grep [端口]

2020-04-09 10:12:58 455

原创 LeetCode解题(2)----面试题 01.07. 旋转矩阵(go)

func rotate(matrix [][]int) {//按对称轴反转for i:=0;i<len(matrix) ;i++{ for j:=0;j<len(matrix[0]);j++{ if j>i{ matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j] ...

2020-04-07 18:26:41 181

原创 psql :致命错误:用户postgres Password 认证失败

su - postgres 切换用户后 报错 psql :致命错误:用户postgres Password 认证失败使用 psql -U postgres 进入,随后输入密码

2020-04-03 14:14:11 29111 3

原创 LeetCode解题(1)----------8 字符串转换整数[go]

func myAtoi(str string) int { //去除空格 s := strings.TrimSpace(str) if s ==""{ return 0 } templ := []byte{'0','1','2','3','4','5','6','7','8','9'} var abs string var...

2020-04-03 10:54:50 209

原创 git本地有修改 需要pull操作

昨天,要处理一个故障单,然后新建了一个分支进行处理。我记得我在原本的分支上git stash 的,后来自己的代码全没了。忘记自己后来做啥操作把它们弄丢了。1 可以看到我本地有一些修改记录但是我现在想同步代码,要么 git reset --hard ,git pull ,本地修改我都不需要。但是这有点狠,算了算了。2 git stash 暂存一下3 git pull此时我回去看...

2020-03-25 18:29:14 46809 5

原创 go iris 上下文摘要

package contexttype Context interface { // BeginRequest 针对每一个请求都会执行 // 它应该为新的请求准备(新的或从pool获得的)上下文的字段。 // 要跟随iris的流程,开发人员应: // 1. 重置handler 为nil // 2. 重置 values 为空 // 3. 重置会话为 ...

2020-03-25 16:32:46 519

原创 git 学习

看到一篇博文,学习git的。他用的这个,可以模拟git 的命令。https://learngitbranching.js.org/

2020-03-23 17:09:46 67

原创 git -----操作分支

建立分支通过branch 的命令创建分支$ git branch <branchname>创建名为issue1的分支$ git branch issue1不指定参数的branch命令,可以显示分支列表。前面有*的就是当前所在分支$ git branch issue1 *master目前分支状态,head指向当前分支:切换分支要执行checkout 命令...

2020-03-21 14:57:29 70

原创 Go下载第三方依赖被墙

设置:set GO111MODULE=onset GOPROXY=https://proxy.golang.org

2020-03-20 16:59:22 176

原创 读 csv 文件出现乱码

fileName := flag.String("f", "", "Application Policy CSV File") flag.Parse() if *fileName == "" { fmt.Printf("Please Assign Application Policy CSV File") return }csvreader.New().WithHeader([]s...

2020-03-20 16:53:09 602

goland dlv 使用得可执行文件, windows 使用的

goland dlv 使用得可执行文件, windows 使用的

2023-01-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除