• 首页

  • 自我介绍

  • 文章分类

  • 时间线

  • 搜索

reids_删除策略

发表于 2022-05-09
字数统计: 245 | 阅读时长 ≈ 1

Redis 过期删除策略

当数据库中的键过期时,会如何删除?

  • 定时删除,当键的时间一到,立即执行删除,对内存友好,对CPU时间不友好
  • 惰性删除,当获取该键时,判断是否过期进行删除,对内存不友好,对CPU时间友好
  • 定期删除,隔一段时间进行检测过期键,然后删除。是前两种策略的结合,需要根据项目情况,把握好发生频率和时长。

Redis 使用的是 惰性删除 和 定期删除,在一段时间内对数据库进行抽样检查,如果检查时间上限一到就停止。之后再次触发时,接着上一次的数据库继续进行。

axios 小结

发表于 2022-01-15
字数统计: 2.3k | 阅读时长 ≈ 10

Axios 使用小结

工作的项目是前后端分离的,前端项目采用 Vue 相关的技术栈进行搭建,与此同时,前端请求的方式也发生了改变,由原来 Jquery 中 ajax 变为 axios ;

在使用的过程中当然存在一些疑问,在这里作下小小的汇总;

阅读全文 »

Go cibcyrrency

发表于 2021-05-09
字数统计: 513 | 阅读时长 ≈ 2

并发concurrency

gorountine

切换时间来实现“同时”运行,在并行则是利用多核实现多线程的运行,通过通信共享内存

1
2
3
4
5
6
7
8
9
func Go(){
fmt.Println("Go go!")
}


func main() {
go Go()
time.Sleep(2 * time.Second)
}
阅读全文 »

Go reflection

发表于 2021-05-09
字数统计: 535 | 阅读时长 ≈ 2

反射

反射可以提高程序的灵活性,使得 interface() 有更大的发挥余地,反射使用 TypeOf 和 ValueOf 函数从接口中获取目标对象信息,将匿名字段作为独立字段。

修改对象状态的前提是 interface.data 是 settable , 即 pointer-interface

通过反射可以动态调用方法

阅读全文 »

Go method

发表于 2021-04-25
字数统计: 719 | 阅读时长 ≈ 3

方法 Method

Go 中虽然没有class,但依旧有method,通过显示说明receiver来实现与某个类型的组合,只能为同一个包中的类型定义方法,receiver可以是类型的值或指针。

method不存在方法重载,可以是使用值或指针来调节方法,编译器会自动完成转换,从某种意义上来说,方法是函数的语法糖,因为receiver其实就是方法所接收的第一个参数(Method Value vs Method Expression)

如果外部结构和嵌入结构存在同名方法,则优先调用外部结构的方法,类型别名不会拥有底层类型所附带的方法。

方法可以待用结构中的非公开字段

阅读全文 »

Go interface

发表于 2021-04-25
字数统计: 681 | 阅读时长 ≈ 2

接口 interface

接口是一个或多个方法签名的集合,只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需显示声明了实现了哪个接口,这称为 Structural Typing

接口只有方法声明,没有实现,没有数据类型

接口可以匿名嵌入其他接口,或嵌入结构中

将对象赋值给接口时,会发生拷贝,而接口内部存储的是指向这个复制品的指针,即无法修改复制品的状态 ,也无法获取指针

只有当接口存储的类型和对象都为 nil 时,接口才等于 nil

接口调用不会做 receiver 的自动转换

接口同样支持匿名字段方法

接口可实现类型 OOP 中的多态

空接口可以作为任何类型数据的容器

阅读全文 »

Go struct

发表于 2021-04-18
字数统计: 1.2k | 阅读时长 ≈ 5

结构

Go 中的struct与 C 中的 struct非常相似,并且 Go 没有 class 。使用 type<Name> struct{}定义结构,名称遵循可见性规则。

  • 支持指向自身的指针类型成员
  • 支持匿名结构,可用作成员或定义成员变量
  • 匿名结构也可以用于map的值
  • 可以使用字面值对结构进行初始化
  • 运行直接通过指针来读写结构成员
  • 相同类型的成员可进行直接拷贝赋值
  • 支持==与!=比较运算符,但是不支持>和<
  • 支持匿名字段,本质上是定于了以某个类型名为名称的字段
  • 嵌入结构作为匿名字段看起来像继承,但不是继承
  • 可使用匿名字段指针
阅读全文 »

Go map

发表于 2021-04-18
字数统计: 801 | 阅读时长 ≈ 4

map

类似其他语言中的哈希表或者字典,以key-value形式存储数据,key必须是支持==或者!-比较运算的类型,不可以是函数,map或者slice。

Map 查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍。

Map使用make()创建,支持:=简写方式

make([keyType]valueType, cap),其中cap表示容量,可省略

超出容量时会自动扩容,但尽量提供一个合理的初始值

键值对不存在时会自动添加,使用delete()删除某键值对

使用for range对map和slice进行迭代操作

阅读全文 »

Go func

发表于 2021-04-18
字数统计: 1.3k | 阅读时长 ≈ 6

函数

Go 函数不支持嵌套,重载和默认参数

但支持以下特性:

  • 无需声明原型,不定长度变参,多返回值,命名返回值参数,匿名函数,闭包

定义函数使用关键字func,且左大括号不能另起一行

函数也可以作为一种类型使用

阅读全文 »

Go 切片

发表于 2021-04-12
字数统计: 1.1k | 阅读时长 ≈ 5

切片Slice

切片本身并不是数组,是指向底层的数组,类似指针。其作为变长数组的替代方案,可以关联底层数组的局部或全部。同时这是一个引用类型,可以直接传教或者从底层数组获取生成。和数组一样,可以使用len()来获取元素个数,cap()获取容量。一般使用mark()进行创建,而不是new ()。

阅读全文 »
12…4
ZRoger

ZRoger

一分耕耘一分收获

33 日志
39 标签
RSS
神奇的链接
  • ArtStation
  • Dribbble
  • V2EX
© 2018 — 2023 ZRoger
|
主题 — NexT.Pisces v5.1.4
0%