自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Java-Day19】集合4 ArrayList集合底层原理

添加第一个元素:(空数组添加第一个数据,数组扩充到10的过程)数组已经有10个元素,再添加数据(数组从10扩充1.5倍过程)ArrayList可以用List的所有方法。

2026-06-03 12:14:19 198

原创 【Java-Day19】集合3 List中常见的方法和5种遍历方式

是单列集合里非常常用的一类。常见实现类:ArrayList、LinkedList。

2026-06-03 12:13:52 539 1

原创 【Java-Day19】集合2-集合的遍历: Collection的遍历方式

Collection 本身没有索引,所以遍历。List 才有索引,Set 没有索引。

2026-06-03 12:13:03 163

原创 【Java-Day19】集合1(Collect单列集合)

集合是Java 提供的一组“容器”,专门用来存放多个对象。数组也能存多个数据,但数组长度固定,添加、删除元素不方便、功能少。而集合更加灵活,集合长度可以自动变化,也提供了大量常用方法。Collection:单列集合,一次存一个元素。双列集合,一次存一对键值对。

2026-06-03 12:12:00 659

原创 【Java-Day18】Lambda表达式

1.Lambda表达式可以用来2.Lambda表达式简化的匿名内部类的写法3.函数式接口:有且仅有的接口叫做函数式接口,接口上方可以加注解。这个注解的作用是 让编译器检查这个接口是不是函数式接口。(参数列表) -> {方法体;

2026-06-02 20:30:35 163

原创 【Java-Day18】API篇-Arrays

如果新长度比原数组长,后面补默认值。int 的默认值是 0。,所在包:import java.util.Arrays;数组不能直接用 == 比较内容。== 比较的是地址。Arrays 是 Java 提供的。Arrays专门帮助我们。

2026-06-02 20:30:07 241

原创 【Java-Day18】API篇-时间类(新版时间类:LocalDateTime/DateTimeFormatter/LocalDate / LocalDateTime)

新版时间类创建的时间日期对象都是。解决了旧版时间类在多线程环境下会导致数据安全的问题。

2026-06-02 13:22:47 176

原创 【Java-Day18】API篇-时间类(旧版时间类:Date/SimpleDateFormat/Calendar)

时间类分为(JDK8之后)和(JDK8之前)。所在包:java.util、java.text所在包:java.time及其子包。

2026-06-02 12:25:21 240

原创 【Java-Day17】API篇-BigInteger和BigDecimal

精确的小数。

2026-06-01 20:50:47 373

原创 【Java-Day16】API篇-Math类/System类/Object类/包装类

包装类就是 Java 给 8 种基本数据类型准备的“对象版本”。包装类就是基本数据类型的对象形式。4.2 为什么需要包装类因为 Java 里有些地方只能用对象,不能直接用基本类型。比如集合的泛型约束。

2026-06-01 18:07:45 281

原创 【Java-Day15】API篇-ArrayList集合

集合就是 Java 提供的“容器”,用来存放一组数据,长度可变以前我们用数组存多个数据,但数组有一些问题:长度固定。操作不方便。删除、添加数据比较麻烦。集合会更加灵活,集合长度可变集合特点:特点1:长度可变特点2:只能存引用数据类型,不能存基本数据类型。

2026-06-01 17:29:38 275

原创 【Java-Day14】API篇-字符串

StringBuilder 是一个类,先创建 StringBuilder 类的对象,然后通过对象调用它的方法。public String(String original) 根据传入的字符串,创建新的字符串对象。public String(char[] chs) 根据字符数组,创建字符串对象。public String(byte[] chs) 根据字节数组,创建字符串对象。2.Java程序中的所有字符串文字(例如"abc")都是此类的对象。string的底层实现还是数组,s1,s2本质存的就是。

2026-05-31 18:26:49 239

原创 【Java-Day13】内部类

Java内部类是定义在另一个类内部的类,分为四种类型:成员内部类(可访问外部类私有成员,需通过外部类实例创建)、静态内部类(只能访问外部类静态成员)、局部内部类(定义在方法内)和匿名内部类(最常用,用于一次性实现接口或继承类)。匿名内部类格式为new 类/接口(){ 重写方法 };,适用于只需使用一次的场合,能简化代码。成员内部类中访问外部类重名变量需用外部类名.this.变量名,静态内部类则通过外部类名.内部类名直接创建。JDK16+允许在成员内部类定义静态变量。

2026-05-31 14:16:22 358

原创 【Java-Day12】接口

默认方法静态方法私有方法。

2026-05-30 20:40:54 327

原创 【Java-Day11】抽象类和抽象方法

本文介绍了抽象类和抽象方法的概念及使用要点。抽象方法用于定义方法结构但不提供具体实现,存在于抽象类中。抽象类使用abstract关键字定义,不能实例化,但可以包含构造方法用于初始化。关键注意事项包括:抽象类不一定包含抽象方法;子类必须实现所有抽象方法或声明为抽象类;其核心意义在于规范子类的方法格式,确保实现一致性。这种机制通过强制子类遵循特定方法签名,实现了代码结构的统一管理。

2026-05-30 19:05:12 207

原创 【Java-Day10】多态

多态是面向对象编程的重要特性,指同一父类引用指向不同子类对象时调用同一方法产生不同效果。其实现需要继承关系、方法重写和父类引用指向子类对象(如Fuf=newZi())。多态调用成员时,变量编译和运行都看父类,方法编译看父类但运行看子类(若子类未重写则用父类方法)。多态弊端在于无法直接调用子类特有方法,可通过强制类型转换解决,但需注意使用instanceof进行类型检查以避免转换错误。

2026-05-29 19:48:35 371

原创 【Java-Day09】继承

本文系统讲解了Java继承的核心概念与应用。继承的三大特征包括封装、继承和多态,其中继承通过extends关键字建立类与类之间的父子关系,主要优势在于提高代码复用性并增强子类功能。文章详细阐述了继承的四个关键方面:1. 继承特点:Java支持单继承和多层继承,所有类都直接或间接继承Object类;2. 成员访问规则:成员变量遵循就近原则,通过this/super区分访问层级;3. 方法重写机制:需保持方法声明一致,使用@Override注解,允许通过super调用父类方法;4. 构造方法特性:子类必须通过s

2026-05-29 19:46:00 491

原创 【Java-Day08】static / final / 枚举

本文摘要: 文章详细介绍了Java中static和final关键字的使用方法。static可修饰成员变量(静态变量,类共享)和成员方法(静态方法,常用于工具类),调用时推荐使用类名访问。final表示不可变,可修饰变量、类、方法,基本数据类型值不可变,引用数据类型地址不可变。枚举是一种特殊的类,对象有限且固定,常用于状态管理,包含values()和valueOf()方法获取枚举项。文中通过电商订单状态枚举案例,演示了枚举的定义和使用方式。

2026-05-28 15:41:08 546

原创 【Java-Day07】面向对象:Javabean类 / 创建对象

本文介绍了Java面向对象编程的核心概念,包括类和对象的定义与使用、数据安全(private关键字和get/set方法)、就近原则和this关键字、构造方法等。重点讲解了如何规范编写JavaBean类:私有化成员变量、提供无参和全参构造方法、实现get/set方法。通过学生类案例演示了面向对象编程的实际应用,包括对象创建、属性赋值和方法调用。文章还强调了构造方法的重载特性及编写习惯,最后总结了JavaBean类的标准写法。这些内容为Java面向对象编程提供了基础指导。

2026-05-28 15:38:55 513

原创 【Java-Day06】Java原理篇

本文概述了Java程序的运行机制和内存管理原理。Java通过虚拟机实现跨平台运行,将源代码编译为字节码后在虚拟机上执行。内存管理方面,Java虚拟机将内存划分为栈、堆、方法区等五个区域,分别用于存储线程方法调用、对象数据和字节码信息。数组作为引用类型存储在堆内存中,变量存储的是堆内存地址。当数组作为方法参数传递时,传递的是内存地址引用,方法内对数组的修改会影响原始数据。文章还解释了内存地址的概念及其在64位系统中的表示方式。

2026-05-27 11:07:08 303

原创 【Java-Day05】方法

本文介绍了Java方法的基本概念与应用。方法作为程序中的独立功能单元,通过封装常用代码提高了复用性和可维护性。文章详细说明了方法的定义格式、执行流程,以及方法重载的概念(要求同名方法参数不同)。同时指出了方法使用的注意事项:方法需调用才执行、方法间平级关系、形实参匹配规则、return语句的作用(结束方法/返回结果)以及void方法的特性。这些知识点为Java方法的正确使用提供了基础指导。

2026-05-27 11:05:23 66

原创 【Java-Day04】数组

本文介绍了数组的基本概念和使用方法。数组是存储同类型数据的连续空间容器,长度固定。初始化方式分为静态(定义时赋值)和动态(定义后赋值)。静态初始化可直接赋值,如int[] arr={1,2,3};动态初始化需指定长度,如int[] arr=new int[3]。数组元素通过索引访问和修改,如arr[0]=10。遍历数组可使用for循环结合length属性获取长度。这些是数组操作的基础知识。

2026-05-26 14:24:38 49

原创 【Java-Day03】判断 / 选择 / 循环语句

本文介绍了Java中的流程控制语句,主要包括判断语句、选择语句和循环语句。判断语句if分为三种格式:单条件、双条件和多条件判断。选择语句switch通过匹配case值执行对应代码块,具有case穿透特性,JDK14后新增箭头标签和多值匹配功能。循环语句包含for和while两种形式,for循环适合明确次数的情况,while适合不确定次数的情况。此外还介绍了break和continue关键字,分别用于终止循环和跳过当前循环。文章详细说明了各种语句的语法结构、执行流程和使用场景,

2026-05-26 13:21:12 316

原创 【Java-Day02】语法篇:变量/数据类型/标识符/运算符/类型转换

本文摘要:文章介绍了Java编程基础中的关键概念,包括字面量类型(整数、小数、字符串等)、变量定义规则和Scanner键盘输入。重点讲解了四类八种基本数据类型及其内存占用,以及标识符命名规范。详细说明了各类运算符的使用:算术运算符(含类型转换)、自增自减、赋值、关系、逻辑(含短路特性)和三元运算符,并强调了运算符优先级中小括号的最高优先级。这些基础知识是Java编程的重要入门内容。

2026-05-26 11:51:15 694

原创 【Java-Day01】安装软件并修改基础配置项

本文介绍了使用IntelliJ IDEA创建Java项目的完整流程:从安装JDK和IDEA开始,到新建项目、创建多级包结构、编写HelloWorld程序。详细说明了项目配置方法,包括修改主题颜色、调整字体大小、设置代码自动提示、安装AI插件以及自定义注释样式。最后简要提及Java关键字的特点,强调class关键字用于定义类。文章提供了从环境搭建到基础开发的实用指南,适合Java初学者快速上手IDEA开发环境。

2026-05-25 20:34:15 175

原创 【性能优化】电商网站性能优化:路由懒加载/图片懒加载/图片压缩/打包分析

本文以Vue3电商项目为例,介绍前端性能优化实践。通过Network分析发现图片资源过大导致加载缓慢,采用路由懒加载将主JS体积从409KB降至125KB;使用图片懒加载指令实现按需加载;将本地PNG转换为WebP格式;利用rollup-plugin-visualizer分析打包产物;最终通过Lighthouse验证优化效果,FCP、LCP等核心指标显著提升。优化后首屏加载时间从22.71秒大幅缩短,有效提升了用户体验。

2026-05-12 14:54:04 629 1

原创 【大模型】初步认识RAG

RAG(检索增强生成)是一种优化大语言模型输出的技术,通过在生成响应前检索外部知识库来提升回答质量。传统RAG流程包含数据摄取和检索生成两个管道:数据摄取管道负责将外部文档分块、向量化并存入向量数据库;检索生成管道则根据用户查询检索相关文本块,将其作为上下文输入大模型生成最终回答。这种方法解决了大模型知识过时、产生幻觉和无法使用私有数据的问题,无需重新训练模型即可扩展其知识范围。文中详细介绍了RAG的实现步骤,包括文档加载、文本分块、向量嵌入和相似度检索等关键技术环节,展示了如何构建完整的RAG系统架构。

2026-05-03 21:59:52 434

原创 【Vue-Day12】Vue组件的生命周期

摘要:本文系统介绍了Vue组件的生命周期概念,详细对比了Vue2和Vue3的生命周期钩子函数。Vue2包含创建、挂载、更新、销毁四个阶段共8个钩子,而Vue3使用on前缀命名钩子并引入setup替代创建阶段。文章还分析了父子组件生命周期执行顺序(父创建→子创建→子挂载→父挂载),并总结了常用生命周期钩子的使用场景:setup初始化数据、onMounted操作DOM、onUpdated处理数据更新、onBeforeUnmount进行清理工作。同时比较了v-if和v-show的差异及适用场景。

2026-03-30 21:17:52 453

原创 【Vue-Day11】props的使用

Vue组件通信中,props实现父组件向子组件的单向数据传递,具有单向性(只读)、规范性和通用性特点。父组件通过v-bind传递数据,子组件用defineProps接收并可通过泛型限制类型。使用问号标记可选props,withDefaults可设置默认值(对象/数组需函数返回)。这种机制确保了组件间数据传递的可预测性和安全性。

2026-03-30 15:43:55 343

原创 【TypeScript】TypeScript简介(1)

TypeScript是JavaScript的超集,由微软开发,支持静态类型检查、面向对象编程等特性。主要特点包括:类型声明与推断、接口定义对象结构、枚举类型、类型别名、泛型编程和元组类型。TypeScript需要通过编译器转换为JavaScript才能在浏览器中运行。接口(interface)用于定义对象和类的契约,支持继承和合并;类型别名(type)则更灵活,可定义联合类型和交叉类型。泛型允许代码复用同时保持类型安全,元组则用于存储固定数量且类型已知的元素。这些特性使TypeScript成为大型应用的理想

2026-03-24 16:05:50 395

原创 深拷贝和浅拷贝的区别?如何实现一个深拷贝

本文探讨了JavaScript中数据的深浅拷贝问题。首先介绍了基本类型和引用类型在内存中的存储方式差异:基本类型存储在栈内存中,引用类型存储在堆内存中并通过栈中的地址引用。然后分析了浅拷贝的特点,列举了Object.assign、slice()、concat()等浅拷贝方法,说明它们只复制对象的第一层数据。接着介绍了深拷贝的三种实现方式:JSON序列化、Lodash的cloneDeep方法以及手写递归循环实现,详细说明了手写递归的实现思路和步骤。最后总结指出浅拷贝只复制指针而共享内存,深拷贝则完全复制对象并

2026-03-14 12:48:53 439

原创 基于脚手架创建Vue2工程

本文介绍了使用Vue CLI创建前端工程的环境要求和两种方法。环境要求包括Node.js运行环境、npm包管理工具和Vue CLI开发系统。创建工程的两种方式:一是通过命令行"vue create 项目名称",选择Vue版本后自动生成项目结构;二是通过"vue ui"命令启动网页界面,在可视化界面中配置项目名称、包管理工具和Vue版本后创建项目。两种方式都需在无中文路径下操作,最终都能快速搭建Vue2或Vue3项目框架。

2026-03-10 18:03:14 99

原创 盒子模型:标准盒模型 / 怪异盒模型

CSS盒模型是网页布局的基础,分为标准盒模型和IE怪异盒模型两种。标准盒模型中,元素宽高仅包含内容区域,添加内边距和边框会撑大盒子;而怪异盒模型中,元素宽高包含内容、内边距和边框。通过box-sizing属性可以控制盒模型的计算方式:content-box(标准)或border-box(怪异)。设置全局样式*{box-sizing:border-box}可避免盒子被撑大,margin始终不计入元素宽高。理解盒模型差异有助于精准控制页面布局。

2026-03-10 14:04:05 564

原创 实现上拉加载,下拉刷新的原理

本文介绍了移动端常见的上拉加载和下拉刷新实现原理。上拉加载通过监听scroll事件,利用scrollTop、clientHeight和scrollHeight判断页面是否触底,当滚动距离接近底部时触发数据加载。下拉刷新则通过监听touch事件,记录手指下拉距离,达到阈值后触发数据刷新并回弹复位。文章详细讲解了两种交互方式的技术实现细节,包括关键计算公式和基本代码示例,为移动端开发者提供了实用的滚动加载解决方案。

2026-03-10 11:55:51 227

原创 Element Plus主题色定制

本文介绍了如何通过定制SCSS主题文件来修改ElementPlus的默认主题色。主要步骤包括:1)安装SCSS依赖;2)创建定制样式文件;3)在Vite配置中导入定制文件覆盖默认样式。这种方法可让UI组件库与项目设计风格保持一致,实现主题色的灵活定制。

