自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么!?居然只需要看完这篇文章就能掌握web自动化测试之概念篇

在生活里,如果你不懂英文,去国外餐厅点餐时,就需要一个翻译官——你把“要一份牛排”的需求告诉翻译官,翻译官再用英文传达给服务员,服务员做好餐后,翻译官又把“餐品已备好”的信息反馈给你,翻译官就是驱动。在电脑里各种设备要和你进行通信,也需要驱动程序,驱动就好似沟通的桥梁所以程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver以本地化⽅式驱动浏览器。

2025-12-25 14:41:13 601

原创 Spring 开发小白学习过程中常用通用配置文件,即拿即用!(持续更新中)

是适配 Spring Boot 3.x 生态的版本(基于 Jakarta EE 规范,替代原 Java EE),核心是在 MyBatis 基础上做无侵入增强,大幅简化 CRUD 开发。:指定 Spring Boot 日志的输出文件名称,默认生成在项目根目录下(也可指定绝对路径,如 name: /logs/spring-blog.log)。注意:数据库登录账号 / 密码,示例为本地默认的 root/123456,生产环境需替换为安全的账号密码。java_blog_spring:要连接的数据库名。

2025-12-13 15:23:13 882 3

原创 Spring 后端安全双剑(下篇):JWT 无状态认证 + 密码加盐加密实战

核心特性单向哈希运算,将任意长度数据转换为固定长度的 “摘要值”;无法从摘要反推原文,数据微小变化会导致摘要完全不同。子类型MD(Message Digest):消息摘要算法(如 MD5)。SHA-1(Secure Hash Algorithm):安全散列算法。MAC(Message Authentication Code):消息认证码算法。适用场景:数据完整性验证、密码存储(存摘要而非明文)、数字签名组件。

2025-12-11 17:18:51 722 3

原创 Spring 后端安全双剑(上篇):JWT 无状态认证 + 密码加盐加密实战

令牌(Token)的本质:是服务端颁发给客户端的 “临时身份凭证”,本质是一段经过加密的字符串,包含用户身份、权限、过期时间等核心信息,服务器具备⽣成令牌和验证令牌的能⼒你可以把它理解为:用户登录成功后,服务端给的一张 “电子通行证”—— 后续客户端访问需要权限的接口时,只需出示这张 “通行证”,服务端验证通过就允许访问,无需再重复验证用户名密码⽤⼾登录 ⽤⼾登录请求,经过负载均衡,把请求转给了第⼀台服务器,第⼀台服务器进⾏账号密码验证,验证成功后,⽣成⼀个令牌,并返回给客⼾端。

2025-12-11 15:46:38 833

原创 Spring Boot 实战(一):拦截器 + 统一数据返回 + 统一异常处理,一站式搞定接口通用逻辑

拦截器是 SpringMVC 的核心组件,能在请求生命周期的关键节点执行自定义逻辑,常用于登录校验、接口访问日志、权限控制、参数校验等场景也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以在⽤⼾请求前阻⽌其执⾏.在拦截器当中,开发⼈员可以在应⽤程序中做⼀些通⽤性的操作,⽐如通过拦截器来拦截前端发来的请求,判断Session中是否有登录⽤⼾的信息.如果有就可以放⾏,如果没有就进⾏拦截实现HandlerInterceptor接⼝,并重写其所有⽅法@Slf4j@Component。

2025-12-04 15:58:56 777

原创 手把手教你 MyBatis 起飞(一):MyBatis动态SQL + 6大核心标签 + 实战避坑

动态 SQL 是指在程序运行时根据条件动态拼接、生成的 SQL 语句,而非硬编码在代码中的固定语句,就例如用户可自主选择查询表中的姓名、密码、年龄等字段的任意组合(仅查姓名,或同时查姓名与年龄,或全查),也可仅拼接输入的有效筛选条件,让 SQL 语句更贴合实际使用需求。

2025-11-29 16:51:39 573

原创 手把手教你 MyBatis 入门(二):#{} 和 ${} 的区别、用法及 SQL 注入防范(附代码案例)

不知道大家有没有好奇,之前在Mybatis的基础入门文章中,一直在用到 ,且使用的好好的,怎么突然出现了,其实在 MyBatis 参数赋值有两种⽅式,就是二者中其中的一种,只不过这两种赋值的方式有些较大的区别,参数解析机制完全不同,所以在使用过程中,针对不同的目的,用不同参数赋值方式首先分别用 #{} 和 ${} 接收不同类型的参数,来观察两者的区别#{}Mapper接⼝:测试代码:执⾏结果:Mapper接⼝:测试代码:执⾏结果:好像都可以执行成功,感觉是没什么差别,但是细心的你肯定观

