自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Spring原理

Bean的作用域是指Bean在Spring框架中的某种行为模式,比如单例作用域表示Bean在整个Spring中只有一份,全局共享,当其他人修改了Bean的值,那么另一个人就会读取到修改后的值,Bean的这种行为模式就称之为Bean的作用域SpringBoot的自动配置就是当Spring容器启动后,一些配置类和Bean对象都能够就自动存入到IoC容器中,不需要我们手动去声明,从而简化了开发,省去繁琐的配置操作。

2025-03-23 16:46:09 947

原创 Spring事务和事务传播机制

事务是一组操作的集合,是一个不可分割的操作,事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求,最终这组操作要么同时成功,要么同时失败。

2025-03-22 17:23:32 764

原创 Spring AOP

当我们定义了多个切面类时,并且这些切面类的多个切入点都匹配到了同一个目标方法,那么当目标方法运行时,这些切面类中的通知方法的执行顺序默认按照切面类的类名字母排序,但这种方式不方便管理,Spring提供了@Order注解,用于控制切面通知的执行顺序,@Order中的值。来实现AOP,相比于静态代理,动态代理更加灵活。上述的代理实现方式就是静态代理,不过HouseProxy代理类在程序运行前就已经存在,如果想要增加房东的业务,那么代理类也需要进行相应的改变,那么就会出现一些问题,这时就需要使用到动态代理。

2025-03-21 20:14:12 725

原创 SpringBoot 统一功能处理

在实际的业务环境中,如果后端每一个接口返回的数据格式都大不相同,那么在前端处理起来会变得非常麻烦,因而需要对数据返回格式进行统一的处理,方便前端人员对相关数据的获取,Spring提供了使用注解和来返回统一数据格式。

2025-03-19 14:42:30 809

原创 MyBatis操作数据库-动态SQL

在实际的Mybatis操作中,我们通常需要根据不同条件拼接 SQL 语句,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号,而使用动态SQL就可以简化整个过程。动态 SQL 是 MyBatis 的强大特性之一,能够完成不同条件下不同的SQL拼接。

2025-03-17 17:18:26 992

原创 MyBatis操纵数据库-XML实现(补充)

多表查询的操作和单表查询基本相同,只需改变一下SQL语句,同时也要在实体类中创建出的,让Mybatis将查询的结果进行映射,以下是一个多表查询的示例Mapper接口(ArticleInfoXMLMapper)与测试方法XML文件(ArticleInfoMapper.xml)在之前的操作中,我们一直都是使用#{ }来在将参数赋值到SQL语句中,其实在MyBatis中,参数赋值的方式有两种,一种就是我们使用的,而另一种是使用我们分别使用#{ }和${ }来赋值不同类型的参数(Integer和S

2025-03-16 17:01:18 935

原创 JWT令牌

在当今的Web开发中,安全认证和授权变得尤为重要。JWT(全称JSON Web Token)是一个开放的行业标准(RFC 7519),用于客户端和服务器之间传递安全可靠的信息,本质上是一个token(token表示令牌,本质上为字符串),是一种紧凑的URL安全方法。

2025-03-03 23:40:13 477

原创 数据结构--反射,枚举,lambda表达式

在进行反射之前,需要先获取到需要反射的类的Class对象,然后通过Class对象的核心方法,达到反射的目的。在运行状态中,对于任意一个类都能知道这个类的所有属性和方法,对于任意一个对象都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为。在Java中,当需要表示一组常量时,可能会采用逐个定义的方法,但有时又过于繁琐,这时我们就可以使用枚举类型,将一组常量组织起来。lambda表达式通过提供一个正常的参数列表和一个使用这些参数的主体来代替功能接口。在匿名内部类中捕获的变量只能是。

2024-11-27 21:55:59 1145

原创 数据结构--Map和Set

Map和Set是一种专门用来进行搜索的数据结构,一般把搜索的数据称为关键字(Key),与关键字对应的称为值(Value)。Map是一个接口类,使用了Key-Value模型,类中存储的是。,各个桶中的元素通过一条单链表(长度突破大于一定阈值后,转变为红黑树)连接起来,每条链表的头结点存储在哈希表中。闭散列,也称开放定址法,当发生哈希冲突时,如果哈希表没有被装满,说明在哈希表中还有空位置,这时可以把key存放到冲突位置中的。Set也是一个接口类,与Map不同,Set使用的是纯Key模型,类中。

2024-11-26 19:20:07 1183

原创 数据结构--排序算法

【代码】数据结构--排序算法。

2024-11-13 21:51:03 929 1

原创 数据结构--堆与优先级队列

