合适以及为何使用最少使用(LFU)缓存与Golang中的实现

[译]合适以及为何使用最少使用(LFU)缓存与Golang中的实现

在过去的这些年,参与计算机科学和工程师的人们一直在努力优化各种性质。我们生活在一个资源有限的世界里,人们一直致力于优化成本和速度的方法。

在软件工程方面而言,我认为,最流行的改善性能的就是缓存了。在许多app都有缓存,依赖于软件方面的存储,缓存背后的想法非常简单。为了加载较快,存储数据经常被用到。

阅读更多

go规范

1 . 多个 if 语句可以折叠成 switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// NOT BAD
if foo() {
// ...
} else if bar == baz {
// ...
} else {
// ...
}

// BETTER
switch {
case foo():
// ...
case bar == baz:
// ...
default:
// ...
}
阅读更多

反射

反射来自元编程,指通过类型检查变量本身数据结构的方式,只有部分编程语言支持反射。反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

阅读更多

Go字符串

修改字符串

要修改字符串,需要先将其转换成[]rune或[]byte,完成后再转换为string。无论哪种转换,都会重新分配内存,并复制字节数组。

阅读更多

MySQL基础

基础知识

  • mysql默认的引擎是InnoDB(MySQL5.5.5版本起)

三大范式

  • 属性具有原子性,不可再分解;
  • 不存在部分依赖;
  • 不存在传递依赖;

MySQL InnoDB 概览

InnoDB的数据存储在表空间,表空间是由InnoDB管理的一个黑盒子,由一系列的数据文件组成。InnoDB采用MVCC来支持高并发

MySQL执行

mysql.png

Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

阅读更多

golang-defer

defer的使用特点

其实其中一点特性我理解起来就有点像java中的finally的用法

关于官方解释

1
2
3
A defer statement defers the execution of a function until the surrounding function returns.

The deferred call's arguments are evaluated immediately, but the function call is not executed until the surrounding function returns.

这里提到了defer调用的参数会立即计算,但在周围函数返回之前不会执行函数调用。

阅读更多

2018年总结

帝都的生活

       依稀记得在18年初的时候,毅然决定从重庆离职,离开这个舒适区,因为我明白,在这边待越久,差距就会越来越大,等到过完年来帝都搬砖。来到这边才感知和重庆的天壤之别。

阅读更多

elasticsearch社区分享会

在前段时间加班的时候错过了两场我想去的技术会,这次终于没落空了。大佬也多,涨了不少姿势。特此记录一下分享,由于全凭记忆叙述,可能就没啥顺序而言的还原出之前的收获。

阅读更多