2025-11-27 15:03:55 810

原创 手把手教你 MyBatis 入门:环境搭建 + 参数传递 + CRUD+ 多表查询实战

从上述代码和操作流程可以看出,对于JDBC来说,整个操作⾮常的繁琐,我们不但要拼接每⼀个参数,⽽且还要按照模板代码的⽅式,⼀步步的操作数据库,并且在每次操作完,还要⼿动关闭连接等,⽽所有的这些操作步骤都需要在每个⽅法中重复书写.那有没有⼀种⽅法,可以更简单、更⽅便的操作数据库呢?答案是肯定有的,那就是。在 MyBatis 中,param1、param2 是 无 @Param 注解时,多个单个参数的默认别名—— 本质是 MyBatis 为了避免参数名丢失后无法引用,给参数按。

2025-11-25 13:02:32 810 1

原创 一文搞懂 SpringBoot 配置文件:properties vs yml 全攻略

SpringBoot 虽然它已经帮我们预设了很多默认值(比如默认端口 8080),但实际开发中,“默认值” 很难满足所有需求,在加上 SpringBoot ⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的。properties 是 SpringBoot 最早支持的配置格式,也是创建SpringBoot项⽬默认的配置⽂件。配置⽂件也可以配置list集合,集合的读取和对象⼀样,也是使⽤。如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤。

2025-11-20 16:25:38 667 1

原创 Spring DI 入门详解:三种依赖注入方式 +@Autowired 歧义问题解决

DI(Dependency Injection)直译为“依赖注入”,依赖注⼊是⼀个过程,是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源,⽽资源指的就是对象没有 DI:你得自己买原料、煮茶、做奶盖(自己创建依赖)有 DI:你直接点外卖,奶茶店(IOC容器)做好奶茶(依赖)送到你手上(注入)简单来说,就是把对象取出来放到某个类的属性中结合上篇的IOC文章,我们可以对IOC是 Spring 的核心思想,DI是其具体实现手段这句话应该会有了更深的理解,也就是。

2025-11-18 18:13:09 613

原创 Spring IoC 入门详解:Bean 注册、注解使用与 @ComponentScan 配置

IoC全称Inversion of Control (控制反转),咱先不说Spring IOC概念,我们首先按照字面意思给你举个生活的例子来对比一下假设你要装一套新房:方式1在没有IOC下:你就是业主,要亲手搞定所有事情,做的事情包括不限于:自己找工人,自己买材料,自己管流程,自己扛风险方式2在IOC下:你只需要做 2 件事,告诉装修公司需求:比如说我要简约风格、预算 30 万、3 个月完工。最后验收房子:装修公司把所有细节搞定,你直接拎包入住,剩下的所有事,全由装修公司负责,找工人、买材料等等。

2025-11-17 12:47:09 1036

原创 Spring MVC入门(一):第一个必写的简单小案例-留言板

获取全部留⾔全部留⾔信息,我们⽤List来表⽰,可以⽤JSON来描述这个List数据.前后端交互过程和接⼝传参,数据返回,以及⻚⾯展⽰,后续图书馆系统等等案例都将以这个为基础,不断扩展。

2025-11-15 14:35:14 723

原创 深入解析 IP 协议:从基础核心机制到地址管理、路由选择的全方位指南

本章内容虽然面试可能不考,写代码可能也用不到,毕竟在网络层平时不直接接触,但是或许之后的搭建某个环境进行某些测试是就用到了,并且也对于程序员来说也属于”常识“类的内容,还是值得得花点时间来整理一下的,希望这篇文章能帮助到你们。

2025-11-11 16:14:09 948 1

原创 TCP的核心特性精讲(下篇)

在TCP的核心特性精讲(上篇)中详细介绍篇了 TCP 可靠传输的核心根基——确认应答、超时重传与连接管理(三次握手 / 四次挥手),它们构成了 TCP 稳定传输的核心骨架,而 TCP 的高效可靠,还离不开剩余七大核心特性滑动窗口、拥塞控制、延迟应答、捎带应答、粘包处理、流量控制、重复数据丢弃。本篇将逐一拆解七大特性,带你吃通TCP的十大特性机制TCP 十大特性围绕“可靠又高效”的目标,从确认重传、连接管理保障数据与连接的可靠性,到滑动窗口、流量拥塞控制平衡速度与网络负载,再到延时捎带、粘包处理、异常应对。

