自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring MVC小案例(1)

本文介绍了三个基于Spring Boot的Web应用实现:加法计算器、用户登录系统和留言板。加法计算器通过HTML表单提交数据,后端使用@RequestParam接收参数并返回计算结果;用户登录采用AJAX异步请求与Session机制,结合jQuery实现无刷新验证,正确则跳转页面显示用户名;留言板利用Lombok简化实体类编写,通过@RequestBody接收JSON数据,前端用AJAX动态加载和发布留言,实现局部更新。三者均体现了前后端分离、异步通信与状态管理的核心思想。

2026-10-25 19:11:43 800 7

原创 LeetCode刷题二分查找(二分查找+在排序数组中寻找元素的第一个和最后一个位置)Java

朴素二分查找模板:在有序数组中通过比较中间元素,每次排除一半区间,时间复杂度O(log n),空间复杂度O(1)。核心为left <= right循环,mid = left + (right - left)/2,根据nums[mid]与目标值比较调整边界。若找到返回下标,否则返回-1。扩展题如找首尾位置时需分别处理左右边界,注意中点计算和循环条件差异。

2026-10-24 20:34:51 264 15

原创 Linux 学习第二篇:从零认识 Linux 文件系统、目录结构与基本命令

本文介绍了学习Linux的第一步——理解文件系统与目录结构。通过WSL进入Ubuntu后,需掌握pwd、cd、ls等基础命令,明确当前路径、切换目录及查看文件。重点讲解了Linux根目录/下的常见目录(如/home、/etc、/var/log、/tmp等)及其用途,并强调目录规范的重要性。结合实际开发场景,说明熟悉目录结构是高效操作Linux的前提。

2026-10-24 16:29:36 203 12

原创 Redis 核心特性与应用场景:从底层原理到分布式系统应用

Redis基于内存存储,具备高速访问、多种数据结构(如String、Hash、List等)、Lua脚本支持、模块扩展、RDB/AOF持久化、集群分片与高可用机制。其单线程+IO多路复用设计进一步提升性能。广泛应用于缓存热点数据、共享Session、消息队列等场景,是分布式系统中高效处理高并发与低延迟需求的核心组件。

2026-10-24 15:07:33 206 7

原创 分布式系统进阶:数据库分库分表、微服务与架构演进总结

随着系统规模扩大,单体架构难以应对高并发与海量数据挑战。仅靠增加服务器、读写分离和缓存无法彻底解决数据库瓶颈与代码臃肿问题。分库分表可分散数据压力,但带来查询复杂、全局ID冲突、跨库事务及迁移难题;微服务则通过拆分业务模块,实现独立开发、部署与扩展,提升团队协作效率。二者结合,从数据与架构双维度优化系统,是构建高可用、可扩展分布式系统的必经之路。

2026-10-23 23:40:11 139 15

原创 LeetCode刷题滑动窗口(串联所有单词的子串+最小覆盖的子串)Java

本文解析了滑动窗口的两类经典问题:串联所有单词的子串与最小覆盖子串。前者通过固定窗口大小(单词长度)遍历起始位置,利用哈希表统计词频匹配异位词;后者采用动态窗口,维护有效字符种类数,通过收缩窗口找最小覆盖。两者均遵循“进、判、出”逻辑,关键在于合理维护计数与边界条件。代码实现中,使用哈希表或数组优化效率,适用于字符串匹配场景。

2026-10-23 16:14:27 143 4

原创 Linux 学习第一篇:从零认识 Linux,使用 WSL + Ubuntu 搭建学习环境

命令作用pwd查看当前工作目录cd ~切换到当前用户的主目录之后我们想使用Linux,可以使用powershell输入wsl -d Ubuntu,也可以直接用Ubuntu。

2026-10-22 19:36:37 609 16

原创 数据库读写分离与 Redis 缓存:从 MySQL 查询压力到缓存机制

应用服务器与数据库分离后,数据库仍可能成为性能瓶颈。通过读写分离,将读请求分发至从库,写请求由主库处理,可缓解压力。但存在数据复制延迟导致的不一致问题。引入Redis缓存可存储热点数据,减少对MySQL的重复访问,提升响应速度。缓存命中时直接读取,未命中则回源查询并写入缓存。为保证一致性,通常采用“更新数据库后删除缓存”策略。读写分离与缓存协同使用,能有效提升系统性能与可扩展性。

