- 博客(32)
- 收藏
- 关注
原创 Redis消息队列
所谓解耦,举一个生活中的例子就是:快递员(生产者)把快递放到快递柜里边(Message Queue)去,我们(消费者)从快递柜里边去拿东西,这就是一个异步,如果耦合,那么这个快递员相当于直接把快递交给你,这事固然好,但是万一你不在家,那么快递员就会一直等你,这就浪费了快递员的时间,所以这种思想在我们日常开发中,是非常有必要的。注意:当我们指定起始ID为$时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题。
2025-07-21 23:10:29
655
原创 黑马点评中的秒杀优化
秒杀业务的优化思路是什么?先利用Redis完成库存余量、一人一单判断,完成抢单业务再将下单业务放入阻塞队列,利用独立线程异步下单基于阻塞队列的异步秒杀存在哪些问题?内存限制问题数据安全问题。
2025-07-19 16:42:40
663
原创 java中的接口
java提供了一个关键字interface,用这个关键字我们可以定义出一个特殊的结构:接口注意:接口不能创建对象;接口时用来被类实现的,实现接口的类称为实现类一个类可以实现多个接口(接口可以理解为干爹),实现类实现多个接口,必须重新完全部接口的全部抽象方法,否则实现类需要定义成抽象类。
2025-07-15 20:18:14
150
原创 Redis的分布式锁
基于Redis的分布式锁实现思路:利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁特性:利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性利用Redis集群保证高可用和高并发特性。
2025-07-14 23:21:36
582
原创 黑马点评Redis的锁(普通)
假设线程1过来查询库存,判断出来库存大于1,正准备去扣减库存,但是还没有来得及去扣减,此时线程2过来,线程2也去查询库存,发现这个数量一定也大于1,那么这两个线程都会去扣减库存,最终多个线程相当于一起去扣减库存,此时就会出现库存的超卖问题。
2025-07-14 14:25:03
623
原创 this关键字和父类的区别
变量的使用:就近原则this :代表的是本类的对象方法中的this:哪一个对象调用此方法,那么this代表的是哪一个对象1、this关键字是什么?this就是一个变量,可以用在方法中,哪个对象调用方法,this就指向哪个对象2、this关键字在实际开发中常用来干啥?用来解决对象的成员变量与方法内部变量的名称一样时,导致访问冲突问题。
2025-07-09 00:18:04
96
原创 java中的多态
运算符:instanceof 属于java中的一个关键字、使用格式:对象名 instanceof 数据类型介绍:判断一个对象是否属于一种引用数据类型,结果是一个boolean类型的值。
2025-07-08 00:21:49
127
原创 lambda表达式
1、Lambda表达式是JDK 8新增的一种语法形式;作用:用于简化匿名内部类的代码写法2、Lambda表达式格式(被重写方法的形参列表)->{被重写方法的方法体代码。注意:Lambda表达式只能简化函数式接口的匿名内部类3、什么是函数式接口?有且仅有一个抽象方法的接口注意:将来我们见到的大部分函数式接口,上面都可能会有一个@FunctionalInterface的注解,有该注解的接口就必定是函数式接口函数式接口:接口的实现类只需要重写一个抽象方法,那么此接口是函数式接口。
2025-06-27 15:43:45
244
原创 java中的泛型
JAVA推出泛型以前,程序员可以构建一个元素类型为Object的集合,该集合能够存储任意的数据类型对象,而在使用该集合的过程中,需要程序员明确知道存储每个元素的数据类型,否则很容易引发ClassCastException异常。Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数。类型安全消除了强制类型的转换E - Element (在集合中使用,因为集合
2025-06-25 22:20:24
382
原创 Redis发生的缓存穿透,缓存雪崩,缓存击穿详解
什么是缓存:举个例子:越野车,山地自行车,都拥有"避震器",车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪;Cache),就是数据交换的,俗称的缓存就是由于其被修饰,所以随着类的加载而被加载到,作为本地缓存,由于其又被修饰,所以其引用(例3:map)和对象(例3:new HashMap())之间的关系是固定的,不能改变,因此不用担心赋值(=)导致缓存失效;
2025-06-23 00:00:14
737
原创 @Autowired和@Resource的区别
在 Spring 项目里,推荐优先使用@Autowired,因为它是 Spring 原生的注解,并且支持更多的特性。而在需要与 Java EE 规范兼容的场景中,@Resource是更好的选择。
2025-06-19 14:16:26
440
原创 把sql文件导入DateGrip
这时候会弹出一个窗口,你点击左上角加号选择要导入到那个库。采用拖动大法,将sql文件直接拖到DateGrip中。
2025-06-18 17:27:13
361
2
原创 Redis的Java客户端
RedisTemplate可以接收任意Object作为值写入Redis:只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果是这样的缺点:可读性差内存占用较大因此我们可以采用自定义RedisTemplate的序列化方式,代码入下@Bean// 创建RedisTemplate对象// 设置连接工厂// 创建JSON序列化工具// 设置Key的序列化// 设置Value的序列化// 返回这里采用了JSON序列化来代替默认的JDK序列化方式。
2025-06-18 14:59:24
1008
原创 VMware虚拟机和linux配置
虚拟网络编辑器-->NAT模式-->子网IP:设置为192.168.100.0在命令行中输入ip addr ,就会出现当前linux ip地址如果没有出现ip地址,这个可能ens33网卡没有正常的激活导致的,自己手动激活一下就行了,输入./start-ens33.shll 这个命令是查看当前文件夹下的文件信息
2025-06-07 23:42:53
112
原创 java中的方法签名
在 Java 中,是一个重要的概念,用于唯一标识类中的一个方法。方法签名包含以下核心信息(:返回值类型、修饰符(如public)、异常声明(如。
2025-05-29 00:07:50
436
原创 苍穹外卖里面公共字段自动填充
对于为什么自定义注解AutoFill,是因为在mapper中不止update和insert,因此在写切入点的拦截那种不能限定完全,而在update,insert的方法上加入注解就可以限定死了。
2025-05-25 20:34:44
159
原创 动态SQL
useGeneratedKeys="true" 主键回写 启动数据库自动生成主键功能 仅适用于自增主键或数据库自动生成的主键。通过条件判断、循环等逻辑,灵活生成不同场景下的 SQL,解决传统 JDBC 中硬编码 SQL 的繁琐问题。keyProperty="id" 主键属性映射 将生成的主键值映射到实体类的哪个属性。parameterType="Dish"该查询接收一个Dish类型的对象作为参数。resultType="Dish" 表示查询结果会映射到Dish类型的对象。
2025-05-23 17:51:16
183
原创 GET请求 POST请求 PUT请求 DELETE请求
用于从服务器请求数据,通常用于获取资源或查询数据。GET请求的参数通常附在URL的查询字符串中使用场景:常用于从服务器获取数据参数调用:GET请求的参数附加在URL后面或者cookie,以 “?” 分隔 URL 和参数部分,参数之间使用 “&” 连接。
2025-05-22 13:43:28
240
原创 IoC思想
代码书写状态:耦合度偏高解决方案:使用对象时,在程序中不要主动new对象,转为外部提供对象就由此提出了控制反转思想对象的创建控制权由程序转移到外部,这种思想为控制反转。
2025-05-20 18:21:21
144
原创 在项目中jwt令牌使用
JWT全称 JSON Web Token (官网:https://jwt.io/),定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。简洁:是指jwt就是一个简单的字符串。可以在请求参数或者是请求头当中直接传递。自包含:指的是jwt令牌,看似是一个随机的字符串,但是我们是可以根据自身的需求在jwt令牌中存储自定义的数据内容。如:可以直接在jwt令牌中存储用户的相关信息。
2025-05-19 23:33:14
1037
原创 maven的作用
自动解决jar包管理,通过pom.xml配置文件声明所需依赖(如库,框架),Maven会自动从中央仓库或本地仓库下载并管理这些依赖,避免手动下载和版本冲突问题。标准化构建流程:内置生命周期(如清理,编译,测试,打包,部署登),开发者只需执行简单命令,即可触发整个流程。支持多仓库类型 ,包括中央仓库(全球唯一),本地仓库(开发者电脑存储)和私服(企业内部共享仓库)。多模块管理:支持将大型项目拆分为子模块每个模块独立管理依赖和构建,提升复杂项目的可维护性。
2025-05-18 17:14:00
139
原创 Apache POI
Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。各种业务系统导出Excel报表。银行网银系统导出交易明细。
2025-05-11 22:22:51
167
原创 HTTP超文本传输协议
响应协议:服务器将数据以响应格式返回给浏览器。响应行 、响应头 、响应体响应行(以上图中红色部分):响应数据的第一行。响应行由协议及版本响应状态码状态码描述组成协议/版本:HTTP/1.1响应状态码:200状态码描述:OK响应头(以上图中黄色部分):响应数据的第二行开始。格式为key:value形式http是个无状态的协议,所以可以在请求头和响应头中设置一些信息和想要执行的动作,这样,对方在收到信息后,就可以知道你是谁,你想干什么响应体(以上图中绿色部分): 响应数据的最后一部分。
2025-05-10 13:24:21
944
原创 WebSocket
服务器长期维护长连接需要一定的成本 各个浏览器支持程度不一 WebSocket 是长连接,受网络限制比较大,需要处理好重连。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建。WebSocket并不能完全取代HTTP,它只适合在特定的场景下使用。WebSocket 是基于 TCP 的一种新的。HTTP和WebSocket底层都是TCP连接。4). 股票基金报价实时更新。WebSocket支持。WebSocket是。的,基于请求响应模式。3). 体育实况更新。
2025-05-07 20:22:35
118
原创 JDK保姆集按照教程
在开学习java,我们先要明白JDK和JRE是什么,JDK是面向开发者的工具包,提供了完整的java开发环境,包括编译器,调试工具,性能分析工具等,以及运行环境(JRE),JRE仅用于运行已编译的Java程序,包含JVM和核心类库,但不包含开发工具。没错JDK里面已经包含了JRE,因此我们就下载JDK就行了。
2025-05-06 18:30:15
406
原创 后端接收数据,几种注解的用法
相信大家在学习用Springboot框架写一个项目时,会遇到controller层接口,在接收前端传递来的参数,有的前面加了@RequestBody 也有加了@PathVariable等注解,今天我就为大家来解释一下它们的作用,及在什么情况使用。
2025-05-05 15:36:15
322
原创 @RestController注解作用及其衍生用法
Controller注解的类能够处理客户端发来的请求,Spring框架会自动扫描带有@Controller注解的类,把它们注册为控制器bean,并处理这些类中定义的请求映射。@RestController("userOrderController")这个手动指定了控制器在Spring应用上下文种的Bean的名称,可以使用这个名称注入。它的主要功能:把控制器方法返回的对象直接写入HTTP响应体,也就是说返回的对象会被转换成合适的格式(像JSON,XML)并发送到客户端。
2025-05-04 17:01:54
356
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人