自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (3)
  • 收藏
  • 关注

原创 java最优建树算法

java快速构建树形结构

2023-10-10 17:00:48 522 1

原创 华为OD机试(B卷)

有幸接到了华为OD的机试邀请,三道算法题。比较幸运的是,最后一题,也相对来说不算太难,没有抽到动态规划,还是花了大约90分钟,三道题都通过了,最终拿到了满分;第一题第二题都相对来说比较基础,由于平时也没有刷题的习惯,用自己的常规思路都能解决;第三题,也算中规中矩,直接构建对象,递归就解决了。

2023-07-04 20:01:46 840

原创 Redis 原理

SDS具备自动扩容能力,如果要在原字符串基础上追加字符串,首先会申请内存空间,如果新字符串小于1M,则新空间为扩展后字符串的两倍+1;如果添加的元素超过了存储范围,intSet会自动升级编码格式,找到合适大小,并按照新的编码方式及元素个数扩容数组,倒序依次将数组中的数据拷贝到扩容后的正确位置,并将待添加的数据放入数组末尾。与HashMap思想类似。因为intSet采用数组,内存空间是连续的,在数据量较大的时候,是不方便的,查找效率也会下降,所以适合在数据量较小时使用。具备类型升级机制,可以节省内存空间;

2023-06-23 14:30:03 1134

原创 Redis 分布式缓存

AOF文件会比RDB文件大,而且AOF中会记录对同一个key的多次写操作,但是只有最后一次的才有意义,通过执行。单点的Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离;,简单来说就是把内存中的所有数据都记录到磁盘上,当Redis实时故障重启后,从磁盘读取快照文件,恢复数据。命令,可以让AOF文件执行重写功能,用最少得命令达到相同的效果。Redis也会在触发阈值时自动去重写AOF文件,阈值也可以在。AOF默认是关闭的,AOF的命令记录频率也可以通过修改。

2023-06-21 22:59:19 762

原创 Redis 分布式锁实现

判断成功之后,产生了阻塞(如:Full GC时),导致多线程安全问题,解决方法可以使用 Lua 脚本,保证以上操作的原子性。Redis提供了 Lua 脚本功能,在脚本中编写多条命令,确保多条命令执行时的原子性。Redisson是一个在 Redis 基础实现分布式工具的集合,包括分布式锁。unlock 中判断锁标识的操作和释放锁的操作不是原子操作,如果。分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。确保只能有一个线程获取锁,确保添加锁和添加过期时间的原子性。超时释放:获取锁时添加一个超时时间。

2023-06-18 22:43:59 288

原创 SpringMVC 底层实现及执行流程详解

自定义注解编写参数解析器//是否支持某个参数 @Override public boolean supportsParameter(MethodParameter parameter) {= null;

2023-06-17 16:13:57 135

原创 SpringBoot 自动配置原理详解

SpringBoot启动会先加载第三方的配置类,然后加载本项目的配置类这样并不合理,加载顺序应该先加载本项目的,然后再加载第三方的才合理,这时,只需要将 ImportSelector 接口改为 DeferredImportSelector 接口即可;上述实现的 ImportSelector 接口,如果第三方的配置类和本项目的配置类重名,配置类会被覆盖,SpringBoot启动会先加载第三方的配置类,然后加载本项目的配置类,所以最后加载的是本项目的配置类;需要注意的是,如果配置类是内部类,需要用。

2023-06-17 15:18:22 220

原创 SpringBoot 启动过程详解

SpringBoot 主要分为两大步:1、执行SpringApplication 构造;2、执行 run() 方法。主要分为 12 个步骤和 7 大事件。

2023-06-15 22:16:34 214

原创 Dubbo 高级特性

mock=force:return null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用,用来屏蔽不重要服务不可用时对调用方的影响。Failover Cluster:失败重试,默认值,当出现失败,重试其它服务器,默认重试 2 次,使用 retries 配置,一般用于读操作。可以,因为dubbo服务消费者在第一次调用时,会将服务提供方的地址缓存到本地,以后在调用的时候则不需要访问注册中心。超时时间,可以配置在生产方或消费方,建议配置在生产方,因为上产方对接口的响应时间更熟悉。

2023-06-03 19:32:55 87

原创 MySQL InnoDB引擎

undo log和redo log 记录物理日志不一样,他是逻辑日志,可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,他就会记录一条对应相反的update记录,当执行rollback时,就可以从undo log中的逻辑记录读取到相应的内容,进行回滚。Master Thread:核心后台线程,负责调度其它线程,还负责将缓冲池中的数据异步刷新到磁盘中,保持数据的一致性,还包含脏页的刷新、合并插入缓存、undo页的回收。

2023-05-21 20:51:04 51

原创 MySQL 锁

分类全局锁:锁定数据库中所有的表表级锁:每次操作锁住整张表行级锁:每次操作锁住对应的行。

2023-05-21 00:21:35 46

原创 MySQL SQL优化

