- 博客(88)
- 问答 (1)
- 收藏
- 关注
原创 前端小知识003:JS中 == 与 === 的区别
JavaScript中的==和===运算符具有本质差异:==会进行隐式类型转换,可能产生意外结果,如0 == ''为true;而===要求类型和值严格相等。特殊情况下,null == undefined为true,但与其他值不等;对象比较引用地址而非内容。由于==的不可预测性,建议优先使用===并通过Number()、parseInt()等显式转换确保代码可靠性,同时注意NaN需用Number.isNaN()判断。严格相等能避免类型转换带来的潜在问题。
2025-11-17 14:36:15
281
原创 前端小知识002:ref 与 reactive 详解
Vue 3的响应式系统中,ref和reactive是两种核心响应式工具。ref通过.value属性包装任意类型数据,适合基本类型和需要重新赋值的场景;reactive则直接代理对象,适合管理复杂对象状态。关键区别在于:ref支持所有数据类型但需.value访问,而reactive仅支持对象类型但有直接访问优势。实际使用时,简单数据优先ref,关联对象状态选择reactive,并注意reactive的解构和重新赋值可能导致响应式丢失问题。合理选择能提升代码可维护性和性能。
2025-11-17 11:56:39
590
原创 前端小知识系列001:var,let与const有什么区别?
JavaScript 中 var、let 和 const 的主要区别: 作用域:var 是函数/全局作用域,let和const是块级作用域 变量提升:var会提升并初始化为undefined,let和const会提升但不可访问(临时死区) 可变性:var和let可重新赋值,const不可重新赋值(但可修改对象属性) 声明要求:const必须声明时初始化,var和let可后初始化 建议:默认使用const,需要重新赋值时用let,避免使用var。
2025-10-11 08:38:52
1106
原创 AJAX 知识篇(2):Axios的核心配置
本文深入讲解Axios的进阶用法,重点解析HTTP报文结构和Axios常用请求方式。HTTP报文分为请求报文(请求行、请求头、请求体)和响应报文(状态行、响应头、响应体),详细介绍了各部分的组成和常见字段。针对Axios的GET请求,重点说明通过params属性传递参数的多种方式,包括单个参数、多个参数以及数组参数的传递方法,并演示了参数如何自动序列化为查询字符串附加到URL。文章为开发者提供了HTTP协议和Axios请求的实用技术参考。
2025-10-10 15:01:07
994
原创 AJAX 知识篇(1):AJAX基础概念与Axios的使用
AJAX技术解析:XMLHttpRequest与Axios对比 摘要: AJAX是一种无需重新加载整个网页即可更新部分内容的技术,核心是XMLHttpRequest对象。它通过异步请求实现局部更新,包含请求创建、配置、发送和响应处理等步骤。文章详细介绍了XMLHttpRequest的方法属性及原生实现方式。同时解析了基于Promise的Axios库,对比了其优势:简洁API、自动JSON转换、拦截器功能等,并提供了GET/POST请求示例。最后阐述了Promise的三种状态和链式调用优势,展示了现代异步编程
2025-10-10 15:00:52
574
原创 Vue 知识篇(2):浅谈Vue中的DOM与VNode
本文深入剖析了DOM与VNode的核心概念及其在前端开发中的应用。首先,详细介绍了DOM节点的基本概念、主要节点类型、核心属性及操作方法,强调了DOM作为网页文档结构基础的重要性。接着,阐述了VNode作为虚拟DOM节点的概念,包括其核心属性、与DOM的关系以及在性能优化、开发效率和跨平台支持方面的优势。文章还探讨了VNode的创建过程,包括模板编译、VNode生成、Diff比对及DOM更新等步骤,并通过手动创建VNode的示例,展示了Render函数和createElement方法的使用。
2025-10-09 09:27:57
710
原创 SpringBoot小知识(5):日志门面库与日志框架
Spring框架日志使用摘要 Spring通过SLF4J日志门面集成Logback/Log4j2等日志框架,提供统一接口实现系统监控、问题排查、安全审计等功能。日志分为TRACE/DEBUG/INFO/WARN/ERROR五级,可通过logback.xml配置输出格式和级别。开发时需导入slf4j-api和具体日志框架依赖,通过LoggerFactory获取日志对象,使用占位符{}输出变量。日志记录包含时间戳、线程、级别、类名等信息,是系统运维和开发调试的重要工具。
2025-10-09 09:11:05
670
原创 Vue2 知识篇(1):Vue2当中的指令语法
本文介绍了Vue2中的核心指令语法,包括插值语法和常见指令。插值语法使用双大括号{{}}绑定数据,支持JavaScript表达式。指令语法以v-开头,详细讲解了v-bind(属性绑定)、v-model(双向绑定)、v-if(条件渲染)、v-show(显示切换)和v-for(列表渲染)的使用方法及场景。其中v-bind和v-model提供了简写形式,v-if可与v-else搭配使用,v-for能遍历数组和对象。这些指令是Vue2开发的基础,掌握它们对构建响应式应用至关重要。更多细节可参考Vue2官方文档。
2025-10-09 09:02:33
1028
原创 MyBatis-Plus 知识篇(3):MyBatis-Plus的逻辑删除与自动填充
本文介绍了MyBatisPlus的两个实用功能:逻辑删除和自动填充。逻辑删除通过在表中添加is_deleted字段标识记录状态,避免物理删除,通过@TableLogic注解或配置文件实现。自动填充功能通过@TableField注解和MetaObjectHandler接口,自动维护create_time和update_time字段。两者都适用于MyBatisPlus自带的SQL语句,不适用于自定义SQL。这两个功能能有效简化开发,提高数据管理的规范性和效率。
2025-09-29 09:14:11
596
原创 MySQL 函数篇(3):常用的时间日期函数
MySQL提供了丰富的日期时间处理函数,主要包括:1)获取当前日期时间的NOW()、CURDATE()等函数;2)提取日期时间部分的YEAR()、MONTH()等函数;3)格式化转换的DATE_FORMAT()和STR_TO_DATE()函数;4)日期计算的DATE_ADD()、DATEDIFF()等函数。这些函数支持从日期提取特定部分、格式转换、加减计算等操作,是处理日期时间数据的重要工具,其中NOW()和SYSDATE()在多次调用时存在细微差异。
2025-09-28 14:59:46
733
原创 MySQL 函数篇(2):字符串函数
本文介绍了MySQL中常用的字符串函数,主要分为以下几类:长度函数(CHAR_LENGTH、LENGTH)、连接函数(CONCAT、CONCAT_WS)、截取函数(SUBSTRING、LEFT、RIGHT)、搜索函数(LOCATE、INSTR、POSITION)、替换函数(REPLACE、INSERT)、修剪函数(TRIM、LTRIM、RTRIM)、填充函数(LPAD、RPAD)、大小写函数(UPPER、LOWER)、比较函数(STRCMP)和其他实用函数(REVERSE、REPEAT、SPACE、FORM
2025-09-28 09:08:23
1144
原创 MySQL 函数篇(1):流程控制函数
`MySQL`提供了多种流程控制函数,允许用户根据条件来改变 SQL语句的执行逻辑。这些函数在数据查询、更新和存储过程中都非常有用,在本文您将能学习到如下函数: 1. `IF`(expr, v1, v2) 2. `IFNULL`(v1, v2) 3. `NULLIF`(expr1, expr2) 4. 简单 `CASE` 语句 5. 搜索 `CASE` 语句
2025-09-25 15:41:06
469
原创 从零开始学Vue3:Vue3的生命周期
Vue3与Vue2的生命周期从总体上来看并没有太多的变化,所有我们在Vue2的生命周期基础之上来讲述Vue3的生命周期,如果不了解Vue2。
2025-09-02 16:40:24
771
1
原创 从零开始学Vue3:Vue2的生命周期
Vue2的生命周期分为创建、挂载、更新和销毁四个阶段,共包含八个主要钩子函数。创建阶段的beforeCreate和created用于初始化数据和响应式系统;挂载阶段的beforeMount和mounted处理DOM相关操作;更新阶段的beforeUpdate和updated响应数据变化;销毁阶段的beforeDestroy和destroyed执行清理工作。此外,Vue2.6+新增了errorCaptured和keep-alive相关钩子。这些钩子函数允许开发者在特定阶段插入自定义代码,是Vue实例生命周期的
2025-09-02 09:49:24
1130
原创 JavaScript 知识篇(1):解构赋值
解构赋值是 ES6 引入的一种语法特性,它允许我们按照一定模式从数组或对象中提取值,然后对变量进行赋值。这种语法让我们的代码更加简洁、易读,同时提高了开发效率。本文将通过丰富的示例和实际应用场景,带你全面掌握ES6解构赋值的精髓。
2025-08-29 14:53:49
282
原创 万字知识篇(3):万字详解MapStruct
通过本文,你将学习到 MapStruct 的核心知识与实用技巧。文章从 MapStruct 的基本信息入手,对比其与 BeanUtils 的优劣,带你初识 MapStruct 的魅力。接着,详细介绍 MapStruct 的基本原理及简单使用,涵盖导入依赖、创建转换接口、使用静态实例和调用映射方法等内容。重点讲解 @Mapping 注解的多种属性,包括基本属性、忽略属性、动态拼接、默认值、固定值、时间转换及自定义转换等,帮助你灵活配置映射规则。最后,探讨 MapStruct 的高级映射功能,如集合映射
2025-04-09 15:07:42
5411
5
原创 从零开始学Vue3:关于setup函数
Vue 3 的发布带来了许多的新特性,其中 setup 函数无疑是 Composition API 的核心,它为组件的开发方式带来了显著的变化。本文将深入探讨 setup 函数的用途、工作原理以及如何在实际开发中有效利用它。
2025-04-09 15:07:05
1814
1
原创 万字知识篇(2):SpringBoot的常用注解(上)
说到`SpringBoo`t的注解,那我们先来说一下注解在`SpringBoot`中起到了什么作用。`SpringBoot` 采用 **"约定优于配置"** 的理念,使用注解替代传统的 `XML` 配置,使代码更简洁、易读。例如我们可以使用`@Configuration`它的作用是声明一个类为**配置类**,他会替代 `XML配置文件`。
2025-04-01 15:59:54
835
原创 MyBatis 知识篇(1):详解结果映射resultMap的使用(万字知识版)
本文详细介绍了MyBatis中的结果映射机制,重点讲解了<resultMap>标签的使用及其各种属性。文章首先区分了自动映射和自定义映射的适用场景,然后详细解析了resultMap的核心属性(id、type、autoMapping等)和子标签(id、result、association、collection)的功能及用法。通过具体示例展示了简单映射的实现方式,并进一步阐述了高级映射的概念,包括一对一(association)和一对多(collection)关联关系的映射处理方法。文章内容全面覆盖了MyBat
2025-04-01 15:58:15
1192
原创 MyBatis-Plus 知识篇(2):MyBatis-Plus的简单应用
首先,想要使用MybatisPlus完成条件查询,基于面向对象的思想,万物皆对象,那么查询条件也需要使用对象来完成封装。我们先看一下,在MybatisPlus中,和条件有关的类有哪些,他们之间有什么关系,理清楚了这个,我们在传递条件对象的时候,就很清晰了。我们思考如果每次都是自己进行字段名称的编写,有可能会出现名称写错的情况,怎么避免这种情况呢,我们可以使用LambdaQueryWrapper对象,在构建字段时,使用方法引用的方式来选择字段,这样做可以避免字段拼写错误出现问题。层的方法,我们来看看。
2025-02-10 11:00:17
1315
原创 MyBatis-Plus 知识篇(1):初识MyBatis-Plus
MyBatis-Plus是MyBatis的增强工具,在MyBatis基础上只做增强不做改变,简化开发、提高效率。文章首先强调学习MyBatis-Plus需要具备扎实的MyBatis基础,然后介绍了其核心特性:无侵入、损耗小、强大的CRUD操作、Lambda表达式支持等。接着通过一个完整的MyBatis项目搭建示例(包含依赖导入、数据表创建、实体类编写、三层架构实现),演示如何将项目升级为MyBatis-Plus项目,重点说明了继承BaseMapper接口和使用内置CRUD方法的过程。最后指出只需替换myba
2025-02-10 10:58:49
1206
原创 SpringBoot小知识(4):高级配置知识与bean的绑定
EnableConfigurationProperties 是 Spring Framework 中用于启用基于配置文件的属性绑定功能的注解。它通常与 @ConfigurationProperties 注解一起使用,用于将配置文件中的属性自动绑定到 Java 类的字段上,从而使得你可以在应用程序中方便地使用配置文件中的属性。之类的都不影响绑定到实体类中的属性里面,实体类的大小写与配置文件中不是一模一样的也能绑定。我们可以看到,即使是有-这种的拼接,也可以读取到内容,实际上在YML文件中,
2024-12-04 21:15:00
610
原创 SpringBoot小知识(3):热部署知识
热部署是指在不停止应用程序或服务器的情况下,动态地更新、部署或修改应用程序的功能或配置。热部署允许开发人员在开发过程中对代码进行实时修改,并立即看到更改的效果,而不需要重启应用程序或服务。这在开发和测试过程中非常有用,可以提高效率,减少不必要的停机时间。
2024-11-29 18:30:00
761
原创 Springboot小知识(1):启动类与配置
在通常情况下,你创建的Spring应用项目都会为你自动生成一个启动类,它是这个应用的起点。在Spring Boot中,引导类(也称为启动类,通常是`main`方法所在的类)是整个应用程序的入口点,用于引导和启动Spring Boot应用。它主要用来`加载Spring的上下文`、`自动配置`并`启动内嵌的服务器`。以及关于多环境配置等相关的信息
2024-11-28 10:47:00
3396
原创 JAVA小知识31:多线程篇2
构造方法说明创建一个线程池,具有给定的初始参数。核心线程池大小、最大线程池大小、线程空闲时间、时间单位和任务队列。创建一个线程池,具有给定的初始参数和线程工厂。线程工厂用于创建新线程。创建一个线程池,具有给定的初始参数和拒绝策略。拒绝策略用于处理无法执行的新任务。创建一个线程池,具有给定的初始参数、线程工厂和拒绝策略。我们以最后一个构造函数举例, 来看代码3,//核心线程数量 最小值为08,// 最大线程数量 不小于零 且要大于核心线程数量60,// 空闲线程最大存活时间。
2024-07-04 14:08:29
1133
原创 JAVA小知识30:JAVA多线程篇1,认识多线程与线程安全问题以及解决方案。(万字解析)
线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。线程是一个进程中的实际执行单位,它负责当前进程中程序的执行。在一个进程中可以有多个线程,这些线程可以共享进程的资源,如堆和方法区。然而,每个线程都有自己的程序计数器、虚拟机栈和本地方法栈。因此,系统在产生一个线程或在不同线程间切换时的负担要小于进程,这也使得线程被称为轻量级进程
2024-07-04 09:09:02
1441
原创 软件工程学习篇1:需求工程
软件的需求分析是软件生命周期的基础,也是决定性的一步。经过项目经验表明,用户对自身将要开发的系统也并不是完全理解,他们对需求目标的陈述也往往带有主观片面性模糊性不一致性,甚至还会出现错误。需求分析是一个的过程,是对用户需求不断认识和逐步细化的过程。
2024-06-25 15:48:43
1469
原创 JAVA小知识29:IO流(上)
IO流是指在计算机中进行输入和输出操作的一种方式,用于读取和写入数据。IO流主要用于处理数据传输,可以将数据从一个地方传送到另一个地方,例如从内存到硬盘,从网络到内存等。IO流在编程中非常常见,特别是在文件操作和网络通信中。
2024-06-25 15:48:00
929
原创 JAVA小知识28:FIle类文件对象
Java 中的 File 类是 java.io 包中的一个类,用于表示文件和目录路径名的抽象表示。它提供了一些方法来操作文件和目录。
2024-06-21 14:58:23
902
原创 JAVA编程思想:斗地主扑克牌
为什么是MAP我们来分析一下,我们都知道斗地主发牌之后,我们到手里面的牌最好是有序的,方便我们观看,那么如何做到有序便是最难的一个问题,♦3 与 ♣4 如何排序?假设我们现在有这样的几张牌,牌的大小按照正常顺序以及排列好了,每张牌对于一个不同的数字,1-54。此时如果我们能将扑克牌与数字对应起来,将数字打乱,然后分发给三个人后再按照数字排序,在通过数字获取牌,这样获取到的牌就是有序的了。这样我们可以看到,拿到的牌正好就是有顺序的,所以我们使用Map,键来存储数字,值来存储牌。1. 先获取54张牌,
2024-06-21 09:36:38
525
原创 JAVA小知识27:异常与异常处理全解
异常就是代表程序出现了问题,像我们之前学数组的时候碰到的数组越界异常,以及空指针异常等等都属于开发中经常能碰到的异常。我们学习异常不是为了在以后中避免异常,而是学习碰到了异常以后该如何的处理。Java的类库从类开始,它定义了所有类型的错误和超类。分为两个主要子类:和。:代表的系统级别错误(属于严重问题)系统一旦出现问题,sun公司会把这些错误封装成。Error是给sun公司自己用的,不是给我们程序员用的。因此我们开发人员不用管它。:叫做异常,代表程序可能出现的问题,我们通常会用以及他的子类来封装程序
2024-06-20 14:06:36
1062
原创 JAVA小知识26:方法引用
把已经存在的方法拿过来用,当做函数式接口中抽象方法的方法体我们在学习lambda表达式的时候曾经学过,函数式接口就是有且仅有一个抽象方法的接口,他一把有@FunctionalInterface注解。
2024-06-20 08:00:00
962
原创 JAVA小知识24:集合工具类Collections
Collections 是 Java 中的一个实用类,位于 java.util 包中,提供了许多静态方法,用于操作或返回集合的各种操作。它包含的这些方法大大简化了对集合的常见操作,提供了排序、搜索、随机化、同步化等功能。
2024-06-19 09:23:32
446
原创 JAVA小知识23:set与HashSet
索引8为第一个添加,索引3为第二个添加,当第二个添加完成后,索引8的值会记录索引3的地址值,索引3也会记录索引8的地址值。LinkedHashSet继承自HashSet,上面我们说到LinkedHashSet是有序,不可重复的,其实这里的有序指的是存和取的顺序是有序的。因为本身添加就是根据哈希值计算出来的地址,所以添加的时候顺序就是不固定的,但是取值的时候顺序是固定的,从数组索引0开始查找取值。当LinkedHashSet遍历的时候,就会遍历双向链表,所以存和取的顺序就相同了。
2024-06-18 09:30:37
1427
原创 JAVA小知识22:迭代器iterator与列表迭代器ListIterator
在 Java 中,迭代器是一个设计模式,用于遍历集合中的元素。Java 提供了 `Iterator `接口来实现这一功能。迭代器的主要作用是提供一种`通用的遍历集合`的方法,而不需要了解集合的具体实现细节。
2024-06-17 11:32:50
2017
原创 JAVA小知识21:单列集合顶层接口Collection的使用
Collection是单列集合的顶层接口,所有的单列集合都集成自Collection。那么什么是单列集合呢?我们上篇文章提到了List与ArrayList,List就是单列集合,他是无需可重复单列集合的顶层抽象类,我们学过的ArrayList是它的实现类。单列集合,顾名思义就每一个索引所指向的地址只存储一条数据,与之对应的双列集合就以键值对的形式存在的。
2024-06-17 09:24:52
411
原创 JAVA小知识20:万字详解List与ArrayList
本文主要讲述了List与ArrayList,ArrayList的成员方法,特性以及非常详细的扩容机制
2024-06-14 16:34:18
1403
空空如也
web入门,用什么软件好一点
2021-10-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