自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring AOP_1

AOP(面向切面编程)是Spring框架的核心思想之一,用于对特定方法进行统一处理。它通过切点定义规则,在连接点处执行通知,实现代码无侵入的功能增强。Spring AOP支持五种通知类型:@Around(环绕)、@Before(前置)、@After(后置)、@AfterReturning(返回后)和@AfterThrowing(异常后)。多个切面可通过@Order注解设置优先级,数字越小优先级越高。@Before按优先级正序执行,@After按优先级倒序执行。AOP能有效减少重复代码,提高开发效率,典型应用

2025-08-03 00:25:13 571 1

原创 SpringBoot统一功能处理

拦截器是Spring提供的核心功能之一,主要用来拦截用户请求,在指定方法前后,根据业务需要执行预先设定的代码。也就是说,允许开发人员提前预定义一些逻辑,在用户的请求响应前后执行,也可以在用户请求前阻止其执行。在拦截器中,开发人员可以在应用程序中做一些通用性的操作,比如拦截前端发来的请求,判断Session中是否有登录用户的信息,如果有就放行,没有就进行拦截。1、定义拦截器2、注册配置拦截器自定义拦截器需要实现HandlerInterceptor接口,并重写方法。

2025-08-01 23:20:28 746

原创 Mybatis_4

本篇文章介绍了MyBatis中动态SQL的进阶应用,主要包括:1.使用<foreach>标签实现批量删除操作,通过遍历集合参数构建IN条件;2.利用<include>标签实现SQL片段复用,减少重复代码;3.详细讲解了MyBatis Generator的配置和使用方法,通过自动生成模型类、Mapper接口和XML文件来提升开发效率;4.简要介绍了MyBatis-Plus的基础使用,包括依赖引入、实体类注解配置和继承BaseMapper获取常用CRUD方法。这些技术能有效简化MyBat

2025-07-28 22:12:41 813 1

原创 MyBatis_3

1、#{ }和${ }的区别就是预编译sql(占位)和即时sql(直接拼接)的区别。2、#{ }使用预编译的形式所以性能会比${ }更高绝大多数情况下,某一条sql语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同(比如select的where子句值不同,insert的values值不同)。如果每次都需要上面语法解析,sql优化,sql编译等过程,效率就明显不行了。

2025-07-26 20:25:15 774 4

原创 Mybatis_2

本文介绍了MyBatis查询操作的三种字段映射方法:起别名、结果映射和自动驼峰转换,并对比了注解和XML两种开发方式。重点讲解了XML方式的配置步骤和增删改查实现,包括多表查询的示例,同时指出实际开发中应避免使用select *和多表查询可能导致的性能问题。文章还推荐了MyBatis插件来简化XML编写,并展示了结果映射的复用方法。

2025-07-24 20:44:31 986 1

原创 Mybatis_1

MyBatis是一款优秀的持久层框架,用于简化JDBC开发。文章介绍了MyBatis的基本操作,包括查询、插入、删除和更新。通过示例演示了如何配置数据库连接、创建Mapper接口、使用注解编写SQL语句,并处理参数传递问题。特别说明了如何获取自增主键、日志配置等实用技巧。文章还列举了常见错误及解决方法,如SQL错误、配置问题和参数传递方式等,为MyBatis初学者提供了全面的入门指导。

2025-07-23 15:39:28 1004 3

原创 SpringBoot配置文件

本文介绍了计算机配置文件和SpringBoot配置文件的基本概念与使用方法。首先阐述了配置文件的作用,即将可变信息集中管理,避免硬编码问题。然后重点讲解了SpringBoot中的三种配置文件格式:properties、yml和yaml,详细比较了它们的语法特点和使用场景。文章通过实例演示了如何通过@Value和@ConfigurationProperties注解读取配置文件中的各类数据,包括基本类型、对象和集合等。同时分析了yml格式在可读性和数据结构表达方面的优势,也指出了其在复杂配置和格式要求上的局限性

2025-07-19 03:00:37 929 3

原创 Spring IoC&DI_2_使用篇