2026-10-22 10:57:42 300 18

原创 LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java

本文解析了两个滑动窗口经典题:水果成篮与异位词查找。前者通过哈希表维护窗口内水果种类,保持最多两种,用双指针扩展收缩窗口,求最长子数组;后者用数组代替哈希表统计字符频次,匹配目标字符串的字母组成,当窗口大小等于目标长度且有效字符数相等时记录结果。两者均从暴力解法优化至O(n)滑动窗口,体现“由简入繁”的解题思维。

2026-10-21 21:33:44 133 4

原创 Redis 初识:从单体架构到分布式架构的演进

本文介绍了在Java后端开发中,随着用户量增长,单机架构面临性能瓶颈,引出Redis与分布式系统的重要性。Redis作为内存型键值存储,擅长高速缓存热点数据,缓解MySQL查询压力;而分布式架构通过分离应用与数据库、引入负载均衡和多服务器协作,提升系统扩展性与稳定性。两者结合,实现高效、可扩展的后端系统设计。

2026-10-15 13:35:35 201 14

原创 Spring Web MVC 入门:从一个 URL 到 Java 后端完整处理请求

本文系统介绍了SpringMVC的入门基础,涵盖三大核心要点:准备工作(Tomcat作为Servlet容器监听8080端口,实现HTTP请求处理)、SpringMVC本质(基于Servlet封装,简化请求映射与参数解析)及MVC设计模式(模型、视图、控制器分离)。重点讲解了路由映射(@RequestMapping)、请求参数接收(如@RequestParam、@PathVariable、@RequestBody)、响应返回(静态页面、JSON、状态码设置)等内容,并对比@Controller与@RestCo

2026-10-14 19:10:18 354 14

原创 LeetCode刷题滑动窗口(最大连续1的个数三+将x减到0的最小操作数)Java

本文介绍了两道使用滑动窗口技巧的算法题。第一题“最大连续1的个数”通过维护窗口内0的个数,确保不超过k次翻转,动态调整窗口大小以求最长连续1序列。第二题“将x减到0的最小操作数”反向思考,转化为寻找和为sum - x的最长子数组,同样用滑动窗口实现。两题均体现滑动窗口在优化区间问题中的高效性:进窗口、判断、出窗口、更新结果。

2026-10-13 19:32:29 252 10

原创 LeetCode刷题滑动窗口(长度最小的子数组)

滑动窗口是一种高效解决连续子数组/子串问题的双指针技巧,通过维护一个动态区间,利用单调性避免重复计算。核心思想:右指针扩展窗口,左指针收缩窗口,仅在满足条件时更新结果。适用于求最短/最长连续区间(如最小长度子数组、无重复字符最长子串),时间复杂度由暴力$O(n^2)$优化至$O(n)$。关键在于:正数和或唯一性保证无需回溯,确保最优解不被遗漏。

2026-10-12 20:45:30 277 8

原创 LeetCode刷题双指针(有效三角形的个数+三数之和)Java

本文介绍了两个经典算法题的解法:有效三角形个数与三数之和。前者通过排序后固定最大边,利用双指针查找满足“两边之和大于第三边”的组合,高效统计答案;后者先排序,固定首个元素,再用双指针寻找两数之和为负的当前数,通过跳过重复元素实现去重。两者均依赖排序与双指针技巧,时间复杂度分别为O(n²)。

2026-10-10 23:44:17 200 10

原创 LeetCode刷题双指针(快乐数+盛最多水的容器)Java

本文介绍了两道经典算法题的解题思路与实现。第一题“快乐数”利用快慢指针检测循环,通过计算各位数字平方和,判断是否进入1的循环;第二题“盛最多水的容器”采用双指针法,从两端向内收缩,每次移动较短边,维护最大容积。两者均通过巧妙的指针策略优化时间复杂度,提升效率。

2026-10-09 22:07:58 310 9

原创 Spring Boot 快速上手:从 Maven 到第一个 Controller

本文介绍了Maven在JavaEE开发中的核心作用,包括其依赖管理、项目构建生命周期及仓库机制,并详细讲解了pom.xml配置文件的使用。通过创建SpringBoot项目,演示了如何利用Maven快速搭建Web应用,实现首个Controller接口的编写与测试。文章还提供了学习资料下载链接,帮助初学者高效入门SpringBoot开发。

2026-10-02 13:51:35 821 12

原创 JavaEE进阶-JavaScript初识

