/img/avatar.jpg

Aetherial

多花点钱会心疼,生命少了一天却无所感知

acme.sh使用教程

acme.sh 是一个免费申请和自动续期 HTTPS 证书的开源工具。安装后自动配置定时任务,在证书过期前 30 天自动续期,实现全自动化管理。

1. IOC和AOP机制

  • IOC就是将对象的创建、初始化、销毁等过程交给Spring容器来管理,而不是由程序员在代码中手动管理,也就是控制反转。当需要使用某个对象时,直接通过依赖注入的方式在Spring容器中获取即可。依赖注入包含属性注入、setter注入和构造器注入。
  • AOP就是将通用的功能,如日志记录从业务代码中抽离出来,通过动态代理的方式在运行时增强目标对象的方法。因为是将代码中的横向切入点(公共的功能)剥离出来形成一个一个的切面所以称为面向切面编程。
  • AOP的通知类型包含前置通知:在方法执行之前操作;后置通知:在方法执行之后操作;环绕通知:在方法执行之前和之后都可以操作;返回通知:在方法正常执行返回内容之后操作;异常通知:在方法抛出异常后操作。

2. Redis

Redis常见类型

  • redis几种常见的类型:String、List、Set、Zset、Hash
  • string是最常用的数据类型,是一种二进制安全的数据类型,可以存储字符串、整数、浮点数、图片等。
  • list是一个双向链表的实现,可以存储多个元素,支持从两端插入和查找元素。
  • set是一个无序的集合,元素不可重复。并且可以使用set实现求交集的功能,例如将用户的所有关注放在一个set中,将用户的所有粉丝放在另一个set中,然后求交集就可以得到用户的互相关注。
  • zset是一个有序的集合,元素可以重复,并且增加了一个分数的权重参数,可以将元素按照分数来进行排序。
  • hash是一个string的key-vaule键值对,可以用来存对象,后续操作可以直接修改这个对象中的某些字段的值。

缓存穿透、缓存预热、缓存击穿、缓存雪崩

  • 缓存穿透是有大量的key不存在于redis并且也不存在于数据库,此时如果这些key被同时访问会直接查库造成数据库压力暴增。可以通过参数校验、设置默认值的方法解决。
  • 缓存预热是系统启动时,将热点数据加载到缓存中,避免冷启动时大量请求直接打到数据库。
  • 缓存击穿是指某个key的缓存过期了,此时大量请求同时访问这个key,会直接查库造成数据库压力暴增。可以通过设置互斥锁的方法解决。当一次请求发现缓存过期会加锁的方式去查库并重写缓存,其他进程只能等待锁释放然后从缓存中获取数据。
  • 缓存雪崩指的是有大量的Key在同一时间类过期,此时如果这些key被同时访问会直接查库造成数据库压力暴增。可以通过设置不同的过期时间来解决。

3. MySQL

4. ES