golang-goroutine goroutine golang

golang中xorm自动维护表结构自动导入数据的实现

Xorm简介 Go 标准库提供的数据库接口database/sql比较底层,使用它来操作数据库非常繁琐,而且容易出错。因而社区开源了不少第三方库,有各式各样的 ORM (Object Relational Mapping,对象关系映射库),如gorm和xorm。其中xorm是一个简单但强大的ORM ......
结构 数据 golang xorm

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

Goroutines example

一个入门的goroutines例子 package main import ( "fmt" "time" ) func f(from string) { for i := 0; i < 3; i++ { fmt.Println(from, ":", i) } } func main() { f("d ......
Goroutines example

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