- 博客(27)
- 收藏
- 关注
原创 BitMap
把每一个bit位对应当月的每一天,形成了映射关系。用0和1标示业务状态,这种思路就称为是利用string类型数据结构实现,因此最大上限是512M,转换为bit则是2^32个bit位。
2026-01-05 21:29:21
198
原创 GEO数据结构
GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member):计算指定的两个点之间的距离并返回:将指定member的坐标转为hash字符串形式并返回:返回指定member的坐标:指定圆心、半径,找到该圆内包含的所有member,并按照与圆心之间的距离排序后返回。6.2以后已废弃。
2026-01-05 19:14:59
177
原创 Feed流(关注推送)
关注推送也叫做Feed流,直译为投喂。为用户持续的提供“沉浸式”的体验,通过无限下拉刷新获取新的信息。本例中的个人页面,是基于关注的好友来做Feed流,因此采用Timeline的模式。本文是通过推模式来实现关注推送功能。
2026-01-04 18:15:49
242
原创 基于Redis的分布式锁
在jvm内部只有一个锁监视器,所以只有一个线程可以获取锁,可以实现线程间的互斥但是,当有多个jvm的时候,就会有多个锁监视器,就会有多个线程获取到锁,这样就没有办法实现多jvm进程之间的互斥了要解决这个问题,就不能再用jvm的锁监视器了,而是在jvm外有一个共同使用的锁监视器:满足分布式系统或集群模式下多进程可见并且互斥的锁。
2026-01-03 21:28:21
954
原创 解决缓存相关问题(缓存穿透、缓存雪崩、缓存击穿)
是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。:缓存空值思路:当用户查询一个不存在的内容时,在redis不命中,在数据库也不命中,这个时候就在redis里存放一个有有效期的空值;当下一次访问且命中redis时,如果命中的是空值,则直接结束访问并返回错误。
2026-01-03 21:28:10
306
原创 基于Redis实现登录功能
本文使用的是的登录方式,其中验证码是通过在控制台输出,并没有真的发送到手机上(太麻烦,主要目的还是学习使用Redis)重点是看思路,而不是具体的代码实现。
2026-01-02 21:06:35
387
原创 SpringDataRedis
SpringBoot已经提供了对SpringDataRedis的支持,使用非常简单:1.引入依赖2.配置文件host 和 password 需要改成自己的database默认为0,即1号库3.注入RedisTemplate4.编写测试。
2026-01-02 21:06:15
217
原创 Redis安装
基于Linux系统来安装Redis,此处选择的Linux版本为CentOS7(虚拟机上),我用了FinalShell来连接,方便操作。
2026-01-01 20:15:02
907
原创 Swagger
使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及页面。官网:Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,对Swagger进行了封装,简化了相应的操作。
2026-01-01 20:10:50
317
原创 Docker
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。html:放置一些静态资源conf:放置配置文件如果我们要让Nginx代理我们的静态资源,最好是放到html目录;如果我们要修改Nginx的配置,最好是找到conf下的nginx.conf文件。但遗憾的是,容器运行的Nginx所有的文件都在容器内部。所以我们必须利用数据卷将两个目录与宿主机目录关联,方便我们操作。在上图中(conf应该在volumes内,图中有误):confhtmlNginx容器内部的conf目录和。
2025-12-28 09:46:47
923
原创 Linux
作用: vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本语法: vi fileName说明:1). vim是从vi发展来的一个功能更加强大的文本编辑工具,编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。2). 要使用vim命令,需要我们自己完成安装。
2025-12-27 20:58:00
820
原创 ThreadLocal
ThreadLocal为每个线程提供一份单独的存储空间,具有线程隔离的效果,不同的线程之间不会相互干扰。中,解析完当前登录员工ID,将其存入ThreadLocal(用完之后需将其删除)。1.定义ThreadLocal操作的工具类,用于操作当前登录员工ID。3.在AOP程序中,从ThreadLocal中获取当前登录员工的ID。作用:一般用于获取当前登录员工的id等信息。返回当前线程所对应的线程局部变量的值。设置当前线程的线程局部变量的值。移除当前线程的线程局部变量。
2025-12-23 19:45:55
225
原创 Spring AOP
AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。作用:将日志、事务、权限校验等非核心的横切逻辑,与业务逻辑解耦,无需侵入业务代码即可统一处理,实现代码复用、降低耦合,简化非核心逻辑的管理。人话:那些所有业务都要做的事,不用在每个业务代码里重复写,AOP 能在不改动业务代码的前提下,自动在执行业务前 / 后帮你把这些事搞定,既省代码,又方便统一管理。SpringAOP实现步骤:1). 导入依赖:在 pom.xml 文件
2025-12-23 19:41:32
883
原创 登录功能(令牌技术)
,定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。JWT的组成: (JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)第一部分:Header(头), 记录令牌类型、签名算法等。例如:{"alg":"HS256","type":"JWT"}第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等。例如:{"id":"1","username":"Tom"}
2025-12-20 20:51:16
705
原创 全局异常处理器
怎么样定义全局异常处理器?定义全局异常处理器非常简单,就是定义一个类,在类上加上一个注解,加上这个注解就代表我们定义了一个全局异常处理器。在全局异常处理器当中,需要定义一个方法来捕获异常,在这个方法上需要加上注解。通过@ExceptionHandler注解当中的value属性来指定我们要捕获的是哪一类型的异常。如果未写value属性,Spring扫描方法形参//处理异常public Result ex(Exception e){//方法形参中指定能够处理的异常类型//打印堆栈中的异常信息。
2025-12-20 19:47:00
407
原创 文件上传(阿里云OSS)
阿里云对象存储OSS(Object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。在我们使用了阿里云OSS对象存储服务之后,我们的项目当中如果涉及到文件上传这样的业务,在前端进行文件上传并请求到服务端时,在服务器本地磁盘当中就不需要再来存储文件了。我们直接将接收到的文件上传到oss,由 oss帮我们存储和管理,同时阿里云的oss存储服务还保障了我们所存储内容的安全可靠。
2025-12-19 21:27:51
670
原创 Spring事务管理
产生原因:先执行新增员工的操作,这步执行完毕,就已经往员工表emp插入了数据。执行 1/0 操作,抛出异常抛出异常之前,下面所有的代码都不会执行了,批量保存工作经历信息,这个操作也不会执行此时就出现问题了,员工基本信息保存了,员工的工作经历信息未保存,业务操作前后数据不一致。而要想保证操作前后,数据的一致性,就需要让新增员工中涉及到的两个业务操作,要么全部成功,要么全部失败。那我们如何,让这两个操作要么全部成功,要么全部失败呢?
2025-12-19 20:33:05
694
原创 PageHelper插件
其中:Pojo是自定义的一个实体类,作为查询返回的List的元素的类型;PageResult是自定义的一个返回给前端的VO,p.getTotal()是List的总长度,p.getResult()是根据page和pageSize得到的当前页的pojo集合。
2025-12-18 20:11:53
228
原创 日志技术(Logback & Slf4j)
一个流行的日志框架,提供了灵活的配置选项,支持多种输出目标。基于Log4j升级而来,提供了更多的功能和配置选项,性能由于Log4j。(Simple Logging Facade for Java)简单日志门面,提供了一套日志操作的标准接口及抽象类,允许应用程序使用不同的底层日志框架。
2025-12-18 19:57:10
348
原创 SpringBoot配置文件
那其实呢,在springboot项目当中是支持多种配置方式的,除了支持properties配置文件以外,还支持另外一种类型的配置文件,就是我们接下来要讲解的yml格式的配置文件。使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)进行属性的配置,而如果在项目中,我们需要配置大量的属性,采用properties配置文件这种。这两个配置文件的后缀名虽然不一样,但是里面配置的内容形式都是一模一样的。的配置形式,就会显得配置文件的层级结构不清晰,也比较臃肿。
2025-12-17 21:39:01
110
原创 MySQL
下载完成后我们得到的是一个压缩包,将其解压,我们就可以得到MySQL 8.0.34 的软件本体了(就是一个文件夹),我们可以把它放在你想安装的位置。稍微等待一会,如果没有出现报错信息,则证明data目录初始化没有问题,此时再查看MySQL目录下已经有data目录生成。默认情况下,连接上了MySQL数据库之后, 数据库并没有全部展示出来。,这里的1234就是指默认管理员(即root账户)的密码,可以自行修改成你喜欢的。在开始菜单中搜索cmd,以管理员身份运行,打开黑框,敲入mysql,回车。
2025-12-16 21:21:25
624
原创 Maven
下载地址:https://maven.apache.org/download.cgiMaven安装配置步骤:解压安装配置仓库配置阿里云私服配置Maven环境变量建议解压到没有中文、特殊字符的路径下。解压缩后的目录结构如下:bin目录 : 存放的是可执行命令。(mvn 命令重点关注)conf目录 :存放Maven的配置文件。(settings.xml配置文件后期需要修改)lib目录 :存放Maven依赖的jar包。(Maven也是使用java开发的,所以它也依赖其他的jar包)
2025-12-14 10:47:06
718
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1