- 博客(57)
- 收藏
- 关注
原创 CentOS 7 虚拟机网络配置异常 典型问题:启动了NetworkManager但是network无法启动
【代码】CentOS 7 虚拟机网络配置异常 典型问题:启动了NetworkManager但是network无法启动。
2025-06-17 23:41:40
203
原创 Linux从入门到精通
Linux命令行(Terminal)是与操作系统交流的文本接口,就像和电脑"对话"的特殊语言。如果把图形界面比作"指手画脚",那么命令行就是"直接下命令"——更精确、更高效、更强大。在Linux系统中,命令行是核心控制中心,几乎所有系统功能都可以通过命令来实现,包括文件管理、程序控制、网络配置、系统监控等。# 使用长选项增加可读性# 在脚本中使用错误处理command || { echo "命令失败";exit 1;# 使用变量避免硬编码# 输出重定向最佳实践。
2025-06-10 00:30:38
1489
原创 MySQL自定义函数零基础学习教程
最简单的理解:自定义函数就是你教给MySQL的一个新"技能"。输入:给函数一些数据(叫做参数)处理:函数按照你写的规则进行计算输出:返回一个结果就像数学中的函数:f(x) = x + 1输入x=5,计算:5+1,输出:6特性自定义函数存储过程视图返回值必须返回单个值可以返回多个结果集或不返回返回查询结果集调用方式在SQL表达式中调用使用CALL语句调用像表一样查询事务控制❌ 不支持✅ 完全支持❌ 不适用参数支持只支持IN参数支持IN、OUT、INOUT参数❌ 不支持参数。
2025-06-09 19:04:58
654
原创 Linux主要目录
这些软件包通常是自包含的,不遵循标准的Linux目录结构,而是将其所有文件安装在一个子目录中(例如 /opt/google-chrome/ 或 /opt/oracle_database/)。: 如果系统启用了SELinux(一种Linux内核安全模块,提供强制访问控制机制),这个目录(通常是一个虚拟文件系统接口)会包含与SELinux策略和状态相关的文件。在Linux中,每个普通用户都有一个以其用户名命名的个人目录(如 /home/john, /home/alice),用于存储个人文件、配置和数据。
2025-06-05 11:21:24
778
原创 VMWare下设置共享文件,/mnt/hgfs下却不显示共享文件的解决方法
若想使用其他挂载点(如# 1. 创建新挂载点# 2. 挂载命令# 3. 验证ls。
2025-06-05 10:29:10
644
原创 MySQL中count(1)和count(*)的区别及细节
count(*) 和 count(1) 性能相近,都是最优选择count(字段) 效率最差,避免用于统计总记录数建立二级索引可以显著提升count性能大表统计考虑使用近似值或独立计数表理解存储引擎差异:MyISAM直接返回,InnoDB需要遍历。
2025-05-31 22:26:11
1140
原创 Java中方法引用详解
方法引用是 Lambda 表达式的简化写法,使用操作符。其使用场景必须基于函数式接口(即接口中仅有一个抽象方法,可通过编译器校验接口是否符合函数式接口规范(单抽象方法);增强代码可读性,明确接口的函数式用途(如配合 Lambda、方法引用使用)。方法引用是Lambda表达式的简化写法,使用操作符四种类型:静态方法、实例方法(两种)、构造器引用在Stream API、事件处理、策略模式等场景广泛应用注意方法签名匹配和重载歧义问题合理选择方法引用和Lambda表达式核心关联。
2025-05-25 19:39:26
800
原创 Java反射机制详细笔记
反射允许对成员变量、成员方法和构造方法的信息进行编程访问。反射机制的核心是Class类,每个Java类在JVM中都有一个对应的Class对象,通过这个对象可以获取类的所有信息。方法名作用返回值类型获取所有public构造方法>[]获取所有构造方法(含private)>[]获取指定的public构造方法获取指定的构造方法(含private)方法名作用返回值类型获取所有public成员变量(含继承)Field[]获取所有成员变量(不含继承)Field[]获取指定的public成员变量。
2025-05-25 16:42:54
705
原创 Java集合框架详解:单列集合与双列集合
Java集合框架主要分为两大类:单列集合(Collection)和双列集合(Map)。单列集合:每个位置存储单个元素,由Collection接口定义List:有序、可重复的元素序列Set:不允许重复元素的集合:队列,通常用于按特定顺序处理元素双列集合:每个位置存储键值对,由Map接口定义每个元素包含键和值,键不能重复,值可以重复Java集合框架├── Collection(单列集合)│ ├── List(有序、可重复)│ │ ├── ArrayList(数组实现)
2025-05-20 20:53:03
787
原创 Java中的IO流详细笔记
IO流(Input/Output Stream)是Java中用于处理输入和输出数据传输的抽象概念。它将数据的传输过程形象地比喻为"流水",数据如同水流一样从一个位置流向另一个位置。IO流体系| |字节流 字符流| || | | |
2025-05-16 00:22:39
1212
原创 JAVA中异常处理详解
异常(Exception)是程序执行期间发生的事件,它会中断程序的正常指令流。简单来说,异常是一个表示程序出现错误或异常状态的对象。在Java中,异常是一种特殊类型的对象,它从类继承而来。当方法遇到无法处理的情况时,会创建一个异常对象并将其"抛出",然后Java运行时系统会寻找能够"捕获"并处理这个异常的代码。当标准异常类不足以表达特定的错误情况时,可以创建自定义异常类。// 自定义已检查异常super("余额不足,还需 " + amount + " 元");// 使用自定义异常A6。
2025-05-13 10:39:48
1180
原创 Java中的JDK7和JDK8时间类详解
JDK7的时间API(Date、Calendar、SimpleDateFormat)存在设计缺陷,使用不便且线程不安全。不可变对象,保证线程安全API设计更合理,月份从1开始功能更丰富,支持更多日期时间操作支持链式调用,代码更简洁在新项目中应优先使用JDK8的时间API,旧项目可以考虑逐步迁移。LocalDateLocalTimeInstantDuration(秒、纳秒)或Period(年、月、日)ChronoUnit参考资料。
2025-05-11 22:23:29
1026
原创 Java Stream流详解:从入门到精通
Stream流是Java 8引入的处理集合数据的API,它让我们以声明式(描述要做什么,而不是怎么做)的方式处理数据。核心特点声明式编程:更关注做什么,而不是怎么做支持链式操作:可以像搭积木一样组合多个操作支持并行处理:轻松切换到并行模式,提高性能延迟执行:在最后一步(终端操作)才会真正执行创建流:从数据源获取流中间操作:对流进行一系列转换和处理(延迟执行)终端操作:触发流的计算,返回结果中间操作:返回新Stream的操作,可以链式调用,不会立即执行。
2025-05-11 02:37:16
1561
原创 Java中Comparator排序原理详解
a-b和b-a减法运算的数学特性:数值大小与结果正负的关系Comparator接口的设计约定:返回值正负与排序顺序的关系理解了这一原理,我们就能根据需要轻松实现升序或降序排列。
2025-05-10 18:29:32
948
原创 Java中Lambda表达式详解
Lambda表达式是Java 8引入的一个重要特性,它提供了一种简洁的方式来表示函数式接口的实例。Lambda表达式本质上是一种匿名函数,它没有名称,但有参数列表、函数体、返回类型,以及可能抛出的异常列表。Lambda表达式的主要特点代码简洁,提高可读性支持将行为作为参数传递使集合操作更加高效和易于使用促进并行处理是函数式编程的基础代码简洁性:减少冗余代码函数式编程支持:将行为作为参数传递集合处理增强:结合Stream API高效处理集合并行处理支持:轻松实现并行计算。
2025-05-10 00:16:22
689
原创 Java中的内部类详解
内部类(Inner Class)是定义在另一个类内部的类。Java中的内部类就像是外部类的一个成员,它可以访问外部类的所有成员变量和方法,即使它们被声明为private。内部类的主要特点可以访问外部类的所有成员(包括私有成员)能够实现"多重继承"的效果提高了封装性可以更好地组织代码结构提高封装性:内部类可以隐藏实现细节访问外部类的私有成员:增强了类之间的联系实现回调机制:特别是匿名内部类避免多继承问题:通过内部类可以模拟多继承效果选择使用哪种内部类的建议成员内部类静态内部类局部内部类。
2025-05-09 23:56:53
1641
原创 Java中字符转数字的原理解析 - 为什么char x - ‘0‘能得到对应数字
能够将字符形式的数字转换为实际数值的原理,是基于ASCII/Unicode编码中数字字符的连续编排特性。这种方法简单、高效,特别适合于确定输入为数字字符的场景。在实际编程中,我们可以根据不同的需求和场景,选择最合适的字符转数字的方法。对于简单的单个数字转换,char - '0'无疑是最佳选择;而对于可能包含非数字字符的输入,或需要更多错误处理的场景,其他方法可能更为合适。希望本文能帮助你更好地理解Java中字符和数字之间的转换原理!参考资料Character类ASCII码对照表。
2025-05-07 22:18:30
1017
原创 MySQL 窗口函数入门到精通
首先,SQL 中的"窗口"不是像 Windows 操作系统上那种可以拖动的界面框!这是很多初学者的误解。功能:返回窗口框架中最后一行的值。语法LAST_VALUE(列名) OVER ([PARTITION BY 列名] ORDER BY 列名 [窗口框架])重要提示:LAST_VALUE 默认窗口框架是"从头至当前行",要获取真正的最后值,需要显式设置窗口框架为整个分区。示例SELECTname,class,score,结果王五 | 一班 | 78 | 92张三 | 一班 | 85 | 92。
2025-05-06 13:41:46
880
原创 什么是原码、反码与补码?
最高位为符号位:0代表正数,1代表负数其余位表示数值的绝对值正数的反码等于其原码负数的反码是符号位保持不变,其余位按位取反正数的补码等于其原码负数的补码等于其反码加1(或者直接从原码取反后加1)移码是在真值(实际值)的基础上加上一个偏移量(通常是2^(n-1))后得到的编码。原码是最直观的表示方法,但在运算中不方便反码改进了部分问题,但仍存在两个零的表示补码解决了大多数问题,是现代计算机普遍采用的方案移码主要用于浮点数表示和比较。
2025-05-05 14:09:36
845
原创 Java 位移运算的详细教程
位移运算是性能优化和底层编程的强大工具。编写更高效的代码理解和处理低级数据结构处理特定领域问题(如图形、加密、网络)阅读和理解现有系统的底层实现虽然在日常应用开发中可能不是必须的,但在性能敏感或底层系统编程中,这些技巧是不可或缺的工具。在并发编程中的原子位操作在JNI和本地代码中的位操作性能比较SIMD指令和位操作的结合不同JVM实现对位操作的优化程度研究。
2025-05-05 14:05:39
1251
原创 Java接口全面教程:从入门到精通
基础特性定义抽象方法(必须由实现类实现)声明常量(隐式实现多重继承机制Java 8 增强默认方法(带实现的接口方法)静态方法(属于接口本身的方法)函数式接口(支持 Lambda 表达式)Java 9 增强私有方法(增强接口内部代码复用)关键优势定义类型而非实现支持多重继承促进松散耦合简化系统演化理解接口的这些特性和最佳实践,将帮助你写出更灵活、更易维护的 Java 代码。无论是初学者还是有经验的开发者,掌握接口都是提高 Java 编程能力的关键步骤。参考资料。
2025-05-03 23:06:29
1218
原创 【算法基础】快速排序算法 - JAVA
分治思想:快速排序采用分治策略,通过分区操作将问题分解为子问题基准选择:基准元素的选择直接影响算法效率,好的选择可以避免最坏情况就地排序:快速排序是一种原地排序算法,不需要额外的数组空间不稳定性:快速排序不是稳定排序算法,相同元素的相对顺序可能改变。
2025-05-03 21:00:48
1030
原创 【算法基础】插入排序算法 - JAVA
插入排序是一种简单但实用的排序算法数据规模较小数据已经部分有序需要稳定排序需要在线处理数据虽然在最坏情况下时间复杂度为O(n²),但其简单性和在特定场景下的优势使其成为实际应用中的重要选择。在标准库中,很多高级排序算法在处理小规模子数组时,会转而使用插入排序,因为此时插入排序的常数因子优势明显。
2025-05-03 19:14:50
558
原创 【算法基础】三指针排序算法 - JAVA
三指针排序是一种特殊的分区排序算法,通过使用三个指针同时操作数组,将元素按照特定规则进行分类和排序。这种算法在处理包含有限种类值的数组时表现出色,最经典的应用是荷兰国旗问题三指针排序算法是一种高效、简洁的算法,特别适合处理有限种类值的排序问题。核心要点一次遍历完成排序原地操作,不需要额外空间线性时间复杂度O(n)特别适合处理三种不同元素的排序问题优点简单易实现高效(一次遍历)空间利用率高(原地操作)稳定性可控缺点仅适用于处理有限种类元素的排序需要明确定义元素的优先级或类别。
2025-05-02 23:16:03
1278
原创 【算法题】荷兰国旗问题[力扣75题颜色分类] - JAVA
本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。如同图中所示的荷兰国旗,其由红、白、蓝三色水平排列组成。在算法领域,该问题可类比为将一个由特定的三种元素(可抽象对应红、白、蓝)组成的数组,通过特定算法实现元素的有序排列,使得相同元素相邻,且按照类似荷兰国旗颜色顺序的规则分布。
2025-05-02 23:07:11
618
原创 【算法基础】选择排序算法 - JAVA
选择排序首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序是一种简单直观的排序算法,核心思想是不断从未排序区域中选择最小元素放入已排序区域。核心要点时间复杂度始终为 O(n²),无论输入如何空间复杂度为 O(1),是一种原地排序算法交换次数较少,最多进行 n-1 次交换实现简单,代码易于理解和编写对于大型数据集不推荐使用。
2025-05-02 22:13:06
1406
原创 【算法基础】冒泡排序算法 - JAVA
冒泡排序是一种简单直观的比较排序算法。它重复地走访待排序的数列,依次比较相邻两个元素,如果顺序错误就交换它们,直到没有元素需要交换为止。
2025-05-02 21:11:49
800
原创 【基础算法】分块查找算法 - JAVA
分块查找(Block Search,也称索引顺序查找)是一种介于顺序查找和二分查找之间的算法。它将数据分成若干块,每块内的元素不必有序,但块与块之间必须有序,即前一块中的最大值小于后一块中的最小值。这种算法通过先确定目标在哪个块中,再在特定块内进行顺序查找,结合了顺序查找的简单性和二分查找的高效性。分块查找是一种介于顺序查找和二分查找之间的算法,通过将数据分块并建立索引表来提高查找效率。它的时间复杂度为O(√n),虽然不如二分查找,但在某些特定场景下(如数据频繁变动、外存数据访问等)具有独特优势。核心要点。
2025-05-02 02:27:35
1202
原创 【算法扩展】斐波那契查找算法 - JAVA
斐波那契查找是一种在有序数组中进行查找的算法,它与二分查找类似,但使用斐波那契数列来确定分割点。算法的核心思想是将查找区间按照黄金分割比例(约0.618)进行划分,而不是像二分查找那样均分为二。这种分割方式在某些场景下可以获得更好的性能。斐波那契查找是一种利用黄金分割原理的查找算法,它按照斐波那契数列的特定比例划分查找区间。虽然与二分查找时间复杂度相同,但在某些特定场景下可能更有效率。这种算法展示了如何利用数学性质优化搜索过程,是算法设计思想的一个很好例证。
2025-05-01 17:42:44
968
原创 【基础算法】插值查找算法 - JAVA
插值查找(Interpolation Search)是二分查找的改进版本,针对有序数据分布较为均匀的情况进行了优化。它不像二分查找固定选择中间位置作为比较点,而是根据查找关键字在数据集中的大致位置进行"猜测",从而更快地缩小查找范围。插值查找的核心思想是利用线性插值公式计算目标值可能出现的位置,特别适合于分布均匀的有序数组。插值查找是一种在二分查找基础上的优化算法,通过估计目标值的相对位置来加速查找过程。它的核心在于利用数据分布信息使每次比较更有针对性,在均匀分布的大规模数据集上表现优异。核心要点核心公式。
2025-05-01 17:27:53
998
原创 【基础算法】二分查找算法 - JAVA
二分查找(Binary Search)是一种高效的查找算法,专门用于在已排序数组中查找特定元素。其核心思想是将查找区间反复折半,每次将目标值与区间中点元素比较,从而确定目标元素位于中点左侧还是右侧,直至找到目标元素或确定其不存在。二分查找的前提条件是数据必须有序排列且能够通过索引直接访问,常用于大规模数据的快速检索。// 关键点:继续在右侧寻找} else {if (result!= -1) {
2025-05-01 16:14:06
874
原创 JAVA中的贪婪爬取和非贪婪爬取
贪婪模式(如ab+:尽可能匹配最多的b,适合需要捕获最大范围的场景。非贪婪模式(如ab+?:尽可能匹配最少的b,适合需要精确匹配最小单元的场景。在"abbbbbbb"示例中,贪婪模式匹配整个字符串,非贪婪模式只匹配"ab"。
2025-04-27 18:54:50
305
原创 Mysql中隐式内连接和显式内连接的区别
有学生表(包含学生 ID 和姓名)和成绩表(包含学生 ID 和成绩),内连接会返回那些在两张表中学生 ID 匹配的记录。内连接是数据库中一种常见的连接方式,用于从两个或多个表中返回满足连接条件的记录,即只返回两张表中匹配的行。
2025-04-27 17:11:17
653
原创 Java中正则表达式使用方法
正则表达式(Regular Expression,简称 Regex)是一种用于匹配字符串的模式工具。在 Java 中,正则表达式通过PatternMatcher正则表达式可以用来验证格式、提取信息或替换文本,例如检查邮箱地址是否合法、提取字符串中的数字、按规则分割字符串等。
2025-04-24 10:37:50
935
原创 URI、URL与URN详解概念介绍
URI是最广泛的概念,是资源的标识符URL是URI的一种,提供资源的位置和访问方式URN也是URI的一种,提供资源的永久标识,与位置无关。
2025-04-23 21:30:36
773
原创 什么是时间复杂度和空间复杂度?
时间复杂度:衡量代码运行时间随输入规模增大而增长的速度。简单来说,就是“代码跑多快”。空间复杂度:衡量代码运行时额外占用的内存空间随输入规模增大而增长的速度。简单来说,就是“代码用多少内存”。我们通常用大 O 表示法(Big O Notation)来描述它们,如 O(1)、O(n)、O(n²) 等。时间复杂度:主要看循环层数和递归模式。一眼看出靠经验,不能看出时数循环或分析递推式。空间复杂度:主要看额外分配的数据结构和递归深度。一眼看出靠观察变量和结构,不能看出时计算空间使用。建议。
2025-04-15 22:59:54
1032
原创 如何完美解决 libpng warning: iCCP: known incorrect sRGB profile
问题背景最近在开发一个小游戏的时候,遇到了一个烦人的警告:经过多次尝试,我总结了两个步骤来彻底解决这个问题:修复图片 和 优化代码。运行以下命令 -strip 会移除 background.png 中的所有元数据,包括有问题的 iCCP 块。理后,重新运行程序,警告消失!方法 2:将 PNG 转换为 JPG(避开 PNG 处理)
2025-04-14 10:43:26
3112
原创 【基础算法】递推算法 - java
递推算法是一种通过已知条件,利用明确的递推关系逐步推导中间结果,最终得出最终答案的算法。它分为顺推和逆推两种形式:顺推是从初始条件出发,逐步向前推导;逆推则是从最终结果的关联条件出发,反向推导。递推算法的关键在于找到递推关系式,其思想简洁且具有规律性,在数列计算、动态规划初始阶段等场景应用广泛。递推算法是一种基础且实用的算法,它通过逐步推导解决问题,代码实现直观,在许多数学计算和规律性问题中表现出色。尽管它对复杂逻辑的处理能力有限,但在明确递推关系的场景下,仍是高效且简洁的选择。
2025-04-13 14:15:37
458
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人