05 2022 档案
摘要:1.基于外部存储实现的方案 基于外部存储的方案本质上都是一个套路,将 MQ 和 延时模块 区分开来,延时消息模块是一个独立的服务/进程。延时消息先保留到其他存储介质中,然后在消息到期时再投递到 MQ。 1.1、基于 数据库(如MySQL) 基于关系型数据库(如MySQL)延时消息表的方式来实现。 C
阅读全文
摘要:线程的几种状态 public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } NEW,新建状态。尚未启动的线程的状态。 RUNNABLE,可运行状态。处于RUNNABLE状态的线程正在 JVM 中执
阅读全文
摘要:Jedis,Redisson,Lettuce 1.1、Jedis 是 Redis 的 Java 实现的客户端。支持基本的数据类型如:String、Hash、List、Set、Sorted Set。 特点:使用阻塞的 I/O,方法调用同步,程序流需要等到 socket 处理完 I/O 才能执行,不支持
阅读全文
摘要:Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目。 整个 Quartz 的代码流程基本基本如下: 首先需要创建我们的任务(Job),比如取消订单、定时发送短信邮件之类的,这是我们的任务主体,也是写业务逻辑的地方。 创建任务调度器(Scheduler),这
阅读全文
摘要:01、利用唯一请求编号去重 你可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去重——只要这个唯一请求编号在redis存在,证明处理过,那么就认为是重复的。 String KEY = "REQ12343456788";//请求唯一编号 long expireTime = 100
阅读全文
摘要:1. If 语句 <select id="queryBlogIf" parameterType="map" resultType="blog"> select * from blog where <if test="title != null"> title = #{title} </if> <if
阅读全文
摘要:一:向关系型数据库sayno 一个真正的大型互联网面向c端的服务都不会直接使用数据库作为自己的存储系统,无论你是采用的是分库分表还是底层用了各种优秀的连接池等,mysql/oracle在面对大型在线服务是存在天然的劣势,再如何优化,也难以抵挡qps大于50万流量带来的冲击。所以换个思路,我们必须使用
阅读全文
摘要:SQL数据脱敏实现 JAVA数据脱敏实现 mybatis-mate-sensitive-jackson 》 1.SQL数据脱敏实现 MYSQL(电话号码,身份证)数据脱敏的实现 -- CONCAT()、LEFT()和RIGHT()字符串函数组合使用,请看下面具体实现 -- CONCAT(str1,s
阅读全文
摘要:想要把高级语言转变成计算机认识的机器语言有两种方式,分别是编译和解释; JVM中内置了解释器(interpreter),在运行时对字节码进行解释翻译成机器码,然后再执行。 解释器的执行方式是一边翻译,一边执行,因此执行效率很低。为了解决这样的低效问题,HotSpot引入了JIT技术(Just-In-
阅读全文
摘要:@Controller 通常用于修饰controller层的组件,由控制器负责将用户发来的URL请求转发到对应的服务接口,通常还需要配合注解@RequestMapping使用。 @RequestMapping 提供路由信息,负责URL到Controller中具体函数的映射,当用于方法上时,可以指定请
阅读全文
摘要:线程数太多 打开太多文件 内存不足 线程数太多: | 报错信息 pthread_create (1040KB stack) failed: Out of memory 查看系统对每个进程的线程数限制: cat /proc/sys/kernel/threads-max 不同设备的 threads-ma
阅读全文
摘要:mybatis一级缓存 mybatis 的缓存分为2类,分别是一级缓存和二级缓存,一级缓存是默认开启的,它在一个sqlSession会话里面的所有查询操作都会保存到缓存中,一般来说一个请求中的所有增删改查操作都是在同一个sqlSession里面的,所以我们可以认为每个请求都有自己的一级缓存,如果同一
阅读全文