2020年真的是一个神奇年度,这一年作为吃瓜群众的我,见到了太多牛鬼蛇神。
巧用二进制表示不同的状态
我们在开发的过程中会遇到这种场景,在系统的权限、选项设置,只有两种状态开启或者关闭。
Lua脚本在秒杀场景下的使用
在秒杀这种高并发、大流量的场景下,利用数据库进行库存扣减、数据查询这种想法就不要考虑了。你要是有这种想法,劝你早点放弃,P0事故一定在等着你。之前用Lua脚本实现秒杀场景下的库存扣减感觉很不错,配合Redis秒杀效果杠杠的!Redis 2.6 版本通过内嵌支持 Lua 环境,会单线程原子性执行 Lua 脚本,保证 Lua 脚本在处理的过程中不会被任意其它请求打断。
利用MySQL的IGNORE关键字避免重复插入的骚操作你见过么
我们在实际开发中总有这样的需求,表里的数据要保持唯一,所以我们开发中经常都是先查询这样的数据有没有,有的话跳过,没有的话再插入,然后在能表示数据记录唯一的列上加上唯一索引进行兜底。虽然有的同学基本上也是这么做的,但是又稍微的做了一点其他的骚操作😄😄😄。
设计模式学习之模板和策略模式实战
前面文章由抽奖活动赠送不同的奖励从而引出了策略模式,定义一个策略接口,不同的奖励发放实现不同的策略。即使后续新增加奖励种类,只要重新实现一个策略即可,符合了设计模式中的开闭原则-对扩展开放对修改关闭。我在一次订单活动功能开发中使用到了策略模式,在开发的过程中发现,订单符合活动条件的判断、发放奖励给用户,可以提升到父类实现,具体的条件判断逻辑可以延迟到子类去实现,从而引出本篇文章的主题:模板模式。
IDEA 隐藏.idea与.iml文件
在 IDEA 中会自动帮我们创建.idea 和.iml 文件,其实这两个文件对我们没啥用的,但是也不能删掉(项目需要而且删了只好还会自动创建),那我们只好想法子给他隐藏掉。
设计模式学习之策略模式
策略模式(Strategy Pattern)我觉得在23中常见的设计模式里面是一种比较简单的,使用场景也很多。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象,策略对象改变 context 对象的执行算法。
Windows下搭建RocketMQ双主双从集群
RocketMQ 是阿里巴巴在 2012 年开源的消息队列产品,用 Java 语言实现,在设计时参考了 Kafka,并做出了自己的一些改进,后来捐赠给 Apache 软件基金会,2017 正式毕业,成为 Apache 的顶级项目。RocketMQ 在阿里内部被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,Binglog 分发等场景。经历过多次双十一考验,它的性能、稳定性和可靠性都是值得信赖的。我们今天就在 windows下搭建RocketMQ多Master多Slave模式(同步)的集群。
JavaScript接收后端Long类型数据精度丢失问题
在开发过程中,通常我们的数据库主键会使用 bigint,它对应 Java 中的 Long,但是当Long的数值超过一定值时传到前端后会丢失精度。原因是JavaScript的number类型有个安全值,即2的53次方,为9007199254740991,如果超过这个值,那么JavaScript会出现不精确的问题。
编程过程中抽象类和接口的抉择
作为一位程序员在编码的过程中,终会遇到这种情况:这个功能我到底是用接口呢?还是用抽象类呢?