字典表(a-z、A-Z、0-9)可以随机打散一下顺序,这样别人就猜不出来了。
聊聊base62与tinyURL序 base64大家肯定是很熟悉了,那base62是什么东东,它常被用来做短url的映射。 ascii编码的62个字母数字 26个小写字母+26个大写字母+10个数字=62 ...
字典表(a-z、A-Z、0-9)可以随机打散一下顺序,这样别人就猜不出来了。
聊聊base62与tinyURL序 base64大家肯定是很熟悉了,那base62是什么东东,它常被用来做短url的映射。 ascii编码的62个字母数字 26个小写字母+26个大写字母+10个数字=62 ...
统一回复:乐观锁用扣减商品库存举例不是很合适,既然说到了扣减库存就提一下上面的Update SQL,改成:UPDATE tb_product_stock SET number=number-1 WHERE id=#{id} AND number>=1 比较合适,MySQL会根据主键id锁住这条记录。另外还可以在库存表DDL上做一点文章,把number 定义为 int(10) unsigned 可以在数据库层面保证不会出现 number小于0情况。
MySQL 乐观锁与悲观锁悲观锁 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会bloc...
@沉静说 更通用的SQL:UPDATE tb_product_stock SET number=number-#{quantity} WHERE product_id=#{productId} AND number >= #{quantity},另外可以在DDL中将number定义为 bigint(20) unsigned 可以在数据库层面保证 number小于0情况发生。
MySQL 乐观锁与悲观锁悲观锁 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会bloc...
已更新
Java 线程的状态及切换线程的生命周期 Java语言中定义了5种线程状态,在任意一个时间点,一个线程只能有且只有其中一种状态,这5种状态是: 新建(New):创建后尚未启动的线程处于这种状态。 运行...
在后端开发中,应用程序在不同的环境可能会有不同的配置,例如数据库连接、日志级别等,开发,测试,生产每个环境可能配置都不一致。 使用Spring Boot的Profile可以实...
项目开发中不可避免需要跟数据库打交道,作者开发的项目的中广泛使用Mybatis作为ORM框架。本文主要讲解在Spring Boot项目中 如何整合Mybatis,基于XML方...
上一篇文章:Spring Boot教程 - 整合Mybatis(基于XML配置) 介绍了 Spring Boot集成Mybatis 基于XML方式的配置,本文将重点介绍 注解...
日常开发中,我们可能需要连接多个数据源,例如数据库进行了主从配置,写操作走主库,读操作走从库。本来结合Spring Boot + MyBatis + Druid 来演示如何配...
概述 Metrics is a Java library which gives you unparalleled insight into what your code d...
最近在封装一个Java报警的SDK,期望应用程序在调用SDK报警API方法时能调用类和调用方法名并通过邮件和短信的方式通知给开发者。 大致有两种方式,总结一下。 1. 通过T...
无论是Servlet或者Spring、MyBatis,配置资源文件都是必不可少的一项工作,Java中主要提供了提供了2个类来读取资源文件,一个是Class类,一个是Class...
最近在业务中开始大量使用RocketMQ,记录一下心得。 Producer最佳实践 一、发送消息注意事项 一个应用尽可能用一个Topic,消息子类型用tags来标识,tags...
Git 删除一个远程分支时报错,如下: 出现这个错误的原因是在于远程Git服务器上名称为0.1.0的有两个对象:一个是tag,一个是分支;也就是说tag分支和branch分支...
Zookeeper提供了很多方便的功能,方便我们查看服务器的状态,增加,修改,删除数据(入口是zkServer.sh和zkCli.sh)?;固峁┝艘幌盗兴淖置?,方便我们跟服...
算法简介 RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。 算法实现 1、RSAUtils.java 2、测试用例: 3、运行结果 源代码 J...