自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 接收请求:HttpServletRequest的几种用法

本文详细介绍了Servlet中HttpServletRequest对象的使用方法。主要内容包括:1.获取请求参数的4种方法(getParameter、getParameterValues等);2.获取请求行信息的6种方法(getRequestURL、getRequestURI等);3.完整代码示例演示了各种方法的实际应用;4.使用时的10个重要注意事项;5.针对不同Tomcat版本的乱码问题解决方案。文章强调在实际开发中要根据参数类型选择合适的方法,并注意处理乱码问题,为Servlet初学者提供了实用的参考

2026-03-15 21:41:01 868

原创 【Servlet】浏览器与服务器的交互

本文介绍了JavaWeb开发中Servlet的基本概念和使用方法。主要内容包括:1. Servlet的作用机制,通过Tomcat作为中间件处理浏览器请求;2. 创建Servlet的三个步骤:继承HttpServlet类、重写service方法、配置访问路径;3. 浏览器访问Servlet的URL组成;4. service方法与doGet/doPost的关系;5. @WebServlet注解的常用属性;6. 通过登录接口示例演示实际应用;7. Servlet的生命周期;8. 常见问题提醒。文章旨在帮助初学者快

2026-03-13 22:11:57 763

原创 JWT详解:从登录认证到令牌验证

JWT(JSON Web Token)是一种解决分布式系统登录认证的方案。它由三部分组成:Header(声明类型和签名算法)、Payload(存放用户数据,如用户ID、过期时间)和Signature(用密钥对前两部分加密生成的签名,防止数据篡改)。工作流程是:用户登录成功后,服务器生成JWT返回给客户端;客户端保存JWT并在每次请求时通过Header携带;服务器收到请求后验证签名和过期时间,通过则放行,不通过则拒绝。相比传统session方案,JWT无需服务器保存状态,天生支持分布式系统,适合微服务和前后端

2026-03-11 22:10:58 543

原创 Spring MVC详解

本文详细介绍了SpringMVC的核心工作原理和执行流程。传统Servlet开发需要为每个接口编写Servlet并配置映射,而SpringMVC通过DispatcherServlet作为唯一入口,配合HandlerMapping、HandlerAdapter等组件实现了请求的统一调度处理。文章重点解析了请求从进入DispatcherServlet到最终响应的完整流程,包括URL映射查找、方法调用、视图解析和渲染等关键步骤。同时说明了开发者只需关注Controller业务逻辑和视图解析器配置,其他工作如参数绑

2026-03-07 22:53:17 762

原创 MyBatis详解

MyBatis通过封装JDBC的重复操作,大幅简化数据库访问流程。其核心组件包括SqlSessionFactory、SqlSession、Executor等,通过动态代理技术自动生成Mapper接口实现类。执行流程包含:1)读取配置;2)创建SqlSessionFactory;3)获取SqlSession;4)获取Mapper代理;5)执行SQL查询;6)事务管理;7)资源释放。相比JDBC,MyBatis自动处理连接管理、参数绑定、结果映射等繁琐操作,让开发者只需关注SQL和业务逻辑,显著提升开发效率和代

2026-03-06 22:34:35 912

原创 MySQL事务隔离级别详解:从脏读到MVCC,一文看懂并发控制的底层逻辑

摘要:本文详细介绍了MySQL事务的四种隔离级别及其实现原理。隔离级别从低到高依次为读未提交、读已提交、可重复读和串行化,在数据安全性和系统性能间需要权衡。重点解析了MVCC机制通过undolog实现多版本并发控制的原理,以及不同隔离级别下视图创建时机的差异。同时指出长事务的危害和正确启动事务的方法,建议使用显式事务配合autocommit=1模式。理解隔离级别和MVCC机制对掌握MySQL并发控制至关重要。

2026-03-05 21:33:34 588

原创 MySQL索引优化详解:从B+树到回表、覆盖索引与最左匹配原则

MySQL索引核心机制解析:从InnoDB存储引擎角度深入剖析索引原理,包括主键索引与普通索引的本质区别、回表操作的性能影响、覆盖索引的优化作用、联合索引的最左前缀匹配原则,以及5.6版本引入的索引下推技术。文章详细阐述了聚集索引与非聚集索引的数据存储差异,通过实例分析查询执行过程,揭示索引设计的底层逻辑和优化思路,帮助读者建立完整的索引知识体系,为SQL性能优化提供理论依据。

2026-03-04 22:24:02 653

原创 B树与B+树详解:从二叉树到多叉平衡树,数据库索引的进化之路

