- 博客(37)
- 收藏
- 关注
原创 Springboot @Validate @Valid 基于复杂嵌套对象的参数校验示例
【代码】Springboot @Validate @Valid 基于复杂嵌套对象的参数校验示例。
2024-07-23 16:04:21
866
2
原创 LeetCode-杨辉三角公式
在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a225ff66061e4076924e3299b81b98d5.png。
2024-01-05 16:12:26
578
原创 Mybatis一级缓存与二级缓存
此后若再次执行相同的查询,结果就会从缓存中获取。二级缓存是 mapper 级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。A查询了某商品库存为10件,并将10件库存的数据存入缓存中,之后被客户买走了10件,数据被delete了,但是下次查询这件商品时,并不从数据库中查询,而是从缓存中查询,就会出现错误。用户发起查询请求,查找某条数据,sqlSession 先去缓存中查找,是否有该数据,如果有,读取;
2023-08-10 01:49:03
205
原创 JWT的初步说明
当签发的 jwt 保存在客户端,客户端一直在操作页面,按道理应该一直为客户端续长有效时间,否则当 jwt有效期到了就会导致用户需要重新登录。JWT 主要用于用户登录鉴权,JWT (全称:Json Web Token)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。因为一旦签发了一个 jwt,在到期之前始终都是有效的,如果用户信息发生更新了,只能等旧的 jwt 过期后重新签发新的 jwt。便于传输,JWT结构简单,字节占用小。
2023-08-08 18:07:56
482
原创 作为注册中心erueka 和 nacos 的区别有哪些
nacos使用的是netty和服务直接进行连接,属于长连接。CAP理论中C代表一致性,A表示高可用,P代表分区容错性。eureka是使用定时发送和服务进行联系,属于短连接。
2023-08-08 14:27:12
263
原创 MySQL 的 crash-safe浅谈
MySQL作为当下最流行的开源关系型数据库,有一个很关键和基本的能力,就是必须能够保证数据不会丢。那么在这个能力背后,MySQL是如何设计才能保证不管在什么时间崩溃,恢复后都能保证数据不会丢呢?有哪些关键技术支撑了这个能力;上面演示了一条更新语句的详细执行过程,接下来咱们通过解答问题,带着问题来剖析这个crash-safe的设计原理。
2023-07-23 16:31:05
163
原创 AQS-初探
AQS是 ( Abstract Queued Synchronizer )是一个抽象的队列同步器,通过维护一个共享资源状态( Volatile Int State )和一个先进先出( FIFO )的线程等待队列来实现一个多线程访问共享资源的同步框架。AQS 为每个共享资源都设置一个共享资源锁,线程在需要访问共享资源时首先需要获取共享资源锁,如果获取到了共享资源锁,便可以在当前线程中使用该共享资源,如果获取不到,则将该线程放入线程等待队列,等待下一次资源调度,具体的流程如图所示。
2023-07-20 18:05:15
77
原创 Redis过期策略和内存淘汰机制
当 Redis 的内存超过最大允许的内存之后,Redis 会触发内存淘汰策略,这和过期策略是完全不同的两个概念,经常有人把二者搞混,这两者一个是在正常情况下清除过期键,一个是在非正常情况下为了保证 Redis 顺利运行的保护策略。我们在新增 Redis 缓存时可以设置缓存的过期时间,该时间保证了数据在规定的时间内失效,可以借助这个特性来实现很多功能。对于已经过期的数据,Redis 将使用两种策略来删除这些过期键,它们分别是惰性删除和定期删除。
2023-07-20 14:12:56
107
原创 java--线程池初解
第二点好处是,由于谁提交任务谁就要负责执行任务,这样提交任务的线程就得负责执行任务,而执行任务又是比较耗时的,在这段期间,提交任务的线程被占用,也就不会再提交新的任务,减缓了任务提交的速度,相当于是一个负反馈。核心线程大小表示上述图中银行一般情况下开设的窗口(线程数),阻塞队列相当于银行的侯客区,当线程数大于侯客厅+核心线程数的数量时,线程数继续增大时,线程池数的使用依次增加,直至达到最大线程池的大小,达到最大处理线程数还增加的话就会使用拒绝策略!第一点新提交的任务不会被丢弃,这样也就不会造成业务损失。
2023-07-17 01:52:25
99
原创 java锁升级
其实在 JDK 1.6之前,synchronized 还是一个重量级锁,是一个效率比较低下的锁,但是在JDK 1.6后,Jvm为了提高锁的获取与释放效率对(synchronized )进行了优化,引入了 偏向锁 和 轻量级锁 ,从此以后锁的状态就有了四种(无锁、偏向锁、轻量级锁、重量级锁),并且四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级,也就是说只能进行锁升级(从低级别到高级别),不能锁降级(高级别到低级别),意味着偏向锁升级成轻量级锁后不能降级成偏向锁。
2023-07-16 01:00:44
1003
原创 JMM内存模型浅谈
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,因此Java1.5版本对其进行了重构,现在的Java8仍沿用了Java1.5的版本。
2023-07-15 22:37:01
69
原创 MVCC和行锁的实现
MVCC,即多版本并发控制,是InnoDB机制中的一种用来解决读写冲突的无锁并发机制。我们可以简单认为MVCC式行锁的变种。在表锁中我们的读写是阻塞的,基于提升并发性能的考虑,MVCC一般读写是不阻塞的(很多情况避免了加锁的操作)。MVCC解决了脏读和不可重复读的问题,但是在某些情况仍然没有解决幻影读的问题。这就是为什么我们要引入接下来的邻键锁Next-Key Locks。
2023-07-15 16:55:44
181
原创 数据库事务
如A给B转账,不论转账的事务操作是否成功,其两者的存款总额不变(这是业务逻辑的一致性,至于数据库关系约束的完整性就更好理解了)。(完成的事务是系统永久的部分,对系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持)● ACID是数据库事务执行的四大基本要素,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。○ 隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
2023-07-14 15:54:58
84
原创 分布式数据库的演化过程
随着业务的发展,数据量与数据访问量不断增长,很多时候应用的主要业务是读多写少的,比如说一些新闻网站,运营在后台上传了一堆新闻之后,所有的用户都会去读取这些新闻资讯,因此数据库面临的读压力远大于写压力,那么这时候在原来数据库Master的基础上增加一个备用数据库Slave,备库和主库存储着相同的数据,但只提供读服务,不提供写服务。单库的性能已经不能再支持业务的发展。通常刚开始的时候,应用的数据比较少,也不会很复杂,所以应用只有一个数据库,数据库中的表是一张完整的表,这也是我们刚开始接触数据库时的数据库形态。
2023-07-12 16:51:03
61
原创 MVCC的实现
当你执行select *之后,在A与B事务中都会返回4条一样的数据,这是不用想的,RR隔离级别下当执行普通的select查询时,innodb默认会执行快照读,相当于就是给你目前的状态找了一张照片,以后执行select 的时候就会返回当前照片里面的数据,当其他事务提交了也对你不造成影响,和你没关系,这就实现了可重复读,那这个照片是什么时候生成的呢?使用MVCC多版本并发控制比锁定模型的主要优点是在MVCC里, 对检索(读)数据的锁要求与写数据的锁要求不冲突, 所以读不会阻塞写,而写也从不阻塞读。
2023-07-12 15:57:23
123
转载 free -m
在linux用free -m 查看linux内存使用情况。-m 参数就是用 M显示内容使用情况。这时回显会出现几个结果。 一、从系统层面分析 Mem:内存的使用情况总览表。 totel:机器总的物理内存 单位为:M used:用掉的内存。 free:空闲的物理内存。 注:物理内存(totel)=系统看到的用掉的内存(used)+系统看到空...
2019-05-22 20:32:19
194
转载 Lucene 原理浅白
Apache官方定义:Lucene是一个高效的,基于Java的全文检索库;开源免费 先来谈什么叫全文检索? 全文检索主要针对非结构化数据,主要有两种方法: (1)、顺序扫描法 比如我们想要在成千上万的文档中,查找包含某一字符串的所有文档,顺序扫描法就必须逐个的扫描每个文档,并且每个文档都要从头看到尾,如果找到,就继续找下一个,直至遍历所有的文档;这种方法通常应用于数据量较...
2019-04-11 16:01:32
128
原创 判断float 和double类型是否为空
1.float float f=0.000; bool bl=f>-0.000001&&f<0.000001; 2.double double a; if(a-0.0<1e-6) return true;else return false;...
2019-04-11 10:57:13
21244
原创 微信小程序Java后台接口获取用户信息(这是只写进后台java接口部分)
本次案例主要是以springmvc为框架的java接口;controller/*** 功能描述: 微信用户数据解密用户敏感数据-存入user库中 * @return* (复杂方法描述主要逻辑 – 可选)* 创建时间:2018年6月16日 下午5:21:21 * 修改人 修改时间 ...
2019-04-11 10:56:26
685
转载 搜索引擎Elasticsearch与Solr对比
Elasticsearch简介*Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。但是Luce...
2019-04-11 10:37:14
342
原创 java try-catch-finally的执行顺序
public class TryCatchFinallyTest { public static void main(String[] args) { demo01(); System.out.println(String.valueOf(demo02())); System.out.println(String.valueOf(demo03...
2017-12-10 17:50:41
208
原创 map的四种循环方式
public class MapTest { public static void main(String[] args) { Map<String ,String> map = new HashMap<String, String>(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); map.put("4", "value4"); //map的四种循环方式 Set<Strin
2017-12-08 15:19:09
2318
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人