本文系统介绍了JavaScript的基础概念、语法及应用,涵盖变量、数据类型、运算符、数组、函数与对象等核心内容,并重点讲解console.log在调试中的作用。通过三种引入方式(行内、内部、外部)实现基础使用,结合jQuery简化DOM操作与事件处理。最后通过“猜数字”和“留言板”两个实战案例,演示了如何实现用户交互与动态页面更新,为网页动态化开发奠定基础。

2026-09-29 17:19:59 326 12

原创 LeetCode刷题day1(移动零+复写零 Java版)

本文总结了数组移动类问题的双指针解法,核心思想是原地操作、区域划分。以“移动零”为例,通过 cur 遍历,dest 指向非零元素末尾,遇非零则交换;“复写零”则先反向定位最后需处理元素,再从后往前复写,避免覆盖。两题均利用双指针实现高效原地修改,关键在于合理定义指针状态与边界处理。

2026-09-26 20:20:49 485 9

原创 JavaEE进阶-CSS初识

本文介绍了CSS的基本概念及其在网页样式中的作用,阐述了其与HTML、JavaScript的关系。内容涵盖CSS语法结构、三种引入方式(内部、行内、外部)、常用选择器(标签、class、id、通配符、复合选择器)及基础属性(如color、font-size、border、width/height、padding与margin),强调了选择器的优先级和元素显示类型对样式的影晌,帮助初学者理解如何通过CSS美化网页。

2026-09-26 18:00:38 280 14

原创 JavaEE进阶-HTML基础认识

本文系统介绍HTML基础知识,涵盖其作为超文本标记语言的本质、基本结构(doctype、head、body)、标签与属性的使用,以及常用标签如标题、段落、图片、链接、表格、表单等。重点解析了表单提交机制与语义化标签的应用,并结合前后端交互流程,说明HTML在网页构建中的基础作用,为后续学习CSS和JavaScript奠定基础。

2026-09-25 20:49:13 286 11

原创 JavaEE初识

本文从JavaSE过渡到JavaEE,系统介绍企业级Web开发的核心概念。重点讲解B/S架构下Web网站的工作流程,明确JavaEE在后端开发中的应用,涵盖Spring、SpringBoot、MyBatis等主流框架,强调项目实战能力培养。学习者将掌握从需求分析、代码开发、数据库操作到项目部署的全流程技能,具备独立完成完整Web项目的能力,并逐步具备企业级开发所需的规范意识与问题解决能力。

2026-09-25 13:04:21 330 17

原创 JVM面试考点

Java程序通过编译生成.class字节码,由JVM加载并执行,实现“一次编译,到处运行”。JVM作为操作系统与Java程序间的桥梁,负责内存管理、类加载、垃圾回收等核心功能。其内存区域包括程序计数器、虚拟机栈、堆、元数据区等,分别存储指令位置、方法调用信息、对象实例及类元数据。类加载采用双亲委派模型,确保核心类安全且避免重复加载。垃圾回收基于可达性分析,通过标记-清除、复制、整理等算法管理堆内存,结合分代回收机制(新生代与老年代)提升效率,有效应对内存溢出与泄漏问题。

2026-09-23 19:04:05 384 14

原创 网络原理(HTTP协议)

HTTP是应用层协议,采用“请求-响应”模式,用于客户端与服务器间传输数据。它定义了通信格式,底层依赖TCP。学习HTTP有助于理解前后端交互流程。抓包工具如Fiddler可捕获请求/响应,分析URL结构(协议、域名、端口、路径、查询参数)、请求方法(GET/POST)、请求头(Host、Content-Type、Cookie等)及状态码(200成功,404未找到等)。为解决HTTP的窃听、篡改和身份冒充问题,引入HTTPS,通过TLS实现非对称加密协商密钥、证书验证身份,最终用对称加密高效传输数据,保障安

2026-09-21 17:05:24 1677 25

原创 面试题(网络部分前传)-13问

本文总结了网络知识中常见的13个面试题,涵盖TCP/IP五层模型、IP/MAC/ARP关系、DNS解析、TCP/UDP区别、三次握手与四次挥手、TIME_WAIT/CLOSE_WAIT、可靠传输机制、流量与拥塞控制、TCP报文头字段及粘包拆包问题。作者结合自身理解与AI评分反馈,逐题分析错误并给出标准答案,帮助读者检验学习成果,适用于实习及秋招备考。后续将更新包含HTTP内容的题目,敬请期待。