以大根堆的创建为例,从最后一棵非叶子结点开始,一直往前到根节点结束,每访问一个结点,都进行向下调整(siftDown)。对象,其中每个结点的值总是不大于或不小于其父结点的值,如果所有子结点的值都。最大的堆称为大根堆(最大堆),最小的称为小跟堆(最小堆)的对象和添加新对象的两个基本操作,其底层由。优先级队列是一种特殊的队列,提供了返回。堆以完全二叉树的形式,采用。堆是一个可以被看作一棵。

2024-11-10 20:24:59 845

原创 数据结构--二叉树

树是一种非线性的数据结构,它是由N个有限结点组成的一个具有层次关系的集合,看起来像一棵倒挂的树二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的树。

2024-10-29 21:12:16 1189 1

原创 数据结构--栈和队列

栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则队列也是一种特殊的线性表,不同于栈,队列只允许在一端进行插入数据操作,在另一端进行删除数据操作。进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列中的数据元素遵守先进先出的原则。

2024-10-19 19:51:37 480

原创 数据结构--链表

链表也是线性表的一种,是一种物理存储结构上非连续存储的存储结构,其中数据元素的逻辑顺序通过链表中的引用链接次序实现。链表的结构非常多样,可以是单向的或多向带头或不带头的,循环或非循环的。

2024-10-17 18:11:20 1028 1

原创 数据结构--顺序表

线性表(一种广泛使用的数据结构),是n个具有相同特征的数据元素的有限序列,在逻辑上线性表是线性结构(连续的一条直线),在物理结构上不一定连续,通常以数组和链式结构的形式存储。而顺序表就是线性表的一种,它是一段物理地址连续的存储单元依次存储数据元素的线性结构,一般采用数组来存储。

2024-10-14 22:25:05 499

原创 Linux常用命令

作为管道标记,其功能是将前一个指令输出的内容,作为第二个指令的输入内容。表示在test.txt文件尾部实时查找含有error字符串的对应行。vim相当于Windows的记事本,使用vim可以进行文本编辑。管道是一种"进程之间通信"的方式,在Linux指令中,

2024-10-12 15:46:53 643

原创 MyBatis操作数据库-XML实现

MyBatis是一款持久层框架(持久层指持久化操作的层,通常指数据访问层dao),简单来说,使用MyBatis能够更简单地完成程序和数据库之间的交互。

2024-09-17 14:55:00 1249

原创 Spring中Bean的相关注解

/启动类代码(从Spring中获取Bean)//如果这里使用类名获取Bean,会由于得到多个Bean而报错,所以需要使用上述Bean获取方式中的第1或第2种//获取方法名为userInfo1对应的Bean//获取方法名为userInfo2对应的Bean//BeanTest类@Component//方法注解需要搭配类注解一起使用,否则会报错@Bean@Bean。

2024-09-08 16:14:32 1360

原创 Spring MVC常用注解及用法

作为Web框架,学习Spring MVC主要就是了解如何通过浏览器和用户程序进行交互,在这里我就来简单介绍一下Spring MVC中的常见注解以及它们各自的用法。首先,我们将交互的过程大致分为三个部分:• 建立连接:将用户(浏览器)和Java程序连接起来• 请求:用户请求时会带一些参数,在程序中需要想办法获取这些参数,所以请求这块主要是获取参数的功能• 响应:执行了业务逻辑后,把程序执行的结果返回给用户。

2024-08-28 14:41:07 1046

原创 CSS的简单介绍

CSS(层叠样式表),用于控制页面的样式,简单地来说,CSS就是用来美化页面的一种语言。

2024-08-21 18:26:46 542

原创 JavaEE--HTTPS

由于HTTP的协议内容都是按照文本的方式明文传输的,这就导致在传输过程中会出现一些被篡改的情况。HTTPS,简单来说就是HTTP+SSL(安全相关的协议),在HTTP的基础上,HTTPS增加了一个加密层来保证用户的信息安全。

2024-05-26 12:49:40 463

原创 JavaEE--HTTP协议

HTTP协议是典型的“一问一答”模式的协议,即请求和响应一一对应。为了进一步理解HTTP协议的工作过程以及理解HTTP协议报文格式,我们需要用到抓包工具,这里我们以Fiddler为例。

2024-05-25 11:57:09 652

原创 JavaEE--以太网

目的地址/源地址:网卡的物理地址(mac地址),正常情况下,每个网卡的mac地址都不相同并且mac地址在网卡出厂时就已经设置好了类型:分为0800,0806,8035三种类型,根据不同的类型进行不同的操作数据:以太网数据帧的长度范围为46~1500字节,最长为1500字节,即以太网的最大传输单元(MTU),对于不同的数据链路层协议,MTU不一定相同ARP协议:给每个路由器/交换机建议一个转发表,表中记录了IP地址→mac地址的映射。

