自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 react中hook和高阶组件的选型

场景推荐方式函数组件内共享逻辑(如请求、状态管理)✅ Hook类组件需要复用逻辑✅ HOC组件级别增强(如权限包裹、加载状态)✅ HOC想要避免组件嵌套✅ Hook多个组件共用一套副作用逻辑✅ Hook兼容老旧项目或第三方库✅ HOC。

2025-06-12 13:34:50 191

原创 手写Antd的form组件源码

模块功能Form表单容器,管理整体状态FormItem表单项,管理单个字段的状态和验证useForm创建和管理表单实例FormStore表单数据存储useField管理字段的状态和验证提供全局表单配置如果你希望进一步了解某个具体模块(如useField或FormStore的实现细节),可以继续深入查看 Ant Design 的源码仓库或官方文档。

2025-06-12 13:31:43 300

原创 mysql-innoDB存储引擎事务的原理

组件类型作用是否影响事务持久性是否影响事务原子性Redo Log日志记录页修改,用于恢复✅❌Undo Log日志记录旧值,用于回滚和 MVCC❌✅Log Buffer内存缓存 Redo Log✅❌锁系统并发控制控制并发事务访问❌❌如果你希望深入分析某个具体事务的行为(比如查看其 Redo/Undo Log 内容),我也可以指导你如何使用调试工具或日志文件进行分析。

2025-06-10 18:18:30 681

原创 mysql教程笔记(四)-锁和innoDB存储引擎

名称类型大小作用关系Page(页)物理单位默认16KB最小 I/O 单位,存储数据记录或索引键多个页组成一个段Segment(段)逻辑单位不定管理一组页,如叶子页集合、非叶子页集合段由多个页构成叶子结点是一“页”而“叶子段”是一组这样的“页”的集合问题回答叶子结点到底是页还是段?叶子结点是一页数据,而多个叶子页组成“叶子段”数据段和索引段的关系?“数据段”通常指叶子段,“索引段”可以泛指整个 B+ 树结构或非叶段段和页的关系?段是逻辑单位,由多个物理页组成。

2025-06-10 18:11:02 364

原创 java教程笔记(十五)-io流

什么是IO流分类 输出说明:假设 内容为:输出结果: 输出与上一个例子相同,但效率更高,适合大文件读取。4. 5. 输出若原文件是 ,跳过后输出:7. 8. ✅ 功能在当前位置设置标记,之后可以调用 回退到该位置。 输出方法用于向输出流写入一个字节的数据。参数是一个0 - 255的整数,实际写入的是该整数对应的低8位字节。虽然方法接收的是类型,但仅使用其低8位参与写入操作。outputStream.write(65); // 写入字符

2025-06-10 14:05:05 404

原创 java教程笔记(十四)-线程池

操作方法说明提交无返回任务最简单的异步执行方式提交无返回任务返回Future可判断是否完成提交有返回任务支持返回值和异常处理批量提交任务返回所有任务的Future列表任一任务完成即返回适用于多任务中取最快结果定时/周期任务适用于关闭线程池shutdown()必须显式调用合理使用这些方法,可以充分发挥线程池的优势,提高并发性能与资源利用率。

2025-06-09 16:57:34 752

原创 java教程笔记(十二)-多线程

当前状态下一状态触发条件NEWRUNNABLE调用start()RUNNABLEBLOCKED等待 synchronized 锁RUNNABLEWAITING调用wait()join()park()RUNNABLE调用sleep()WAITINGRUNNABLE其他线程调用notify()或者unpark()RUNNABLE时间到期或被唤醒RUNNABLETERMINATED线程任务完成或异常退出推荐使用标志位或 interrupt()方法。

2025-06-09 16:04:22 523

原创 java教程笔记(十三)-synchronized和ReentrantLock

特性描述线程安全✅ 提供线程安全保障易用性✅ 简单易用,适合基础同步需求性能⚠️ 高并发下性能略逊于控制能力❌ 不支持超时、尝试锁等高级功能是 Java 并发编程中最基础、最常用的同步机制之一。对于大多数简单的线程同步场景,它是首选方案。而对于需要更细粒度控制的场景,建议使用或。可重入:同一个线程可以多次获取同一把锁;显式锁:需要手动加锁和解锁;支持尝试获取锁、超时机制、公平锁等高级特性;适用于高并发场景下的细粒度控制。// 手动加锁try {count++;

2025-06-09 13:43:14 838

