thumbnail
设计模式常见概念和问题
Q1:设计模式有哪些原则? 开闭原则:OOP 中最基础的原则,指一个软件实体(类、模块、方法等)应该对扩展开放,对修改关闭。尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来完成变化。强调用抽象构建框架,用实现扩展细节,提高代码…
thumbnail
Linux
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) 常用 系统信息: cat /proc/version: 查看Linux版本信息 lsb_release -a: 查看系统发行版本 ifconf…
thumbnail
rsa 加密
RSA密钥生成过程: 选择两个大质数 p 和 q (例如 p=3, q=11) 计算 N = p * q (N = 3 * 11 = 33) 计算欧拉函数 φ(N) = (p-1) * (q-1) (φ(33) = 2 * 10 = 20)…
thumbnail
Redission 实现 分布式锁
基于Redission实现 Redisson 是一个基于 Redis 的 Java 客户端,它提供了许多高级功能,其中之一就是分布式锁 1 使用Lua脚本执行加锁操作: Redisson通过Lua脚本执行加锁操作。Lua脚本会判断锁是否存在…
thumbnail
Redis 实现分布式锁
V1: setnx命令 一般是使用 setnx(set if not exists) 指令,只允许被一个客户端占用。 先来先占,用完了,再调用del指令释放。 但是有个问题,如果逻辑执行到中间出现异常了,可能会导致del指令没有被调用,这样…
var let const 在javascript中的作用
1. var 作用域:var 定义的变量是函数作用域,也就是说,如果在函数内部使用 var 声明变量,该变量在整个函数中都是可见的。如果在函数外部使用 var,则变量在全局作用域中可见。 可变性:可以重新赋值,也可以重复声明。 提升(Hoi…
thumbnail
如何保证缓存与数据库的一致性?
先删缓存,再更新数据库 先删除缓存,数据库还没有更新成功,此时如果读取缓存,缓存不存在,去数据库中读取到的是旧值,缓存不一致发生。 解决方案 延时双删 为了避免更新数据库的时候,其他线程从缓存中读取不到数据,就在更新完数据库之后,再 Sle…
thumbnail
Git 基本操作
参考自geekHour教程 基本操作 使用git init 创建一个仓库 可以指定名称 git status 查看仓库的状态 git add 添加到暂存区 可以使用通配符,例如:git add*,txt 也可以使用目录,例如:git add…