2024-05-19 18:04:53 205

原创 JavaEE--IP协议

子网掩码,是一个32位的整数,前半部分都是1,后半部分都是0,不会出现01交替出现的情况,1的位置标识网络号,0的位置标识主机号,例如子网掩码255.255.255.0,前24位为1,后8位为0,说明前24位是网络号,后8位是主机号。特殊的IP地址:1) 主机号全0:这样的IP地址表示网段,不能分配给主机 2)主机号全1:这样的IP地址表示广播IP,向广播IP发送数据,就会发送给局域网中的所有设备 3)127.*:这样的IP地址表示环回IP,往环回IP发送数据,接收方就是自己。

2024-05-19 12:50:52 1496

原创 JavaEE--TCP协议

为了实现可靠传输,发送方在发送数据给接收方后,接收方需要返回一个用于应答的数据,即应答报文(表示标志位中的ACK,如果ACK为1则是应答报文),而在网络传输过程中,经常会出现“后发先至”的现象(发送方先发送数据一再发送数据二,结果先收到数据二的应答报文),为了解决这个问题,TCP给每个字节分配了一个序号(例如第一个字节编号为1,第二个字节编号为2),这个序号随字节向后推移而逐渐递增,同时TCP还引入了确认序号,取值为其应答数据的最后一个字节的序号+1。捎带应答是建立延时应答的基础上,提升效率的一种机制。

2024-05-15 09:18:42 679

原创 JavaEE--UDP协议

• 无连接:在计算机中,连接可以认为是要建立连接的双方,各自保存对方的信息,无连接就是通信双方不需要保存对方的信息• 不可靠传输:传输数据时,可能出现丢包等其他情况,UDP不关心对方是否收到,只负责发送(效率比TCP快) (UDP的不可靠传输不是由其无连接导致的)• 面向数据报:UDP数据报是UDP传输的基本单位,进行读写操作时,一次读写只能读写一个完整的UDP数据报• 全双工:一条链路,能够进行双向通信。

2024-05-02 15:58:22 93 1

原创 JavaEE--初识网络

网络通信是一个非常复杂的事情,涉及到很多的细节问题,如果只用一个协议来约定所有细节,这个协议就会非常庞大且复杂,这就需要对协议进行拆分,同时为了避免将功能复杂的协议拆分成多个功能单一的协议后,协议过多不易管理的问题,就对协议进行了分层,把很多协议按照功能分成不同的层级,每个层级都有对应的目标,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。这个层层包装数据,不停的加数据报头的过程,就是封装,可以简单的理解为装快递时的过程,而分用,实际就是拆快递的过程,是封装的“逆过程”。

2024-05-01 14:47:38 132 1

原创 JavaEE--文件操作和IO

IO全称为input(输入)和output(输出),对于什么是输入和输出,用一张图来理解一下以cpu为基准,数据朝着cpu过来,就是输入,而数据远离cpu,就是输出。例如在电脑上通过网络下载文件(网卡→硬盘),就是输入;把内存数据保存在硬盘上(内存→硬盘),就是输出。对于文件,我们应该都不陌生。像文本文件,图片文件等等都是文件,文件夹也是一种文件,称为“目录文件”,同样保存在硬盘上。

2024-04-27 20:24:25 673 2

原创 JavaEE--HashTable, ConcurrentHashMap

由于HashMap本身并不是线程安全的,在多线程环境下,使用哈希表时我们通常使用Hashtable和ConcurrentHashMap。

2024-04-24 14:56:44 227

原创 JavaEE--锁策略+synchronized优化+CAS

