- 博客(60)
- 收藏
- 关注
原创 MySQL 的索引类型有哪些?
唯一索引是一种特殊的单列索引或多列索引,它要求索引列中的值必须是唯一的(不能有重复值)。MySQL 提供了多种类型的索引,每种索引都有其独特的特点和适用场景。复合索引是基于表中的多个列创建的索引。主键索引是一种特殊的唯一索引,用于唯一标识表中的每一行数据。聚簇索引是一种特殊的索引,数据行的存储顺序与索引顺序一致。单列索引是最基本的索引类型,它基于表中的单个列创建。降序索引可以优化特定的降序查询。• 查询时必须使用索引的最左列,否则索引可能无法被利用。• 可以是普通索引,也可以是唯一索引(不允许重复值)。
2025-02-27 11:24:01
72
原创 MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别?
在 MySQL 的 InnoDB 存储引擎中,聚簇索引(Clustered Index)和非聚簇索引(Non-Clustered Index)是两种重要的索引类型,它们在数据存储结构、性能特点和适用场景上存在显著区别。• 更新性能:更新聚簇索引键的值可能导致数据行的物理移动,因为数据的存储顺序需要保持与索引顺序一致。)和基于聚簇索引键的查询,性能非常高,因为数据已经按照索引顺序存储,无需额外的排序或多次查找。• 覆盖索引:当查询的所有列都包含在非聚簇索引中时,可以直接从索引中获取数据,避免回表操作。
2025-02-27 11:20:30
300
原创 MySQL 的存储引擎有哪些?它们之间有什么区别?
• 索引类型:支持聚簇索引,主键索引的叶子节点直接存储行数据,适合基于主键的查询。• 事务支持:支持完整的 ACID 特性,适用于需要事务处理的场景。• 数据存储:数据写入后不可修改,支持高效插入和查询,但不支持索引。• 锁机制:支持表级锁,写操作会锁定整个表,适合读多写少的场景。• 数据存储:数据存储在内存中,访问速度快,但重启后数据丢失。• 数据存储:通过本地表访问远程数据库,本地无数据存储。• 锁机制:支持行级锁,减少锁冲突,适合高并发写操作。• 索引类型:支持非聚簇索引,数据和索引分开存储。
2025-02-27 11:03:10
217
原创 什么是覆盖索引-MySql
而覆盖索引的核心在于,查询所需的所有字段都包含在索引中,因此可以直接从索引中读取数据,避免了回表操作,从而减少了磁盘I/O开销,提高了查询效率。覆盖索引是指一个索引包含了查询语句中涉及的所有列(包括查询列和条件列),数据库可以直接从索引中获取查询结果,而无需访问实际的数据行。覆盖索引(Covering Index)是一种数据库优化技术,其核心概念是:当一个查询的所有列都可以从某个索引中直接获取,而无需回表查询时,这个索引就被称为覆盖索引。• 索引大小:覆盖索引通常比普通索引更大,因为索引中包含了更多列。
2025-02-27 10:29:00
491
原创 js 事件监听
input事件:在输入框的值每次变化时触发(实时)。change事件:在输入框失去焦点且值已改变时触发。获取输入值:通过或直接传递this.value。防抖:高频触发时优化性能。根据需求选择合适的方式即可!。
2025-02-26 11:15:50
608
原创 强大好用的SHELL
再者,图形化工具相较于Linux命令行界面会更加消耗系统资源,因此经验丰富的运维人员甚至都不会给Linux系统安装图形界面,需要开始运维工作时直接通过命令行模式远程连接过去,不得不说这样做确实挺高效的。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是Bash(Bourne-Again SHell)解释器。由此可见,系统内核对计算机的正常运行来讲是太重要了,因此一般不建议直接去编辑内核中的参数,而是让用户通过基于系统调用接口开发出的程序或服务来管理计算机,以满足日常工作的需要,如图2-1所示。
2025-02-14 17:57:23
206
原创 数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式
MySQL 报错 1045 表示用户`root`从`localhost`连接时被拒绝访问,通常是因为密码错误、权限问题或配置问题。• 在 Windows 上:在命令行中运行`mysqld --skip-grant-tables --shared-memory`。希望以上方法能帮助你解决`Access denied for user 'root'@'localhost'`的问题。• 在 Linux 上:`sudo mysqld_safe --skip-grant-tables &`
2025-02-14 15:50:35
1876
原创 java中map实现函数式编程的原理
在 Java 中,`Map`接口本身并不直接支持函数式编程,但 Java 8 引入的`Stream API`和`Lambda 表达式`为函数式编程提供了强大的支持。`Stream`的操作可以分为中间操作(如`filter`、`map`)和终端操作(如`collect`、`forEach`)。• 使用`entrySet()`方法获取`Map`的条目集合(`Set<Map.Entry<K, V>>`),然后调用`stream()`方法。• `Predicate<T>`:表示接受一个参数并返回一个布尔值的函数。
2025-02-13 15:03:38
509
原创 java lambda表达式
Lambda表达式是Java 8引入的核心特性,它是一种,基于数学中的λ演算思想设计。其核心价值在于支持函数式编程范式,允许将代码作为数据传递,从而提升代码的简洁性和灵活性。与传统面向对象编程相比,Lambda表达式通过极简的语法结构实现了对单方法接口(函数式接口)的快速实现。
2025-02-12 18:17:12
876
原创 线程的生命周期在java中是如何定义的?
New:线程刚创建,还没有开始执行。Runnable:线程准备好执行,但可能等待调度。Running:线程正在执行run()方法。Blocked:线程因为资源竞争(如锁)而被阻塞。Waiting:线程等待某个条件或事件的发生。:线程等待指定时间,时间到后恢复执行。Terminated:线程执行完成,生命周期结束。通过这些状态,线程的生命周期可以反映线程从创建到执行、等待、阻塞、终止的完整过程。线程的管理和调度主要由 Java 的线程调度器和操作系统共同决定。
2025-02-11 17:22:37
929
原创 什么是协程? java支撑协程吗
Java 本身没有直接支持协程,但可以通过第三方库(如 Quasar)或者 Kotlin 的协程来实现类似的功能。未来,Java 可能会通过 Project Loom 提供原生的协程支持。
2025-02-11 17:21:01
442
原创 java中的线程安全
在这个示例中,ArrayList是非线程安全的,因此在多线程环境下可能会导致list.size() 的结果不正确。而Vector是线程安全的,因此在多线程环境下可以保证list.size() 的结果正确。StringBuffer:线程安全的可变字符序列,类似于StringBuilder,但所有方法都是同步的。Vector:线程安全的List实现,类似于ArrayList,但所有方法都是同步的。Hashtable:线程安全的Map实现,类似于HashMap,但所有方法都是同步的。3. 常见的线程安全类。
2025-02-08 17:54:35
376
原创 什么是java中的线程同步
线程同步是Java多线程编程中非常重要的一个概念,主要用于解决多个线程同时访问共享资源时的数据一致性问题。Java提供了多种同步机制,包括synchronized关键字、显式锁、信号量、读写锁、volatile关键字、ThreadLocal和阻塞队列等。选择合适的同步机制可以提高程序的性能和可维护性。
2025-02-08 17:47:30
216
原创 13.接口类和抽象类的区别
特点JDKJRE主要功能Java 开发工具包,包含开发工具和运行环境Java 运行环境,只包含运行 Java 程序的必要组件包含内容包含 JRE、编译器(javac)、调试器等包含 JVM 和核心类库,不包含开发工具目标用户开发人员(需要编写、编译、调试程序)普通用户(只运行 Java 程序)文件大小较大,通常数百MB较小,通常几十MB示例用途编写和编译 Java 程序运行已编译的 Java 程序简而言之,JDK是 Java 开发所必需的完整开发包,而JRE。
2025-01-22 18:25:53
65
原创 12.接口和抽象类的区别
特性接口抽象类方法实现只能定义方法签名(Java8后支持默认方法)可以有抽象方法和具体方法多继承支持类实现多个接口只支持单继承构造方法没有构造方法可以有构造方法成员变量默认是常量可以有实例变量和任意访问修饰符访问修饰符方法默认是可以有任意访问修饰符实例化不能实例化不能直接实例化,但可以通过子类实例化使用场景定义协议、规范或多重继承的场景实现部分功能、共享代码的场景接口用于定义一组功能接口,强调的是行为的规范,通常不包含实现逻辑。抽象类。
2025-01-17 18:19:03
137
原创 11.Java中基本类型和包装类型的区别是什么
属性基本类型包装类型类型原始类型对象类型存储方式存储实际值存储对象的引用,值存储在堆内存中默认值有默认值默认值为null内存分配栈内存,空间固定堆内存,空间不固定性能更高效相对较低效操作方法不支持方法调用支持方法调用自动转换无支持自动装箱和拆箱使用场景简单数值存储存储在集合中、需要对象行为或反射时使用这些区别意味着在选择使用基本类型或包装类型时,我们需要根据具体的应用场景、性能要求以及存储需求做出判断。
2025-01-17 18:14:41
104
原创 10.Java中StringBuilder是怎么实现的
的实现基于一个字符数组,可以高效地进行字符串的修改。它提供了多种方法来修改字符串,避免了每次修改时都创建新的字符串。在多线程环境中,应该选择,它是线程安全的,但性能略差。
2025-01-15 09:57:04
34
原创 9.java中String,StringBuilder,StringBuffer 什么区别
String:不可变,线程安全,但在频繁拼接操作时性能较差。:可变,非线程安全,性能更高,适用于单线程场景。:可变,线程安全,性能较稍差,适用于多线程环境。建议如果字符串不需要修改,可以使用String。如果需要频繁修改字符串,使用,尤其是在单线程环境下。如果在多线程环境下需要修改字符串,使用。
2025-01-11 17:26:45
278
原创 MySQL 创建数据库
所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库。PHP使用 mysql_query 函数来创建或者删除 MySQL 数据库。使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。die('创建数据库失败: ' . mysql_error());以上命令执行成功后会创建 MySQL 数据库 W3CSCHOOL。die('连接错误: ' . mysql_error());echo '连接成功';
2025-01-10 18:30:57
382
原创 jdk8有哪些新特性
JDK 8 带来了许多重要的新特性,主要包括 Lambda 表达式、Stream API、默认方法、Optional 类、全新的日期时间 API、Nashorn 引擎等。这些特性使得 Java 开发更加简洁、高效,并增强了函数式编程的支持,同时改善了并发处理和异步任务的执行。
2025-01-10 09:52:28
123
原创 MySQL 管理
在添加用户时,请注意使用MySQL提供的 PASSWORD() 函数来对密码进行加密。另外一种添加用户的方法为通过SQL的 GRANT 命令,你下命令会给指定数据库TUTORIALS添加用户 zara ,密码为 zara123。如果你需要添加 MySQL 用户,你只需要在 MySQL 数据库中的 user 表添加新用户即可。如果你不使用该命令,你就无法使用新创建的用户来连接MySQL服务器,除非你重启MySQL服务器。在配置文件中,你可以指定不同的错误日志文件存放的目录,一般你不需要改动这些配置。
2025-01-07 18:14:59
941
原创 7.什么是java内部类?有什么作用?
(Inner Class)是指在一个类的内部定义的类。内部类可以直接访问外部类的成员(包括私有成员),并且可以被用来实现一些复杂的功能,比如将一些与外部类密切相关的功能封装在一起。
2025-01-07 18:10:05
235
1
原创 6.java方法重载和方法重写之间的区别是什么
指在同一个类中,方法名相同但参数列表不同(参数的个数、类型或顺序不同)的情况。方法的返回类型可以相同也可以不同,但重载方法的区分主要通过参数来实现。
2025-01-04 13:55:59
251
原创 5.java面向对象编程与面向过程编程的区别是什么
面向过程编程强调的是功能和操作,通过过程(函数)来实现任务,适合简单的、计算导向的任务。面向对象编程强调的是数据和行为的结合,通过类和对象来组织程序,适合开发大型复杂的应用,具备更高的抽象性、可扩展性和可维护性。
2025-01-03 09:32:18
232
原创 4.为什么java不支持多重继承?
Java 不支持类的多重继承,主要是为了简化继承体系,避免复杂的继承关系和冲突(尤其是菱形问题)。例如,如果两个父类具有相同的方法名和签名,而子类没有明确重写该方法,程序员可能不清楚哪个父类的方法会被调用,从而可能引发不必要的错误。它指的是当一个类继承自两个类,而这两个类有共同的祖先类时,继承体系可能会引发方法继承上的冲突,导致不清楚到底该调用哪个父类的方法。单继承模型更加清晰,继承关系简单,避免了多重继承带来的复杂继承树和冲突。为了避免这种问题,Java 选择不支持类的多重继承。
2025-01-02 21:15:09
259
原创 MySQL 安装
使用 mysqladmin 命令俩检查服务器的版本,在linux上该二进制文件位于 /usr/bin on linux ,在window上该二进制文件位于C:\mysql\bin。你可以在 MySQL Client(MySQL客户端) 使用 MySQL 命令连接到MySQL服务器上,默认情况下MySQL服务器的密码为空,所以本实例不需要输入密码。在成功安装MySQL后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证MySQL是否工作正常。
2025-01-02 21:11:36
1101
原创 MySQL 入门教程
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。1.数据以表格的形式出现2.每行为各种记录名称3.每列为记录名称所对应的数据域。
2025-01-02 21:08:29
606
原创 3、Java中 Exception 和 Error 有什么区别
特性ExceptionError继承关系继承自Throwable继承自Throwable可恢复性可以通过代码捕获并处理不可以处理,通常表示不可恢复的错误处理方式可以通过try-catch或throws处理不建议捕获或处理常见情况程序中可能发生的异常情况JVM 或系统级别的严重问题Exception是程序能处理的异常,程序可以捕获并进行恢复。Error是系统级别的错误,程序无法恢复,应避免捕获它们。
2025-01-01 09:00:00
63
原创 2 、什么是Java中的不可变类
不可变类是指其对象一旦创建后,其状态(字段值)就不能再改变的类。设计不可变类时需要确保字段值在对象创建时就被初始化,且没有“setter”方法来修改字段值。优点:线程安全、提高代码的可维护性和安全性,适合用于多线程编程和缓存。缺点:性能开销较大,灵活性较差,尤其在需要频繁修改对象状态的场景下。不可变类的设计理念和实践是Java编程中非常重要的技术,尤其在并发编程和设计高质量、可靠的应用时,具有重要的作用。
2024-12-31 22:36:00
224
原创 1、Java中的序列化和反序列化是什么?
序列化:将对象转换为字节流,方便存储或传输。反序列化:将字节流恢复为原始对象。实现接口:Java中的对象必须实现接口才能被序列化。版本控制:使用来控制类的版本兼容性。这些概念是Java中处理对象存储和远程传输的重要机制,广泛应用于各种开发场景中。
2024-12-31 22:35:15
595
原创 Java 包(package)
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。例如,一个Something.java 文件它的内容那么它的路径应该是 net/java/util/Something.java 这样保存的。package(包)的作用是把不同的java程序分类保存,更方便的被其他java程序调用。
2024-12-30 19:02:41
838
原创 Java 抽象类
在 Java 面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
2024-12-30 18:05:20
510
原创 Java 重写(Override)与重载(Overload)
方法的重写 (Overriding) 和重载 (Overloading) 是 java 多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载 (Overloading)。(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写 (Overriding)。
2024-12-24 18:28:48
1334
1
原创 Java 继承
继承是所有 OOP 语言和 Java 语言不可缺少的组成部分。继承是 Java 面向对象编程技术的一块基石,是面向对象的三大特征之一,也是实现软件复用的重要手段,继承可以理解为一个对象从另一个对象获取属性的过程。如果类 A 是类 B 的父类,而类 B 是类 C 的父类,我们也称类 C 是 A 的子类,类 C 是从类 A 继承而来的。在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。继承中最常使用的两个关键字是和。
2024-12-23 17:16:29
792
原创 mysql 将一个表的值根据对应关系插入到新表
使用可以从一个表选择数据并插入到另一个表。可以结合JOIN和WHERE来根据条件或对应关系插入数据。如果需要插入数据时避免重复,可以使用。
2024-12-19 10:34:21
531
原创 Java 异常处理
程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?在Java中,异常就是Java在编译或运行或者运行过程中出现的错误。异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;
2024-12-17 21:22:25
572
原创 Java 流(Stream)、文件(File)和IO
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java为I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
2024-12-17 21:16:08
1132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人