问题描述 以前曾经思考过类似的问题,比如腾讯公司,每逢生日,都会给用户发一封邮件。按QQ的用户规模,假设全国每人一个QQ,那么用户表有14亿条。如何给当天生日的人发送祝福邮件?这问题其实挺有意思的,很多可以思考和优化的点,于是我也想了一个初步方案。 一个系统设 系统总人数为Total。 假设,用户用户生日是分布均匀的,也就是说,每天的生日人数=1/365 * Total = 1/365 * 14亿 … 继续阅读
一个系统设计:给所有当天生日的用户发一封生日邮件
回复
问题描述 以前曾经思考过类似的问题,比如腾讯公司,每逢生日,都会给用户发一封邮件。按QQ的用户规模,假设全国每人一个QQ,那么用户表有14亿条。如何给当天生日的人发送祝福邮件?这问题其实挺有意思的,很多可以思考和优化的点,于是我也想了一个初步方案。 一个系统设 系统总人数为Total。 假设,用户用户生日是分布均匀的,也就是说,每天的生日人数=1/365 * Total = 1/365 * 14亿 … 继续阅读
最近在排查一个多线程的问题,dump 内存的时候,发现很多线程状态的问题。虽然线程状态已经看了很多,但是还是需要重新梳理一下。多线程问题,没有小问题,需要基础知识牢固,概念清晰,才好入手。 Java线程的六种状态以及切换 1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 2.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统 … 继续阅读
看了网上很多讲线程间通信的文章,很多以交替执行给出例子;但是有些明显是有问题的,于是我自己也写了个例子。 线程间通信:wait 和notify wait()方法是指当前线程对对象的控制等待。对对象的控制权移交给其他线程 notify()方法是指通知某个正在等待当前线程控制权的线程,可以继续进行 代码示例 两个线程,线程A:1、3、5、7…97、99 ,线程B打印:2、4、6、8、10& … 继续阅读