自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Elmer的博客

Hi~, 这里是我的技术博客,是我分享知识的小天地。涵盖了 Java 基础、数据库、中间件等知识,为编程之路筑牢根基。

  • 博客(34)
  • 收藏
  • 关注

原创 Spring---Spring的两大特点

依赖注入是一种设计模式,它通过外部容器(在这里是Spring容器)来管理对象之间的依赖关系,而不是让对象自己负责创建和管理这些依赖。这有助于降低组件之间的耦合度,使代码更加模块化和易于测试。面向切面编程是一种编程范式,它允许你将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来。Spring AOP提供了一种机制,可以让你定义切面来处理这些横切关注点。这两个特性极大地简化了Java应用程序的开发,并提高了软件的可维护性和可扩展性。Spring框架的两大核心特点是。

2024-12-14 22:14:25 359 1

原创 计算机基础---HTTP缓存机制

这些更多的缓存控制策略为开发者提供了更灵活、更准确的缓存管理方式,可以根据不同的应用场景选择合适的缓存头来控制缓存策略,提高了 HTTP 协议的性能和效率。

2024-12-10 16:08:42 478

原创 Mybatis---#{} 和 ${} 的区别是什么?

都是用来处理动态 SQL 的占位符,但是它们在处理方式和安全性上存在显著差异。,MyBatis 会生成预编译的 SQL 语句,并安全地绑定参数值。假设我们有一个简单的 SQL 查询,其中需要动态传入一个参数。的值进行适当的处理,就可能导致 SQL 注入。来避免 SQL 注入问题。的值插入到 SQL 语句中,如果没有对。,请确保你已经充分了解其可能带来的风险。这里 MyBatis 会直接将。在 MyBatis 中,

2024-12-03 13:17:03 680

原创 计算机基础---解决死锁的方法

解决死锁的方法可以从多个角度去分析,一般的情况下,有。是采用某种策略,,从而使得死锁的必要条件在系统执行的任何时间上都不满足。则是系统在分配资源时,根据资源的使用情况,从而。一般使用使得当前系统状态处于安全状态。是指系统设有,当死锁发生时,该机构能够检测死锁的发生,并精确地确定与死锁有关的进程和资源。是与检测相配套的一种措施,用于。

2024-11-30 09:14:43 943

原创 Spring---Spring,Spring MVC,Spring Boot 之间什么关系?

Spring、Spring MVC 和 Spring Boot 是 Java 开发中常用的框架,它们之间有密切的关系,但各自解决的问题和侧重点不同。总结来说,Spring 是基础框架,提供了核心功能;Spring MVC 是 Spring 的一个模块,专注于 Web 开发;而 Spring Boot 则是为了简化 Spring 应用的开发和部署而设计的框架,它集成了 Spring 和 Spring MVC,并提供了更多的便利功能。

2024-11-30 09:14:11 759

原创 JUC---JMM之三大特性、八大原子操作、happens-before原则

在 Java 内存模型(JMM)规范下,有三大特性,分别是原子性、可见性、有序性

2024-11-29 09:25:45 2622

原创 JVM---死亡对象判断方法

堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)给对象中添加一个引用计数器:这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间循环引用的问题这个算法的基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的,需要被回收下图中的 之间虽有引用关系,

2024-11-29 09:22:12 873

原创 Spring---编程式事务管理和声明式事务

优点:灵活性高,可以精确控制事务边界。缺点:增加了业务代码的复杂度。

2024-11-28 09:09:23 792

原创 设计模式---单例模式

单例模式:确保一个类只有一个实例,并提供该实例的全局访问点, 本文介绍6中常用的实现方式。

2024-11-28 09:09:01 1507

原创 Spring---SpringMVC的工作原理

什么是MVC?MVC 是,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。随着 Spring 轻量级开发框架的流行,Spring 生态圈出现了 Spring MVC 框架, Spring MVC 是当前最优秀的 MVC 框架。相比于 Struts2 , Spring MVC 使用更加简单和方便,开发效率更高,并且 Spring MVC 运行速度更快。MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架。

2024-11-27 09:23:34 440

原创 Spring---@Autowired 和 @Resource 的区别是什么?

Spring 内置的@Autowired以及 JDK 内置的@Resource和@Inject都可以用于注入 Bean。@Autowired和@Resource使用的比较多一些。

2024-11-27 09:23:18 645

原创 计算机基础---DNS的解析过程及DNS污染(DNS欺骗、DNS重定向、DNS劫持)