2025-11-09 10:00:00 677

原创 TCP的核心特性精讲(上篇)

TCP/IP是⽹络编程的,是⼀个服务器开发程序员的,是整个⽹络课程中的,也是各⼤公司笔试⾯试的,本章从到的详细讲解,梳理TCP的重点内容由于十大特性内容比较多,这边将内容分为上下两篇,上篇主要讲解TCP和加上,下篇讲解剩下七个机制。

2025-11-07 18:55:50 1171

原创 彻底搞懂 HTTPS 加密原理:从对称 / 非对称加密到数字证书,全方位拆解安全通信的底层逻辑

HTTPS 的 “加密传输 + 数字证书认证” 双机制,是面试中的重点考察内容,希望这篇文章可以让你们了解这背后的门道。

2025-11-05 15:11:58 975

原创 HTTP 协议基本格式与 Fiddler 抓包工具实战指南

你每天打开浏览器刷网页、用 APP 发消息、看视频时,背后都有一个 “隐形的规则” 在协调数据传输 —— 这就是 HTTP。HTTP(HyperText Transfer Protocol,超文本传输协议)是一种应用非常广泛的应用层协议,它规定了客户端(如浏览器、手机 APP)和服务器之间如何传递数据。简单说,它就像客户端和服务器之间的 “对话语言”:客户端按这个规则 “提问”,服务器按这个规则 “回答”,双方才能顺利交换信息(比如网页内容、图片、视频、接口数据等)。

2025-11-02 15:22:13 1478 1

原创 Java 网络编程:TCP 与 UDP 的「通信江湖」(基于TCP回显服务器)

ServerSocket 是创建TCP服务端Socket的API。

2025-10-30 20:39:39 893 1

原创 Java 网络编程:TCP 与 UDP 的「通信江湖」(基于UDP回显服务器)

DatagramSocket是UDP socket,⽤于发送和接收UDP数据报。

2025-10-29 23:06:02 938 2

原创 跟 Java 聊聊 “文件那点事儿”:从不会 IO 到敢操作文件的小笔记

File类中的多个属性,构造方法和方法,我会着重讲解几个常见的,也是学文件操作比较重要的。构造方法签名说明根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实例根据⽂件路径创建⼀个新的 File 实例,路径可以是绝对路径或者相对路径根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实例,⽗⽬录⽤路径表⽰属性修饰符及类型属性说明依赖于系统的路径分隔符,String类型的表⽰依赖于系统的路径分隔符,char 类型的表示疑问,为什么在Windonws上分隔符是\而其他系统上不是呢?

2025-10-26 23:51:00 818 2

原创 TreeMap 和 TreeSet 笔记

每个节点包含三个部分:存储的值(val)、左子节点引用(left)、右子节点引用(right)。通过构造方法初始化节点值,左、右子节点默认为 null。//存储的值(val)//左子节点引用(left)//右子节点引用(right)//通过构造方法初始化节点值对比项TreeSetTreeMap存啥单个元素(Key)键值对(Key-Value)核心能力元素自动排序 + 去重键自动排序(值可重复)排序规则元素自带或自定义键自带或自定义底层结构。

2025-10-20 21:51:02 1016 2

原创 HashTable、HashMap、ConcurrentHashMap 三者区别详解

单线程用HashMap,追求极致性能,用于单线程环境或无并发修改的场景较为合适;多线程用,兼顾安全与效率,切能在保证线程安全的同时,实现了接近 HashMap 的性能;HashTable已被时代淘汰,我觉得应该尽量避免使用。

2025-10-19 16:22:00 342 1

原创 深入理解 Java 中的 synchronized 关键字

特点:通过创建独立的锁对象,实现 “不同资源用不同锁”,避免锁竞争。适用场景:需要保护多个独立共享资源,且希望不同资源的同步操作互不干扰。//通过创建独立的锁对象,实现 “不同资源用不同锁”,避免锁竞争)。// countA专用锁// countB专用锁// 操作countA,仅锁定lockAcountA++;// 操作countB,仅锁定lockBcountB++;

2025-10-13 17:50:49 594 1

原创 Java 线程池详解:参数、流程与实战

在 Java 并发编程中,线程池是绕不开的核心组件。它通过预先创建线程并复用,避免了频繁创建 / 销毁线程的性能开销,同时能有效控制并发线程数量,防止资源耗尽。今天我们就从核心参数、工作流程和实战用法三个维度,彻底搞懂线程池。Java 中所有线程池的底层实现都是 ThreadPoolExecutor(位于 java.util.concurrent 包),它的构造方法定义了线程池的核心行为。先看最完整的构造函数:这 7 个参数决定了线程池的 “性格”,我们逐个拆解:工厂模式也是一种设计模式,和单列模式是并