2026-01-31 16:24:18 208

原创 elementPlus按需导入配置

ElementPlus是一个基于Vue3的UI框架,配置方式分为完整引入和按需引入两种。完整引入只需安装element-plus包后全局导入;按需引入需要额外安装unplugin-vue-components和unplugin-auto-import插件,并在vite/webpack配置中添加相应解析器。配置完成后,可直接从文档中复制组件代码使用。

2026-01-31 15:49:14 534

原创 别名路径联想提示。@/统一文件路径的配置

VSCode通过jsconfig.json配置@/路径提示,实现src目录下的文件路径联想功能。配置方法:1.在项目根目录创建jsconfig.json文件(新版项目通常自带);2.添加JSON配置项。需注意该配置仅提供编辑器提示功能,实际路径转换需在vite.config.js中配置才能将@映射为真正的src路径。这种设置能有效避免路径访问错误,提升开发效率。

2026-01-31 15:11:25 176

原创 【八股】浏览器的渲染原理

浏览器渲染流程解析 浏览器渲染流程分为多个阶段:解析HTML生成DOM树和CSSOM树(CSS不阻塞解析,JS会阻塞);样式计算确定每个节点的最终样式;布局阶段生成布局树;分层优化渲染效率;绘制生成指令集;后续分块、光栅化和画操作由合成线程完成。其中,reflow是重新计算布局树,repaint是重新计算绘制指令。transform效率高是因为它仅影响最后的draw阶段,在合成线程中执行,不干扰主线程。整个过程形成严密的流水线,各阶段输出作为下一阶段的输入。

2026-01-03 17:42:23 574

原创 【八股】JS中的事件循环

本文介绍了浏览器的进程模型和渲染主线程的工作原理。浏览器采用多进程架构,主要包含浏览器进程、网络进程和渲染进程,各进程相互隔离。渲染进程中的渲染主线程负责处理HTML、CSS、JS等任务,采用事件循环机制异步执行任务以避免阻塞。消息队列分为微队列(最高优先级)、交互队列和延时队列。由于硬件限制和事件循环特性,JS计时器无法做到精确计时。这种异步机制确保了单线程浏览器的流畅运行。

2026-01-03 16:28:26 1154

原创 【Docker】Docker的安装和使用

Docker的安装和使用

2026-01-01 20:23:02 655

空空如也

空空如也

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

TA关注的人

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