自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 实现树形结构几种方式

【代码】Mybatis实现树形结构方式。

2024-06-03 19:08:04 339

原创 Java中解决跨域的几种方法

如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源1,用户在浏览器输入的URL中包含的协议、域名、端口都完全相同。如果有一项不同,浏览器会觉得有安全问题,从而产生跨域问题。2,如果使用Postman等开发工具进行交互是不会出现跨域问题,这是浏览器特有的限制。在后端服务添加CORS策略的配置就可以解决跨域问题。

2024-05-17 00:36:13 534

原创 RedisTemplate常用方法(超详细)

Redis常用方法

2024-05-12 00:19:15 742

原创 java八股文(全网最全)

目录第1章 面试说明 141.1 面试过程最关键的是什么? 141.2 面试时该怎么说? 141.3 面试技巧 141.3.1 六个常见问题 141.3.2 两个注意事项 151.3.3 自我介绍(控制在4分半以内,不超过5分钟) 15第2章 手写代码 152.1 冒泡排序(Bubble Sort) 152.2 快速排序(Quick Sort) 172.3 归并排序(Merge Sort) 192.4 二分查找(Binary Search) 232.5 单例模式(Binary Search) 262.5.1

2024-05-09 23:42:32 2416

原创 IDEA常用debug调试技巧

用途就是,当你在Debug调试时,你觉得此时已经没有问题了,这时可以暂时隐藏所有Debug断点,无障碍运行一次,如果有问题还要取消隐藏,不至于重新打开Debug。,当你在执行Debug一半时,发行并不能解决你的问题,这时你不需要重新关闭并打开Debug,按下此按钮,Debug调试会重新执行。,因为功能相似,放在一起讲。两个的功能都是单步进入的执行,但唯一的区别是,的按钮遇到方法时,只有当经过的方法时用户自定义的方法才会跳进去,如果是。5. 第五个,一个红色的圆圈中有一个灰色的斜杠的按钮,功能是。

2024-02-03 18:47:53 454

原创 设计模式之框架源码剖析(实战+图解)

"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。

2024-01-30 22:57:31 1799

原创 布隆过滤器介绍及实战应用(防止缓存穿透)

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。Hash面临的问题就是冲突。假设Hash函数是良好的,如果我们的位阵列长度为m个点,那么如果我们想将冲突率降低到例如 1%, 这个散列表就只能容纳m / 100个元素。显然这就不叫空间效率了(Space-efficient)了。

2024-01-27 22:27:00 623

原创 Redisson分布式锁介绍及实战应用(防止缓存击穿)

浏览器把100w请求由网关随机往下传,在集群情况下,每台服务都放行10w请求过来,这时候每台服务都用的是本地锁是跨JVM的, 列如这些服务都没有49企业,此时有几个服务进行回原了打击在DB上面,那后期把这个服务部署了N台,N台用的都是自己的锁,是锁不住的。

2024-01-24 19:51:29 562

原创 JDK8新特性(四):并行 Stream 流的使用

1, parallel 并行 Stream 流是线程不安全的;2, parallel 并行 Stream 流使用的场景是CPU 密集型的,只是做到别浪费 CPU,假如本身电脑的 CPU 的负载很大,那还到处用并行流,那并不能起到作用;3,I/O 密集型、磁盘I/O、网络I/O 都属于 I/O 操作,这部分操作时较少消耗 CPU 资源,一般并行流中不适用于 I/O密集型的操作,就比如使用并行流进行大批量的消息推送,涉及到了大量 I/O,使用并行流反而慢了很多;4,

2024-01-22 18:13:34 996

原创 JDK8新特性(三):Optional 类的使用

JDK8 新增了 Optional 类, Optional 类是一个没有子类的工具类。我们可以把 Optional 类看作是一个容器。这个容器它有两种情况:①要么有值 ②要么为null。

2024-01-22 16:58:01 880

原创 JDK8新特性(二):Stream流 collect() 方法的详细使用介绍

/1.//2.Stream不调用终止方法,中间的操作不会执行。但是,当我们对 Stream 流中的数据操作完成之后,如果需要将流的结果进行保存,方便我们接下来对结果的继续操作,该怎么办呢?Stream 流提供了一个collect()方法,可以收集流中的数据到【集合】或者【数组】中去。1.收集 Stream 流中的数据到集合中。

2024-01-22 14:50:57 1180

原创 JDK8新特性(一)集合之 Stream 流式操作

首先我们应该知道:Stream流的出现,主要是用在集合的操作上。在我们日常的工作中,经常需要对集合中的元素进行相关操作。诸如:增加、删除、获取元素、遍历。最典型的就是集合遍历了。接下来我们先举个例子来看看 JDK8 Stream流式操作出现之前,我们对集合操作的过程,从中来了解一下 JDK8 之前集合操作数据的弊端。Demo:现在有一个List集合,集合中有如下数据:"张无忌"、"周芷若"、"杨逍"、"张强"、"张三丰"、"赵敏"

2024-01-21 21:37:42 2275 1

原创 for循环以及数据库查询优化方案

三、结语本文主要优化方式,都是结合多线程进行优化并推崇用iava8的对应写法。具体iava8语法不了解的可以自行寻找资料进行学习如果数据量少的情况下用foreach的循环写法Stream流循环针对数据量大的情况下会更具优势,小数据不明显。

