自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(663)
  • 资源 (1)
  • 收藏
  • 关注

原创 Python安装失败,报0x80070643-安装时发生严重错误。

0x80070643-安装时发生严重错误 Python

2024-06-18 16:51:28 993

原创 Chrome/Edge浏览器视频画中画可拉动进度条插件

平时看一些视频的时候,一般需要编辑一些其他的东西,于是开启画中画,但是画中画没有进度条,需要倒退前进得回到原视频,很麻烦。这里推荐插件Separate Window,可实现画中画进度条拉动。

2024-06-09 22:58:43 4015 3

转载 Redis数据结构之listpack

当数据量较小时,Redis 会优先考虑用 ziplist 来存储 hash、list、zset,这么做可以有效的节省内存空间,因为 ziplist 是一块连续的内存空间,它采用一种紧凑的方式来存储元素。但是它也有缺点,比如查找的时间复杂度高、内存分配的开销、连锁更新的风险等。

2024-05-31 15:46:10 81

转载 redis的一个Hyperloglog占12kb详细解析

redis中有一种数据格式,hyperloglog,本文就此数据结构的作用、redis的实现及其背后的数学原理作一个整理。当然本文不包含任何数学公式,而是希望用直观的例子帮大家理解。主要内容如下:1.业务场景2.使用效果3.数学原理4.redis的实现原理。

2024-05-30 23:43:50 90

原创 Github单个文件或者单个文件夹下载插件

有时候我们在github上备份了一些资料,比如pdf,ppt,md之类的,需要用到的时候只要某个文件即可,又不要把整个仓库的zip包下载下来,毕竟有时文件太多,下载慢,我们也不需要所有资料,那么就可以使用到GitZip插件来实现该需求。

2024-05-30 14:19:43 530

转载 AopContext.currentProxy()

原来在springAOP的用法中,只有代理的类才会被切入,我们在controller层调用service的方法的时候,是可以被切入的,但是如果我们在service层 A方法中,调用B方法,切点切的是B方法,那么这时候是不会切入的,解决办法就是如上所示,在A方法中使用((Service)AopContext.currentProxy()).B() 来调用B方法,这样一来,就能切入了!

2024-05-27 00:02:35 139

原创 Spring的FactoryBean多例问题

FactoryBean默认创建是多例的,这里以mybatis的Mapper接口为例,

2024-05-21 15:30:28 415

原创 Spring 单例bean 不被 GC 的真正原因

传统项目是通过把ioc容器设置到tomcat的应用上下文来保证不会被gc的,而springBoot项目是通过注册一个钩子函数,使IOC容器和根类加载器加载的类Runtime的静态属性关联从而不被gc。另外springboot项目也会像传统项目那样把ioc容器设置到tomcat应用上下文,为啥这个不能保证不被gc呢?这是因为内嵌tomcat是ioc容器的一个属性,它是随ioc生而生,随ioc死而死的。如下:另外多例bean是会被回收的,因为它不像单例那样会用一个Map保存起来,而是用的时候新建。

2024-05-19 00:53:05 464

转载 Java嵌入式tomcat整合SpringMVC

本文将介绍如何使用Java的方式启动tomcat,并整合Spring MVC,做到就像Springboot使用main方法启动,就可以访问controller资源的效果;/*** @createDate: 2021年12月01日 22:02**///添加包扫描路径创建 MyWebApplicationInitializer 类实现 WebApplicationInitializer接口,重写onstartup方法/**

2024-05-17 22:26:54 80

原创 URL入参出参请求头可配置化

通过spring的Spell表达式解析变量的参数值,参数名定义为${XXX},在解析参数值后,将${XXX}替换成#XXX以匹配Spell表达式。

2024-05-14 15:57:20 288

原创 Mybatis之Sqlsession、Connection和Transaction三者间的关系

最近在看mybatis的源码,搜到这篇文章Sqlsession、Connection和Transaction原理与三者间的关系,debug之后发现有不少疑惑,于是按照原文整理了一下,记录下debug中的一些困惑点。Mybatis。

2024-05-03 21:57:27 1922 3

转载 @ConditionalOnBean在方法上失效

先判断是不是通过@bean在方法上注入的bean,是的话推断它的类型type并返回赋值,此时会导致后面因为这里不为空且找不到指定的type而match不成功。当在类上添加注解@ConditionalOnBean上时候,由于不满足条件,返回空集。而不会导致type找不到问题。