DNS(Domain Name System)域名管理系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议。DNS 要解决的是。在一台电脑上,可能存在浏览器 DNS 缓存,操作系统 DNS 缓存,路由器 DNS 缓存。如果以上缓存都查询不到,那么 DNS 就闪亮登场了。目前 DNS 的设计采用的是分布式、层次数据库结构,

2024-11-26 08:51:10 1081

原创 JVM---JVM组成架构

Java虚拟机一般是由多个模块一起组成的,。在Java程序启动/执行过程中,这些模块各司其职,相互配合,组成了整个Java的执行平台 - JVM。列出来的这些是从整体上涵盖了整个JVM进行划分的,而并不是从某个维度上进行划分,本篇中先对于这些进行简单介绍,后续文章中再依次进行深入分析。

2024-11-26 08:50:29 1034

原创 RabbitMQ---如何保证MQ幂等性?

一个队列对应了多个消费者,且消费者会同时收到消息,那就会出现重复消费的问题,如果我们不希望出现重复消费,我们可以给消息加一个唯一id,i到red.png](https://img-blog.csdnimg.cn/img_convert/fc4db340f2555faef0d59f0ed03e0消息消费成功后就,当字符加过redis里面去这里我们可以用red的set类型,然后每次消费之前先看看redis里面有没有该id;如果是一个队列对应多个消费者,那消费者会通过轮询来消费,也不会存在重复消费的问题;

2024-11-25 09:26:28 895

原创 Spring---Bean的生命周期

在以上的5步中,第3步是初始化Bean,在初始化前和初始化后执行的方法为“Bean后处理器”的before和after方法,通过“Bean后处理器”我们可以在初始化Bean的前后添加需要执行的代码。在“Bean后处理器”before方法之前,会检查Bean是否实现了Aware相关的接口,如果实现了接口则调用这些接口中的方法。:销毁并不是说要立马把 Bean 给销毁掉,而是把 Bean 的销毁方法先记录下来,将来需要销毁 Bean 或者销毁容器的时候,就调用这些方法去释放 Bean 所持有的资源。

2024-11-25 09:25:53 2630

原创 CAP和BASE理论

分布式系统中,多个节点之间的网络本来是连通的,但是因为某些故障(比如部分节点网络出了问题)某些节点之间不连通了,整个网络就分成了几块区域,这就叫。

2024-11-24 09:11:15 744

原创 计算机基础---Cookie、Session、Token的区别

Cookie 是一种存储在用户浏览器中的,用于保存用户信息和偏好。主要用于记住用户的登录状态、购物车内容、用户偏好等。以加入购物车为例,每次浏览器请求后 server 都会将本次商品 id 存储在 Cookie 中返回给客户端,客户端会将 Cookie 保存在本地,下一次再将上次保存在本地的 Cookie 传给 server 就行了,这样每个 Cookie 都保存着用户的商品 id,购买记录也就不会丢失了。

2024-11-24 09:10:32 5022

原创 数据库---HSQLDB使用教程详解

本学校期末的课程设计要求使用HSQLDB数据库,作为一个小众且清凉的数据库,很少人接触过,所以就出教程,展示怎么使用HSQLDB。

2024-11-23 17:57:08 3950 2

原创 计算机基础---进程间通信和线程间通信的方式

线程同步是。应该同步线程以避免关键的资源使用冲突。Lock。

2024-11-23 13:04:38 4671

原创 系统设计---RBAC模型与ABAC模型

RBAC 即。

2024-11-23 13:04:14 1290

原创 RabbitMQ---如何保证消息的可靠性?

但在某些特殊情况下,这会导致消息积压,比如短时间内大量的消息来到MQ,就会造成消息积压。一旦出现消息堆积问题,RabbitMQ的内存占用就会越来越高,直到触发内存预警上限。由于消息回执的处理代码比较统一,因此SpringAMQP帮我们实现了消息确认。为了提升性能,默认情况下MQ的数据都是在内存存储的临时数据,重启后就会消失。因此在这个过程中RabbitMQ不会再处理新的消息,生产者的所有请求都会被阻塞。一般reject方式用的较少,除非是消息格式有问题,那就是开发问题了。的模式,也就是惰性队列。

2024-11-22 23:05:23 4532

原创 JUC---骗局,创建线程到底有哪些方式?

面试者经常被问到,创建线程有几种方式?这里先给出常规的回答,

2024-11-22 23:04:46 6782

原创 期末复习---面向对象C++期末知识点

这些知识点我是直接在OneNote上直接复制的,想要OneNote格式的可以在评论区找我要,我私发给你

2024-11-21 21:55:05 4014

原创 期末复习---面向对象C++考试题目汇总

40.(分值: 0.3)如果要把返回值为 void 的无参函数 A 声明为类 B 的友元函数,则应在类 B的定义中加入的语句是 friend void A();class Base。29.(分值: 0.3)若有定义语句: int a=1, b=2, c=3;65.(分值: 0.3)在私有继承关系下,基类的公有成员和保护成员将成为派生类中的私有成员,它们只能由派生类的成员函数来访问。2.(分值: 0.3) 在 C++中定义类时,通常用 数据成员 描述对象的特征,利用成员函数(方法)描述对象的行为或功能。

2024-11-21 21:54:35 7392 2

原创 计算机基础---从输入 URL 到页面展示到底发生了什么?

1、在浏览器地址栏输⼊URL2、浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤如果资源未缓存,发起新请求如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进⾏验证。检验新鲜通常有两个HTTP头进⾏控制 Expires 和 Cache-Control:HTTP1.0提供 Expires,值为⼀个绝对时间表示缓存新鲜⽇期HTTP1.1增加了Cache-Control: max-age=time,值为以秒为单位的最⼤新鲜时间3、浏览器解析URL获取。

2024-11-20 10:31:26 6012

原创 Java---IO多路复用

在理解多路复用模型之前,我们先分析一下上述的NIO模型到底存在什么问题呢?很简单,由于线程在不断的轮询查看数据是否准备就绪,造成CPU开销较大。既然说是由于大量无效的轮询造成CPU占用过高,那?答案是Yes。这里指的是指的是复用同一个线程(单进程)。I/O 多路复用其实是使用一个线程来检查多个Socket的就绪状态,在单个线程中通过记录跟踪每一个socket(I/O流)的状态来管理处理多个I/O流。

2024-11-20 10:29:09 4849

原创 MySQL---redo log(崩溃恢复)

redo log(重做日志)是 InnoDB 存储引擎独有的,它让 MySQL 拥有了。比如 MySQL 实例挂了或宕机了,重启时,InnoDB 存储引擎会使用 redo log 恢复数据,MySQL 中数据是以为单位,你查询一条记录,会从硬盘把一页的数据加载出来,加载出来的数据叫,会放入到中。后续的查询都是先从中找,没有命中再去硬盘加载,减少硬盘 IO 开销,提升性能。更新表数据的时候,也是如此,发现里存在要更新的数据,就直接在里更新。然后会把“”记录到)里,接着刷盘到 redo log 文件里。