count(主键):InnoDB引擎会比遍历整张表,把每一行的主键id值都取出来,返回给服务层,服务层拿到主键后,直接按行进行累加。页可以为空,也可以填充一半,也可以填充100%,InnoDB规定每页至少存储2行数据,所以每个页包含了2-N行数据,根据主键排序。count()是一个聚合函数,对于返回的结果集,一行行的判断,如果count函数的参数不是null,累计值加一,最后返回。count(1):InnoDB引擎遍历整张表,但不取值,服务层对返回的每一行,放一个数字 “1” 进去,直接进行累加。

2023-05-14 21:26:47 41

原创 MySQL索引

介绍:索引(index)是帮助mysql高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构一模中方式引用指向数据,这样就可以在这些数据结构上实现高级查询算法。索引优缺点优:提高检索效率,降低数据库IO成本,通过索引列对数据进行排序,降低数据排序成本,降低cpu消耗缺:索引需要占空间;索引降低了查询速度,同时降低了表的更新速度,如:insert、update、delete。

2023-05-14 21:25:59 55

原创 MySQL存储引擎

存储引擎就是存储数据、建立索引、更新、查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也被称为表类型。Memory引擎的表数据存储在内存中,由于受到硬件问题,或断点问题的影响,只能将这些表作为临时表或缓存使用。文件:xxx.idb 代表的是表名,InnoDB引擎的每一张表都会对应这样一个。高可靠、高性能的通用存储引擎,MySQL5.5之后默认使用InnoDB。foreign key约束,保证数据的完整性、正确性。可以注意到索引是属于存储引擎层的。连接层、服务层、引擎层、存储层。

2023-05-14 21:19:45 36

原创 MySQL基础

连接查询:内连接:相当于A∩B外连接:左外连接:查询左表所有数据,以及两张表交集部分右外连接:查询右表所有数据,以及两张表交集部分自连接:当前表与自身的连接查询,自连接必须使用表别名子查询。

2023-05-12 22:06:40 54

原创 RabbitMQ 发布确认高级

由于不明原因导致rabbitmq重启,在rabbitmq重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。生产者发送消息到交换机,交换机收到消息后,会触发确认后的回调方法。none:默认值,禁用发布确认correlated:发布消息到交换机后触发回调方法simple:有两种效果:第一种效果与correlated一样;其二,单个确认,在发布消息成功后使用rabbitTemplate,调用waitForConfirms或 waitForConfirmsOrDie方法等待broker节点返回发

2022-12-04 15:04:23 452

原创 RabbitMQ 延迟队列

延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。

2022-11-27 17:54:51 357

原创 RabbitMQ 死信队列

死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer将消息投递到 broker或者直接到queue里了,consumer 从 queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。

2022-11-27 17:51:42 187

原创 RabbitMQ 交换机

RabbitMQ消息传递模型的思想是:生产者生产的消息从不会直接发送到队列;相反,生产者只能将消息发送到交换机,一方面,他接收到生产者的信息,另一方面,将他们推入队列。直接(direct)、主题(topic)、标题(headers)、扇出(发布/订阅:fanout)

2022-11-27 17:47:57 194

原创 RabbitMQ 发布确认

生产者将信道设置成confirm模式,一旦信道进入confirm模式所有在该信道上发布的消息都将会指派一个唯一ID(从1开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一ID),这样生产者就知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么消息会在将消息写入磁盘后发出;broker回传给生产者的确认消息中delivery-tag域包含了确认消息的序列号,此外broker也可以设置basic.ack的multiple域,表示这个序列号之前的消息都已经

2022-11-27 17:44:42 171

原创 RabbitMQ Work Queues模式

工作队列模式,又称任务队列。主要思想是避免立即执行资源密集型任务,而不得不等待它完成,相反我们安排任务在之后执行,我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。

2022-11-27 17:43:09 193

原创 RabbitMQ-Hello World模式

RabbitMQ hello world模式

2022-11-27 17:38:59 254

原创 消息队列简介

MQ(message queue),本质上是一个队列FIFO先进先出,只不过该队列存放的内容是message;还是一种夸进程通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游的消息通信服务,使用了MQ之后,消息发送上游只需要依赖MQ,不依赖其它服务。

2022-11-27 17:33:47 373

原创 jwt教程学习

JWT1、什么是JWT官网:https://jwt.io/学习资料:https://baobao555.tech/archives/40JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于作为JSON对象在各方之间安全地传输信息。可以验证和信任该信息,因为它是数字签名的。jwt可以使用一个秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。简单来说,就是通过JSON形式作为Web应用中的令牌,用于在各方面之间安全的将

2022-05-26 15:56:33 618

原创 shiro

shiro1、主流安全框架shiro:Apache开源,简单易用,集成没有限制 https://shiro.apache.org/,shiro学习资料:https://www.w3cschool.cn/shiro/andc1if0.html,https://www.bilibili.com/video/BV1uz4y197Zm?spm_id_from=333.999.0.0Spring Security:Spring家族,只能集成在Spring家族相关框架中。2、解决问题:权限管理权限管理包括:

2022-05-18 23:41:02 446

原创 easy mock本地部署和nuxt项目初始化