原创 java教程笔记(十一)-泛型

泛型的本质是参数化类型。参数化类型是指带有类型参数的类或接口在定义类或方法时不指定具体的类型,而是在实例化时传入具体的类型。泛型中不能写基本数据类型指定具体的泛型类型后,传递数据时,可以传递该类类型及其子类类型如果不写泛型,类型默认为Object/*List<E> 是 java.util 包下的接口。E(Element)是类型参数,表示集合中元素的类型。在代码中你看到的 List<T> 实际上是程序员习惯使用的泛型变量名,与 List<E> 等价。*//*

2025-06-06 15:02:59 944

原创 java教程笔记(十)-集合

ArrayList是一个基于动态数组适合频繁读取、较少增删的场景。添加元素时自动扩容(1.5 倍),确保容量足够。中间插入和删除效率较低,因为需要移动后续元素。不是线程安全的,多线程下需手动同步或使用线程安全集合。如果你希望提高插入/删除效率,可以选择LinkedList;如果希望高性能并发访问,可以选择。LinkedList使用双向链表优点插入/删除效率高(O(1) 若已知节点;否则 O(n))动态扩容无需复制数组缺点随机访问效率低(O(n))占用更多内存(保存前后指针)

2025-06-06 10:30:00 1018

原创 java教程笔记(九)-异常处理,枚举类,反射机制,注解

你可以创建自己的异常类来表示特定业务逻辑中的错误。throw new InvalidAgeException("年龄不能为负数");try {System.out.println("捕获到异常:" + e.getMessage());要点内容异常机制Java 提供了强大的异常处理机制,使程序更健壮异常分类Error(错误)、Exception(异常),其中 Exception 又分为 checked 和 unchecked关键字trycatchfinallythrowthrows。

2025-06-05 11:35:00 756

原创 java教程笔记(八)-包装类,常用类

Java 的是为每种基本数据类型(如intdouble等)提供的对应的类,使得基本类型可以像对象一样使用。这些类都位于java.lang包中,因此无需手动导入。除了Integer和Character这两个包装类外,其他六个包装类的类名均是对应的基本类型首字母大写后得到的。,并且它们都实现了一些接口。

2025-06-03 18:31:07 791

原创 java教程笔记(七)-类变量,代码块,抽象类,接口,内部类

使用static关键字声明。可以是任何数据类型(基本类型或引用类型)。可以被访问和修改,不依赖于对象。类变量在类加载时初始化,且仅初始化一次// 定义语法:访问修饰符 static 数据类型 变量名;// 推荐使用static 访问修饰符 数据类型 变量名;// 举例:// 访问语法:类名.静态变量名 // 推荐使用对象名.静态变量名// 举例:// 类变量(静态变量)// 实例变量// 类方法(静态方法)");// 不需要创建对象写在方法内部或任意语句块中的。

2025-06-03 15:43:26 579

原创 java教程笔记(六)-面向对象OOP

从而在运行时根据实际对象类型动态决定调用哪个方法。

2025-05-30 15:25:28 844

原创 java教程笔记(五)-面向对象入门

/定义一个Person类// 属性(字段)int age;// 方法(行为)System.out.println("你好,我叫 " + name + ",今年 " + age + " 岁");//当创建一个 Person 对象时:// 给对象赋值person1.name = "张三";// 调用方法///*当创建一个persion对象时,对象头:保存如哈希码、锁信息等。实例数据:name 字段是一个指向字符串常量池中 "Alice" 的引用。age 字段存储整型值 30。

2025-05-29 17:17:47 711

原创 java教程笔记(四)-数组

java数组是存储数据的集合,具有且通过索引访问。数组属于引用类型,数组型数据是对象(object)。

2025-05-29 14:14:13 870

原创 java教程笔记(三)-流程控制语句

避免穿透(fall-through)。条件判断顺序影响结果,需避免条件包含或重叠。(Java 7+)和枚举(Java 5+),防止“穿透”(fall-through)适用于离散值匹配,表达式支持 byte。根据条件判断,选择执行不同的代码块。要判断的表达式或变量,必须是兼容类型。匹配的值,必须是常量,不能是变量。break:可选,跳出。可选,默认情况,当所有。三种循环可以互相嵌套。

2025-05-29 11:16:34 375

原创 antd(Ant Design)的表单管理器 Field

在 Ant Design 的Form.Item中,自定义组件可以通过props接收默认传递 的value和onChange。具体规则如下:这种方式使表单能够通过或onFinish正确获取自定义组件的值// 必须调用 onChange 同步表单数据return (<>{count}</>支持同步校验(如必填、长度限制)和异步校验(如远程请求验证用户名是否存在)。

2025-05-29 10:47:47 587

原创 java教程笔记(二)-变量,数据类型,运算符

Java的变量是存储数据的基本单元,其类型、作用域和使用规则直接影响代码的结构与性能。其值在程序运行过程中可以被修改Java 是一种静态类型语言,变量必须先声明后使用。

2025-05-27 18:40:18 939

原创 java教程笔记(一)-java入门

JDK(Java Development Kit)是Java开发工具包,包含Java编译器(javac)、调试工具(jdb)、文档生成工具(Javadoc)以及JRE(Java Runtime Environment)。其核心作用是为Java程序的开发、编译和调试提供完整工具链,并包含运行Java程序所需的环境。JDK安装目录中的bin文件夹包含开发工具,jre文件夹则包含运行时环境。

2025-05-27 14:59:30 640

原创 mysql笔记(三)

视图是一个 SQL 查询的结果集,对外表现为一张“虚拟表”。它并不真正存储数据,只是保存了查询语句。每次使用视图时,MySQL 都会执行其背后的查询逻辑。

2025-05-23 18:30:15 1076

原创 mysql笔记(二)

MySQL 的存储引擎是数据库管理系统中负责数据存储与访问的核心组件核心功能数据存储与提取:存储引擎决定了数据在物理存储介质(如磁盘或内存)中的组织方式,以及如何高效读取和写入数据。事务与并发控制:部分引擎(如 InnoDB)支持事务(ACID 特性)、行级锁及多版本并发控制(MVCC),确保高并发下的数据一致性。索引与查询优化:不同引擎支持的索引类型(如 B+Tree、哈希索引)和查询特性(如全文索引)各异,直接影响查询效率。组合索引是指在多个字段上建立的一个索引,例如name和age。

2025-05-23 14:35:17 1001

原创 mysql笔记(一)

在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。表别名仅在当前查询中有效,不可跨查询引用。在子查询中,必须为子查询结果集指定别名。,用于处理字符串、数值、日期、聚合等操作,是 SQL 查询中不可或缺的工具。:仅占用实际数据长度+1~2字节(用于记录长度信息)。如果你希望在创建表时指定数据引擎,字符集和排序规则等,可以使用。是嵌套在另一个 SQL 查询中的查询语句。如果列别名与表别名冲突,MySQL 会优先使用列别名。)结合使用,以对每个分组的结果进行统计计算。

2025-05-20 18:08:58 1025

原创 uni-app开发微信小程序,实现文件上传和下载

是 uni-app 提供的用于预览图片的 API,支持多图滑动查看,适用于 H5、App(5+)、微信小程序等平台。是 UniApp 提供的用于从相册或相机选择图片的 API,支持跨平台(App、H5、小程序)使用。允许用户从设备中选择文件(如图片、文档、音频、视频等)。是 uni-app 提供的用于将本地资源上传至开发者服务器的 API,支持单文件和多文件上传。支持单文件和多文件上传(需根据平台差异处理)从微信客户端会话(聊天记录)中选择文件,支持图片、视频及其他类型文件。小程序需通过多次调用。

2025-05-19 17:50:29 1258 1

原创 vue3如何实现自定义插件

插件可以是一个对象(需包含。

2025-05-16 17:21:01 204

原创 uni-app开发微信小程序如何实现分享功能

通过设置。

2025-05-16 17:03:54 1008

原创 普通流量和微信内嵌浏览器的区别

微信内嵌浏览器早期使用UIWebview内核,2017年3月后逐步升级为WKWebview内核(与iOS系统Safari浏览器部分兼容),但其本质仍是微信App的一部分,而非独立的浏览器应用。与普通浏览器相比,微信内嵌浏览器支持调用微信原生API(如获取用户位置、发起支付、分享功能等),但受限于封闭环境,部分HTML5接口(如。微信内嵌浏览器可调用微信原生API实现社交功能,如获取用户地理位置、发起支付、分享至朋友圈等,而普通浏览器无此能力。微信内嵌浏览器是微信App的一部分,用于在微信应用内部。

2025-05-16 16:27:48 328

原创 uni-app实现微信小程序登录详解

优先使用。

2025-05-16 15:51:05 2203

原创 移动端适配方案

VW/VH适配方案是一种基于视口比例的响应式布局方法,通过将设计稿尺寸按比例转换为视口单位(vw/vh),实现元素尺寸随屏幕自动适配。的响应式布局方案,广泛用于解决不同屏幕尺寸的适配问题。以下是详细的实现步骤、原理及注意事项。在Vue/Vite项目中配置全局SCSS变量,实现样式自动适配(需配置。开发前需明确UI设计稿的分辨率(如1920×1080。‌:直接按设计稿像素开发,编译自动转为vw单位。缺点:维护成本高,需预设多个断点。:PostCSS自动转换(工程化推荐)对应不同屏幕宽度的合理像素值。

2025-05-16 10:23:47 582

原创 React动态路由鉴权方案

在React中实现动态路由鉴权需要结合路由权限验证和动态路由加载机制。

2025-05-14 16:53:43 418

原创 react-router6教程

为路由对象添加自定义属性(如。

2025-05-14 14:58:07 835

原创 async/await详解

是 JavaScript 中用于处理异步操作的一种现代语法,它基于 Promise,但通过更简洁的语法和同步代码的写法,让异步代码更易读、易维护。在 出现之前,JavaScript 的异步操作主要依赖以下方式:回调函数(Callback): 2.Promise:3.async/await进一步改进:用同步代码风格编写异步逻辑,提升可读性和可调试性。 接收的是 的结果,而不是 函数本身。三、async/await 的工作流程 声明 函数:函数内部可以使

2025-05-14 13:37:04 301

原创 promise大全

Promise是 JavaScript 中用于处理异步操作的核心机制之一,它解决了传统的“回调地狱”(callback hell)问题,提供了更清晰、可维护的异步编程方式。

2025-05-14 10:39:58 866

原创 next({ ...to, replace: true }) 的作用详解

在 Vue Router 的导航守卫(如 )中, 是控制路由跳转的核心函数。 是一种特殊的用法,用于强制刷新当前路由并替换历史记录条目。以下是对该语法的详细解析。next():直接放行当前导航(默认使用 添加新历史记录),进入下一个守卫或最终的组件渲染。默认使用 方法跳转到目标路由,新增历史记录条目next(path):跳转到指定路径。默认使用 方法跳转,新增历史记录条目。:传递一个包含路由选项的对象(如 , , , 等)。next(false):中断当前导航,不会跳转到任何地方。,权限校验失败时阻

2025-05-13 17:42:55 487

原创 vue3的动态路由鉴权二

以下是基于 Vue 3 的完整动态路由鉴权实现方案,结合 Vue Router 4、Pinia 状态管理、Element Plus 组件和 NProgress 加载条,支持权限动态加载和路由守卫控制。

2025-05-13 16:45:53 321

原创 vue3的动态路由鉴权一

动态路由依赖于。

2025-05-13 15:51:37 244

原创 vue3中的returnh,render

函数是 Vue 的核心 API,用于定义组件的渲染逻辑。创建的 VNode,Vue 会将其转换为真实 DOM。是 "hyperscript" 的缩写),用于创建。只能返回对象或函数,不能混合返回。它是构建渲染函数的核心函数。

2025-05-13 14:34:18 323

原创 vue2和vue3的响应式原理

Vue 2 的响应式原理是其核心特性之一,通过 数据劫持 和 发布-订阅模式 实现数据驱动视图更新。以下是 Vue 2 响应式原理的详细解析,涵盖其核心机制、实现细节以及实际应用中的限制。Vue 2 的响应式系统基于以下两个核心概念:数据劫持(Data Observe):发布-订阅模式(Pub/Sub):Vue 2 通过递归遍历对象的所有属性,使用 将每个属性转换为响应式属性: 2.Dep 类(依赖管理器) :存储所有订阅者(Watcher)。 :添加订阅者。 :通知所有订阅者执行 。

2025-05-13 13:37:44 1042

原创 react组件的封装思路

在 React 中,是构建可维护、可复用 UI 的核心理念。合理的组件封装不仅能提升开发效率,还能增强代码的可读性与可测试性。以下是 React 组件封装的实现思路与最佳实践,帮助你系统性地组织组件结构并提高开发质量。

2025-05-12 15:32:01 922

原创 react高阶组件的实现思路

高阶组件是一个。

2025-05-12 14:03:00 356

空空如也

空空如也

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

TA关注的人

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