2025-10-11 18:39:51 1092

原创 单例模式的两种基础实现:饿汉式与懒汉式(线程安全版)

汉式和懒汉式是单例模式最基础的两种实现,核心区别在于实例初始化时机和线程安全保障方式饿汉式通过 “类加载即初始化” 和 JVM 的线程安全机制,实现简单且性能优异,但可能浪费资源;懒汉式通过 “延迟加载” 和同步,避免资源浪费,但存在锁开销,适合低并发场景。选择时需根据实例资源消耗和并发量决定:轻量实例优先饿汉式,重量级实例且并发低时选懒汉式。这两种方式为更复杂的单例实现(如双重检查锁、静态内部类)奠定了基础,理解它们的原理是掌握单例模式的关键。

2025-09-30 17:04:50 762

原创 深入理解线程安全:原因剖析与解决方案总结

在多核 CPU 普及的今天,多线程编程已成为提升程序性能的重要手段。然而,线程安全问题却像一颗隐形炸弹,随时可能导致数据错乱、程序异常甚至系统崩溃。本文将系统剖析线程安全问题的根源,并给出切实可行的解决方案,帮助开发者写出更健壮的并发程序。当多个线程同时访问某个对象时,无论线程的调度方式如何,无需额外的同步操作,这个对象都能表现出正确的行为。反之,若多个线程访问共享资源时出现数据不一致、逻辑错乱等问题,则称为 “线程不安全”。

2025-09-30 11:27:39 602

原创 Java 线程状态全解析:从创建到终止的生命周期

NEW和TERMINATED是线程的起点和终点RUNNABLE是线程 “活跃” 的核心状态是线程 “暂停” 的不同场景(锁竞争、无限等待、有限等待)握这些状态有助于调试并发问题(如线程卡死可能是WAITING状态未被唤醒),是编写高效并发程序的基础。

2025-09-26 13:04:56 894

原创 Java Thread 类基本用法总结

线程创建线程中断线程等待线程休眠获取线程实例Thread类线程创建:继承Thread类或实现Runnable接口线程中断:通过interrupt()设置中断标志,isInterrupted()判断中断状态线程等待:使用join()方法等待其他线程完成线程休眠:使用sleep()方法暂停线程执行获取线程实例:通过currentThread()获取当前线程掌握这些基本用法是进行多线程编程的基础,但在实际开发中,还需要注意线程安全、资源竞争等问题。

2025-09-25 11:20:16 786

原创 Java 优先级队列与堆:实现与应用

当存储自定义对象时,需要指定比较规则,可以通过让对象实现Comparable接口或提供Comparator// 任务类// 优先级,数字越大越重要// 实现Comparable接口,按优先级升序排列@Override@Overridereturn name + " (优先级: " + priority + ")";// 使用自然顺序(按优先级升序)// 添加任务minPriorityQueue.add(new Task("打印文件", 2));

2025-08-06 13:45:37 1858

原创 Java面向对象编程核心:类与对象详解

面向对象编程(OOP)是一种以对象为核心来模拟现实世界的编程范式。它通过定义类来抽象事物的属性和行为,再通过类创建对象实例来具体化事物。对象之间通过方法调用进行交互,从而实现对复杂问题的建模和解决,这种方式更符合人类对现实世界的认知,能够有效提高代码的可维护性和可扩展性。类是创建对象的模板,定义了对象的属性和行为。属性(成员变量):描述对象的状态方法:定义对象的操作构造方法:用于初始化新创建的对象(后面详细讲解)// 属性(成员变量)// 姓名// 年龄// 成员方法(行为):获取信息。

2025-06-20 16:57:06 1927

原创 从零开始学 Java:从语言特性到程序基础

本文系统介绍了Java编程语言的基础知识。第一部分梳理了Java的发展历程,从1995年诞生至今的演进过程,并分析了其安全、高效、易维护的核心优势以及与C/C++的区别。第二部分详细讲解了Java程序的起点——main方法,包括其标准格式、执行示例和运行原理。第三部分阐述Java基础语法,包括注释的三种类型、标识符的命名规则和关键字的特殊作用。全文以简明扼要的方式为初学者构建了Java学习的知识框架,涵盖语言特性、程序结构和基础语法等核心内容,为后续深入学习奠定基础。

2025-06-13 15:19:10 1371 1

空空如也

空空如也

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

TA关注的人

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