工作记录-关于数据库的隔离级别、urlsafe的base64编码

张开发
2026/4/9 17:52:12 15 分钟阅读

分享文章

工作记录-关于数据库的隔离级别、urlsafe的base64编码
part 1昨天拿到的一个需求是之前的需求发布之后的一个bug主要是涉及到了OIDC流程中userId经过base64编码之后发送到后台进行解析但是标准的base64编码是由数字、字母以及 、/ 、 组成。编码之后的userId通过查询参数传递到后台但是标准的base64中的 、/、在url中属于特殊字符表示空格、/是分隔符、是查询参数所以会交由urlsafe的编码之中会将 换为 -/ 换为 _进行编码同时去除结尾的 。在后台接收之后需要针对其进行特殊处理String convertToStandardBase64(String urlSafe){ urlSafe urlSafe.replace(_, /).replace(-, ); // 计算需要补齐的 的数量标准base64编码的字符串长度为4的倍数 int len (4 - (urlSafe.length() % 4)) % 4; // 使用补齐 StringBuilder sb new StringBuilder(urlSafe); for(int i 0; i len; i) sb.append(); // 返回标准base64编码的字符串 return sb.toString(); }part 2昨天八股文一块回顾了一下数据库隔离级别以及锁的一些东西数据库的隔离级别读未提交一个事务可以读到另一个事务还没有提交的数据读已提交同一个事务中多次读取同一条数据的结果值不同可重复读同一个事务中多次查询同一条件的结果集大小不同串行化强行的加锁串行化开销大、性能差MySQL的默认隔离级别可重复读Oracle、SQL Server的默认隔离级别读已提交。同时可重复读会存在幻读的问题MySQL InnoDB通过间隙锁解决了这一问题具体如何解决的还没学数据库这边还有一个就是UPDATE / DELETE 操作都是当前读强制的获取当前已经提交的数据普通的SELECT则是快照读像是在 RR 隔离级别下SELECT会读取第一次查询的时候创建的快照。

更多文章