- 博客(5)
- 收藏
- 关注
原创 BigDecimal实现精确计算原理
BigDecimal实现精确计算原理我们在金融项目中,计算金额最常用的数据类型是BigDecimal,它可以帮助我们实现对金额的精确计算。那它实现精确计算的原理是啥呢?我们知道计算机中的浮点数,double,float存储的浮点数,可能不是一个准确的数,而是接近这个数的一个近似数。比如:double a = 2.13。实际:2.1300000000001那BigDecimal如何实现精确计算呢?其实原理也很简单,计算时,先成于10的N次方,先把小数都变成整数,整数存储是没有精度问题的,做完了相应
2021-12-12 22:49:03 2137
原创 分布式唯一ID实现
分布式唯一ID实现在业务开发中,大量场景需要用到唯一ID,比如系统流水号,订单号等等。那么,分布式唯一ID有哪些特征呢?唯一性: 生成的ID全局唯一。高可用: 可保证在高并发下的可用性,确保任何时候都能正确生成ID。自主性:分布式环境下不依赖中心认证,即可自行生成ID。安全性:不暴露系统和业务信息。有序性:生成的ID按某种规则有序,便于数据库插入及排序。(某些情况下也需要无序ID)常见的分布式唯一ID生成方法有哪些?数据库自增ID使用数据库的ID自增策略。优点:简单,天然有序。
2020-05-24 17:56:38 189
原创 分布式锁Redis实现
上篇讲了分布式锁的数据库实现,这篇我们继续来讲分布式锁的redis实现。那么如何通过redis来实现一个分布式锁呢? 一般最容易想到的命令,就是setNx那在使用redis setNx命令时,还需要关注哪些点呢?redis分布式锁常用命令,SETNX(key, val)当且仅当key不存在时,设置成功,返回“1”,否者什么都不做,返回“0”我们可以利用该命令的特性进行加锁操作。假如同时有两个线程要竞争资源,其中一个线程先
2020-05-24 17:21:02 127
原创 分布式锁MySQL实现
分布式系统中,一个避不开的话题,就是在很多情况下,我们需要用到分布式锁。那分布式锁,通常有哪几种实现方式呢?分布式锁的实现方式,通常有三种,数据库实现,Redis实现,Zookeeper实现。我们将分三篇文章来分别介绍这三种实现。首先要来介绍的是数据库版实现的分布式锁。我们看以下几个场景中,如何用mysql数据库来实现一个分布式锁。场景1:我们曾经做的一个贷款系统,在用户借款前,需要给用...
2020-04-26 18:58:14 238
原创 如何实现一个幂等接口
如何实现一个幂等接口首先我们要搞清楚,何为幂等。幂等本来是一个数学中的概念,即使f(x)=f(f(x))。引入到计算机领域后,指对同一个接口或方法,使用同样的条件,一次请求和任意多次请求对系统的影响是一致的。那通常我们有哪些手段来实现一个幂等接口或幂等函数呢?我们还是先来将接口分下类,将接口分为查询,删除和交易类型:查询类型:查询类型的接口,天然具有幂等性,因为查询交易一般不会对系统...
2020-04-12 17:06:25 904
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人