2026-09-15 19:42:46 252 25

原创 网络原理(网络层,数据链路层)

本文深入解析网络层核心机制,重点讲解IPv4报头结构与IP地址管理。通过版本、首部长度、服务类型、总长度等字段,阐述数据包的传输控制与拆包重组。针对IPv4地址枯竭问题,介绍NAT网络地址转换原理,实现内网/外网地址映射,并说明路由器如何维护NAT表以区分多设备通信。同时对比IPv6优势,探讨子网划分与子网掩码作用,明确网络号与主机号的界定。最后结合路由选择与ARP协议,揭示数据从源到目的地的路径规划过程,完整呈现从网络层到数据链路层的封装与转发逻辑。

2026-09-14 22:51:54 638 26

原创 网络原理TCP/IP

本文的题目为什么只说TCP,为什么不包含UDP,因为在传输层当中,TCP的使用程度,复杂程度,相关的知识点是占大头的!!!

2026-09-11 20:27:20 952 23

原创 网络编程套接字(socket)

所谓的套接字也就是socket,这个socket和我们编写网络程序又有什么关系呢:socket是传输层给应用层提供的API的集合,socket就相当于是程序使用网络的接口,而网卡是把数据发出去的硬件,socket就相当于是网卡的一个遥控器我们网络编程主要涉及的就是传输层以及应用层的交互,我们先决定传输层的哪一个协议,是UDP还是TCP,也就是上文所介绍的两种:后续的各种层是操作系统根据我们代码中的任务来选择的Java 程序↓Java Socket 对象↓文件描述符 fd↓。

2026-09-07 15:59:53 302 17

原创 网络的初识

材料核心脉络是网络发展历程、网络分层、关键设备与协议。网络发展从单机到互联再到互联网与物联网。分层模型是TCP/IP五层,用于简化网络设计。关键设备路由器连接不同网络,交换机连接同网设备。IP负责定位终点,MAC负责当前段转发。传输层有TCP可靠和UDP不可靠两种协议。

2026-09-04 16:19:09 263 7

原创 文件操作和IO

本文介绍了文件与目录的概念、相对/绝对路径及文件分类,并讲解Java中File类的使用和IO流读写操作,包括字节流、字符流、flush与close的重要性,最后提供删除、复制、关键字查找等实际案例。

2026-09-03 19:33:13 263 4

原创 红黑树,位图的理解以及实现

因为我们前面讲到的AVL树对于平衡有着绝对的追求,它要求树高度差的绝对值要小于等于一,所以需要经常进行旋转,但是旋转会很消耗时间,所以即使AVL树的查找时间更快,我们依然引入了更加均衡的红黑树。

2026-08-30 20:27:36 176 5

原创 AVL树的实现(Java版)

本文介绍了AVL树的概念及其实现。普通二叉搜索树在极端情况下会退化为链表,查询效率降至O(n)。AVL树通过旋转操作保持平衡,确保任意节点左右子树高度差不超过1。文章详细展示了AVL树的Java实现代码,包括节点插入、四种旋转操作(左旋、右旋、左右旋、右左旋)以及平衡因子调整。通过测试用例验证了实现的正确性,确保树始终保持平衡状态,从而保证查询效率维持在O(log₂n)。

2026-08-16 20:06:05 68 5

原创 Java多线程四个案例

摘要:本文介绍了四种Java多线程编程中的重要模式与工具。1. 单例模式分为饿汉式(线程安全)和懒汉式(需双重检查锁+volatile保证线程安全);2. 阻塞队列通过wait/notify机制实现生产者-消费者模型,解决瞬时流量洪峰和空转问题;3. 线程池通过预创建线程降低开销,核心参数包括核心/最大线程数、存活时间等,可自定义线程工厂;4. 定时器使用优先级队列管理延时任务,通过时间比较和wait实现精准调度。每种技术均包含原理分析、线程安全实现要点及代码示例,最后还展示了如何手动实现这些核心组件。

2026-08-14 16:44:57 218 6

原创 多线程初阶