对于同一个类如何定义多个对象呢?@Bean@Bean@Bean如果我们此时通过类型获取对象,获取的是哪个对象呢?//获取Spring上下文对象运行结果:报错信息显示:期望只有一个匹配,但是根据这个类型找到了3个Bean,userInfo,userInfo1,userInfo2。接下来我们可以通过Bean的名称来获取Bean,我们刚才讲了类注解的Bean的名称,那方法注解Bean的名称又是什么呢?其实就是——方法名。

2025-07-17 23:31:44 732 6

原创 SpringIoC&DI _1_概念篇

IoC是Spring的核心思想,其实IoC我们在前面已经使用过了,我们在前面讲到,在类上面添加@RestController和Controller注解,就是把这个对象交给Spring管理,Spring框架启动就会加载该类,把对象交给Spring管理,就是IoC思想。IoC:Inversion of Control(控制反转),也就是说Spring是一个“控制反转”的容器。控制反转是一种思想,在生活中也处处体现。接下来我们通过一个代码案例来认识下IoC。造一辆车。

2025-07-17 16:26:51 671 1

原创 Spring MVC2

在Spring MVC1中,我们知道了MVC的定义,同时也知道了@RequestMapping和@RestController这个注解的作用。本篇文章,我们将学习使用Spring MVC获取请求参数和返回不同的响应等等。

2025-07-15 21:44:27 873

原创 Cookie与Session

摘要:Cookie是浏览器本地存储数据的机制,用于解决HTTP协议无状态的问题(如登录状态保持)。服务器通过Session机制记录用户信息,SessionID作为用户身份标识通过Cookie传递。两者主要区别:(1)Cookie存储在客户端,Session在服务器端;(2)通过SessionID关联;(3)虽常配合使用但非必须(Cookie可存其他数据,SessionID也可通过URL传递)。Session默认存储在内存中,服务器重启会丢失数据。

2025-07-12 02:19:09 950 3

原创 Spring MVC 1

SpringMVC是基于Servlet API构建的Web框架,实现了MVC架构模式。它通过@RequestMapping注解实现URL路由映射,支持GET和POST请求。MVC模式将系统分为Model(数据处理)、View(界面展示)和Controller(请求分发)三部分。SpringMVC需配合@RestController等注解使用,SpringBoot是其实现方式之一。开发时重点关注:建立连接(路由映射)、请求参数获取和响应处理三个核心功能。

2025-07-10 16:30:28 1058 4

原创 SpringBoot项目的创建

在学习SpringBoot之前,我们先认识下Spring,官方介绍:翻译一下,Spring让Java程序更加快速、简单和安全。Spring对于速度、简单性、 和生产力的关注使其成为世界上最流行的Java框架。而SpringBoot的诞生是为了简化Spring程序开发。SpringBoot可以理解为Spring脚手架,什么是脚手架呢?就是我们盖房子所用的脚手架,使用脚手架可以更快地盖楼;使用SpringBoot可以更完成Spring框架的开发。

2025-07-08 16:53:08 988 3

原创 Maven

以下是官方文档对Maven的描述:引用于欢迎使用 Apache Maven – Maveg简单翻译下:Maven是一个项目管理工具,提供pom.xml文件的配置获取jar包,而不用手动地添加jar包。

2025-07-07 23:41:09 643 3

原创 一文搞定JVM

此处的变量包括。

2025-06-16 10:00:00 1173 2

原创 一文搞懂HTTPS

HTTPS也是一个应用层协议,在HTTP协议的基础上引入了一个加密层(SSL)。HTTP协议内容是按照文本的方式明文传输的,这就意味着数据在传输的过程中可能会出现被篡改的情况。

2025-06-15 18:19:25 1359 1

原创 网络原理10 - HTTP完

上一篇文章我们详细了解了HTTP请求,本篇文章我们来简单认识下HTTP响应中的状态码,并尝试使用第三方工具来构造一个HTTP请求。

2025-06-13 20:49:11 976 1

原创 网络原理9-HTTP2

URL不仅仅是在HTTP中使用,我们在之前的JDBC中与数据库建立连接时也使用过URL:jdbc:mysql://127.0.0.1:3306/java110?平时我们俗称的“网址”,其实说的就是URL(统一资源定位符),它能够描述一个互联网上的资源的位置,即互联网上的每个文件都有一个唯一的URL,它包含的信息指出了文件的位置以及浏览器应该怎去处理它。(URL的详细规则由因特网表述RFC1738进行约定)