B树和B+树是数据库索引的核心数据结构。B树通过多叉结构降低树高,减少磁盘IO次数,解决二叉平衡树在磁盘存储中的性能问题。B+树在B树基础上改进:数据仅存于叶子节点,非叶节点仅作索引;叶子节点通过链表连接,支持高效范围查询。相比B树,B+树具有查询稳定、节点利用率高、范围查询高效等优势,因此成为主流数据库(如MySQL)的索引实现方式。B+树通过空间换时间的设计,实现了对数级时间复杂度,大幅提升了大规模数据存储和查询的效率。

2026-03-03 21:53:54 528

原创 HashMap详解:从数组到红黑树

如果链表长度都到8了,说明要么哈希函数有问题,要么数据量确实很大,这时候转换成树是值得的。因为如果数组还很小(比如默认16),可能是数据都挤在几个桶里,这时候应该先扩容,让数据分散开,而不是急着转树。因为数组在内存中是连续存储的,只要知道首地址和索引,通过一个公式就能直接计算出元素的位置。这样,不需要重新计算每个元素的hash值,只需要看hash值新增的那一位是0还是1,就可以决定元素的新位置。因为数组长度有限,而键的数量可能无限,根据鸽巢原理,一定会出现多个键映射到同一个位置的情况。

2026-03-02 21:09:04 845

原创 ArrayList VS LinkedList:从底层原理到性能对决

摘要:本文探讨了Java中ArrayList和LinkedList的核心区别。数组索引从0开始是出于性能考虑,通过内存地址计算可减少运算。ArrayList基于动态数组,支持自动扩容(1.5倍),具有O(1)的随机访问性能,但增删元素需要移动数据。LinkedList基于双向链表,增删只需修改指针,但访问需要遍历。实际测试表明,由于CPU缓存机制,ArrayList的遍历和删除操作往往比LinkedList更快。建议默认使用ArrayList,仅在频繁操作头部或已知节点时选择LinkedList。理解底层原

2026-03-01 19:46:40 1003

原创 从零开始理解堆(C++)

堆是一种高效管理优先级数据的完全二叉树结构,具有两种形式:最大堆(父节点值≥子节点)和最小堆(父节点值≤子节点)。在C++中,通常通过priority_queue实现堆的功能,默认创建最大堆,使用greater<int>可创建最小堆。堆的核心优势在于其O(1)获取堆顶和O(logn)插入/删除操作的高效性。与普通队列的FIFO不同,堆按优先级处理元素。堆广泛应用于任务调度、实时数据处理、图算法等领域。需要注意的是,堆数据结构与内存管理中的"堆"是完全不同的概念。掌握堆为解决动

2026-01-31 18:15:04 1115

原创 备战蓝桥杯--栈

本文总结了C++中栈数据结构在算法竞赛中的核心应用。主要内容包括:1)栈的基本概念与LIFO特性,对比数组、vector和链表三种实现方式;2)典型应用场景如括号匹配、表达式求值和单调栈问题;3)C++ STL栈的使用技巧,包括实现最小栈的方法;4)LeetCode实战案例解析,如最大矩形面积和接雨水问题。文章强调通过大量练习掌握栈的"最近相关性"特点,并注意边界条件处理,为算法竞赛和开发实践提供实用指导。

2026-01-29 20:03:46 599

原创 MyBatis 学习笔记

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2026-01-28 23:22:45 935

原创 力扣hot100普通数组(1)--C++

本文分享了LeetCode上两道数组问题的解题思路。第一题"最大子数组和"通过动态规划优化,从初始的if-else判断到简洁的max函数实现,并介绍了分治法的递归解法。第二题"合并区间"通过排序将O(n²)复杂度降至O(nlogn),比较相邻区间进行合并,同时对比了栈的实现方式。文章强调从直觉到优化的思考过程,指出排序在区间问题中的重要性,以及动态规划中"以当前位置结尾"的关键思路,展现了算法设计的精妙之处。

2026-01-27 18:09:21 805

原创 掌握Maven:高效Java项目构建与管理

摘要:本文系统介绍了Apache Maven项目构建工具的核心功能与应用。重点讲解了Maven的安装配置、标准化项目结构(pom.xml和目录约定)、依赖管理机制(坐标体系与范围控制)以及三大构建生命周期。同时阐述了Maven仓库体系(本地/中央/私服)的作用,强调了其在自动化构建、依赖管理方面的优势。文章指出Maven通过"约定优于配置"理念实现了项目标准化管理,是提高Java开发效率的重要工具,但也提到复杂项目可能需要Gradle等替代方案。

2026-01-26 21:24:20 1153

原创 力扣hot100-子串(C++)