2024-04-24 13:30:28 198

转载 解析springboot自动配置springmvc的秘密之DispatcherServlet

从debug调试的结果来看这个for循环中getServletContextInitializerBeans返回的集合当中果然包含了DispatcherServletRegistrationBean,那么根据之前的分析,最终必然会从其顶级父接口。的onStartup方法层层调用,一直到==》ServletRegistration中的addRegistration方法,将DispatcherServlet添加到tomcat的上下文。

2024-04-23 19:07:23 496

转载 细说Spring Boot初始化DispatcherServlet

在Spring Boot框架未出现之前,要开发一个基于Spring MVC框架的项目,通常需要在Java web项目的描述符文件web.xml-- 初始化Spring IoC容器 -->-- 手动配置DispatcherServlet -->-- 配置DispatcherServlet拦截路径,让所有Web请求都经过DispatcherServlet -->

2024-04-23 15:48:57 203

转载 SpringFactoriesLoader机制实例详解

SpringFactoriesLoader 工厂加载机制是 Spring 内部提供的一个约定俗成的加载方式,与 java spi 类似,只需要在模块的 META-INF/spring.factories 文件中,以 Properties 类型(即 key-value 形式)配置,就可以将相应的实现类注入 Spirng 容器中。Properties 类型格式:key:是全限定名(抽象类|接口)value:是实现,多个实现通过 **逗号** 进行分隔。

2024-04-23 13:55:35 189

转载 Spring Boot 自动装配流程(源码在哪里实现自动装配)

Spring Boot源码在哪里读取自动配置的类的?Spring Boot源码又在哪里把自动配置的类注入到IOC容器的?

2024-04-23 13:30:19 55

转载 SpringCloud + Nacos配置文件加载顺序和优先级详解

在微服务架构中,合理地管理和理解配置文件的加载顺序与优先级对于确保应用的稳定性和灵活性至关重要。特别是在使用 Spring Cloud Alibaba Nacos 作为配置中心的场景下,这一点显得尤为重要。本文将基于一个具体的 bootstrap.yml 配置示例,深入探讨这些概念,并介绍如何通过 Nacos 配置实现本地配置的优先级设置。

2024-04-22 15:58:48 1346

转载 SpringCloud 中的父子容器

中,提到了 SpringBoot 在启动时,会触发相关一系列监听器,监听器各司其职,做一些初始化预处理操作。SpringBoot创建的 Spring容器是最核心的容器,也是使用最多的Spring容器。创建的对象会有3种类型,Servlet,Reactive,和默认。如果引入了 FeignClient,则会实例化一个容器工厂,以服务名称为key,value为Feign 和 Ribbon配置类容器,配置隔离,父容器则都为。对象,再次执行run方法,所以启动流程会执行两遍,只是读取的配置文件和配置类不同。

2024-04-22 15:31:11 130

转载 【Spring Boot 源码学习】BootstrapContext的实际使用场景

本篇Huazie通过介绍的实际使用场景,并演示了引导上下文在这些场景的实际使用,加深了大家对于的启动引导过程的了解,为后续的源码分析打下基础。后续的博文,Huazie就将从的run方法入手,开始介绍的运行流程,敬请期待!

2024-04-22 14:13:54 98

转载 SpringBoot中初始化Tomcat以及Tomcat运行原理

SpringBoot的创造简化了我们创建项目和运行项目的工作。我们不必再像SpringMVC时代那样,将项目先打包成jar包,然后放入Tomcat中再启动。我们可以忽略打包的操作和tomat的配置问题,编写完代码后直接启动项目即可。这一切都得益于SpringBoot的内置容器的实现。那么,SpringBoot具体是如何为我们完成了初始化Tomcat 的这一系列的操作的呢?下面我将以第一人称的学习源码视角带领大家来一起快乐分析SpringBoot的源码来学习下…

2024-04-22 12:16:11 163

转载 tomcat是如何处理http请求的?

Host容器是Engine容器的子容器,上面也说到Host是受Engine容器管理的,就是指一个虚拟主机,比如我们在访问具体jsp页面URL中localhost就是一个虚拟主机,其作用是运行多个应用,并对这些应用进行管理,其子容器是Context,而且一个主机还保存了主机的相关信息。Container是容器的父接口,用于封装和管理Servlet,以及具体处理Request请求,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。