2024-11-18 17:45:57 5089

原创 JVM---GC类型划分(MinorGC,Major GC,MixedGC,FullGC)

JVM在发生GC时,主要作用的区域有三个:新生代、年老代以及元数据空间,当然,程序运行期间,绝大多数GC都是在回收新生代。

2024-11-18 17:36:35 806

原创 JVM---volatile 关键字

简单来说就是系统在执行代码的时候并不一定是按照你写的代码的顺序依次执行。

2024-11-18 17:34:49 759

原创 JVM---JDBC案例是否真的打破了双亲委派机制的思考

先由启动类加载器去加载DriverManger,又使用了应用类加载器去加载了驱动类。但是这个过程并没有按照从上到下依次加载的过程,而是通过线程上下文类加载器获取到应用类加载器进行加载的。这是不符合双亲委派机制的加载流程的。3、SPI机制就是在这个位置下存放了一个文件,文件名是接口名,文件里包含了实现类的类名。我们导入的Mysql的jar包或依赖中的mysql驱动对应的类,好了,上面分析了数据库驱动的加载过程,JDBC的案例可以说是介绍。的加载范围内,可以被加载,SPI接口的实现类加载完成…

2024-11-17 09:58:37 2491

原创 Java---SPI机制

比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。Java中SPI机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是。SPI 将,将服务调用方和服务实现者,能够提升程序的扩展性、可维护性。修改或者替换服务实现并不需要修改调用方。

2024-11-17 09:57:01 6816

原创 Spring---SpringBoot自动装配原理

本文介绍了SpringBoot自动装配原理,并结合源码画了流程图

2024-11-16 22:40:45 2160 1

原创 JUC---多线程下的数据共享(基于ThreadLocal的思考)

多线程下的数据共享(基于ThreadLocal的思考)

2024-11-16 13:27:34 834

原创 JUC---ThreadLocal原理详解

通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢?本文就ThreadLocal原理进行详细解释

2024-11-16 13:10:19 2450 1

空空如也

空空如也

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

TA关注的人

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