Go 接口
# 接口 接口(interface)是多个方法声明集合,代表一种调用契约。 只要目标类型方法集包含接口声明的全部方法,就视为实现该接口,无需显示声明。当然,单个目标类型可实现多个接口。在设计上,接口解除了显式类型依赖(DIP,依赖倒置),提供面向对象多态性。应该定义小型、灵活及组合性接口(ISP,接口隔离),减少可视方法,屏蔽对象内部结构和实现细节。 不能有字段。 只能声明方法,不能实现。 可嵌入其他接口。 通常以 er 作为名称后缀。 空接口( interface{} , any )没有任何方法声明。 接口实现的依据是方法集,所以要区分 T.set 和...
more...Go 方法
# 方法 方法( method )是与对象实例( instance )相绑定的特殊函数。 方法是面向对象编程的基本概念,用于维护和展示对象自身状态。对象是内敛的,每个实例都有各自不同的独立特征,以属性和方法来对外暴露。普通函数专注于算法流程,接收参数完成逻辑运算,返回结果并清理现场。也就是说,方法有持续性状态,而函数通常没有。 前置接收参数( receiver ),代表方法所属类型。 可为当前包内除接口和指针以外的任何类型定义方法。 不支持静态方法( static method )或关联函数。 不支持重载( overload )。 func (int) test()...
more...Go 内置数据类型
# 数据 内置数据类型,使用及结构分析。 # 字符串 字符串是 不可变 字节序列,其本身是一个复合结构。 +-----------+ +---+---+---+---+---+ | pointer -|--------> | h | e | l | l | o | +-----------+ +---+---+---+---+---+ | len = 5 | +-----------+ [...]byte, UTF-8 header// runtime/string.gotype stringStruct struct { str unsafe.Pointer len...
more...Go 函数
# 函数 # 基本概念 函数(function)是结构化编程的最小模块单元。 将复杂算法过程分解成若干较小任务,隐藏细节,使得程序结构更加清晰,易于维护。函数被设计成相对独立,通过接收输入参数完成一段算法指令,输出或存储相关结果。因此,函数还是代码复用和测试的基本单元。 关键字 func 用于定义函数。有些不方便的限制,但也借鉴了动态语言的优点。 无需前置声明。 支持不定长变参。 支持多返回值。 支持命名返回值。 支持匿名函数和闭包。 不支持命名嵌套定义(nested)。 不支持同名函数重载(overload)。 不支持默认参数。 函数是第一类对象。 只能判断是否为...
more...Go 语句
# 语句 语句(statement)执行一到多个动作,表达式(expression)计算并返回结果。 表达式属于语句,而语句未见得是表达式。 关键字 仅 25 个 保留关键字(keywords),体现语法规则的简洁性。 保留关键字不能用作常量、变量、函数名以及结构字段等标识符。 break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return...
more...缓存和数据库一致性问题
# 缓存和数据库一致性问题 https://zhuanlan.zhihu.com/p/408515044 先更新缓存还是先删除缓存? 1. 先更新缓存,后更新数据库 数据库更新失败,相当于没更新。 2. 先更新数据库,后更新缓存 缓存更新失败,只有等到缓存失效才能得到正确的值。 并发引发的一致性问题 两个线程同时更新同一条数据,出现数据库更新成功,缓存更新失败的问题之类的。 通常解决方案是加 分布式锁 ,线程在修改同一条数据之前先申请分布式锁,拿到锁的线程才允许更新数据库和缓存。 删除缓存可以保证一致性吗 1. 先删除缓存,后更新数据库 数据库更新失败,等于没更新 2....
more...Elasticsearch 与 mongoDB 的区别
# 与 mongoDB 的区别 MongoDB ElasticSearch 备注 定位 (文档型) 数据库 (文档型) 搜索引擎 一个管理数据,一个检索数据 资源占用 一般 高 mongo 使用 c++, es 使用 Java 开发 写入延迟 低 高 es 的写入延迟默认 1s, 可配置,但是要牺牲一些东西 全文索引支持度 一般 非常好 es 本来就是搜索引擎,这个没啥可比性 有无 Schema 无 无 两者都是无 Schema 支持的数据量 PB+ TB+ ~ PB 两者支持的量并不好说的太死,都支持分片和横向扩展,但是相对来说 MongoDB...
more...