本文分享了LeetCode上两道子串相关题目的解题思路。第一题"和为K的子数组"通过前缀和与哈希表巧妙转换问题,避免滑动窗口的局限;第二题"滑动窗口最大值"采用单调队列高效维护窗口极值。两题解法对比表明:算法选择需深入分析问题本质,而非仅凭表面特征。作者强调从暴力解法入手、逐步优化的学习方法,这种思考方式能带来更深刻的学习收获。

2026-01-25 18:04:51 1614

原创 力扣hot100滑动窗口(C++)

本文探讨了滑动窗口算法在字符串问题中的应用。第一部分通过"无重复字符的最长子串"问题,展示了从O(n²)暴力解法到O(n)滑动窗口优化的过程,利用哈希表记录字符位置实现高效窗口移动。第二部分解决"找到所有字母异位词"问题,比较了固定窗口大小的两种实现:直接比较字符计数数组与维护差异计数变量的优化方法。最后总结了滑动窗口的三种类型(固定长度、可变长度和多指针)及其优势,强调该算法能将许多连续区间问题的复杂度从O(n²)降至O(n),是处理字符串和数组问题的有效技巧。

2026-01-24 18:04:30 1088

原创 力扣hot100双指针专题解析2(C++)

本文介绍了四种解决"接雨水"问题的算法:暴力搜索(O(n²))、双指针(O(n))、动态规划(O(n))和单调栈(O(n))。暴力搜索通过逐个寻找水槽边界计算水量;双指针通过左右指针相向移动,根据两侧高度差计算储水量;动态规划预先计算每个位置的左右最大高度;单调栈则按行计算雨水。四种方法各具特点:暴力搜索直观但效率低,双指针空间最优,动态规划思路清晰,单调栈按行计算更符合实际雨水积累过程。文章强调掌握多种解法对培养多角度思考能力的重要性,建议根据实际需求选择合适方案。

2026-01-23 17:58:10 1147

原创 力扣hot100双指针专题解析1(C++)

本文总结了三种双指针算法的应用场景和解题思路。1)同向双指针(如移动零问题):通过快慢指针原地修改数组;2)相向双指针(如盛水容器问题):从两端向中间移动,利用边界信息优化;3)固定指针+双指针(如三数之和):先固定一个变量再处理剩余部分。双指针算法的优势在于能将时间复杂度从O(n²)优化到O(n),适用于数组搜索、比较等问题,关键要点包括排序预处理、处理重复元素和注意边界条件。通过典型例题的解析,系统梳理了双指针算法的核心思想和应用技巧。

2026-01-22 18:36:37 979 1

原创 微信小程序网络请求 wx.request 详解

本文介绍了微信小程序中实现网络通信的核心API wx.request()。该API用于发起HTTPS请求与服务器交互,支持GET、POST、PUT、DELETE等方法。使用前需在微信公众平台配置合法域名,开发阶段可通过开发者工具临时关闭域名校验。文章详细说明了wx.request()的参数配置,并提供了获取商品列表的GET请求示例,包括开发阶段使用模拟数据的临时方案。最后强调实际开发中应及时替换为真实请求,确保前后端协同完成功能。

2026-01-21 20:12:07 1040

原创 微信小程序页面配置详解

微信小程序页面配置详解:每个页面的.json文件可单独定制导航栏、窗口背景和页面效果。导航栏可设置背景色、标题样式;窗口背景支持颜色及下拉刷新效果;页面效果控制滚动和触底行为。页面配置优先级高于全局配置,但需注意TabBar页面的特殊规则。开发时需使用16进制颜色值,并重视真机测试。通过合理配置,可实现小程序各页面的差异化设计。

2026-01-20 21:47:55 1323

原创 微信小程序开发:数据绑定与事件处理

本文系统介绍了微信小程序开发中的数据绑定与事件处理核心概念。主要内容包括:1)数据绑定的三种形式(内容、属性、控制绑定)及Mustache语法运算功能;2)事件绑定机制与事件对象属性;3)通过data-*实现事件传参;4)使用setData()方法实现数据同步;5)条件渲染(wx:if/hidden)和列表渲染(wx:for)的实现方式及性能优化技巧。这些技术构成了小程序动态交互的基础,通过数据绑定使界面"活"起来,通过事件处理实现用户操作响应,是连接静态页面与动态功能的关键桥梁。

2026-01-19 21:43:10 958

原创 力扣hot100哈希表专题解析(C++)