easy mock本地部署和nuxt项目初始化一、说明:easy-mock和nuxt项目创建初始化用到的nodejs版本有差异,前者需要低版本,后者初始化需要高版本;所以需要nvm管理nodejs版本安装nvm,下载地址https://github.com/coreybutler/nvm-windows/releases下载nvm-setup.zip解压后直接安装二、安装nodejs通过 nvm install (版本号) 例如:nvm install v16.14.2,下图为我下载的两个版本

2022-04-08 23:38:10 3824

原创 word 显示左侧导航条(目录条)

word 显示左侧导航条(目录条)

2022-04-06 10:05:06 422

原创 html获取路径后面的参数,前端将 Date 转化为指定格式的String

1. html获取路径后面的参数function getQueryString(name){ let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); let r = window.location.search.substr(1).match(reg); if(r!=null)return unescape(r[2]); return null;}2. 前端对Date的扩展,将 Date 转化为指定

2022-03-22 20:52:45 830

原创 Spring 定时任务@Scheduled注解 cron属性解析

Scheduled注解 cron属性解析CronTrigger配置完整格式为: [秒][分] [小时][日] [月][周] [年]一、使用说明序号说明是否必填允许填的值允许通配符1秒是0~59, - * /2分是0~59, - * /3时是0~23, - * /4日是1~31, - * ? / L W5月是1-12或JAN-DEC, - * /6周是1-7或SUN-SAT, - * ? / L W

2022-03-17 22:41:42 3518

原创 青橙项目问题Cannot access defaults field of Properties和A child container failed during start

青橙项目问题Cannot access defaults field of Properties和A child container failed during start

2022-02-14 19:34:25 5643 1

原创 idea 2021.2 创建maven、spring项目

项目构建环境:提示:这里可以添加学习目标win10 、idea2021.2.2构建步骤:1 新建文件夹Spring用来存储今后创建的项目2 Idea 打开选择刚才创建的Spring文件夹3 Spring 右键–>New–>Module4 Maven–>选择SDK–>Next5 项目名称–>Finish6 File–>Project Structure7 Project–>选择SDK–>Project compiler out

2022-01-28 15:17:02 672

原创 java 统计字符串中每个字符出现的次数

问题java 统计字符串中每个字符出现的次数实现方式:字符串基本操作代码如下: public static void main(String [] sgrs){ /** * 如:"1王235868asda17394利3@@89我0我2342";统计出每个字符出现的次数。 */ String str="1王235868asda17394利3@@89我0我2342"; int[] count=new int[str.leng

2021-08-04 21:36:19 22438

原创 C#网上书店登录界面实现——正则表达式(软工笔记)

C#网上书店登录界面实现——正则表达式一、实现环境二、界面要求三、具体实现1、界面布局2、运行效果3、登录实现代码:4、注册实现代码四、遇到的问题及待解决的问题一、实现环境C#、window10、vs2019数据库SQL Server (SQLEXPRESS)二、界面要求1 、连接本地数据库2 、用户名:用户名可以是数字、下划线(不能开头)、字母、汉字。3 、密码:密码不能小于8或大于16,密码必须包含数字和字母。4 、用到的命名空间:using System.Data.SqlClien

2021-06-11 08:13:58 624

原创 C#小型书店管理系统

C#小型书店管理系统一、开发技术和环境二、系统设计三、系统实现1.注册登录2.管理3.查询4.录入修改5.删除6.销售7.管理员显示四、总结一次非常简单的课程设计,资源链接如下:课程设计源代码、论文:https://download.csdn.net/download/QQwli/14801274一、开发技术和环境(1)开发环境开发系统:Windows 10操作系统;开发工具:Visual Studio 2010开发语言:C#(2)数据库SQL Server (SQLEXPRESS)(3

2021-01-19 14:38:11 5165 6

原创 Python豆瓣电影评论的爬取及词云显示

Python豆瓣电影评论的爬取及词云显示课程设计论文链接前言开发工具、核心库系统相关技术介绍系统分析与设计系统功能模块组成实现功能和目标爬取模块设计爬取过程中下一页的处理窗口界面设计系统实现爬取电影信息模块实现爬取评论实现词云模块实现系统开发总结全部代码附录课程设计论文链接课程设计论文链接:https://download.csdn.net/download/QQwli/14066030前言小白简单的课程设计,功能简单。本文通过利用 Python 爬虫分类中的聚焦型爬虫网络系统以及python窗

2021-01-09 15:31:42 1037

java数据结构与算法.pdf

包含了各种数据结构和算法(java)的实现方式和详解(图解),包括单双链表、环形链表(约瑟夫问题)、栈、后缀表达式、中缀表达式转后缀表达式、迷宫问题、八大排序算法、多种查找算法、哈希表、二叉树实现以及操作、赫夫曼编码、图、KMP算法、贪心算法、普里姆算法、迪杰斯特拉、弗洛伊德等算法

2022-01-04

java笔记初学者入门基础

javase、javaee入门基础,包括java语言基础、多线程、io、集合、异常等等的学习

2022-01-04

Python豆瓣电影评论的爬取及词云显示论文(含代码)

非常简单的一次课程设计

2021-01-09

空空如也

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

TA关注的人

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