golang slice

Golang GMP原理(2)

GMP调度场景 场景1 P拥有G1,M1获取P后开始运行G1,G1使用 go func 创建G2,为了局部性G2优先加入到P1的本地队列 场景2 G1运行完成后(函数:goexit),M上运行的goroutine切换为G0,G0负责调度时协程的切换(函数:schedule)。从P的本地队列取G2,从 ......
原理 Golang GMP

Golang 网络爬虫框架gocolly

Golang 是一门非常适合编写网络爬虫的语言,它有着高效的并发处理能力和丰富的网络编程库。下面是一个简单的 Golang 网络爬虫示例: package main import ( "fmt" "net/http" "io/ioutil" "regexp" ) func main() { resp ......
爬虫 框架 gocolly Golang 网络

Golang刷题日志--链表部分(更新中)

1.给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 1 1 2 3 3 --> 1 2 3 判断如果当前节点val与后继节点val相等,则将后继节点的next赋给当前节点next,若不然,则移动当前节点置下一节点(cur=cur.next) ......
部分 Golang 日志

Golang MySQL 操作

1 . 创建go_db 目录 mkdir go_db 2. root@VirtualBox:/mnt/share/goframe/go_db# go mod init go_dbgo: creating new go.mod: module go_dbroot@VirtualBox:/mnt/sha ......
Golang MySQL

golang map key struct hash policy

The easiest and most flexible way is to use a struct as the key type, including all the data you want to be part of the key, so in your case: type Key ......
golang struct policy hash map

学习Golang时遇到的似懂非懂的概念

背景🐋 这是我学习golang的第三天,大致已经掌握了golang的语法,但是着手开发的时候,却遇到了许多问题,例如golang导包机制、golang的项目管理规范、go mod生成project怎么管理依赖的等等。其实这些概念之前也了解过,但是也只是如蜻蜓点水般的了解。正好,现在遇到了这些问题, ......
概念 Golang

Golang中map的安全使用

简单介绍 map数据类型在很多语言中都有,是一个key,value形式的hash表,从而将key,value进行一一映射,进行快速查找、添加、删除等操作。在Go语言中也不例外,提供了map数据结构类型。 内建map切忌开箱即用 golang中,map是引用类型,如指针切片一样,通过下面的代码声明后指 ......
Golang map

Go语言(Golang)编写最简单的命令行工具

最简单的命令行工具 项目预览 >echo abc 123 --name=nick abc 123 --name=nick 课程概述 如何制作命令行应用 如何使用 os.Args 获得命令行参数 前提条件 懂得 Go 语言基本语法 知识点 OS 包提供了用于处理操作系统相关内容的函数/值 独立于平台的 ......
命令 语言 工具 Golang

hashmap oop in golang

package main import ( "fmt" ) const HASH_BUCKET_SIZE = 3 //1023 type hash_node struct { key interface{} val interface{} next *hash_node } type HASH_BU ......
hashmap golang oop in

golang的vscode环境搭建

因为墙的原因,vscode安装go插件会有报错,需要切换成国内的镜像 GOPROXY https://proxy.golang.com.cn,direct ......
环境 golang vscode

golang hashmap

package main import ( "fmt" ) const HASH_BUCKET_SIZE = 3 //1023 type hash_node struct { key interface{} val interface{} next *hash_node } //hash bucke ......
hashmap golang

Golang基础--加锁与原子操作

前言 在实际项目开发中,有时会面临同一时刻将多个goroutine作用于同一个对象的情况,此时,他们之间会发生冲突,这种情况称为数据竞态问题。例如: package main import ( "fmt" "time" ) var count int func main() { go CountPl ......
原子 基础 Golang

golang模拟键盘输入字符串

* 仅供学习使用哈,不要用来开gua。 * 代码仓库:https://github.com/GuoFlight/gkeybd(本人仓库,欢迎留言) ......
字符串 字符 键盘 golang

golang基础--Goroutine与Channel

什么是goroutine? goroutine是go特有的并发体,是一种轻量级的线程,由go关键字启动。goroutine是Go语言提供的一种用户态线程,有时我们也称之为 协程。所谓的协程,某种程度上也可以叫做轻量线程,它不由os,而由应用程序创建和管理,因此使用 开销较低(一般为4K)。我们可以创 ......
Goroutine Channel 基础 golang

常用的截取字符串方法JS和Golang实现

JS中截取字符串很简单,直接使用substr函数 substr() 方法可在字符串中截取从开始下标开始的指定数目的字符。下标是从0开始算 例如: "21".substr(0,1) 返回2 golang实现的substr // 截取字符串,支持多字节字符 // start:起始下标,负数从从尾部开始, ......
字符串 字符 常用 方法 Golang

golang控制语句和运算符

一、go程序基础 1、文件名 go语言文件名命名规范: go语言的文件名必须以.go结尾。 go语言的文件名必须以小写字母开头,否则会报错。 go语言的文件名不能包含空格,否则会报错。 go语言的文件名不能包含特殊字符,否则会报错。 go语言的文件名不能包含中文,否则会报错。 go语言的文件名不能包 ......
运算符 语句 golang

从源码深入理解读写锁(golang-RWMutex)

环境:go 1.19.8 在读多写少的情况下,即使一段时间内没有写操作,大量并发的读访问也不得不在Mutex的保护下变成串行访问,这种情况下,使用Mutex,对性能影响比较大。 所以就要区分读写操作。如果某个读操作的g持有了锁,其他读操作的g就不必等待了,可以并发的访问共享变量,这样就可以将串行的读 ......
golang-RWMutex 源码 RWMutex golang

golang推荐的命名规范

二 golang推荐的命名规范 很少见人总结一些命名规范,也可能是笔者孤陋寡闻, 作为一个两年的golang 开发者, 我根据很多知名的项目,如 moby, kubernetess 等总结了一些常见的命名规范。 命名规范可以使得代码更容易与阅读, 更少的出现错误。 文件命名规范 由于文件跟包无任何关 ......
golang

golang基础知识

一 golang基础知识 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。 设计初衷 Go语言是谷歌推出的一种的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程 ......
基础知识 基础 知识 golang

golang 解析处理word文档扩展包

github.com/unidoc/unioffice 该扩展包对word操作功能比较全,但为商业使用,注册后有100次的试用,具体使用就不详细说明了,具体可以看 https://github.com/unidoc/unioffice-examples github.com/carmel/gooxm ......
文档 golang word

golang中一种不常见的switch语句写法

最近翻开源代码的时候看到了一种很有意思的switch用法,分享一下。 注意这里讨论的不是typed switch,也就是case语句后面是类型的那种。 直接看代码: func (s *systemd) Status() (Status, error) { exitCode, out, err := ......
写法 语句 常见 golang switch

Golang程序无法在Termux访问网络(DNS解析问题)

原文: https://github.com/termux/termux-app/issues/869#issuecomment-433985523 pkg install proot resolv-conf proot -b $PREFIX/etc/resolv.conf:/etc/resolv. ......
程序 Golang Termux 问题 网络

golang —— 类型断言的妙用

最近写代码的时候发现编译器老是会给 switch v.(type) 一个简化提醒 could eliminate type assertions in switch cases,于是尝试根据提醒优化了一下: switch v := v.(type) { case int: m[k] = v * 2 ......
妙用 类型 golang

golang原生实现JWT

golang原生实现JWT JWT(JSON Web Token)是一种基于JSON的安全令牌,可以用于在不同系统之间传输认证信息。在Go中实现JWT验证,可以通过标准库crypto/hmac、crypto/sha256和encoding/base64来编写自己的JWT。 获取Token 我们在此封 ......
golang JWT

golang —— 实现接口的结构体调用方式

在接口上调用方法时,必须有和方法定义时相同的接收者类型或者是可以根据具体类型 P 直接辨识的: 指针方法可以通过指针调用 值方法可以通过值调用 接收者是值的方法可以通过指针调用,因为指针会首先被解引用 接收者是指针的方法不可以通过值调用,因为存储在接口中的值没有地址 将一个值赋值给一个接口时,编译器 ......
接口 结构 方式 golang

Golang GMP原理(1)

Golang GMP原理(1) 概念梳理 线程 线程一般指内核级线程,核心如下: 操作系统的最小调度单元 创建 销毁 调度由内核完成,cpu要完成内核态与用户态的转换 可充分利用多核,实现并行 协程 协程线程对应 协程,又称为用户级线程,核心点如下: 与线程存在映射关系,为M:1 创建、销毁、调度在 ......
原理 Golang GMP

golang常用的http请求操作

之前用python写各种网络请求的时候写的非常顺手,但是当打算用golang写的时候才发现相对来说还是python的那种方式用的更加顺手,习惯golang的用法之后也就差别不大了,下面主要整理了常用的通过golang发起的GET请求以及POST请求的代码例子 golang发起GET请求 基本的GET ......
常用 golang http

Golang每日一库之bcrypt

本文 官方文档: https://pkg.go.dev/golang.org/x/crypto/bcrypt 前言 之前讲过JWT Token https://www.cnblogs.com/zichliang/p/17303759.html JWT呢是信息是经过数字签名的,因此可以被验证和信任。 ......
Golang bcrypt

在Golang中使用Testify mock框架

1. 前言 2. 实现代码 3. Mock和测试 4. Mock无参方法 5. Mock带参数的方法 6. Mock带参数的方法, 但是参数具体内容非测试重点 7. Mock带参数的方法, 并校验实际参数 8. Mockery 9. 参考 1. 前言 我使用golang已经有一段时间了,但直到最近我 ......
框架 Testify Golang mock

golang1.6版本json包解析嵌套指针的问题小记

指针的指针问题 本地跑的好好的,测试环境跑的好好,预发布环境(准线上环境),跪了。 起因就是: 1 a := &struct{s:""} 2 json.Unmarshal([]byte{}, &a) 3 fmt.Println(a.s) //报错行 第一行代码进行 &取地址,获得指针变量。 第二行代 ......
小记 指针 golang1 版本 golang