本文解析了力扣Hot100中三道哈希表经典题目:两数之和通过哈希表将时间复杂度从O(n²)优化到O(n);字母异位词分组利用排序后的字符串作为哈希键实现高效分组;最长连续序列借助哈希集合在O(n)时间内找出最长序列。文章总结了哈希表的核心价值在于O(1)查找能力,强调设计合适哈希键的重要性,并提醒注意边界条件和时间复杂度分析。通过这三道题展示了哈希表在算法优化中的关键作用,包括直接查找优化、巧妙键设计和集合特性应用。

2026-01-18 16:44:57 1068

原创 备战蓝桥杯-哈希

哈希表容器对比与应用摘要:本文对比分析了unordered_map、map、unordered_set和set四种容器的特性,指出unordered系列在竞赛中更常用,仅需有序性时才选用红黑树实现的map/set。详细解析了哈希表的四大应用场景:频率统计、去重判断、索引映射和有序遍历,并提供了典型代码示例。文章系统介绍了核心API操作,包括插入(insert/operator[]/emplace)、查找(find/count)、删除(erase)等,强调了不同方法的使用场景和性能差异。特别提醒了operat

2026-01-17 19:53:02 1266

原创 微信小程序开发基础:宿主环境与核心组件

小程序开发基础与组件系统概述 小程序运行依赖于宿主环境(如微信客户端),该环境提供通信模型、运行机制、组件和API四大核心功能。通信模型中,渲染层、逻辑层和微信客户端三者协作完成数据交互。小程序启动分为代码包下载和初始化两个阶段,页面渲染则遵循配置加载、模板解析、逻辑执行和最终渲染的流程。 组件系统是小程序开发的核心,包含九大类组件,其中视图容器(view、scroll-view等)、基础内容(text、rich-text)、表单组件(button、checkbox等)和导航组件(navigator)最为常

2026-01-16 20:51:52 1238

原创 微信小程序开发:WXML、WXSS与JS详解

本文系统介绍了微信小程序开发中的三个核心文件:WXML(页面结构)、WXSS(样式)和JS(逻辑)。WXML采用特有标签体系替代HTML标签,WXSS扩展了CSS功能并引入rpx单位,JS文件则负责数据处理、生命周期管理和事件响应。这三个文件与JSON配置文件共同构成了小程序页面开发体系,通过职责分离实现高效协作:JS提供数据,WXML展示结构,WXSS美化样式,JSON负责配置。掌握四者的特性和协同工作机制,是开发高质量小程序的基础。

2026-01-15 22:28:13 1076

原创 微信小程序项目结构简要解析

本文系统介绍了微信小程序项目结构和JSON配置文件体系。小程序项目包含pages、utils等核心目录,以及app.js、app.json等入口文件。重点解析了4类JSON配置文件:1)app.json负责全局配置;2)project.config.json管理开发工具设置;3)页面级.json实现页面个性化;4)sitemap.json控制搜索索引。这些配置文件分层协作,分别处理应用基础设置、开发环境、页面差异化和搜索可见性,共同构建出结构清晰的小程序项目。理解这些文件的定位和关系是掌握小程序开发的基础。

2026-01-14 19:42:25 1160

原创 Druid连接池快速入门指南

本文介绍了数据库连接池的概念及Druid连接池的使用方法。连接池通过预先创建和复用数据库连接,解决了传统JDBC频繁创建/关闭连接的性能问题。文章详细讲解了Druid的配置步骤,包括导入jar包、创建properties配置文件、加载配置并获取连接等关键环节,特别强调了路径问题的解决方法。通过对比传统JDBC,展示了连接池在性能、资源消耗等方面的优势,并提供了查询和插入数据的完整示例。最后提醒注意连接关闭和合理配置连接数的重要性,指出连接池是实际项目中提升数据库访问效率的必备技术。

2026-01-12 17:31:15 927

原创 用Java连接数据库:JDBC快速入门与核心操作详解

JDBC是Java连接数据库的标准API,提供了一套操作关系型数据库的接口。文章介绍了JDBC的核心组件:驱动(Driver)负责连接数据库,连接(Connection)管理会话,执行器(Statement/PreparedStatement)处理SQL语句,结果集(ResultSet)存储查询结果。重点讲解了JDBC的基本使用流程:加载驱动→建立连接→执行SQL→处理结果→关闭资源,推荐使用PreparedStatement防止SQL注入,以及try-with-resources自动管理资源。此外还介绍了

2026-01-11 21:56:47 950

原创 SQL 学习笔记:连接查询与事务详解

本文介绍了SQL中的连接查询和事务处理两大核心概念。在连接查询部分,详细讲解了内连接(INNER JOIN)、左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)的使用场景和语法差异,以及如何通过连接条件避免笛卡尔积问题。在事务处理部分,阐述了事务的四大特性(ACID):原子性、一致性、隔离性和持久性,并通过银行转账案例演示了事务的基本操作流程,包括开启事务、执行SQL、提交或回滚等关键步骤。文章还特别提醒了MySQL默认自动提交的特性以及事务隔离级别的重要性。

