- 博客(90)
- 收藏
- 关注
原创 Spring原理
本文介绍了Spring框架中Bean的作用域与生命周期,以及SpringBoot自动装配机制。主要内容包括: Bean作用域:Spring支持6种作用域(单例、原型、请求、会话、全局、WebSocket),通过@Scope注解配置,不同作用域影响Bean的创建方式和使用范围。 Bean生命周期:分为实例化、属性注入、初始化、使用和销毁五个阶段,可通过实现特定接口或使用注解(如@PostConstruct)自定义初始化和销毁逻辑。 SpringBoot自动装配:通过@ComponentScan扫描包路径或@I
2025-08-22 22:59:55
1034
1
原创 Linux
本文介绍了Linux操作系统的基础知识、常用命令及Java Web项目部署流程。主要内容包括:Linux发展历史、常见发行版、目录结构等背景知识;ls、cd、vim等20余个常用命令详解;使用apt安装JDK和MySQL的步骤;以及将Java Web项目部署到Linux服务器的完整流程,涵盖环境配置、数据库准备、项目打包上传、端口开放等关键环节。文章还提供了项目部署常见问题的排查方法,帮助开发者顺利完成Linux环境下的应用部署。
2025-08-20 00:59:50
952
4
原创 实现登录and加密功能
JWT全称:JSON Web TokenJSON Web Token(JWT)是一个开放的行业标准(RFC 7519),用于客户端和服务器之间传递安全可靠的信息。其本质是一个token,是一种紧凑的url安全方法(注意:不是加密的方式实现安全,令牌本质上是不安全的)在Mysql数据库中,我们常常要对密码,身份证号,手机号等敏感信息进行加密,以保证数据的安全性,如果使用明文存储,当黑客入侵了数据库时,就可以轻松获取到用户的相关信息,从而对用户或者企业造成信息泄漏或者财产损失。
2025-08-13 15:43:19
866
原创 Spring_事务
本文总结了MySQL事务基本概念及Spring框架实现事务的两种方式。主要内容包括:1. 事务概念回顾:包括事务的ACID特性、事务操作步骤(开启/提交/回滚);2. Spring事务实现:编程式事务(手动管理)和声明式事务(@Transactional注解);3. @Transactional详解:异常处理(rollbackFor)、事务隔离级别、传播机制(7种传播行为);4. 实践案例:通过用户注册和日志记录场景演示REQUIRED、REQUIRES_NEW等传播机制的实际效果。文章通过代码示例和测试结
2025-08-06 22:06:43
1051
6
原创 Spring AOP_2
本文介绍了Spring AOP中切点表达式的两种主要形式:execution和@annotation。execution表达式通过方法签名匹配,支持通配符灵活配置;@annotation则基于自定义注解实现无规则方法的切面管理。文章详细讲解了动态代理的实现原理,对比了JDK动态代理和CGLIB动态代理的适用场景及代码实现,其中JDK代理要求目标类实现接口,而CGLIB可直接代理普通类。最后列举了Spring AOP的四种实现方式,强调动态代理是AOP的核心机制。通过房产中介的代码示例,生动演示了静态代理与动
2025-08-03 22:57:10
997
3
原创 Spring AOP_1
AOP(面向切面编程)是Spring框架的核心思想之一,用于对特定方法进行统一处理。它通过切点定义规则,在连接点处执行通知,实现代码无侵入的功能增强。Spring AOP支持五种通知类型:@Around(环绕)、@Before(前置)、@After(后置)、@AfterReturning(返回后)和@AfterThrowing(异常后)。多个切面可通过@Order注解设置优先级,数字越小优先级越高。@Before按优先级正序执行,@After按优先级倒序执行。AOP能有效减少重复代码,提高开发效率,典型应用
2025-08-03 00:25:13
902
1
原创 SpringBoot统一功能处理
拦截器是Spring提供的核心功能之一,主要用来拦截用户请求,在指定方法前后,根据业务需要执行预先设定的代码。也就是说,允许开发人员提前预定义一些逻辑,在用户的请求响应前后执行,也可以在用户请求前阻止其执行。在拦截器中,开发人员可以在应用程序中做一些通用性的操作,比如拦截前端发来的请求,判断Session中是否有登录用户的信息,如果有就放行,没有就进行拦截。1、定义拦截器2、注册配置拦截器自定义拦截器需要实现HandlerInterceptor接口,并重写方法。
2025-08-01 23:20:28
1030
原创 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
844
1
原创 MyBatis_3
1、#{ }和${ }的区别就是预编译sql(占位)和即时sql(直接拼接)的区别。2、#{ }使用预编译的形式所以性能会比${ }更高绝大多数情况下,某一条sql语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同(比如select的where子句值不同,insert的values值不同)。如果每次都需要上面语法解析,sql优化,sql编译等过程,效率就明显不行了。
2025-07-26 20:25:15
798
4
原创 Mybatis_2
本文介绍了MyBatis查询操作的三种字段映射方法:起别名、结果映射和自动驼峰转换,并对比了注解和XML两种开发方式。重点讲解了XML方式的配置步骤和增删改查实现,包括多表查询的示例,同时指出实际开发中应避免使用select *和多表查询可能导致的性能问题。文章还推荐了MyBatis插件来简化XML编写,并展示了结果映射的复用方法。
2025-07-24 20:44:31
1043
1
原创 Mybatis_1
MyBatis是一款优秀的持久层框架,用于简化JDBC开发。文章介绍了MyBatis的基本操作,包括查询、插入、删除和更新。通过示例演示了如何配置数据库连接、创建Mapper接口、使用注解编写SQL语句,并处理参数传递问题。特别说明了如何获取自增主键、日志配置等实用技巧。文章还列举了常见错误及解决方法,如SQL错误、配置问题和参数传递方式等,为MyBatis初学者提供了全面的入门指导。
2025-07-23 15:39:28
1021
3
原创 SpringBoot配置文件
本文介绍了计算机配置文件和SpringBoot配置文件的基本概念与使用方法。首先阐述了配置文件的作用,即将可变信息集中管理,避免硬编码问题。然后重点讲解了SpringBoot中的三种配置文件格式:properties、yml和yaml,详细比较了它们的语法特点和使用场景。文章通过实例演示了如何通过@Value和@ConfigurationProperties注解读取配置文件中的各类数据,包括基本类型、对象和集合等。同时分析了yml格式在可读性和数据结构表达方面的优势,也指出了其在复杂配置和格式要求上的局限性
2025-07-19 03:00:37
940
3
原创 Spring IoC&DI_2_使用篇
对于同一个类如何定义多个对象呢?@Bean@Bean@Bean如果我们此时通过类型获取对象,获取的是哪个对象呢?//获取Spring上下文对象运行结果:报错信息显示:期望只有一个匹配,但是根据这个类型找到了3个Bean,userInfo,userInfo1,userInfo2。接下来我们可以通过Bean的名称来获取Bean,我们刚才讲了类注解的Bean的名称,那方法注解Bean的名称又是什么呢?其实就是——方法名。
2025-07-17 23:31:44
759
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
680
1
原创 Spring MVC2
在Spring MVC1中,我们知道了MVC的定义,同时也知道了@RequestMapping和@RestController这个注解的作用。本篇文章,我们将学习使用Spring MVC获取请求参数和返回不同的响应等等。
2025-07-15 21:44:27
889
原创 Cookie与Session
摘要:Cookie是浏览器本地存储数据的机制,用于解决HTTP协议无状态的问题(如登录状态保持)。服务器通过Session机制记录用户信息,SessionID作为用户身份标识通过Cookie传递。两者主要区别:(1)Cookie存储在客户端,Session在服务器端;(2)通过SessionID关联;(3)虽常配合使用但非必须(Cookie可存其他数据,SessionID也可通过URL传递)。Session默认存储在内存中,服务器重启会丢失数据。
2025-07-12 02:19:09
956
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
1064
4
原创 SpringBoot项目的创建
在学习SpringBoot之前,我们先认识下Spring,官方介绍:翻译一下,Spring让Java程序更加快速、简单和安全。Spring对于速度、简单性、 和生产力的关注使其成为世界上最流行的Java框架。而SpringBoot的诞生是为了简化Spring程序开发。SpringBoot可以理解为Spring脚手架,什么是脚手架呢?就是我们盖房子所用的脚手架,使用脚手架可以更快地盖楼;使用SpringBoot可以更完成Spring框架的开发。
2025-07-08 16:53:08
1006
3
原创 Maven
以下是官方文档对Maven的描述:引用于欢迎使用 Apache Maven – Maveg简单翻译下:Maven是一个项目管理工具,提供pom.xml文件的配置获取jar包,而不用手动地添加jar包。
2025-07-07 23:41:09
652
3
原创 一文搞懂HTTPS
HTTPS也是一个应用层协议,在HTTP协议的基础上引入了一个加密层(SSL)。HTTP协议内容是按照文本的方式明文传输的,这就意味着数据在传输的过程中可能会出现被篡改的情况。
2025-06-15 18:19:25
1429
1
原创 网络原理10 - HTTP完
上一篇文章我们详细了解了HTTP请求,本篇文章我们来简单认识下HTTP响应中的状态码,并尝试使用第三方工具来构造一个HTTP请求。
2025-06-13 20:49:11
989
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
828
1
原创 网络原理8 - HTTP协议1
那为什么HTTP报文中要存在“空行”?HTTP协议中,并没有具体规定报头部分的键值对有多少个,空行就相当于是“报头的结束标志”,或者说空行是“报头和正文之间的分隔符”。HTTP在传输层是依赖TCP协议的,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”。
2025-06-11 23:18:48
992
2
原创 网络原理 6 - IP协议
上篇文章我们已经介绍完了TCP中的一些核心的机制。那么我们在传输层中应该选择TCP协议还是UDP协议呢?TCP特点:有链接、可靠传输、面向字节流、全双工。UDP特点:无连接、不可靠传输、面向数据报、全双工。应用场景:如果需要可靠传输,首选TCP,如果当前要传输的数据包很大,也首选TCP。绝大部分的场景,都可以优先考虑TCP~~UDP相比于TCP,最大的优点就是传输效率,比如有的场景中,对于效率要求很高,但是对可靠性要求不高,就可以优先选择UDP。那既对可靠性有要求,又对性能有要求的场景(比如打LOL等竞技类
2025-06-10 09:00:00
1011
1
原创 网络原理5 - TCP4
在之前的文章中,我们已经介绍了TCP的5个机制:确认应答、超时重传、连接管理、滑动窗口和流量控制,接下来我们来学习TCP的另外五个机制。
2025-06-07 21:51:07
1046
2
原创 网络原理3—TCP 2
(重点!!!上篇文章,我们讲到了TCP保证可靠性传输的其中两个机制——确认应答和超时重传,这篇文章。我们来讲述TCP保证可靠性的第三个机制——
2025-06-05 19:47:20
1632
原创 网络原理 2——TCP1
TCP全称为“传输控制协议”(Transmission Control Protocol),它会对数据的传输进行一个详细的控制。
2025-06-04 09:00:00
691
原创 网络编程1_网络编程引入
网络编程:网络上的主机,通过不同的进程,以编程的方式实现网络通信(网络数据传输)。也可以只需要满足进程不同即可。所以即使是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。但是,我们一定要明确,我们的目的是使网络上的不同主机,基于网络来传输数据资源。进程A :编程来获取网络资源。进程B:编程来提供网络资源。
2025-05-31 10:00:00
821
原创 文件操作和IO—IO代码案例
查找硬盘上文件的位置。需要我们给定一个文件名和需要搜索的目录,根据所给的信息,找到文件名匹配的结果并打印出该文件的绝对路径。之前我们讲过文件系统的目录是。
2025-05-24 21:47:16
606
1
原创 文件操作和IO-2 使用Java操作文件
这两种属性是文件路径的表示,可以表示为字符串类型或者字符类型,依赖于路径分隔符,实际开发中多使用“\”进行分隔。
2025-05-20 21:26:51
1048
原创 文件操作和IO—初识文件
狭义上的文件(file),,类似于办公桌上一份份文件一样。计算机中存储数据的设备:对于计算机来说,“文件”是一个广义的概念,硬盘上的普通文件,硬盘上的目录(文件夹),很多的硬件设备,都是被操作系统抽象成了文件(键盘、显示器、网卡……)作为程序员,我们并不关心硬盘的内部物理结构,写代码时并不涉及这些结构细节,操作系统都帮我们封装好了。操作系统有一个专门的模块,把硬件细节封装好,提供统一的API来给程序员调用。文件除了有数据内容之外,还有。
2025-05-20 17:15:45
836
原创 多线程进阶
sychronized背后涉及了很多的优化手段:1、锁升级:偏向锁 -> 轻量级锁 -> 重量级锁。2、锁消除:自动干掉不必要的锁。3、锁粗化:把多个细粒度的锁合并成一个粗粒度的锁,减少锁竞争的开销。这些机制都是在内部默默发挥作用的,是JVM的大佬们为我们默默奉献的(他暖,我哭~~~CAS:compare and swap,字面意思:“比较并交换”,是一个特殊的CPU指令(严格的说,和Java无关,它是操作系统内部)(JVM中关于CAS的API都是在unsafe包中,即不安全)。
2025-05-20 00:03:06
1022
原创 多线程代码案例-4 线程池
池是一个非常重要的概念,我们有常量池,数据库连接池,线程池,进程池,内存池……一开始讲过,进程能够解决编程问题,但是因为频繁创建和销毁进程,需要耗费大量的空间、时间,成本太高了,所以我们引进了。但是如果创建和销毁线程的频率进一步提高,此时线程创建和销毁的开销,也不能忽略了。(抛开剂量谈毒性,都是耍流氓),因此我们需要想办法,。1、引入轻量级线程——纤程/ 协程(Java21引入的虚拟线程就是这个东西)。协程本质,是程序员在用户态的代码中进行调度,而不是靠内核调度器调度,这就节省了很多调度上的开销。
2025-05-18 18:58:27
691
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人