自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring 源码分析

版本说明springboot 版本:v2.4.0spring核心代码分析spring核心第1 章:Environmentspring核心第2 章:BeanDefinitionRegistryspring核心第3 章:SingletonBeanRegistryspring核心第4 章:BeanFactoryspring核心第5 章:AutowireCandidateResolverspring核心第6 章:BeanPostProcessorspring核心第6-1 章:Autowire

2021-05-30 17:11:33 193

原创 【Redis 源码】7RDB持久化

当某个 key 存储的 hash 数据大小都小于 hash-max-ziplist-entries 或者 hash-max-ziplist-values 的值时。当某个 key 存储的 hash 数据的大小超过 hash-max-ziplist-entries 或者 hash-max-ziplist-values 的值时。2 byte 无符号整数,采用小端字节序编码。主要用于在二进制文件中存储下一个对象的长度,如在编码一个 key 时,使用该方法在 key 的前几个 byte 存储该 key 占用字节数。

2024-09-27 11:03:34 893

原创 【Redis 源码】6AOF持久化

RDB (快照)定期保存内存中的数据到磁盘。文件紧凑,适合备份和灾难恢复。恢复速度快,但可能丢失最后一次快照之后的数据。AOF (日志)记录每个写操作,并追加到文件中。可以设置不同的 fsync 策略来平衡性能和数据安全性。数据更完整,但文件较大,恢复速度较慢。

2024-09-27 11:02:32 1122

原创 【Redis 源码】5zskiplist跳跃表

什么是 Redis 的 ZSET(Sorted Set)Redis 的 ZSET 是一种有序集合,它结合了 Set 的唯一性和 List 的排序功能。每个元素都有一个分数(score),元素根据分数进行排序。ZSET 支持高效的插入、删除和查找操作。ZSET 的内部实现是什么ZSET 内部使用两种数据结构:跳跃表(Skip List):用于保持元素的有序性,并提供高效的插入、删除和查找操作。字典(Dictionary):用于保证元素的唯一性,并存储元素到分数的映射关系。

2024-09-27 11:01:58 645

原创 【Redis 源码】4adlist列表.md

在 Redis 中,链表是用来实现列表(list)数据类型的底层数据结构之一。链表在 Redis 中被称为。,它是一个双向链表,每个节点包含一个指向数据的指针。

2024-09-27 11:00:37 643

原创 【Redis 源码】3dict字典数据结构

Redis 使用双散列表机制来支持自动扩容。当散列表的负载因子(已使用的槽位数除以总的槽位数)超过一定阈值时,Redis 会创建一个新的更大的散列表,并逐步将旧散列表中的条目迁移到新的散列表中。这样做有两个好处:首先,它可以避免在高负载下一次性重新散列整个表所带来的性能影响;其次,它确保了散列表的负载因子保持在一个合理的水平,从而保持了良好的性能。

2024-09-27 11:00:04 1891

原创 【Redis 源码】2项目结构说明

【代码】【Redis 源码】2项目结构说明。

2024-09-27 10:58:10 520

原创 【Redis 源码】1下载与源码编译

-O0” 参数表示告诉编译器不要优化代码,防止你在 Debug 的时候, IDE 里面的 Redis 源码与实际运行的代码对应不上。在src目录下我们可以找到 编译后的文件。在 redis目录下执行make。本次下载的是6.2.5 版本。

2024-09-27 10:57:34 690

原创 spring核心第7-2 章:PropertyEditorRegistry