2024-04-22 11:43:00 29

转载 配置DispatcherServlet类时load-on-startup标签作用

HttpServletBean 主要做一些初始化的事情,将web.xml中的配置参数设置到servlet中。比如servlet标签的子标签init-param标签中的参数;FrameworkServlet 将Servlet与Spring容器上下文关联;也就是初始化FarmeworkServlet属性webApplicationContext,这个属性代表springmvc上下文,它有个父类上下文;DispatcherServlet 初始化各个功能的实现,比如异常处理,视图处理,请求映射等功能;

2024-04-22 11:05:19 41

转载 volatile怎么通过内存屏障保证可见性和有序性?

小陈:老王,上一篇你引出了volatile底层是通过内存屏障来解决可见性和有序性问题的。首先我想问一下什么是内存屏障?内存屏障啊,本质上也是一种指令,只不过它具有屏障的作用而已。小陈:额,这怎么说...老王:首先内存屏障是一种指令,无论是在JAVA内存模型还是CPU层次,都是有具体的指令对应的,是一种特殊的指令。小陈:嗯嗯,它是一种特殊的指令。还是不明白......小陈:然后呢?老王:然后这种指令具有屏障的作用所谓屏障,也就是类似关卡,类似栅栏,具有隔离的作用。

2024-04-16 22:28:38 72

转载 CAS单点登录原理

至此,CAS登录的整个过程就完毕了,以后有时间总结下如何使用CAS,并运用到项目中。

2024-04-16 18:37:41 98

转载 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用

本文笔者详细介绍了Java普通对象以及数组类型对象的内存布局,以及相关对象占用内存大小的计算方法。以及在对象内存布局中的实例数据区字段重排列的三个重要规则。以及后边由字节的对齐填充引出来的false sharding问题,还有Java8为了解决false sharding而引入的@Contented注解的原理及使用方式。为了讲清楚内存对齐的底层原理,笔者还花了大量的篇幅讲解了内存的物理结构以及CPU读写内存的完整过程。最后又由内存对齐引出了压缩指针的工作原理。CPU访问性能。

2024-04-16 17:14:22 400

转载 聊聊Netty那些事儿之从内核角度看IO模型原创

当我们熟悉了select的原理后,就很容易理解内核给我们提供的select API了。从select API中我们可以看到,select系统调用是在规定的超时时间内,监听(轮询)用户感兴趣的文件描述符集合上的可读可写异常三类事件。select传递给内核监听的文件描述符集合中数值最大的文件描述符+1,目的是用于限定内核遍历范围。select监听的文件描述符集合为,那么maxfdp1的值为5。对可读事件感兴趣的文件描述符集合。对可写事件感兴趣的文件描述符集合。对可写事件感兴趣的文件描述符集合。这里的。

2024-04-16 16:25:53 41

转载 MySQL 8.0 新特性解读(下)

作者:马文斌MySQL爱好者,任职于蓝月亮(中国)有限公司。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。上一篇主要讲了第一部分:功能增强,感兴趣的亲请点击【

2024-03-20 12:51:14 94

转载 MySQL中having和where的区别及应用详解

WHERE子句用于在执行查询之前筛选行,而HAVING子句用于在执行聚合查询后筛选结果集。WHERE出现在FROM子句之后,GROUP BY子句之前;而HAVING出现在GROUP BY子句之后、ORDER BY子句之前。WHERE可以使用比较操作符和逻辑操作符来指定过滤条件,而HAVING不仅可以使用比较操作符和逻辑操作符,还可以使用聚合函数。

2024-03-20 10:21:50 185

转载 mysql实现分组取每组前几名

将数据按照用户进行分组,并根据城市和amount进行排序,取出每个城市排名前3的用户数据。需求:按category分组,查出achievement最高的每组的前三名。

2024-03-20 10:09:10 1541

转载 MySQL 8.0 新特性解读(上)

目录1.1-所有系统表更换为InnoDB引擎1.2-DDL原子化1.3-DDL秒加列1.4-公用表表达式(CTE:Common Table Expression)1.5-默认字符集由latin1变为utf8mb41.6-Clone插件1.7-资源组1.8-角色管理1.9-多值索引1.10-函数索引1.11-不可见索引1.12-新增降序索引1.13-SET_VAR 语法1.14-参数修改持久化1.15-innodb select for update跳过锁等待1.16-group by 不再隐式排序1.17-

