摘要:
前言: 悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念。本文将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍。 一.悲观锁(Pessimistic Lock) 悲观锁的特点是先获取锁,再进行业务操作,即“悲观”的认为获取锁是非常有可能失败的,因此要先确保获 阅读全文
摘要:
缓存穿透 (请求数据缓存大量不命中) 缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,并且出于容错考虑, 如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。 例如: 下图是一个比较典型的cache-storage架构,cache(例如me 阅读全文
摘要:
前言: map 数据如下 Map<String,List<Long>>. 测试代码如下: public void getByMap(){ Map<String,List<Long>> params=new HashMap<String, List<Long>>(); List<Long> orgLi 阅读全文
摘要:
一.概念 1、VO(View Object): 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 2、DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体, 以减少分布 阅读全文
摘要:
一.表设计 库名、表名、字段名必须使用小写字母,“_”分割。 库名、表名、字段名必须不超过12个字符。 库名、表名、字段名见名知意,建议使用名词而不是动词。 建议使用InnoDB存储引擎。 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE。 建议使用UNSIGNED存储非负数值。 建 阅读全文
摘要:
前言 当需要将Spring boot以restful接口的方式对外提供服务的时候,如果此时架构是前后端分离的,那么就会涉及到跨域的问题。 方案一: 在Controller上添加@CrossOrigin注解 使用方式如下: @CrossOrigin // 注解方式 @RestController pu 阅读全文
摘要:
前言 首先讲一下开关的由来。 例如: 东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A、B、C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐), 可有可无,在平时系统没有压力,容量充足的情况下,调用下没问题,但是在类似店庆之类的大促环节,系统已经满 阅读全文
摘要:
一.业务场景 在日常做的项目中,目前涉及了以下这些业务场景: 1、场景一 比如分配任务场景。 在这个场景中,由于是公司的业务后台系统,主要是用于审核人员的审核工作,并发量并不是很高, 而且任务的分配规则设计成了通过审核人员每次主动的请求拉取,然后服务端从任务池中随机的选取任务进行分配。 这个场景看到 阅读全文
摘要:
前言: 对于开发的网站,如果网站的访问量非常大的话,那么就需要考虑相关的并发访问问题了。 一.同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性 阅读全文
摘要:
前言: 有一次从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后, 如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表 阅读全文