随笔分类 - 97-技术讨论交流
摘要:1.前言 现在的系统,对于权限来说,都是非常重要的,不同的用户看到的功能不一样,拥有的操作权限也不同。这些都可视为是动态的,那么就不能在代码中固定某些权限,而是需要通过设计动态权限来实现。 目前常用的模型有两种: 1)RBAC模型 基于角色的访问控制(Role-Based Access Contro
阅读全文
摘要:什么是ThreadLocal 呢? ThreadLocal叫做线程变量,是指ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。特点是ThreadLocal为变量在每个线程中都创建了一个副本,每个线程只可访问自己内部的副本变量,不存在多线程数据共享问题。ThreadLoca
阅读全文
摘要:1.前言 分布式id的来源主要是针对分布式的整体应用,在每秒可成品千万级别的数据。对于这样的大批量数据,必定需要分库分表,那么针对常用的自增主键(MySQL)或序列增长(Oracle),同一业务的分表,会存在相同的主键,对于数据处理来说,会显得异常麻烦。那就必须采用更有效的方式来解决这种问题,实现I
阅读全文
摘要:很多时候都能看到,当下了订单后10分钟或30分钟未支付,订单会自动取消,具体是如何实现的呢? 本文使用最常用的几种方式,只说明关键的部分,已30分钟为例。 1.借助redis的过期特性 逻辑: 下单时,订单状态是待支付。将订单编号作为key,下单的时间戳作为value,设置过期时间是30分钟。服务器
阅读全文
摘要:1.订单与支付 1.1问题背景 假如有一个快递下单系统,在寄快递时,客户下单并支付费用,支付后会生成验货码用于商家扫描入库,其支付和退款流程如下: 支付:创建业务订单 > 创建支付订单 > 唤起支付收银台 > 输入密码 > 进入支付回调处理 > 更改支付状态及业务状态 退款:创建退款订单 > 发起退
阅读全文
摘要:1.前言 在项目中,有些接口是无需安全验证即可访问。既然直接暴露出来,就意味着不安全,就会面临恶意访问,盗刷流量等问题。面对恶意访问,往往是通过程序对接口发送大量请求,轻者接口响应缓慢,重者造成服务器宕机,使得服务不能正常使用。 最常见的就是发送短信验证码,在用户注册时可发送短信验证码验证,在登录时
阅读全文
摘要:当你看到这个问题时,你会给出什么答案? 先说结论:两者没有区别,它们存储的长度是一样的。 1)先创建一个表:包含两个4个字段用于测试 create table user( id int(8) not null, id2 int(8) zerofill not null , type int(1) n
阅读全文
摘要:当你在代码中看到Thread.Sleep(0)时,你会觉得是bug吗? 如果你这样想,那不如先看下面两个问题,它们的答案又是什么? 1)代码中使用Thread.Sleep(0)和不使用Thread.Sleep(0)有区别吗? 2)若现在时间是2022-03-01 00:00:00,执行Thread.
阅读全文