2024-03-19 22:30:33 320

转载 MySQL在线DDL原理

MDL锁,读读不互斥,读写、写写互斥。3. 我们常说的 Online DDL,其实是从 DML 操作的角度描述的,如果 DDL 操作不阻塞 DML 操作,那么这个 DDL 就是 Online 的。,在 5.6 的基础上又增加了一些新的特性,比如:增加了重命名索引支持,支持了数值类型长度的增大和减小,支持了 VARCHAR 类型的在线增大等。默认情况下,MySQL就是支持online的DDL操作的,在online的DDL语句执行的过程中,MySQL会尽量少使用锁的限制,我们不需要特殊的操作来启用它。

2024-03-19 19:48:23 245

转载 MySQL|什么情况下拓展字段长度会锁表?

如果修改字段的长度,导致字段的字节长度无法使用 1 byte表示,得使用2个byte才能表示,比如从 240 修改为 256 ,如果在默认字符集为utf8mb4的情况下,varchar(60) 修改为 varchar(64),则DDL需要以copy模式,也即会锁表,阻塞写操作。字符串的字段是以字节为单位存储的,utf8 一个字符需要三个字节,utf8mb4 一个字符需要4个字节。t1 表的字符集为utf8mb4,初始字段长度为20 ,80个字节,可以使用1byte表示。看看MySQL 官方文档。

2024-03-19 13:58:07 220

转载 为什么要有哨兵?

Redis 在 2.8 版本以后提供的哨兵(Sentinel)机制,它的作用是实现主从节点故障转移。它会监测主节点是否存活,如果发现主节点挂了,它就会选举一个从节点切换为主节点,并且把新主节点的相关信息通知给从节点和客户端。监控、选主、通知。哨兵节点通过 Redis 的发布者/订阅者机制,哨兵之间可以相互感知,相互连接,然后组成哨兵集群,同时哨兵又通过 INFO 命令,在主节点里获得了所有从节点连接信息,于是就能和从节点建立连接,并进行监控了。1、第一轮投票:判断主节点下线。

2024-03-19 11:27:03 48

原创 Mysql8和Mysql5加锁规则的细微不同

范围查询,两者唯一索引和普通所以的规则还是一样的,区别在主键索引,对于

2024-03-17 21:30:26 906

转载 Mysql 死锁案例8-更新辅助索引与删除主键导致的死锁

死锁,其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发同学都会在工作过程中遇见。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。

2024-03-15 20:14:53 59

转载 Mysql 死锁案例7-并发更新索引列导致的死锁

事务1更新一个不存在的记录,锁住间隙事务2更新一个存在的记录的索引列,插入意向锁与事务1的间隙锁冲突阻塞事务1再更新一个存在的记录的索引列,意向插入锁与事务2的临键锁冲突

2024-03-14 11:30:59 103

原创 Mysql 死锁案例6-并发 insert on duplicate key 导致的死锁

mysql 5.7.12 ,事务隔离级别RRBEGIN;SHOW ENGINE INNODB STATUS 死锁日志。

2024-03-14 01:18:04 714

转载 Mysql 死锁案例5- 并发insert 唯一键冲突导致的死锁

死锁其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发朋友都会在工作过程中遇见。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。(以前案例都基于Mysql 5.7.12 事务级别RR)二 背景知识2.1 insert 锁机制在分析死锁案例之前,我们先学习一下背景知识 insert 语句的加锁策略。我们先来看看官方定义:相信大部分的DBA同行都知道在事务执行insert的时候会申请一把插入意向锁(Insert Intention Lock)。

2024-03-13 23:18:25 477

原创 Mysql 死锁案例4-delete 相邻记录导致死锁

这里其实也是间隙锁和意向插入锁冲突死锁,delete与update加锁逻辑差不多。加了3把锁,索引c间隙锁(5,10),主键索引记录锁id=5,索引c临键锁(0,5]查看锁信息 SHOW ENGINE INNODB STATUS。注意where条件的c是普通索引。

2024-03-13 17:10:36 712

转载 MySQL数据页与B+树的关系

MySQL 一行记录是怎么存储的?MySQL数据页和B+树的关系;行格式,索引

2024-03-13 11:17:04 78

3DSMax2010注册机

注册机好用

2012-11-22

空空如也

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

TA关注的人

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