下划线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

Golang单元测试

1. 前言 2. 先决条件 3. 创建单元测试的示例程序 4. 创建单元测试 5. 使用go test运行测试 6. Table-driven的单元测试 7. 测试覆盖率 8. Go基准测试 9. 为代码写示例 10. 总结 11. 参考文档 1. 前言 原文: How To Write Unit ......
单元 Golang

Golang 并发&同步的详细原理和使用技巧

Golang 并发概要说明 并发模型 Golang 的并发模型属于一种很典型的 CSP(communicating sequential processes) 并发模型,其核心是不要通过共享内存来通信,而应该通过通信来共享内存。具体实现,就是通过 goroutine 来实现并发,然后并发的 goro ......
使用技巧 原理 技巧 Golang amp

golang - 字符串数组是否存在某个值 -解决

做了个工具 // IsContainOne 字符串数组是否存在某个值 func IsContainOne(arr []string, v string) bool { sort.Strings(arr) index := sort.SearchStrings(arr, v) if index < l ......
数组 字符串 字符 golang

Django框架——ORM执行SQL语句、神奇的双下划线、外键字段的创建、跨表查询、进阶操作

ORM执行SQL语句 有时候ORM的操作效率可能偏低 我们是可以自己编写SQL的 方式一: models.User.objects.raw('select * from app01_user') 方式二: from django.db import connection cursor = conne ......
下划线 字段 语句 框架 Django

Django模型层(一) (测试环境搭配 常见的十几种查询方法-ORM关键字 ORM执行SQL语句 双下划线查询 ORM外键字段的创建 外键字段数据的增删改查 多表查询(子查询,连表查询))

目录 一、测试环境搭配 切换数据库 自带的sqlite3数据库对时间字段不敏感 有时候会展示错乱 ,所以我们习惯切换成常见的数据库比如MySQL django orm并不会自动帮你创建库, 所以需要提前准备好! 单独搭配测试环境 单独测试django某个功能层,默认不允许单独测试某个py文件,如果想 ......
字段 ORM 下划线 语句 模型

Golang - 6 Golang中包的使用、安装第三方包

6 包 包:包是在一个文件夹下,这个文件夹下所有go文件的第一行要声明包 关键词:import 1 包的使用 ① 包内部,首字母小写,不可导出;大写开头,表示可导出【函数、变量、结构体】 ② 包内部的变量,只能定义一次 ③ 包内部的东西,在包内部可以直接使用 比如同一个包下,不同go文件中可以直接使 ......
Golang 第三方

Golang - 5 Golang的流程控制:if/else、for、switch

5 流程控制 1 if/else 1.1 语法 // 基本形式 if 条件1 { }else 条件2 { }else { } 多个分支 age := 99 if age>=80 { fmt.Println("耄耋老人") }else if age>=70 && age<80 { fmt.Printl ......
Golang 流程 switch else for

golang —— append 的奇妙用法

将切片 b 的元素追加到切片 a 之后:a = append(a, b...) 复制切片 a 的元素到新的切片 b 上: b = make([]T, len(a)) copy(b, a) 删除位于索引 i 的元素:a = append(a[:i], a[i+1:]...) 切除切片 a 中从索引 i ......
golang append

golang之日志分割

自己学习记录,可以分享给大家,如有不对或不足之处请勿喷! 日志分割和日志钩子框架是使用开源三方的名字叫:file-rotatelogs,lfshook hook.go package mlog import ( rotatelogs "github.com/lestrrat-go/file-rota ......
golang 日志

Golang - 4 Golang 函数

4 Golang 函数 函数 函数 是将一个或者一类问题包装为一个代码块,可以被多次调用,提高代码重用性。 函数也是一种类型,参数和返回值都是类型的一部分,并且返回值可以是一个函数 (1)语法规则 func 函数名(参数1 类型, 参数2 类型, ...) (返回值1类型, 返回值2类型, ...) ......
Golang 函数

golang -WARNING: undefined behavior - version of Delve is too old for Go version 1.19.3 (maxi mum supported version 1.17)-解决

1.背景 启动警告 这是idea 内置的dlv.exe调试器版本太低了 2.解决 安装最新的 go install github.com/go-delve/delve/cmd/dlv@latest 安装成功后, 在golang的安装位置多出来个新的dlv.exe idea打开配置 写上自己的地址即可 ......
version undefined supported behavior WARNING

关于golang线程安全

最近在字节面试,面试有一个提问: golang中的string赋值是线程安全的吗?如果是,怎么验证,如果不是,怎么验证第一反应,golang的string底层结构: type stringStruct struct { str unsafe.Pointer len int } 其中 str 是一个不 ......
线程 golang