记一次 本地 docker 拉去 ES 和 ES-head 镜像运行容器的坑…
[Read More]Go语言核心36讲 09字段的操作与约束
关于字段map的底层结构
字典(map)存储的不是单一值的集合,而是键值对的集合。(键 - 元素对)
[Read More]Go并发编程系列01:你好,并发
开始并发的学习
最近对Go语言的并发编程有一些新认识和学习,所以想记录下开了这个系列文章
[Read More]博客转移hexo到hugo
一个简单炫酷的 hugo blog
博客转移 hexo 到 hugo
Hexo 被我淘汰的博客系统
之前的博客也写了一年多了,一直用的是hexo,这玩意是基于node.js搞出来的货,网上的文档和资源主题什么的都还是很不错的,遇见的坑都能在网上搜到。
[Read More]初探架构(一)何为架构?
Go语言核心36讲-040606程序实体
程序实体之变量、类型推断
04.05.06 | 程序实体知识点汇总 04 程序实体哪些事(上) 问题1: 声明变量有几种方式 var := 问题解析: 考点: #### 1. 类型推断 简单地说,类型推断是一种编程语言在编译期自动解释表达式类型的能力。
var name = "zhang" 这里利用了 Go 语言自身的类型推断省去了 string 它只能用于对变量或常量的初始化。
#### 2. 短变量声明用法 知识扩展 1. ==Go 语言的类型推断可以带来哪些好处==? 通过使用 Go 语言的类型推断,而节省下来的键盘敲击次数几乎可以忽略不计。但它真正的好处往往体现在我们写代码之后的事情上, 比如代码的 重构。
重构: 通常把“不改变某个程序与外界的任何交互方式和规则,而只改变其内部实现”的代码修改方式,叫做对该程序的重构。 重构的对象可以是一行代码、一个函数、一个功能模块,甚至一个软件系统。
package main import ( "flag" "fmt" ) func main() { var name = getTheFlag() flag.Parse() fmt.Printf("Hello, %v!\n", *name) } func getTheFlag() *string { return flag.
[Read More]
高性能数据库集群:分库分表
高性能数据库集群:分库分表
读写分离分散了数据库读写操作的压力,但没有分散存储压力,当数据量达到千万甚至上亿条的时候,单台数据库服务器的存储能力会成为系统的瓶颈,主要体现在这几个方面:
- 数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会下降。
- 数据文件会变得很大,数据库备份和恢复需要耗费很长时间。
- 数据文件越大,极端情况下丢失数据的风险越高(例如,机房火灾导致数据库主备机都发生故障)。