摘要:
在实际工作中,我们经常会用到通知系统,比如,用户完成在线购买后,需要发送订单确认邮件、支付处理成功的短信以及包裹发货的推送通知。那么,什么是通知系统?如何设计一个通知系统? 需求收集 在设计之前,我们先来详细了解下通知系统的需求,本文从功能需求和非功能需求两个方面来介绍。 功能需求 通知类型:例如消 阅读全文
摘要:
问:两个字符串hashcode相同equals一定相同吗?equals相同hashcode一定相同吗? 答:equals相同hashcode一定相同,hashcode因为哈希碰撞所以equals不一定相同。 Hash如何存数据hash表的本质其实就是数组,hash表中通常存放的是键值对Entry。 阅读全文
摘要:
GC就是Java的垃圾回收机制,要了解什么情况下会发生GC(即GC得触发条件),我们需要先了解JVM的内存模型结构,之前一篇文章已经详细讲解了Jvm的内存模型结构,而通常来说,GC主要针对的是堆(java heap)区。 而java heap是分代的(年轻代和老年代),为什么要分代?其实也不难理解, 阅读全文
摘要:
1. ls:列出当前目录中的文件和子目录ls 2. pwd:显示当前工作目录的路径pwd 3. cd:切换工作目录cd /path/to/directory 4. mkdir:创建新目录mkdir directory_name 5. rmdir:删除空目录rmdir directory_name 6 阅读全文
摘要:
1)什么是OOM? OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown when the Java Virtual Machine cannot allocate an object 阅读全文
摘要:
防止秒杀重复下单在Redis中记录一个hash值,用户每次秒杀,值加1,是否大于1作为判断 使用分布式锁解决超卖的问题 分布式锁为了保证一个方法 或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用java并发处理相关的API(ReentrantLock或Sy 阅读全文
摘要:
问题:有一张200W数据量的会员表,每个会员会有长短不一的到期时间,现在想在快到期之前发送邮件通知提醒续费”该怎么实现 问题解析 200W数据意味着数据量比较大每个会员都有过期时间,需要能够筛选出快过期的会员很显然,如果直接去通过select语句做筛选,就掉入坑里了,因为这里会存在性能问题,那接下来 阅读全文
摘要:
在前文中,我们完成了vip题目与权限的设计,于是自然而然的引出了我们怎么成为vip这个问题,传统的c端系统以及游戏,往往采用对接支付接口的方式,本文选取了对接支付宝接口的形式进行支付并获取vip权限。 扫码付款的接入流程 支付宝支付的逻辑过程 支付成功后的消息回调 有了此处基础上,通过研究支付宝沙箱 阅读全文
摘要:
在 Java8 之前,对于大数据量的集合,传统的遍历方式主要是通过 for 循环或者 Iterator 迭代。然而,这种方式在处理大数据量集合时效率并不理想。以电商系统中的订单表为例,通常使用用户 ID 的 Hash 值来实现分表分库,以减少单个表的数据量,提高用户查询订单的速度。但当后台管理员审核 阅读全文
摘要:
需求:实现某个接口每天调用了多少次,每个用户只记录一次。 (例如,统计刷题模块,练题模块,模拟面试模块每天访问量,利于后续针对功能访问量做出其他优化设计。贴子的浏览量)先分析几种不同的方案: 方案一:使用Hash哈希结构 实现方法:当用户访问网站时,我们可以使用用户的ID作为标识(若用户未登录,则生 阅读全文