作用属性编辑器注册表。保存PropertyEditor,根据需要返回对应的属性编辑器。是TypeConverter的基类。继承关系示例 public static void main(String[] args) { PropertyEditorRegistrySupport propertyEditorRegistrySupport = new PropertyEditorRegistrySupport() { {

2021-05-30 17:10:11 481

原创 spring核心第7-1 章:ConversionService

作用提供类型转换服务,可以将A类型数据转换为B类型数据。主要实现与调用主要实现为ApplicationConversionService在启动springboot项目时。通过ApplicationConversionService.getSharedInstance()。向BeanFactory与Environment中设置相关对象,提供类型转换服务。我们具体可以在TypeConverter中看到具体调用过程。继承关系ConversionService类型转换服务接口。定义一下方法:

2021-05-30 17:09:35 694

原创 spring核心第7 章:TypeConverter

作用类型转换器,当通过配置文件读取的字符串类型类型需要转换为我们想到的类型时,使用该转换器。主要实现与调用主要的实现有SimpleTypeConverter调用在BeanFactory中我们创建了SimpleTypeConverter,而在其他地方需要使用时,一般都是通过BeanFactory获取。我们可以在doResolveDependency方法中进行了使用,具体见BeanFactory解析继承关系我们看到,其继承子TypeConverter与PropertyEditorRegi

2021-05-30 17:08:56 906

原创 spring核心第6-1 章:AutowiredAnnotationBeanPostProcessor

作用bean的后置处理器。解析所有关于@Autowired和@Value的注解内容。继承关系父类为:InstantiationAwareBeanPostProcessorMergedBeanDefinitionPostProcessor在BeanFactory文章我可以看到具体调用地方。所以接下来主要解析关于这两个父接口的实现。初始化 public AutowiredAnnotationBeanPostProcessor() { this.autowiredAnnotationT

2021-05-30 17:07:45 420

原创 spring核心第6 章:BeanPostProcessor

作用bean的后置处理器。在bean初始化过程中,在各个阶段允许对bean进行定制计划处理。子接口本文章主要说明BeanPostProcessor几个重要的子接口,以及他们在何时调用,同时简单说明他们他们的作用。BeanPostProcessor顶级接口,在bean完成init前后分别调用其:postProcessBeforeInitialization 和 postProcessAfterInitializationMergedBeanDefinitionPostProcessor当创建的

2021-05-30 17:07:12 281

原创 spring核心第5 章:AutowireCandidateResolver

作用自动装配的用于获取候选者与判断符合要求的策略接口。主要功能有:1、使用@Value时获取value值。2、判断当前依赖是否符合@Quelifiers的条件主要实现与调用主要实现为ContextAnnotationAutowireCandidateResolver调用在DefaultListableBeanFactory中有成员变量为AutowireCandidateResolver并且在doResolveDependency方法中调用了getSuggestedValue方法在i

2021-05-30 17:06:50 893

原创 spring核心第4 章:BeanFactory

作用提供getBean方法。可以获取所有spring的bean对象。整体实现功能为 通过BeanDefinitionRegistry提供bean定义。并且通过BeanDefinition创建、初始化、解决依赖注入bean对象。将单例对象保存在SingletonBeanRegistry中。主要子类接口的主要实现是DefaultListableBeanFactory继承关系BeanFactory定义了各种getBean 的方法ListableBeanFactory可列举的BeanFactor

2021-05-30 17:05:05 309

原创 spring核心第3 章:SingletonBeanRegistry

功能说明用于保存所以已经初始化完成的单例对象。我们使用的所有spring单例bean对象都会保存在此处。主要子类接口的主要实现是DefaultSingletonBeanRegistry继承关系SingletonBeanRegistry单例对象注册表接口定义了获取单例对象,注册单例对象、获取单例对象名称、数量等接口DefaultSingletonBeanRegistry主要方法DefaultSingletonBeanRegistry#registerSingleton(String,

2021-05-30 17:02:37 580

原创 spring核心第2 章:BeanDefinitionRegistry

功能说明用于存放BeanDefinition的地方。当beanFactory需要创建bean时,从此registry中获取beanDefinition。主要子类接口的主要实现是DefaultListableBeanFactory继承关系在此处只分析DefaultListableBeanFactory关于BeanDefinitionRegistry的实现与继承关系具体如下:BeanDefinitionRegistry主要定义的接口有:registerBeanDefinition 注册bea

2021-05-30 17:01:57 655

原创 spring核心第1 章:environment

environment功能功能说明在environment存储者spring中所有的变量信息,包括系统变量、jvm变量、以及当前程序定义的变量。同时用户可以通过变量名字获取对应的变量值,同时支持:变量值类型转换、变量占位符的解析等功能。使用实例 final ConfigurableApplicationContext run = SpringApplication.run(Main.class, args); //在applicationContex

2021-03-23 15:05:13 807

原创 ThreadPoolExecutor 线程池解析

1、ThreadPoolExecutor 功能介绍1.1 为什么要使用executor一般来说,在开发过程中,通过创建Runnable对象,然后交由相应的Thread实例去执行它们。但在大量使用多线程时会有以下问题:如果需要控制Thread的状态,需要开发相应的代码,不是特别方便。无法控制线程数量,如果线程过多,影响性能。而在Executor中,我们将 线程的创建与执行进行分离。我们只需要创建一个Runnable或者Callable对象,而具体的执行。我们只需要交给Executor就行。至于合

2021-03-17 15:23:29 262

原创 在iframe中使bootstrap的模态框在父页面弹出

在iframe中使bootstrap的模态框在父页面弹出 这几天在写项目的中,页面使用了iframe,然而在子页面中使用bootstrap的模态框时发现:弹出的模态框位置是以子页面为标准居中的,并且遮罩层也只有子页面那一部分,整个页面简直无法直视,所以思考可以可以让模态框以父页面为标准弹出,经过在网上查找资料,总结了一种解决方法。效果展示修改前页面 修改后页面 实现思路 要想使模态

2017-08-07 01:51:13 6531 5

原创 使用java发送邮箱

使用java发送邮箱以qq邮箱为例说明发送邮箱导包<!-- 发送邮件 --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.0</version> </

2017-08-04 17:23:33 412

原创 简单好用的消息通知插件toastr

简单好用的消息通知插件toastrtoastr是一款简单方便的基于jquery库的非阻塞通知提示插件,它可以直接通过参数来设置所以的样式设置,使用非常方便:目录简单好用的消息通知插件toastr目录引入核心文件效果展示示例各参数说明positionClass参数补充样式设定引入核心文件jquery.min.jstoastr.min.jstoastr.min.css 效果展示示例

2017-07-30 20:20:55 3493

原创 进程管理(上)

进程管理(上)查看用户信息:w[root@iZwz99w26fq15zuqbxgeltZ ~]# w 15:23:23 up 38 days, 22:57, 1 user, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts

2017-05-12 17:24:56 297

原创 软件包管理

软件包管理RPM软件包实例软件包实例: sudo-1.7.2pl-5.el5.i386.rpm 软件包名sudo 版本号1.7.2pl 发行号5.el5 硬件平台i386安装软件按包rpm -ivh 软件包名卸载软件按包rpm -e 软件包名强行卸载 -rpm -e --nodeps 软件包名查看是否安装rpm -q 软件包名rpm -qa

2017-04-22 16:04:00 361

原创 Shell应用技巧

Shell应用技巧查看所以shell[root@iZwz99w26fq15zuqbxgeltZ test]# cat /etc/shells/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologinbash快捷键 1命令补全 Tab 2清屏 ctrl+l 3删除命令 ctrl+u 命令历史纪录

2017-04-21 13:06:52 481

原创 linux基本命令(压缩)

压缩解压命令gzip语法:gzip 选项 【文件】压缩后文件格式: .gz特点: 1只能压缩文件 2不保留原文件[root@iZwz99w26fq15zuqbxgeltZ test]# lsuser user1[root@iZwz99w26fq15zuqbxgeltZ test]# gzip usergzip: user is a directory -- ignore

2017-04-21 11:42:15 371

原创 linux基本命令(文件搜索)

文件搜索命令which与whereis命令路径:usr/bin/which执行权限:所以用户语法 which 【命令名】[root@iZwz99w26fq15zuqbxgeltZ ~]# which lsalias ls='ls --color=auto' /usr/bin/ls命令:whereis[root@iZwz99w26fq15zuqbxgeltZ ~]# whereis

2017-04-21 11:17:18 244

原创 linux文件目录管理

文件目录管理查看文件与目录lsls【aAdfFhilnrRSt】 文件名ls【--color={never,auto,always}】目录ls 【--full-time】目录参数:-a :全部文件,连同隐藏文件-A:全部文件,连同隐藏文件,但不包含 . 与 ..-d : 近列出目录本身,而不是目录内的文件数据。-f :直接列出结果,而不是进行排序。-F:根据文件,目录等信息给予附加数

2017-04-10 12:55:11 263

原创 linux目录与路径

linux目录与路径相对路径与绝对路径 绝对路径:路径的学法一定由根目录/写起。如/user/share/doc。 相对路径:目录不由/写起。如/user/share/doc要切换到/user/share/man时可以写为“cd  ../man”,这样就是行对路劲的写法。目录的相关操作 .  代表此层目录 .. 代表上层目录 -代表前一个工作目录 ~代表

2017-04-10 11:47:29 668

原创 Linux目录

Linux目录Linux目录标准FHS四个类型FHS三层目录标准:FHS 规格 可分享 不可分享 不可变 /user(软件放置处) /opt(第三方软件) /etc(配置文件) /boot(开机与内核文件) 可变动的 /var/mail(用户邮箱)/var/spoot/news(新闻组) /var/run(程序相关)/var/lock(程序相关)上表为代表

2017-04-03 22:23:32 375

原创 Linux的文件权限与目录配置

Linux的文件权限与目录配置Linux的文件权限与目录配置用户与用户组文件存放位置文件权限概念修改文件属性与权限chgrpchownchmod目录与文件的权限意义权限对目录的重要性用户与用户组文件存放位置在linux系统中,默认的情况下所有系统上的账号与一般身份用户,还有root账号的相关信息,都是记录在/etc/passwd这个文件内。至于个人密码则记录在/etc/shado

2017-04-03 19:30:29 289

空空如也

空空如也

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

TA关注的人

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