2025-06-12 20:59:10 822 1

原创 网络原理8 - HTTP协议1

那为什么HTTP报文中要存在“空行”?HTTP协议中,并没有具体规定报头部分的键值对有多少个,空行就相当于是“报头的结束标志”,或者说空行是“报头和正文之间的分隔符”。HTTP在传输层是依赖TCP协议的,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”。

2025-06-11 23:18:48 978 2

原创 网络原理 7-以太网

数据链路层主要完成相邻节点的传输,这里对于我们程序员不怎么需要涉及,除非是做交换机开发。

2025-06-10 17:32:50 506 1

原创 网络原理 6 - IP协议

上篇文章我们已经介绍完了TCP中的一些核心的机制。那么我们在传输层中应该选择TCP协议还是UDP协议呢?TCP特点:有链接、可靠传输、面向字节流、全双工。UDP特点:无连接、不可靠传输、面向数据报、全双工。应用场景:如果需要可靠传输,首选TCP,如果当前要传输的数据包很大,也首选TCP。绝大部分的场景,都可以优先考虑TCP~~UDP相比于TCP,最大的优点就是传输效率,比如有的场景中,对于效率要求很高,但是对可靠性要求不高,就可以优先选择UDP。那既对可靠性有要求,又对性能有要求的场景(比如打LOL等竞技类

2025-06-10 09:00:00 999 1

原创 网络原理5 - TCP4

在之前的文章中,我们已经介绍了TCP的5个机制:确认应答、超时重传、连接管理、滑动窗口和流量控制,接下来我们来学习TCP的另外五个机制。

2025-06-07 21:51:07 1040 2

原创 网络原理 4-TCP3

上篇文章,我们讲了TCP协议的连接管理(”三次握手“和”四次挥手“的过程)。

2025-06-06 00:23:43 717 1

原创 网络原理3—TCP 2

(重点!!!上篇文章,我们讲到了TCP保证可靠性传输的其中两个机制——确认应答和超时重传,这篇文章。我们来讲述TCP保证可靠性的第三个机制——

2025-06-05 19:47:20 1620

原创 网络原理 2——TCP1

TCP全称为“传输控制协议”(Transmission Control Protocol),它会对数据的传输进行一个详细的控制。

2025-06-04 09:00:00 685

原创 网络原理1

(网络传输的数据要怎么使用,也要考虑数据是什么样的格式,包含哪些内容)。应用层的协议在开发时一般是客户端和服务器共同约定的。

2025-06-03 20:17:02 1009

原创 Java网络编程API 2

是创造TCP服务器端的API。

2025-06-03 09:00:00 973

原创 Java网络编程API 1

DatagramSocket是UDPSocket,用于发送和接收UDP数据报,就相当于网卡的作用。

2025-06-02 01:23:28 899 1

原创 网络编程1_网络编程引入

网络编程:网络上的主机,通过不同的进程,以编程的方式实现网络通信(网络数据传输)。也可以只需要满足进程不同即可。所以即使是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。但是,我们一定要明确,我们的目的是使网络上的不同主机,基于网络来传输数据资源。进程A :编程来获取网络资源。进程B:编程来提供网络资源。

2025-05-31 10:00:00 812

原创 文件操作和IO—IO代码案例

查找硬盘上文件的位置。需要我们给定一个文件名和需要搜索的目录,根据所给的信息,找到文件名匹配的结果并打印出该文件的绝对路径。之前我们讲过文件系统的目录是。

2025-05-24 21:47:16 597 1

原创 文件操作和IO-3 文件内容的读写

编译器就可以进行检查,如果想要创建实例就会编译报错。所谓面向对象,就是通过代码抽象来表示实际事物的一种方式。

2025-05-23 00:13:58 795

原创 文件操作和IO-2 使用Java操作文件

这两种属性是文件路径的表示,可以表示为字符串类型或者字符类型,依赖于路径分隔符,实际开发中多使用“\”进行分隔。

2025-05-20 21:26:51 1042

原创 文件操作和IO—初识文件

狭义上的文件(file),,类似于办公桌上一份份文件一样。计算机中存储数据的设备:对于计算机来说,“文件”是一个广义的概念,硬盘上的普通文件,硬盘上的目录(文件夹),很多的硬件设备,都是被操作系统抽象成了文件(键盘、显示器、网卡……)作为程序员,我们并不关心硬盘的内部物理结构,写代码时并不涉及这些结构细节,操作系统都帮我们封装好了。操作系统有一个专门的模块,把硬件细节封装好,提供统一的API来给程序员调用。文件除了有数据内容之外,还有。

2025-05-20 17:15:45 830

原创 多线程进阶

sychronized背后涉及了很多的优化手段:1、锁升级:偏向锁 -> 轻量级锁 -> 重量级锁。2、锁消除:自动干掉不必要的锁。3、锁粗化:把多个细粒度的锁合并成一个粗粒度的锁,减少锁竞争的开销。这些机制都是在内部默默发挥作用的,是JVM的大佬们为我们默默奉献的(他暖,我哭~~~CAS:compare and swap,字面意思:“比较并交换”,是一个特殊的CPU指令(严格的说,和Java无关,它是操作系统内部)(JVM中关于CAS的API都是在unsafe包中,即不安全)。

2025-05-20 00:03:06 1005

原创 多线程代码案例-4 线程池

池是一个非常重要的概念,我们有常量池,数据库连接池,线程池,进程池,内存池……一开始讲过,进程能够解决编程问题,但是因为频繁创建和销毁进程,需要耗费大量的空间、时间,成本太高了,所以我们引进了。但是如果创建和销毁线程的频率进一步提高,此时线程创建和销毁的开销,也不能忽略了。(抛开剂量谈毒性,都是耍流氓),因此我们需要想办法,。1、引入轻量级线程——纤程/ 协程(Java21引入的虚拟线程就是这个东西)。协程本质,是程序员在用户态的代码中进行调度,而不是靠内核调度器调度,这就节省了很多调度上的开销。

2025-05-18 18:58:27 673 1

原创 多线程代码案例-3 定时器

定时器,是我们日常开发中常用的组件工具,类似于闹钟,设定一个时间,时间到了的时候,定时器就可以自动地去执行某个逻辑。

2025-05-17 11:00:00 697

原创 多线程代码案例-2 阻塞队列

通过数据结构的学习,我们都知道了队列是一种“先进先出”的数据结构。阻塞队列,是基于普通队列,做出扩展的一种特殊队列。

2025-05-16 16:43:44 878

原创 多线程代码案例-1 单例模式

单例模式是开发中常见的设计模式。,是我们在编写代码时候的一种,也就是说,我们遵守了设计模式,代码的下限就有了一定的保证。设计模式有很多种,在不同的语言中,也有不同的设计模式,设计模式也可以被认为是。,某个类在一个进程中,只应该创建出一个实例(原则上不应该创建出多个实例),使用单例模式,可以对我们的代码进行一个更为严格的校验和检查。举个例子:有时候,代码中需要管理/持有大量的数据,此时有一个对象就可以了。比如:我需要一个对象管理10G的数据,如果我们不小心创建出多个对象,内存空间就会成倍地增长。

2025-05-14 00:01:37 939

原创 wait和notify

wait和notify翻译过来的意思是,和join的用途相似,因为引入wait和notify,是为了能够从应用层面上,,这里的干预,(系统内核中的线程调度任然是无需的)。而是在应用程序代码中,让后执行的线程,主动放弃被调度的机会,就可以让执行的线程,先把对应的代码执行完了。

2025-05-12 09:00:00 931

原创 线程安全 3

Java标准库中的很多类都是不安全的,这些类可能会涉及到多线程修改共享数据,又没有任何加锁措施,如下,这几个类都是线程不安全的。但也还有一些线程安全的,使用了一些锁机制来控制。这几个类,自带了锁,在多线程环境下,情况可以好一些,但也不是100%不会出问题,只是概率比上面没有自带锁的类小很多,但仍然需要具体代码具体分析。只是概率比上面没有自带锁的小很多,但仍需要具体代码具体分析。(多线程的代码,稍微有一些变化,就可能会产生不一样的结果)

2025-05-11 01:35:49 794 1

空空如也

空空如也

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

TA关注的人

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