分享一下百步梯生日邮件发送系统的设计与实现

文章目录 不,这不是一个大作业的标题。 Background 百步梯有一个专属的人员管理系统,里面存着组织内所有人自己填写的个人信息,包括生日数据。大概在蛮久之前,我就有在想能不能做个生日祝福之类的功能每天自动发送给当天生日的同学,然后我就写出来了(没有)在暑假的时候让部门的设计小姐姐去做个贺卡的底图,同时我去想了想具体实现方案并做了些 Demo,最后在七月底的时候用了两三天把它写完,然后测试 & 修修补补在 07.31 正式部署上百步梯的服务器。 然而尴尬的是当晚查日志发现那一天并没有人生日(눈‸눈),我以为是查询语句写得有问题但是手动查了一遍发现确实没有……不过第二天总算还是完全正常运行的, »

结合 LeetCode 上的几道简单题再谈谈位操作(二):异或的魅力

文章目录 接着上一篇文章来讲些简单的位操作,这篇侧重的是异或的一些用途,不过其实前一篇文章的后面两道题也都有部分用到异或的内容,可见它的用途还算是挺广泛的。下面来看一些更加贴近异或操作思维的题目。 Problem 136. Single Number 把一个非空数组里只出现一次的数字找出来,剩下的数字保证是出现两次的。这个直接用异或的特性就行了,一个数如果和自身进行按位异或的话,因为每一位都对应相等,所以结果就是一串 0。这样我们把整个数组遍历异或一遍,重复的数字都消掉了,结果就是那个只出现了一次的值,毕竟一个数字和 0 异或之后得到的是它本身: class Solution { public: »

结合 LeetCode 上的几道简单题再谈谈位操作(一):对前文的拓展

文章目录 大概那么五六七个月之前,我看到《编程之美》中某道位操作相关的题目,觉得挺有意思,于是稍微整理了一下相关的知识瞎扯出了 从《编程之美》中的一道面试题开始谈谈位操作 这篇文章,今天突然心血来潮点进从来没用过的 LeetCode 发现有一个 Bit Manipulation 的分类专题,于是就挑了其中几道简单的题目做,因此导致了这篇和下篇文章的突然诞生。 首先有几题是可以直接用上前篇文章里面讲到的位操作技巧的,比如通过 n &= (n - 1) »

浅析 MySQL InnoDB 存储引擎中的事务、并发与锁

文章目录 一点背景 之前数据库课程的最后一次实验中有一项是验证数据库并发操作带来的问题以及事务的各个隔离级别对这些问题解决的程度,在测试过程中发现有些情况和课本的描述并不一样,一开始以为是隔离级别设置的步骤之类的出了问题,后来了解到其实各个数据库的实际实现都多少有自己对系统并发性能等方面的考虑,没有完全依照标准来完成。再之后在图书馆发现了一本讲 MySQL InnoDB 存储引擎的书,就仔细去了解了一下关于这个存储引擎的事务、并发和锁等方面的知识,同时看了一些 MySQL 的文档以及几篇博客,于是就自己对当时实验的用例进行修改设计了一些新的测试和验证代码,并把了解到的相关内容整理成了这篇文章。 准备工作 创建数据库和测试数据 DROP DATABASE IF EXISTS trans_test_ »

从《编程之美》中的一道面试题开始谈谈位操作

文章目录 在计算机的内部,数据都是使用二进制表示的,而对于计算机来说,进行基于二进制的位操作,效率要比进行除法、取余等操作高很多。最常见的对代码的优化就包含将乘除 2 的幂操作改为左右移位操作,很多时候编译器也会对代码自动执行这个优化。 我第一次在算法题的代码里见到位操作应该是在高二的时候,某个晚自习不想学习然后跑到机房去乱翻别人的博客发现这个,顿时就感觉如沐春风出神入化,所以一直印象挺深刻的。这个学期开学后不久在图书馆发现了《编程之美》这本书,虽然里面的好多内容都看不懂,其中有一道题感觉还蛮有趣的,就想从这道题出发,简单整理一下自己了解过的一些位操作相关的知识。 题目是这样的: 2.1 求二进制数中 »