在代码中实现多线程的前提下,我们需要了解一下多线程的背景,cpu我们都知道,是电脑的大脑,电脑的计算,逻辑判断以及任务的调度都需要他,那为了提高开发的效率以及电脑的效率,我们可以提高cpu的能力,早期的cpu是单核的,也就是只有一个核心,这个时候我们如果要实现程序真正的并行(两个任务同时进行)运行的话,就得用到多核心,多核cpu通过多个核心从而调用多个进程来同时执行任务,但是进程的创建和销毁的成本很高,所以我们引入了更小的单位,也就是我们所说的线程,并且同一时刻,一个 CPU 核心只能执行一个线程。

2026-08-10 16:59:37 3335 14

原创 MySQL数据库基础(从零到一)

MySQL数据库学习笔记摘要 本文全面介绍了MySQL数据库的核心知识,内容涵盖10个主要部分: 基础概念:区分数据库软件与数据库实例的关系,介绍关系型与非关系型数据库的区别 基本操作:包括库表创建、数据类型选择、增删改查等基础SQL语句 数据库约束:主键、外键、唯一、非空等约束的使用场景和方法 数据库设计:三大范式理论和表间关系设计(1:1、1:n、n:n) 高级查询:联合查询(内连接、外连接、自连接)的实现方式 索引机制:B+树索引原理、索引分类及优化策略 事务管理:ACID特性、隔离级别解决并发问题(

2026-08-01 19:02:44 264 8

原创 Java数据结构8(map和set)

容器里只存储关键字 Key判断某个 key 是否存在、自动去重。

2026-07-14 23:08:11 196 1

原创 常见排序汇总--你都了解吗?

我们一般比较排序只要通过判断排序是否是稳定的,然后就是比较时间复杂度和空间复杂度,并且在下面的排序当中也会设计到,具体:也就是如下图,我们原本红色的5在后面,不过通过排序之后,可能会有以下两种情况,位置不改变也就是稳定的,空间复杂度我们探究的是最坏情况。

2026-07-01 12:27:27 219 4

原创 Java数据结构7(优先级队列)

本文介绍了堆的概念、实现方法及应用场景。堆是一种特殊的完全二叉树,分为大根堆和小根堆,其中大根堆的根节点是最大值,小根堆的根节点是最小值。文章详细讲解了堆的创建过程,包括向下调整(shelldown)和向上调整(siftup)方法,以及插入和删除操作的实现。同时介绍了Java中的PriorityQueue优先级队列及其比较器的使用方法。最后探讨了堆在解决top(k)问题和堆排序中的应用,展示了如何利用堆高效地获取前k个最小元素和实现从小到大排序。

2026-06-19 17:57:26 210 1

原创 Java数据结构6(队列和二叉树初步)

本文介绍了队列和二叉树的基本概念与实现。队列部分阐述了先进先出特性,对比了顺序存储(循环队列)和链式存储的实现方式,重点讲解了循环队列的空间优化策略。二叉树部分详细说明了树的基本术语、特殊二叉树类型(满二叉树、完全二叉树)及其性质,包括节点数量关系、遍历方式(前序、中序、后序)等核心知识点,并通过代码示例展示了二叉树的构建和遍历实现。全文通过理论讲解结合实践代码,系统性地介绍了这两种重要数据结构的关键特性与应用方法。

2026-05-10 14:32:03 380 1

原创 Java数据结构5(栈)

本文介绍了栈的基本概念、特点及常用方法。栈是一种遵循后进先出原则的线性表,主要操作包括压栈(push)和出栈(pop)。文章详细讲解了栈在编程中的实际应用:1)实现逆序打印;2)解决有效的括号匹配问题;3)判断出栈顺序是否合法;4)计算逆波兰表达式。每种应用都配有Java代码示例,如利用栈结构验证括号匹配、实现数组逆序输出等。这些示例展示了栈在算法问题中的典型使用场景,帮助读者理解栈"先进后出"的特性及其实际应用价值。

2026-05-03 23:17:47 399 1

原创 Java数据结构4(自己实现简单LinkedList)

本文介绍了链表的基本概念及其实现方法。链表是一种非连续存储结构,通过节点间的引用连接数据,与ArrayList的连续存储不同。重点讲解了双向链表的实现,包括节点类定义(包含prev和next指针)以及核心操作方法:头插法、尾插法、任意位置插入、查找、删除(单个/所有指定值节点)等。代码示例展示了如何通过改变节点引用来实现增删操作,并提供了获取链表长度、清空链表等辅助功能。实现中特别处理了头尾节点的边界情况,确保操作的正确性。

2026-04-25 16:24:16 46

空空如也

空空如也

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

TA关注的人

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