sort go

go互斥锁

互斥锁的定义 type Mutex struct { state int32 sema uint32 } 一个 sema,背后实际上 是一个 休眠队列,可以看下上篇。 一个state,这个状态 分为4个部分。 后三位 各自代表一个状态。 前29位代表最大可等待协程的个数。 state的结构 lock ......

Go--命名规则

在Go语言中,项目名和文件名的命名规则有一些建议和惯例。以下是一些常见的规则和最佳实践: 项目名: 项目名应该简短、有意义,并能够清晰地表达项目的目的或功能。 项目名通常使用小写字母,使用连字符或下划线分隔单词。 项目名不应包含特殊字符或空格。 项目名应尽量避免与现有的库或包名冲突。 文件名: 文件 ......
规则 Go

Go语言实现GoF设计模式:备忘录模式的实践探索

在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外进行保存,以便在未来将对象恢复到原先保存的状态。 ......
模式 设计模式 备忘录 语言 GoF

go锁基础 - atomic、sema

atomic和sema是实现go中锁的基础,简单看下他们的实现原理。 atomic `atomic 常用来作为保证原子性的操作。 当多个协程,同时一个数据进行操作时候,如果不加锁,最终的很难得到想要的结果。 var p int64 = 0 func add() { p = p + 1 } func ......
基础 atomic sema

微信小程序开发的聚合函数排序.aggregate.sort

'use strict'; const db = uniCloud.database() //对数据库的对象获取; exports.main = async (event, context) => { let start = new Date().getTime(); const collectio ......
函数 aggregate sort

使用Go Validator在Go应用中有效验证数据

使用Go Validator在Go应用中有效验证数据 原创 TimLiu 爱发白日梦的后端 2023-12-01 08:01 发表于广东 作为一名开发者,确保Go应用中处理的数据是有效和准确的非常重要。Go Validator是一个开源的数据验证库,为Go结构体提供强大且易于使用的数据验证功能。本篇 ......
Validator 数据

go-GMP 协程切换时机 和 协程实战

当m在执行某个g的时候,g非常耗时,例如一个for循环,每次循环sleep1分钟,循环1000次。 这个例子看似无聊,却是很难解决的,成功的避开了2个系统切换时机。 如果这个时候,一直执行这个g,别的g就会得不到执行,例如有g是处理用户支付的,这样就会造成收钱不积极。 协程饥饿问题 本地队列 本地队 ......
实战 时机 go-GMP GMP go

go-GMP

go的协程和线程都绕不过GMP,关于GMP基本的工作流程,有go开发经验的大致都懂,这边更多关注GMP如何解决一些类似 协程饥渴的问题,以及底层的大致实现原理。 多线程循环 上篇讲了单线程是如何循环的,这里还是为 GMP的出场 大致介绍下。 工作模型 多个M都去全局G的队列中获取 g,所以,全局g的 ......
go-GMP GMP go

go build 跟 go run 的区别

go build 和 go run 是 Go 语言中两个常用的命令,它们的主要区别在于编译和执行的过程。 1.go run go run 命令用于编译并运行 Go 程序。它将源代码直接编译成可执行文件,并立即运行该文件。这个命令非常适合用于快速测试和运行小规模的代码片段。 使用 go run 命令时 ......
build go run

(转)Go实现随机加盐密码认证

原文:https://juejin.cn/post/7068192471498358821 为什么要加密 人们往往有使用同一密码的习惯, 为了防止数据库意外泄露/破坏和出于保护用户隐私的目的, 不应在数据库里存入用户密码明文 实现 代码 scss 复制代码 package main import ( ......
机加 密码

Dokcer + nginx + Gitee Go 实现一键化部署你的项目

- 什么是 CICD 是指持续集成、持续发布,是⼀套实现软件的构建测试部署的⾃动化流程。 什么是 DevOps ⼀词是由英⽂ Development(开发)和 Operations (运维)组合⽽成 ⼀种思想,强调软件开发测试运维的⼀体化,减少各个部⻔之间的沟通成本从⽽实现软件的快速⾼质 ᰁ 的发布 ......
项目 Dokcer nginx Gitee Go

go的GPM - 协程的本质

协程与线程 线程在创建、切换、销毁时候,需要消耗CPU的资源。 协程就是将一段程序的运行状态打包, 可以在线程之间调度。减少CPU在操作线程的消耗 进程用分配内存空间 线程用来分配CPU时间 协程用来精细利用线程 协程的本质是一段包含了运行状态的程序 后面介绍后,会对这个概念更好理解 协程的本质 上 ......
本质 GPM

安装go

1. 安装包直接安装 2. 配置环境变量 GOPARH: 新建的,用来存放go项目代码的地址 GOROOT: 你安装go的目录 3. 创建文件目录 在GOPATH地址下面,创建3个文件夹 ......

CF1830E Bully Sort

我永远喜欢数据结构。 洛谷 CF 对于一个排列 \(P_1\sim P_n\),定义 \(f(P)\) 为重复执行以下操作直至将其升序排序的操作次数: 找到一个位置 \(i\),使得其是满足 \(P_i\ne i\) 的位置中 \(P_i\) 最大的那个位置。 找到一个位置 \(j\),使得其是满足 ......
1830E Bully 1830 Sort CF

[LeetCode] 1685. Sum of Absolute Differences in a Sorted Array

You are given an integer array nums sorted in non-decreasing order. Build and return an integer array result with the same length as nums such that re ......
Differences LeetCode Absolute Sorted Array

go数据类型-空结构体、空接口、nil

空结构体 func main() { a := struct{}{} fmt.Println(unsafe.Sizeof(a)) fmt.Printf("%p\n", &a) } 打印 0 0x117f4e0 有经验的开发人员都知道,所有的空结构体是指向一个 zerobase的地址,而且大小为0 一 ......
接口 类型 结构 数据 nil

Go代码优化

1、Go 语言的 if 语句允许在条件之前传递一个语句。 原始代码: f, contains := factory[string(token)] if contains { // Do something } 优化:(稍微提高了代码的可读性) if f, contains := factory[sT ......
代码

go数据类型-sync.map

定义 在runtime的sync.map包中有定义: type Map struct { mu Mutex // 锁 read atomic.Pointer[readOnly] //包含了readOnly类型的一个struct,下方把 Pointer 也贴了 dirty map[any]*entry ......
类型 数据 sync map

2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。 需保证 返回结果的字典序最小。 要求不能打乱其他字符的相对位置)。 输入:s = “cba

2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。 需保证 返回结果的字典序最小。 要求不能打乱其他字符的相对位置)。 输入:s = "cbacdcbc"。 输出:"acdb"。 来自左程云。 答案2023-11-29: 所有的代码用灵捷3. ......
字符 字符串 字母 字典 位置

go链接mysql 和 数据库

连接数据库公共方法 package database import ( "Ganzhou/config" "Ganzhou/pkg/log" "Ganzhou/pkg/util/security" "database/sql" "fmt" "github.com/cengsin/oracle" "g ......
链接 数据库 数据 mysql

Go 后台接口书写

设置路由 package healthinterface import ( "Ganzhou/config" "Ganzhou/gzq/healthinterface/routers/gzhealthrinterface" "Ganzhou/pkg/log" "Ganzhou/pkg/middlew ......
后台 接口 Go

go sign签名验签 和 sm4 加密

sign 方法类 package common import ( "Ganzhou/config" "Ganzhou/pkg/log" "crypto" "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/pem" ......
sign sm4 go sm

go数据类型-map

go的map在面试时候经常会被问到。 最近看到群里有个被问到为什么map的每个桶中只装8个元素? map 的结构 注:解决hash冲突还有一些别的方案:开放地址法 (往目标地址后面放)、再哈希法(再次hash) 底层定义 // A header for a Go map. type hmap str ......
类型 数据 map

go 超好用图形验证码

https://zh.mojotv.cn/go/refactor-base64-captcha 点击下图链接 跳转到github中: 使用单机部署: 生成图片验证码: package Controllers // 图形验证码 import ( "github.com/gin-gonic/gin" " ......
图形 go

Day20.匿名函数的两种调用方式_max用法_min用法_sorted用法_map用法_filter用法_reduce用法

1.匿名函数的两种调用方式: 2.匿名函数求最大和求最小: 3.sorted用法和map用法: 4.filter的用法: 5.reduce的用法: ......
函数 方式 filter sorted reduce

go数据类型-slice底层

切片的底层数据结构 有上篇string为基础了,能猜到slice肯定也有一个对应的struct。 在runtime的 slice.go中 type slice struct { array unsafe.Pointer len int cap int } 切片的本质是对数组的引用 len 表示当前已 ......
底层 类型 数据 slice

go基础数据类型 - string的底层

先上一段代码 : func main() { content := "长沙boy" content1 := "boy" fmt.Printf("content: %d\n", unsafe.Sizeof(content)) fmt.Printf("content1: %d\n", unsafe.Si ......
底层 类型 基础 数据 string

Go标准库学习:strconv

strconv包 strconv包主要包括进行数值类型和字符串/字节数组进行转换的函数,还有部分给字符(串)添加引用的函数。 主要是对官网文档的总结和翻译。 官网:https://pkg.go.dev/strconv@go1.21.4 常量 const IntSize = intSize 表示Int ......
strconv 标准

「有问必答」秒杀系统 Go并发编程实践!

使用互斥锁和计数器等原语,我们实现了并发控制、数据一致性和并发安全。这些原语帮助我们解决了高并发场景下的并发访问问题,并保证了系统的稳定性和性能。 ......
系统

Go语法糖——简短变量声明“:=”

参考地鼠文档——GO专家编程中的内容,我总结了关于 := 的几条规则,并以代码举例的运行结果来说明可行性,以避免编程中出现一些陷阱。 规则一:不能用于函数外部 package main import "fmt" rule := "Short variable declarations" func m ......
变量 语法
共2451篇  :10/82页 首页上一页10下一页尾页