![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
文章平均质量分 65
极限创造者
设计,源于生活,通于自然。
展开
-
选项(Option)设计模式
设计模式的出现,是为了解决编程中遇到的一些问题,现在有一个场景: 我们需要初始化一个服务的配置文件,比如是这样: type Config struct { id int name string ip string port string // other params ... } 常见的初始化,有以下几种: 方式一: func initConfig(id int, name, ip, port string) { conf.id = id conf.name = name原创 2021-04-07 18:21:26 · 883 阅读 · 0 评论 -
排序算法:端点排序 & 系统排序算法分析
排序算法有很多,像冒泡、选择、插入、希尔、堆排序等等。 这里我新给出一种算法,暂时叫端点排序吧,灵感来源于选择排序。 中心思想如下图: 如图,假设数组中有7个元素,我们进行一次循环,其实是可以确定出最大值和最小值两个位置的,将这两个值,swap到数组的两端。 紧接着,两端的值就可以抛弃了,如下图: 下一次的循环,会缩减逐二缩减,至1停止。上图所示,要注意的一点是,假设先发生了swap1,那min的位置将发生更改,需要把min更新到max的位置。 示例代码如下: func endpoi原创 2021-04-01 19:05:17 · 291 阅读 · 0 评论 -
Go源码分析系列:sql驱动加载
go语言中提供了一个sql框架(database/sql),但是只提供了一个架子,没有具体实现,可以通过插件的方式注册自己想要使用的数据库,比如MySQL。 下面看一段代码: package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) var db *sql.DB // 连接池对象 func initDB() (err error) { dsn := "user:pwd@tcp(ip.原创 2021-03-16 16:48:49 · 308 阅读 · 0 评论