2026-01-10 21:07:00 1168

原创 数据库设计的核心:表关系全解析

本文介绍了数据库设计中表关系的核心概念与应用。重点讲解三种基本表关系类型:一对一(1:1)用于表拆分提升性能,一对多(1:n)在"多"方添加外键,多对多(m:n)需创建关联表。文章通过示例代码演示了各类关系的实现方式,并提供了关系选择时的决策要点:分析业务逻辑、避免数据冗余、预估数据量和扩展需求。掌握这些表关系是构建健壮数据库系统的关键基础。

2026-01-09 22:23:12 1003

原创 MySQL约束详解:六种核心约束精讲

本文系统梳理了MySQL数据库中的约束管理,主要包括六种核心约束类型:非空约束(NOT NULL)确保字段不为空、默认约束(DEFAULT)设置默认值、唯一约束(UNIQUE)保证数据唯一性、主键约束(PRIMARY KEY)作为唯一标识、检查约束(CHECK)验证数据条件(MySQL8.0.16+支持)以及外键约束(FOREIGN KEY)维护表间关系。文章详细说明了每种约束的语法、应用场景和注意事项,特别对外键的四种操作规则(RESTRICT、CASCADE、SET NULL、NO ACTION)进行了

2025-12-31 22:30:53 885

原创 从零到一:Navicat实战操作与SQL查询精讲

sql-- 完整查询结构(按顺序)select -- 1. 选择要显示的字段字段列表from -- 2. 数据来源的表表名where -- 3. 筛选条件(行级过滤)条件group by -- 4. 分组字段分组字段having -- 5. 分组后条件(组级过滤)条件。

2025-12-30 22:42:49 627

原创 JavaWeb“扫盲”记录

本文分享了JavaWeb学习路线中关于MySQL数据库的基础知识。首先介绍了数据库核心概念和MySQL数据模型,重点讲解了SQL语句分类(DDL、DML、DQL、DCL)及通用语法。详细演示了数据库和表的DDL操作,包括创建、查看、修改和删除等命令,并深入解析了数值类型、字符串类型和日期时间类型的用法特点。通过创建学生管理系统数据库的完整示例,展示了实际应用场景,同时总结了常见错误及解决方法。文章旨在为JavaWeb初学者提供MySQL基础知识的快速入门指南,为后续学习SpringBoot打下基础。

2025-12-29 23:37:55 691

原创 学生视角:微信小程序全栈开发环境搭建完全指南

本文记录了从零开始搭建微信小程序全栈开发环境的经验总结。作者采用Java SpringBoot+uni-app的技术栈,详细介绍了前后端开发工具的选择与配置过程,包括HBuilderX、微信开发者工具、MySQL、Node.js等常见问题的解决方案。重点分享了环境变量配置、权限管理等典型"踩坑"案例,并提供了工具协作流程图和验证清单。文章强调环境搭建是学习编程的重要环节,建议初学者善用Git版本控制和Postman测试工具,培养问题排查能力。最后指出配置问题本质是理解系统运行规则的过程,

2025-12-28 19:54:27 1047

原创 从小程序前端到Spring后端:新手上路必须理清的核心概念图

本文从小程序开发初学者的视角,梳理了连接前端与Java后端开发的核心概念体系。前端部分重点解析了JavaScript、JSON、API和SDK四大基石,通过登录场景展示了它们的协作关系;后端部分阐述了Spring框架的依赖注入和面向切面编程机制,以及SpringBoot的快速开发优势。文章最后通过用户列表案例,完整呈现了前后端通过JSON进行数据交互的全栈协作流程,并为初学者提供了聚焦基础概念的学习建议。全文旨在帮助开发者建立前后端联动的整体认知框架。

2025-12-27 15:25:38 1143

原创 HBuilderX 新手初体验:从零配置到高效开发的完整指南

本文分享了使用HBuilderX开发微信小程序的入门经验。重点介绍了工具的核心优势:uni-app多端支持、学习友好性和高效开发功能。详细讲解了关键配置步骤,包括关联微信开发者工具和创建uni-app项目。提供了实用技巧如代码块加速开发、实时预览和调试方法。最后介绍了真机调试和发布流程。文章旨在帮助初学者快速上手HBuilderX进行小程序开发,实现前端与后端的高效协作。

2025-12-26 18:01:51 934

空空如也

空空如也

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

TA关注的人

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