我们都生活在阴沟里,但仍有人仰望星空。——奥斯卡王尔德
1. 前言这篇文章我们来聊聊在循环中使用Goroutine中捕获参数的问题和使用下标获取字符串的字符问题,这两个问题在项目中比较常见,大家记得要规避。2. Goroutine中捕获参数goroutine中捕获的循环变量, 都为循环最后的值。func main() {
for i, v := range []string{"a", "
更新(2015年4月):Florian von Bock已将本文中描述的内容转换为一个名为endless的优秀Go包 。 如果您有Gola
原创
2022-12-13 00:22:12
651阅读
golang设计模式一、模版模式二、空对象模式三、策略模式四、备忘录模式五、责任链模式六、中介模式 一、模版模式定义一个操作中的算法的骨架,而将实现逻辑步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。可以参考sort.quickSort的Interface接口,将Len() int长度、Less(i, j int) bool比较、Swap(i, j in
Go 语言是一门简单、易学的编程语言,对于有编程背景的工程师来说,学习 Go 语言并写出能够运行的代码并不是一件困难的事情,对于之前有过其他语言经验的开发者来说,写什么语言都像自己学过的语言其实是有问题的,想要真正融入生态写出优雅的代码就一定要花一些时间和精力了解语言背后的设计哲学和最佳实践。 如果 ...
转载
2021-10-26 16:05:00
228阅读
2评论
参考goframe框架,重要的以下几个信号量. // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. // // This Source Code Form is subject to the terms of ...
转载
2021-09-19 14:00:00
251阅读
2评论
https://www.zhihu.com/question/27158146/answer/2474680292https://go.dev/blog/errors-are-values
原创
2022-05-10 11:00:13
152阅读
简介按照一般的设计原则, 每个 HTTP 请求都是无状态的,因此大多情况下 Web 应用都很容易做水平扩展。“无状态”也意味着 HTTP 请求发起重试的成本是很低的,从而使得 Web 接口的开发很少关注优雅中止(一部分也因为 Web 框架做了这部分的考虑)。不过,业务中 ① 总会存在对中止比较敏感的接口(比如支付相关),并且 ② 总会存在一些带状态的服务,此时优雅中止就显得比较重要了。本文通过一个Go 定时任务示例来简单介绍 Go 技术栈中优雅中止的处理思路。k8s中pod的终止机制作为
原创
2021-06-01 12:26:11
295阅读
## Python 优雅遍历
### 介绍
在编程过程中,遍历是一种常见且重要的操作。在Python中,我们经常需要遍历列表、字典、集合等数据结构来获取其中的元素。然而,对于初学者来说,遍历可能会变得繁琐和复杂。本文将介绍几种优雅的遍历方式,帮助你更轻松地处理遍历操作。
### 传统方式
在介绍优雅遍历方式之前,我们先来看一下传统的遍历方式。假设我们有一个列表`numbers`,我们希望遍历其
原创
2023-07-24 02:27:56
41阅读
for range 可以遍历 切片、map等for range 遍历时会创建每个元素的副本
原创
2023-03-18 10:02:24
88阅读
以前工作优化过一个全表遍历、处理数据的逻辑,表中数据千万级,姑且成为表a吧。经过排查最终发现性能瓶颈点,是遍历性能很低,类似这样的sql:select * from a limit 0,10000;
select * from a limit 10000,10000。程序循环的使用这种模式的sql去遍历表,显然这种方式没法用到索引,越往后遍历性能越低。如图,一个简单的sql执行时间14s多。--
转载
2023-09-19 10:29:17
58阅读
很多时候对于服务升级的做法简单粗暴, 就简单的杀进程启动新的进程. 还有的好一点就是多个相同的服务依次升级, 保证有服务可用. 但是公平的说这两种都会丢失请求中的连接. 鉴于这种情况, 在现实中我们可以使用优雅重启来搞定这个问题. Golang 实现优雅重启的原理也很简单: 监听 USR2 信号;
转载
2021-04-16 10:21:00
161阅读
很多时候对于服务升级的做法简单粗暴, 就简单的杀进程启动新的进程. 还有的好一点就是多个相同的服务依次升级, 保证有服务可用. 但是公平的说这两种都会丢失请求中的连接. 鉴于这种情况, 在现实中我们可以使用优雅重启来搞定这个问题. Golang 实现优雅重启的原理也很简单: 监听 USR2 信号;
转载
2020-04-02 18:02:00
340阅读
2评论
## MySQL 遍历表的字段
在使用MySQL数据库时,有时我们需要获取表的所有字段信息,包括字段名、数据类型、长度、是否为主键等。这对于开发、数据分析和数据库管理非常有用。在本文中,我们将介绍如何使用MySQL查询系统表来遍历表的字段,并提供相应的代码示例。
### 1. 查询系统表
在MySQL中,系统表包含了数据库的元数据,包括表的结构、列的定义和其他有关数据库对象的信息。我们可以通
原创
2023-08-01 06:27:38
322阅读
阅读约 11 分钟 注:该文作者是 Katrina Owen,原文地址是 iota: Elegant Constants in Golang 有些概念有名字,并且有时候我们关注这些名字,甚至(特别)是在我们代码中。 在其他时候,我们仅仅关注能把一个东西与其他的做区分。有些时候,有些时候一件事没有本质
转载
2022-10-05 23:21:57
62阅读
在 Go 语言里,协程(goroutine)本身没有内置的停止机制,不过可以借助一些技巧和工具来实现协程的停止,主要有
# 用Golang实现MySQL分表
在实际的应用开发中,当数据量增大时,单一表可能会面临性能瓶颈。为了提高数据库的性能和扩展性,我们可以使用分表技术。本文将介绍如何使用Golang实现MySQL分表,并给出相应的代码示例。
## 什么是分表?
分表是指将一个大表按照一定的规则或策略分割成多个子表,每个子表只负责存储一部分数据。通过分表可以减少单表的数据量,提高查询性能,同时也方便管理和维护
原创
2024-03-15 07:10:54
45阅读
# Golang中使用MySQL锁表操作
在软件开发中,数据库是一个非常重要的组成部分,而MySQL作为一个流行的关系型数据库,经常被用于存储数据。在某些情况下,我们需要对数据库中的表进行锁定以保证数据的一致性和完整性。本文将介绍如何在Golang中使用MySQL进行表锁操作,并提供代码示例。
## 什么是表锁
表锁是一种数据库锁,用于限制对数据库表的访问。在进行一些特定操作时,可能需要对表
原创
2024-06-26 03:40:28
141阅读
一.分分合合说过很多次,不要拘泥于某一个技术的一点,技术是相通的。重要的是编程思想,思想是最重要的。当数据量大的时候,需要具有分的思想去细化粒度。当数据量太碎片的时候,需要具有合的思想来粗化粒度。1.1 分很多技术都运用了分的编程思想,这里来举几个例子,这些都是分的思想集中式服务发展到分布式服务从Collections.synchronizedMap(x)到1.7ConcurrentHashMap
Go原生就支持连接数据库,所以在使用 Golang 开发时,当需要数据库交互时,即可使用database/sql包。
在Go中访问DB需用sql.DB接口:可创建语句(statement)和事务(transaction),执行查询,获取结果。
使用DB时,除database/sql包,还需引入想使用的特定DB驱动。官方不提供实现,需要先下载三方实现,点击这里查看各种各样的实现版本。
通常DB选型
转载
2021-06-15 15:52:30
1710阅读
Go原生就支持连接数据库,所以在使用 Golang 开发时,当需要数据库交互时,即可使用database/sql包。
在Go中访问DB需用sql.DB接口:可创建语句(statement)和事务(transaction),执行查询,获取结果。
使用DB时,除database/sql包,还需引入想使用的特定DB驱动。官方不提供实现,需要先下载三方实现,点击这里查看各种各样的实现版本。
通常
原创
2021-06-24 14:26:17
878阅读