我们都生活在阴沟里,但仍有人仰望星空。——奥斯卡王尔德 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.quickSortInterface接口,将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多。--
很多时候对于服务升级做法简单粗暴, 就简单杀进程启动新进程. 还有的好一点就是多个相同服务依次升级, 保证有服务可用. 但是公平说这两种都会丢失请求中连接. 鉴于这种情况, 在现实中我们可以使用优雅重启来搞定这个问题. 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)本身没有内置停止机制,不过可以借助一些技巧和工具来实现协程停止,主要有
原创 4月前
37阅读
# 用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阅读
  • 1
  • 2
  • 3
  • 4
  • 5