2024-01-18 18:15:12 2247

原创 Mysql慢查询Sql优化(超详细)

一句话说明,索引是排好序的快速查找B+树数据结构理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数 据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列 (即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含。

2024-01-17 19:01:31 886

原创 Mysql的Explain使用

id如果相同,可以认为是一组,从上往下顺序执行在所有组中,id值越大,优先级越高,越先执行关注点:id号每个号码,表示一趟独立的查询, 一个sql的查询趟数越少越好。

2024-01-17 18:37:19 898

原创 Mysql存储引擎底层剖析(详解)

一引擎1,MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5 .5之后,默认采用InnoDB引擎2、将每个表的数据和索引都放在一起放在.ibd文件中。3、InnoDB有两个表,一个是.ibd文件(存储数据和索引),一个是.frm(存储表结构,MySQL8.0时,合并在表名ibd中4、采用支持高并发,实现了四个标准的隔离级别,在REPEATED READ中通过实现间隙锁来防止幻读的出现。

2024-01-16 23:26:51 444

原创 Mysql锁机制(详解)

怎么解决脏读不可重复读幻读这些问题呢?其实有两种可选的解决方案:读操作利用多版本并发控制(MVCC),写操作进行加锁。所谓的MVCC,就是生成一个ReadView,通过ReadView找到符合条件的记录版本(历史版本由undo日志构建)。查询语句只能读到在生成ReadView之前已提交事务所做的更改,在生成ReadView之前未提交的事务或者之后才开启的事务所做的更改是看不到的。而写操作肯定针对的是最新版本的记录,读记录的历史版本和改动记录的最新版本本身并不冲突,也就是采用MVCC时,读-写操作并不冲突。

2024-01-14 20:08:02 1012

原创 Mysql事务(详解)

事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务首先再回顾一下MySQL事务的基础知识。

2024-01-13 22:38:14 844

原创 JUC介绍及底层源码分析(详解)

第五步:如果队列已满,并且线程池中的线程已达到maximumPoolSize,这个时候会执行拒绝策略,JAVA线程池默认的策略是AbortPolicy,即抛出RejectedExecutionException异常。* 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞), * 当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。线程是稀缺资源,如果无限制的创建,不仅会销耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监。

2024-01-12 21:53:45 1049 1

原创 Seata详解(二)

SELECT FOR UPDATE 语句的执行会申请 全局锁 ,如果 全局锁 被其他事务持有,则释放本地锁(回滚 SELECT FOR UPDATE 语句的本地执行)并重试,这个过程中,查询是被 block 住的,直到 全局锁 拿到,即读取的相关数据是 已提交 的,才返回;由于Seata出现时间并不长,也在不断的改进中,在实际面试中应该不会问大家比较底层的实现,同学们如果感兴趣的话,基于我们已有的源码阅读经验,可以看一下Seata的源码,它如何进行事务隔离保证数据一致性,官方提供的文档并不详细;

2024-01-12 19:53:21 932

原创 Seata详解(一)

提供一种"要么什么都不做,要么做全套(All or Nothing)"机制基于单个服务单一数据库资源访问的事务,被称为本地事务(Local Transaction)

2024-01-12 19:39:16 986

原创 Mysql架构原理(详解)

调用 InnoDB 引擎接口取这个表的第一行,判断 ID 值是不是1 ,如果不是则跳过,如果是则将这行存在结果集中;调用引擎接口取“下一行” ,重复相同的判断逻辑,直到取到这个表的最后一行。真正的负责了MySQL中数据的存储和提取,对物理服务器级别 维护的底层数据执行操作,服务器通过API与存储引擎进行通信。用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将。以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存。对于有索引的表,执行的逻辑也差不多。

2024-01-12 14:58:05 842

原创 Mysql的MVCC原理剖析

mvcc

2023-02-11 18:33:10 452

原创 Linux命令lsof

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户才能运行它lsof

2022-12-08 12:29:47 128

原创 Feign服务接口调用

openFeign 是作为微服务之间调用的解决方案,是一种声明式、模板化的 HTTP 的模板,使 HTTP 请求就像调用本地方法一样,通过 openFeign 可以替代基于 RestTemplate 的远程服务调用,并且默认集成了 Ribbon 进行负载均衡。本文对Feign主要的工作流程做了一些简单的分析,其实关于Feign的原理还有很多细节值得深入探究。另外关于Feign的相关配置本文都省略了,后续将陆续更新Feign使用中的坑以及Feign的各种配置。

2022-10-16 12:47:41 7548

原创 Java集合源码解析

HashMap的底层实现原理是面试中出现频率非常高的一道面试题,本文将对HashMap的底层实现原理做一个简要的概况和总结,便于复习。一、对于Map集合存储结构的理解首先介绍以HashMap为典型代表的Map集合的存储结构① Map中的key:无序的、不可重复的,底层使用Set集合存储key;key所在的类要重写equals()和hashCode() 。② Map中的value:无序的、可重复的,底层使用Collection集合存储value;value所在的类要重写equals() 。.

2022-05-26 19:29:09 548 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除