
go
自驱
ALOHA HEJA HE
展开
-
为什么数据库关闭默认事务性能会提升
因此,在系统设计上,我们应尽量避免在MySQL中写入事务并关闭MySQL的事务处理功能,以改善MySQL的性能。MySQL中,使用事务处理的数据库查询和操作的性能比不使用事务的查询和操作大大低下,这是因为当 MySQL 开启事务,MySQL 就会多了一些额外的步骤,比如查询时需要检查锁情况,设置锁的范围,维护更新的日志,管理事务的隔离级别,等等步骤,这些步骤会消耗 MySQL 服务器的硬件资源,造成查询操作变慢。原创 2023-03-10 21:05:48 · 279 阅读 · 0 评论 -
【openai】请帮我设计一个通用的ERP管理系统,涉及到的表结构用mysql语言表达出来,全部写出来
背景背景这周末把openAi集成到自己的web系统里面了。原创 2023-02-19 22:23:06 · 353 阅读 · 0 评论 -
【MQTT】mqtt + go + M5Stack + SSR 远程灯控程序
mac 需要安装USB驱动 和 m5burner 如下图。原创 2022-12-22 22:17:27 · 1028 阅读 · 1 评论 -
【MQTT】mqtt 服务器部署--go 生产和消费demo
围棋富有表现力,干净,高效。它的并发机制使得编写最大限度地利用多核和网络机器的程序变得容易,它的创新类型系统使得灵活和模块化的程序构造成为可能。它是一个快速的、静态类型的、编译语言的,就像一个动态类型的、直译语言的。MQTT 是一种基于发布/订阅模型的轻量级物联网消息传递协议,它只需要很少的代码和带宽,就可以为物联网设备提供实时可靠的消息传递服务。本文主要介绍如何在 Golang 项目中使用 paho.MQTT.Golang 客户端库,并实现客户端与 MQTT 代理之间的连接、订阅和消息传递。原创 2022-12-17 17:40:01 · 1721 阅读 · 0 评论 -
【golang】sync包once 只执行一次代码
once 只执行一次代码,竞争条件下也是安全的;原创 2022-11-23 08:20:20 · 490 阅读 · 0 评论 -
【正则表达式】golang 正则表达式的正确使用姿势
【代码】【正则表达式】golang 正则表达式的正确使用姿势。原创 2022-11-21 09:51:38 · 453 阅读 · 0 评论 -
【go】反射系列文章
了解反射本质,本文就介绍了反射的基础内容。以上就是今天要讲的内容,本文仅仅简单介绍了反射的使用。原创 2022-11-16 09:19:42 · 259 阅读 · 0 评论 -
【vue.js 3.0】 初级知识点汇总(建立Vue工程)
vue 中的计算属性getter/computed 注意:计算属性是有cache的,业务计算不要使用。解释: 创建一个应用程序 HelloApp,把这个应用绑定到这个页面的一个div上去。简化v-bind和v-on。vue对象实例的生成和使用。v-model 双向绑定。v-for 循环一个数组。原创 2022-10-30 11:16:35 · 568 阅读 · 0 评论 -
【全栈】vue3.0 + golang + mysql + gorm + jwt 尝试前后端分离【博客系统2.0】发版
整体代码结构(源码:在前面的文章中已经贡献)Api设计,路由部分如下。原创 2022-10-28 22:33:00 · 1266 阅读 · 1 评论 -
【golang_gorm】ErrRecordNotFound 什么情况下返回? one record 还是 slice ?源码给出回答
GORM 中的 queryCallback 方法。从源代码中可以知道,当分析和分配检索到的数据时,如果检索到0行,并且接收到的检索结果不是 Slice 类型的变量(此时它必须是 Sstruct 类型的变量) ,它将抛出 ErrRecordNotfound 错误。从源代码可以看出,在 GORM 中,First 和 Last 比 Find 有更多的限制和默认排序顺序,这三种方法之间没有本质区别。原创 2022-10-22 13:36:24 · 1665 阅读 · 0 评论 -
【golang】用semaphore 实现一致性 worker pool 【普通版】
【代码】【golang】用semaphore 实现一致性 worker pool 【普通版】原创 2022-10-15 20:36:40 · 265 阅读 · 1 评论 -
【golang】分别用 sync.WaitGroup 和 semaphore 实现 worker pool 【普通版】
【代码】【golang】分别用 sync.WaitGroup 和 semaphore 实现 worker pool 【普通版】原创 2022-10-15 19:57:32 · 343 阅读 · 0 评论 -
【golang】分布式限流器 redis lua + go 实现
2 lua脚本实现 注意score精度是52位有效;ns存储可以忽略这个精度?3. lua脚本单独存储。原创 2022-10-11 10:55:50 · 810 阅读 · 0 评论 -
【golang】WorkerPool 三种实现方式
WorkerPool 的多种实现方式use golang原创 2022-09-25 23:36:34 · 794 阅读 · 0 评论 -
【全栈】vue3.0 + golang 尝试前后端分离【博客系统1.1】部署
我只有一个物理机(一年360多好像,配置不高2C1G),一个域名https://ddyydy.tk, 如何go backend 和 vue frontend 项目一起使用呢?想参考源码的同学,请留言...原创 2022-09-18 23:08:44 · 1672 阅读 · 2 评论 -
【全栈】vue3.0 + golang 尝试前后端分离【博客系统1.0】开发
还是想自己用golang做个真正属于自己的博客系统,于是就有了标题所述....背景:想在自己的vps上搭建一个个人博客系统,之前自己用。原创 2022-09-18 00:11:49 · 3385 阅读 · 13 评论 -
【golang】体验一把go泛型go1.8
只需要为想要过滤、简化或映射的集合创建一个迭代器类型。原创 2022-09-03 21:38:30 · 440 阅读 · 0 评论 -
【golang】认识 Go 并发+
总之,Go 使用的是 Goroutines 和 Threads,它们在并发执行函数的组合中都是必不可少的。相比之下,线程开始于一个更大的空间,以及一个称为保护页的内存区域,该区域充当一个线程的内存。它们非常轻量级,不像操作系统线程,而是数百个 Goroutines 可以被多路复用到一个操作系统线程上(Go 有它的运行时调度器) ,只需要最小的上下文切换开销!Scheduler 的工作是将可运行的 goroutine (G)分布在运行在一个或多个处理器(P)上的多个工作 OS 线程(M)上。原创 2022-09-03 21:06:21 · 433 阅读 · 0 评论 -
【golang】sorter 的两种实现方式
假设有一个 Person 结构,它有 name 和 age 字段。需要根据名称对切片进行排序,有时还需要根据年龄对切片进行排序。这个匿名函数与排序的 Less ()方法相同。这个匿名函数有2个 args (这是片的索引)并返回 bool。只需比较给定索引(i 和 j)中我们感兴趣的元素字段(age 或 name)并返回结果。使用这两种类型来实现排序接口。可以通过根据需求(按年龄或名称)进行类型转换来对 Person 片进行排序。如果我们不想通过创建类型来实现排序接口,可以在排序中使用匿名函数。原创 2022-09-02 22:21:15 · 286 阅读 · 0 评论 -
【golang】interface 如此动人,却被遗忘
上面的我们定义了id类型(type id string),现在需求变更了,我们希望我们的 EmployeeID 是一个数字,并且我们希望以一个部门作为前缀。首先,我们可以对 name struct 做同样的事情,就像我们对 id 所做的那样,添加一个接口,然后将这两个接口都嵌入。go语言定义接口,通常使用动词作为名称,例如,一个读取的接口是一个 Reader,一个写入的接口是一个 Writer,嵌入了 Reader 和 Writer 接口的接口被称为 ReadWriter。看到ID方法做同样的事情。...原创 2022-08-28 16:18:40 · 209 阅读 · 0 评论 -
【golang】代理模式 proxy using in go
代理模式是一种结构模式,其目的是提供对象的代理或中介来控制对象的访问。通常包装对象以隐藏其某些特征。下面举一个汽车的代理,Driven接口,Car和CarProxy都实现了,但是通过代理可以实现特殊逻辑的植入,如开车司机并限制司机的年龄等;门面模式和代理模式是相似的,因为在两者都可以缓冲复杂的实体,并初始化它自己。,修饰模式(Decorator Pattern)提供了一个增强的接口。代理模式提供了相同的接口。模式为包装对象提供了。...原创 2022-08-28 11:44:04 · 333 阅读 · 0 评论 -
【json】JavaScript Object Notation to go struct 助分析抓包数据一臂之力
这个工具立即将 JSON 转换为 Go 类型定义。在左侧粘贴一个 JSON 结构,等效的 Go 类型将在右侧生成,您可以将其粘贴到程序中。这个脚本必须做一些json完整性的假设,所以仔细检查输出!你要分析里面的字段属性,又不想一个一个的自己手动拼写,咋办呢?平时工作中,抓包分析常有的事情,比如:业务方返回一个复杂的结构。...原创 2022-08-28 09:11:18 · 354 阅读 · 0 评论 -
【golang】建议收藏的golang瑞士军刀-9个工具方法
也就是说,如果数组的长度为6,那么交换将按照array[2] array [3]、array[1] array [4]和array[0] array [5]的顺序进行。给定一个切片作为输入,循环它并将其添加到字符串数组中,然后用逗号(,) strings.Join将生成的字符串数组连接起来。如果将一个较小的整数除以一个较大的整数,结果是0,可以使用下面的备选方案作为解决方案。Golang 没有一个内置的洗牌数组元素的功能,找到下面的代码片段来执行洗牌。......原创 2022-08-27 10:09:16 · 449 阅读 · 0 评论 -
【golang】why 消费者定义接口,生产者返回实体struct?
消费者负责定义接口,即消费者所依赖的是一个接口;消费者定义如下://user.go// 第一对外所依赖的接口}}store: s,}}//db.gopackage db// 生产者实现消费者所需的接口依赖,注意该生产者可以供给多个消费者使用,实现所有消费者所需要的方法;}消费者 user.go 需要存储依赖才能执行与用户相关的业务逻辑。它不关心存储是什么,只是它有 2 个方法,Insert() 和 Get(),因此它能够创建和检索用户。...原创 2022-08-14 11:05:41 · 302 阅读 · 2 评论 -
【golang map】 深入了解map内部存储协议
/ 我们这样做了,键可能会返回 0 或 2 次)。// 语义上,我们永远不会在它们的桶中移动键(如果。// 如果超过 8 个键散列到一个桶,我们链上。// 放入一个桶数组。// 当哈希表增长时,我们分配一个新数组。// 按遍历顺序返回键(桶#,然后溢出。// 8 个键/元素对。// 用于选择一个桶。// 链序,然后是桶索引)。// 每个散列的高位位以区分条目。// 从旧桶数组复制到新桶数组。// 旧表,如果桶必须检查新表。// 映射迭代器遍历桶数组和。// 增长表,迭代器继续迭代。// 在单个存储桶中。..原创 2022-08-09 21:21:55 · 385 阅读 · 0 评论 -
【go】依赖注入
依赖注入是一种设计模式,可帮助您解耦实现的外部逻辑。实现需要外部 API 或数据库等是很常见的。知道这些东西不是实现的责任,它应该接收其依赖项并根据需要使用它们。假设您有一个具有以下依赖项的实现。你可以创建依赖项并将它们设置到您的服务/用例中。但这对于测试尤其不利,如果想更改依赖服务的实现比如数据库,比如如果您唯一的选择是编写集成测试而不是单元测试。实现方式如下依赖倒置原则。它允许您轻松切换某些依赖项的实现,并且您可以更改模拟实现的真实实现。它是单元测试的基础。...原创 2022-08-07 21:39:38 · 1272 阅读 · 0 评论 -
go-gorm v1.22.1 Transaction 实现
// Transaction start a transaction as a block, return error will rollback, otherwise to commit.func (db *DB) Transaction(fc func(tx *DB) error, opts ...*sql.TxOptions) (err error) { panicked := true if committer, ok := db.Statement.ConnPool.(TxCommit..原创 2022-04-08 14:59:04 · 710 阅读 · 0 评论 -
[goland] 获取接口名
import ( "fmt" "reflect" "runtime" "strings")type PackerHandler func(params string) errorfunc getInterfaceName(handler PackerHandler) string { funcInfo := runtime.FuncForPC(reflect.ValueOf(handler).Pointer()) name := funcInfo.Name() names := .原创 2022-03-02 10:23:32 · 467 阅读 · 0 评论 -
【kitex】字节开源项目 Kitex 认识「字节缓冲」ByteBuffer
1 项目地址https://github.com/cloudwego/kitex remote/bytebuf.go2 使用示例import ( "fmt" "github.com/apache/thrift/lib/go/thrift" "github.com/cloudwego/kitex/pkg/protocol/bthrift" "github.com/cloudwego/kitex/pkg/remote")func main() {...原创 2022-01-29 18:14:17 · 663 阅读 · 0 评论 -
数字转字符串 strconv.FormatInt fmt.Sprintf 性能对比,差了3倍
1 示例代码func main() { now1 := time.Now() for i:=0; i<10000; i++{ fmt.Sprintf("%s", 123456789) } now2 := time.Now() fmt.Println("fmt.Sprintf 耗时纳秒:") fmt.Println(now2.UnixNano() - now1.UnixNano()) now3 := time.No...原创 2022-01-27 11:24:21 · 2380 阅读 · 0 评论 -
【golang】Mutex 源码浅读
1 Mutex 如果说对于临界资源的操作耗时很长(特别是单个操作就大于 1ms)的话,实际上性能上会有一定的问题,区区200行,所谓大道至简、少即是多。2 内部实现32bit 表示【31-3 等待lock goroutines 数量 】【mutexStarving】【mutexWoken】【mutexLocked】https://www.purewhite.io/2019/03/28/golang-mutex-source/x competes with y over the...原创 2021-12-25 17:28:31 · 439 阅读 · 0 评论 -
【golang】golang 团队对于并发读写数据的建议:并发读写string也不是安全的
IntroductionThe Go memory model specifies the conditions under which reads of a variable in one goroutine can be guaranteed to observe values produced by writes to the same variable in a different goroutine.AdvicePrograms that modify data being simul原创 2021-12-22 22:10:24 · 2758 阅读 · 0 评论 -
【golang】内存逃逸分析
// 分析逃逸,就能进一步优化堆上内存数量,减轻 GC 压力了// golang 逃逸分析最基本的原则是:如果一个函数返回的是一个(局部)变量的地址,那么这个变量就发生逃逸。package mainimport "fmt"func main() { a := 1 other2(&a) a++ fmt.Println(a) // 这里会逃逸}func other() *int { // 这里会逃逸 i := 100 re..原创 2021-12-16 19:27:36 · 308 阅读 · 0 评论 -
【golang】 invalid memory address or nil pointer dereference go.(*Stream).WriteStringWithHTMLEscaped
1. 复现代码2 原因3 参考原创 2021-12-09 00:00:00 · 636 阅读 · 1 评论 -
【技巧】将数组均匀拆分或者一行数据拆等分多行,如何计算最终分组数或者行数?
参考: redis 源码:refreshMultiLine line:563 // redis/deps/linenoise/linenoise.c计算行数容量: int rows = (plen+l->len+l->cols-1)/l->cols; /* rows used by current buf. */故: rows = (total_len + row_len -1) / row_len ;...原创 2021-12-03 13:41:47 · 311 阅读 · 0 评论 -
【golang】泛型草案 终于提上日程了,Go 1.18会支持泛型
This is the design for adding generic programming using type parameters to the Go language. This design has beenproposed and acceptedas a future language change. We currently expect that this change will be available in the Go 1.18 release in early 2022...原创 2021-12-01 23:30:00 · 252 阅读 · 0 评论 -
【golang】GCache Supports expirable LFU, LRU and ARC
1 特性 Supports expirable Cache, LFU, LRU and ARC. Goroutine safe. Supports event handlers which evict, purge, and add entry. (Optional) Automatically load cache if it doesn't exists. (Optional) 2 使用Loading CacheIf specified LoaderFu原创 2021-11-30 21:55:54 · 248 阅读 · 0 评论 -
【goland】内存池设计|缓存设计|大容量无GC缓存--FreeCache
1 简介:Long lived objects in memory introduce expensive GC overhead,With FreeCache,you can cache unlimited number of objects in memorywithout increased latency and degraded throughput.2 FeaturesStore hundreds of millions of entries Zero GC overhead...原创 2021-11-24 15:05:47 · 862 阅读 · 0 评论 -
【side car】 tcp 平滑升级流程图
未命名文件 | ProcessOn免费在线作图,在线流程图,在线思维导图 |原创 2021-11-22 08:36:02 · 1720 阅读 · 0 评论 -
[golang]“undefined“ function declared in another file?
I just had the same problem in GoLand (which is Intellij IDEA for Go) and worked out a solution. You need to change theRun kindfromFiletoPackageorDirectory. You can choose this from a drop-down if you go intoRun/EditConfigurations.Eg: for packag...原创 2021-11-19 22:30:00 · 412 阅读 · 0 评论