CAS,全称为compare and swap,意为比较和交换,在进行比较后将内存地址和寄存器中的值进行交换,这个操作过程在整体上是一条cpu指令,CAS的流程可以想象成一个方法boolean cas(address,reg1,reg2){//address内存地址,reg1,reg2寄存器//交换address内存地址中的值和reg2寄存器中的值//一般更关心交换交换后内存地址中的值,所以可以大致认为是把reg2寄存器中的值赋给内存地址。

2024-04-23 21:06:10 835

原创 JavaEE--线程池与定时器

为了解决频繁创建和销毁线程带来的巨大开销问题,我们引入了线程池。线程池,简单来说就是提前把线程创建好,放到用户态代码中写的数据结构里面,需要使用的时候从池子取,用完了再放回去。使用线程池避免了直接调用api创建和销毁线程这种需要内核完成的工作,整体上都是用户态代码,在很大程度上提高了效率。定时器,简单来说就是一个“闹钟”,达到一个设定的时间之后,就执行指定好的代码。

2024-04-21 15:57:15 418 1

原创 JavaEE--单例模式

设计模式是在软件开发中解决常见问题的最佳实践或方案。使用设计模式可以实现可重用代码,帮助我们创建更灵活、可维护和可扩展的代码。而我们要介绍的单例模式就是设计模式中比较经典的一种模式。

2024-04-19 16:27:57 511 1

原创 JavaEE--线程安全问题

对于什么是线程安全问题,我们可以这样来理解:如果在多线程环境下代码运行的结果符合我们的预期,则说明这个线程是线程安全的,反之,如果代码运行的结果与预期不符,则称代码含有线程安全问题。

2024-04-17 14:56:55 2126 1

原创 JavaEE--线程Thread类的基本用法

main线程调用t1.join(),让main线程阻塞等待t1,接着main线程再调用t2.join(),让main线程阻塞等待t2,t1线程和t2线程都终止后,再执行main线程中的代码,至于t1和t2线程的结束顺序,因为t1和t2是并发执行的,所以t1和t2线程的结束顺序是随机的。2.如果调用join方法的线程还没有结束,那么join就会阻塞等待,一直等到调用join方法的该线程结束之后,join才能解除阻塞继续执行。main线程在阻塞等待t1线程500毫秒后,开始和t1线程并发执行。

2024-04-14 20:38:43 1663 1

原创 JavaEE--进程与线程的区别与联系

在以前的服务器开发领域中,由于要能够同时给多个客户端提供服务,大多使用多进程编程(并发编程),典型的做法是当每个客户端连上服务器后,服务器都创建一个进程,给客户端提供服务,同时当这个客户端断开后,服务器再把进程给释放掉,但是当服务器中频繁出现客户端的连接和断开操作,服务器也就需要频繁地创建和销毁进程,其开销很大。为了解决上述问题,因而引入了"线程"这个概念,线程实际就是"轻量级的进程",其创建和销毁的开销更加小。

2024-04-14 14:48:03 176 1

原创 JavaEE--进程调度的基本过程

一个程序,运行起来,在操作系统中就会出现一个进程,就是一个跑起来的应用程序。通过观察任务管理器,我们就能看到当前正在运行的所有进程。要想让一个程序运行,就必须得给则这个进程分配系统资源进程可以看作是操作系统进行资源分配的基本单位。

2024-04-13 18:11:20 281 1

原创 Java--继承与多态

由输出结果看,当Dog类没有实现shout方法时,调用的是父类Animal的shout方法,同理如果当子类实现了shout方法,但是需要参数时,调用的仍然是父类Animal的shout方法,由此我们得出如果要实现调用子类的shout方法,子类必须实现shout方法,并且和父类方法的实现必须一模一样(指的是方法,不包括方法中的代码),即子类要重写父类的方法。从输出结果来看,在创建子类对象时先调用了父类的构造方法,在调用了子类的构造方法,上述是无参构造方法时的情况,那么如果改为有参数的构造方法,又会怎么样呢?

2023-11-10 22:24:09 76

原创 Java--类和对象

一谈到对象,我们往往想到的就是男朋友或者女朋友,但其实在计算机语言中,对象包括了很多事物,可以这样说,世界上任何一个具体的物理实体都可以看作一个对象,所以包括上面所说的男女朋友等等,都可以是对象。而类呢,就比较抽象了,是用来对一个对象来进行描述的,主要描述该对象具有哪些属性,比如说对于洗衣机来说,它的属性有产品品牌,型号,外观尺寸,颜色等等,它的功能又包括洗衣,烘干,脱水,定时等等。简单了解完什么类和对象之后,我们接下来看如何定义一个类以及实例化一个对象。在java中定义类时需要用到class关键字。

2023-11-05 17:17:42 67 1

原创 初识Java--数据类型与运算符

int a=10;//输出a的值10或者也可在定义变量后再给变量赋值int a;a=10;//同样输出a的值10。

2023-10-25 21:17:50 105 1

原创 编程之旅 启程

大家好,我是大数据专业的一名在校大学生,选择这个专业可能不是我的本意,但是通过大一逐渐的学习到现在大二,我发现在编程的同时学会了很多,也收获了很多乐趣,这让我有了继续学下去的动力,也对编程产生了新的看法。如今开始了大学生活的新篇章,身为大二的学生,虽然没有了晚自习,但确意味着我有了更多自由的学习时间,对于编程,我觉得自己的基础依然不够牢固,涉及的知识面也很窄,所以我希望能够在这里更好的提升自己,和大家一起交流,一起学习,不断地进步。我打算每天花几个小时去学习,并且时刻提醒自己要坚持下去。

2023-09-09 20:05:12 125 1

空空如也

空空如也

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

TA关注的人

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