- 博客(45)
- 收藏
- 关注
原创 炸裂!!!图解RabbitMQ/交换机/队列/Java代码深入理解
RabbitMQ简介及Spring集成应用 RabbitMQ是一个基于Erlang开发的高性能消息中间件,采用AMQP协议,具有高吞吐量特性。其工作流程包括:消息序列化、UDP连接建立、交换机路由、队列存储和消费者反序列化处理。Spring通过AMQP依赖简化了RabbitMQ集成,提供RabbitTemplate发送消息和@RabbitListener接收消息的功能。配置需注意交换机和队列的存在性,避免消息丢失。典型应用包括Work队列模型,支持多消费者处理消息。核心端口为5672(协议)和15672(管
2025-06-12 22:19:45
201
原创 Java代码实现生产者消费者问题
用 Java 实现的经典生产者-消费者问题的代码,使用的是 wait() 和 notify() 方法实现线程间通信。
2025-05-23 21:31:12
158
原创 代码讲解Java线程转换
Java线程的生命周期主要包括新建、就绪、运行、阻塞和死亡五个状态。新建状态发生在使用new Thread()创建线程对象后,但在调用start()方法之前。调用start()后,线程进入就绪状态,具备运行资格,但实际运行取决于操作系统调度。Java中的Thread.State.RUNNABLE状态统称了“就绪”和“运行”两种状态,不区分线程是否正在执行。当线程获得CPU时间片时,进入运行状态,执行run()方法。阻塞状态包括同步阻塞、等待和超时等待,这些状态均由运行状态进入,恢复运行需先进入就绪状态。线程
2025-05-23 17:29:43
492
原创 JUC/多线程 :提升性能与解决并发问题
现代的计算机CPU往往性能都比较高,那么如果我们的计算机是单线程的,那么处理单任务的速度肯定是很快的。3>实现Callable接口,重写call方法(具有返回值,线程运行结果-FutureTask->管理结果 ),创建Thread对象,开启线程。2>实现Runnable接口(implements->写run方法),重写run方法,创建Thread对象,开启线程。插入/插队线程,插入到当前线程之前/换句话说就是当前线程进入另一个线程的等待线程池,等待唤醒。设置线程优先级(0-10,数字越高,优先级越高。
2025-05-18 09:45:20
275
原创 CSRF(cross-site request forgery)跨域请求伪造
CSRF 当我们在成功登录一个网站后,会将后端返回的cookie数据进行存放,每一次访问该域名都会将cookie存放在请求头,也就相当于用户登录凭证,但这种同域自动携带cookie存在一种问题 那就是当恶意网站也进去请求时,同样可伪造成正在登录的用户。那能获取本地存储(localStorage)和会话存储(sessionStorage)的数据吗。会话存储仅在当前tab中有效,tab关闭我们的数据也就随之丢失了。本地存储长期存在我们的浏览器,及时浏览器关闭也不会丢失。该请求携带cookie的数据。
2025-04-29 11:35:58
254
原创 spring-事务管理
想要添加事务管理,直接在你想要添加的地方类头或方法头添加@Transactional。注意修饰符必须为public,我们要让异常抛出,为不是捕捉异常。
2024-11-29 08:29:28
251
1
原创 Maven进阶
直接依赖间接依赖路径冲突同一个配置文件 相同坐标 不用版本 最后配置版本生效路径优先 谁层级高 谁是生效依赖声明优先 层级相同,看谁先声明可选依赖optionnal --不想给隐藏当前工程所依赖的资源 隐藏后对应的资源将不具有传递性排除依赖exclusions --- 不想要排除依赖时隐藏当前资源对应的依赖关系。
2024-11-03 10:35:40
344
原创 Spring中@Import和@ComponentScan注解差异
Import无论导入的该类是不是一个bean,都会自动将该类配置成一个bean,并解析里面的bean[类中的带有bean注解的方法才会装入到spring容器]。[配置类Configure 会被Spring容器自动注册为一个bean]ComponentScan则只有在该类是一个bean时才会进入该类,并解析,将其中bean装入容器中。
2024-11-01 11:21:35
470
原创 Spring整合Mybatis过程
通过配置扫描路径,Spring 会自动为每个 Mapper 接口生成代理对象,并将其注册为 Bean,从而使得我们可以在其他组件中直接注入并使用。当我们直接调用spring整合mybatis后的dao层方法 可以直接调用这是因为spring会通过拦截器自动拦截并将你的方法调用转换为对应的 SQL 执行。代理模式的使用使得我们在调用DAO接口方法时,实际上是调用MyBatis生成的代理类方法,这个方法内部会利用XML或注解配置的SQL来查询数据库并返回结果。在 Spring 和 MyBatis 整合时,
2024-10-31 11:13:17
397
原创 SpringMVC配置
SpringMVC技术与Servlet技术功能相当 开发效率高(好多共性的东西都封装好了,是对Servlet的封装,核心的DispatcherServlet最终继承自HttpServlet)SpringMVC基于java实现MVC模型的轻量级web框架运行步骤 2.对tomcat注册springmvc配置 [方法1] 声明[AnnotationConfigWebApplicationContext]同时对所需请求bean进行扫描[@ComponentScan("com.zz
2024-10-29 15:52:23
259
原创 Spring注解开发
Spring核心功能就是IOC, 其就是将Bean初始化到容器中,其中Bean是如何加载到容器 有两种方法 -> Spring XML 和Spring 注解为了省略XML文件过多的固定配置 我们可以创建一个类 并在类头注解@
2024-10-28 18:08:07
271
原创 Mybatis
帮助程序猿与数据库的交互操作步骤 利用MAVEN导入Mybatis依赖 在resources下创建mybatis-config xml文件编写映射器Mapper1. 创建xml文件 我们可以把这个文件看作一个对象 里面有我们相应的操作2.在进行相应操作前 我们需要有一个类 其中的属性应该与我们的表中的字段名相同查 若数据库字段名与所定义的类属性名不对应 则需要建立一个映射·--- --- 利用对
2024-10-28 17:18:06
269
原创 Java反射技术
Method m1 = aClass.getMethod("方法名", 参数类型1.class, 参数类型2.class...);返回类型 result = (返回类型)m1.invoke(类名, 参数1, 参数2);//获取对象所有方法 不包含父类方法 返回数组。//获取所有公有方法 包含父类方法 返回数组。将我们的class文件读取到内存中 注意对于类的加载只进行一次。
2024-10-28 10:45:14
385
原创 Spring框架
方便整合其他框架[Mybatis, SpringMVC, SpringBoot, SpringCloud,Redis...]4.IOC容器基本概念;把对象的创建过程和使用统一交给我们的spring进行管理-不需要开发者new。5.IOC底层实现技术:1.解析xml 2.工厂模式 3.反射技术。降低JavaEE api开发使用的难度[封装]1.核心组件IOC[]容器 Aop面向切面编程。方法的解耦 简化开发。--- bean底层实现原理 ---2.工厂模式[降低代码的耦合]3.反射[降低代码的耦合]
2024-10-27 16:20:18
227
原创 MVC架构模式/Java
MVC是一个架构模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。他们各自处理自己的任务。
2024-10-26 09:56:45
245
原创 JDBC实现对数据库的操作
/注意其中注册驱动的代码可省略不写 通过SPI技术会直接加载到mysql驱动类,自动将mysql驱动类注册到DriverManager里。注册[mysql]驱动 告诉你的java,你要连接的是什么牌子的数据库。获取对象[专门执行sql操作的对象]
2024-10-19 11:33:02
129
原创 Java修饰符
Private 仅自己所在的类可用,同一个包中的任何类都不可用。Proteced 不同包的子类可用,实例化对应属性不可。Default 同一个包的中的所有类都可用。Public 不同包的所有类都可用。
2024-10-18 08:32:24
245
原创 Tomcat/Servlet生命周期
loadOnStartup>=0,其中数字越低优先级越高 优点:响应时间快,客户端第一次访问时无需创建Servlet类 缺点:浪费空间资源,有些项目可能客户端不会访问。 loadOnStartup=-1,默认值 优点:不浪费资源,只在访问时创建 缺点:当客户第一次访问该项目时,需要客户等待创建 进行初始化工作...j加载配置文件...创建连接
2024-10-17 08:38:29
176
原创 越狱/快速幂/Java/取模问题
/n个位置 第1个位置的可能性为m 第i个位置的可能性为m-1 -> m*(m-1)^(n-1)一定不要给n进行取模运算,因为整个运算式中没有n的参与,对n取模将导致错误!//容斥定理 冲突总数 = m^n - m*(m-1)^n-1。//n个位置 有m^n中排列的可能性。
2024-10-16 09:37:06
139
原创 HTTP(超文本传输协议-HyperText Transfer Protocol)
http是万维网(www)通信的基础,设计目的即是确保客户端与服务器之间的通信,HTTP 是为了提供一种发布和接收 HTML 页面的方法,通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。(二) 响应response。3xx:重定向(服务器给你调到新的位置)4xx:客户端请求语法错误或无法完成。(一)请response。1xx:请求接收正在处理。5xx:服务器代码错误。200:请求响应成功。
2024-10-15 14:43:22
133
原创 操作系统(OS):第二章-进程的描述与控制
前趋图有向无循环图(偏序) 描述进程之间的前后执行顺序 ...{(p1,p3),(p2,p3),(p3,p4)}初始节点 无前驱节点终止节点 无后继节点程序顺序执行。
2024-06-16 16:53:15
191
原创 操作系统(OS) :第一章-操作系统引论
P:最大程度利用我们的计算机硬件(计算机),2.让计算机不再复杂化(用户),3.扩展计算机(与外层链接),4.兼容不同地区,时代标准(群体)。优:缓解了人机速度矛盾 缺:资源利用率很低。优:资源利用率很高 缺:不提供人机交互。..网络操作阶段...分布式操作阶段...个人计算机操作阶段.....优:提供人机交互 缺:不能优先处理紧急任务。P:多个进程可以‘同时’访问,比如磁盘。(一)硬实时:必须严格遵守时间规定完成任务。(二)软实时:可以偶尔违反时间规定。
2024-06-12 21:01:58
226
原创 Leetcode/买卖股票的最佳时机\Python\状态机
一开始我想的是每一天的三种操作,但可以发现每一天的操作的取值受上一天是否有无股票的限制。dp[i][0]表示该天最后没有股票的收益 dp[i][1]表示该天有股票的收益。其实就在于该天有没有股票的两种状态来得到最大的收益。这个依靠状态建立的dp,有个很牛逼的名字--状态机。
2024-05-29 21:54:16
363
1
原创 Leetcode\1191. K 次串联后最大子数组之和\Python
k > 2,那么此时需要思考其中跨越的子数组是否可以推广到第k个arr。然而本题的关键在于数组串联,那么我们就不应该局限与原始数组arr。红线代表两个数组间的子数组,为正,绿线即负数组。若k=1,按照常思路即可。若依次合并后更大,则更新。
2024-05-21 15:45:17
308
1
原创 第十五届蓝桥杯\数字串个数\Python
2) 小蓝喜欢数字 3 和 7 ,所以数字字符串中必须要有 3 和 7 这两个数字。1) 小蓝不喜欢数字 0 ,所以数字字符串中不可以出现 0;请问满足题意的数字字符串有多少个?这个数字会很大,你只需要输出其。对 10 9 + 7 取余后的结果。
2024-05-18 17:51:31
764
原创 洛谷\P1873 [COCI 2011/2012 #5] EKO / 砍树\二分\Python题解
【代码】洛谷\P1873 [COCI 2011/2012 #5] EKO / 砍树\二分\Python题解。
2024-04-09 20:16:26
615
1
原创 洛谷\P3842 [TJOI2007] 线段\Python\动态规划
【代码】洛谷\P3842 [TJOI2007] 线段\Python\动态规划。
2024-04-05 17:06:12
512
1
原创 洛谷\P1049 [NOIP2001 普及组] 装箱问题\动态规划\Python
【代码】洛谷\P1049 [NOIP2001 普及组] 装箱问题\动态规划\Python。
2024-04-02 15:46:31
289
1
原创 洛谷\P3817 小A的糖果\贪心\Python
那么在修改两个相邻的数时,我们要减小的是最后面的数,只有这样后面的数相加才会更小(对比修改前面的数)首先我们要想保持相邻两个数不大于x。
2024-03-30 15:31:09
409
2
原创 牛客\我不是大富翁\Python题解\动态规划
来源:牛客Q:Rabbit\rm\mathcal RabbitRabbit 拿到了一张环形的大富翁地图,地图被平均划分为了 nnn 个地块,地块的编号以 111 为起点,顺时针进行排布。即 111 号地块的顺时针方向依次为 222, 333, …\dots… 号地块;111 号地块的逆时针方向依次为 nnn, n−1n-1n−1, …\dots… 号地块(由于是环形的,所以 111 号地块与 nnn 号地块相邻,如下图所示)。
2024-03-08 21:23:21
1224
1
原创 Leetcode\322. 零钱兑换\Python题解\动态规划\完全背包
如果没有任何一种硬币组合能组成总金额,返回。,表示不同面额的硬币;你可以认为每种硬币的数量是无限的。计算并返回可以凑成总金额所需的。Q:给你一个整数数组。
2024-03-07 21:29:28
252
空空如也
java spring Autowired自动注入 为什么这个会报错
2024-11-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人