【JAVA-Day32】精通Java函数:定义、调用和主函数的完整指南
精通Java函数:定义、调用和主函数的完整指南
- 精通Java函数:定义、调用和主函数的完整指南
- 摘要
- 引言
- 1. Java函数基础
- 什么是Java函数?
- 函数的定义和命名规则
- 参数和返回值的概念
- 2. 函数的定义与语法
- 如何声明和定义函数?
- 函数的参数和参数列表
- 函数的返回类型和返回语句
- 3. Java函数调用
- 如何调用已定义的函数?
- 传递参数和获取返回值
- 函数的重载和覆盖
- 4. 主函数的作用
- 主函数的特殊性质
- 主函数的入口点
- 主函数的命令行参数
- 函数的使用场景和最佳实践
- 函数在编程中的重要性
- 编写可维护的函数代码
- 函数的单一职责原则
- 6. 高级函数概念
- 递归函数的原理和用法
- 匿名函数和Lambda表达式
- 内部类和函数的关系
- 7. Java函数的调试和错误处理
- 调试函数代码的工具和技巧
- 常见的函数错误和如何处理它们
- 异常处理和函数的异常抛出
- 8. 函数库和标准库函数
- Java标准库中常用的函数
- 自定义函数库的创建和使用
- 第三方库函数的整合
- 9. Java函数的性能优化
- 函数调用的开销和性能考虑
- 内联函数和性能优化技巧
- 函数的时间复杂度和空间复杂度分析
- 10. 实际项目中的Java函数应用
- 实际项目中的函数设计和实现
- 大型应用中的函数组织和管理
- 通过案例研究学习函数的应用
- 总结
- 参考资料
博主 默语带您 Go to New World.
✍ 个人主页—— 默语 的博客👦🏻
《java 面试题大全》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨
精通Java函数:定义、调用和主函数的完整指南
摘要
在Java编程中,函数是关键的组成部分之一,它们允许我们组织代码、提高可维护性,并实现各种功能。本文将深入探讨Java函数的方方面面,从基础概念到高级技巧,让您全面掌握函数的定义、调用以及主函数的使用。无论您是初学者还是有经验的开发人员,这篇完整指南都将为您提供有关Java函数的深入知识和实际应用经验。
引言
Java是一门强大的编程语言,拥有丰富的函数支持,通过函数,我们可以将程序分解成小块,提高代码的可读性和可维护性。本文将引导您深入理解Java函数的核心概念,从函数的定义、语法到高级特性,以及函数在实际项目中的应用。让我们一起开始这段精彩的Java函数之旅!
1. Java函数基础
什么是Java函数?
Java函数,通常被称为方法(method),是一种用于执行特定任务的代码块。这些代码块可以接受输入参数,执行操作,然后返回一个结果。函数的存在使我们能够将复杂的问题分解为更小的、可管理的部分,并且可以在需要时多次调用它们。
函数的定义和命名规则
函数的定义包括以下几个关键部分:
- 函数名: 函数名是一个标识符,用于唯一标识函数。通常采用驼峰命名法,例如
calculateSum
。 - 参数列表: 参数列表包括函数接受的输入参数,这些参数是函数执行所需的数据。参数可以有零个或多个,并且每个参数都包括参数名称和数据类型。例如,
calculateSum(int num1, int num2)
中的num1
和num2
是参数。 - 返回类型: 返回类型指定了函数的返回值的数据类型。它可以是任何有效的Java数据类型,包括基本数据类型(如
int
、double
)或自定义的类类型。例如,int
表示函数将返回一个整数。 - 函数体: 函数体包含了函数的实际代码实现,这些代码将执行所需的操作。函数体用一对花括号
{}
括起来,并包括函数的具体逻辑。
函数的定义通常遵循以下语法结构:
返回类型 函数名(参数列表) {// 函数体// 执行操作并可能返回结果
}
参数和返回值的概念
参数是函数的输入,它们允许我们将数据传递给函数以供处理。参数可以是零个或多个,它们在函数内部被当作变量使用。参数允许我们在不同的函数调用中传递不同的数据,使函数变得更加通用。
函数还可以返回一个值,这个值是函数执行后的结果。返回值的类型由函数的返回类型指定,它可以是任何有效的数据类型。返回值允许函数将计算结果传递给调用者,以便后续使用。
下面是一个示例函数,演示了参数和返回值的概念:
public int addNumbers(int num1, int num2) {int sum = num1 + num2;return sum; // 返回两个数字的和
}
在上述示例中,addNumbers
函数接受两个整数参数num1
和num2
,并返回它们的和作为整数值。
函数是Java编程的基础,通过了解如何定义、命名函数以及如何使用参数和返回值,您可以开始构建更加模块化和灵活的代码。在接下来的部分,我们将继续探讨Java函数的更多概念和用法。 🚀📚
2. 函数的定义与语法
如何声明和定义函数?
在Java中,函数的声明和定义包括以下部分:
- 函数名: 函数名是函数的唯一标识符,用于调用函数。函数名应该符合Java的标识符规则,通常采用驼峰命名法。例如,
calculateSum
。 - 参数列表: 参数列表包括函数接受的输入参数,这些参数是函数运行时所需的数据。参数列表定义了参数的名称和类型,它们用括号括起来,如
(int num1, int num2)
。 - 返回类型: 返回类型指定了函数返回的数据类型。它可以是任何有效的Java数据类型,包括基本数据类型(如
int
、double
)或自定义的类类型。返回类型出现在函数名之前,如int
、void
等。 - 函数体: 函数体包含了函数的实际代码实现,这些代码将执行所需的操作。函数体用一对花括号
{}
括起来,并包括函数的具体逻辑。
函数的定义通常遵循以下语法结构:
返回类型 函数名(参数列表) {// 函数体// 执行操作并可能返回结果
}
函数的参数和参数列表
函数的参数是函数运行时接受的输入数据。参数列表定义了函数可以接受的参数类型和顺序。Java支持多种参数类型,包括:
- 基本数据类型(如
int
、double
等) - 引用数据类型(如对象)
- 可变参数列表(Java 5及更高版本支持)
参数列表由一对括号()
包围,参数之间使用逗号分隔。例如,addNumbers(int num1, int num2)
中的参数列表包括两个整数参数num1
和num2
。
函数的返回类型和返回语句
返回类型指定了函数返回的数据类型。它可以是任何合法的数据类型,包括基本数据类型、对象类型或void
。void
表示函数不返回任何值。
函数使用return
语句来返回值,同时结束函数的执行。返回语句的返回值必须与函数的返回类型相匹配。例如,一个返回整数的函数可以使用return
语句返回整数值。
public int addNumbers(int num1, int num2) {int sum = num1 + num2;return sum; // 返回两个数字的和
}
了解如何声明和定义函数,以及如何使用参数和返回值,是编写Java程序的关键。在下一部分中,我们将讨论Java函数的调用,包括如何调用已定义的函数、传递参数和获取返回值。 📝🔍
3. Java函数调用
在Java中,我们可以通过函数的调用来执行已定义的函数。函数调用是程序执行的重要组成部分,它允许我们重复使用已编写的代码,提高了代码的可维护性。让我们深入了解如何调用函数、传递参数和获取返回值。
如何调用已定义的函数?
已定义的函数可以通过函数名和参数列表来调用。调用函数时,程序执行流程将跳转到函数体内部执行函数的逻辑。函数调用的一般语法如下:
返回类型 result = 函数名(参数1, 参数2, ...);
例如,如果有一个名为addNumbers
的函数,用于将两个整数相加,可以这样调用它:
int sum = addNumbers(5, 3); // 调用addNumbers函数并获取返回值
在这个例子中,addNumbers(5, 3)
表示调用 addNumbers
函数,并传递参数 5
和 3
给函数。函数执行后,它会返回结果 8
,并将其存储在变量 sum
中。
传递参数和获取返回值
函数调用是参数传递的主要方式。通过参数,我们可以将数据传递给函数,使其能够执行特定的任务。在上面的例子中,5
和 3
是作为参数传递给 addNumbers
函数的。
此外,函数还可以返回一个值,这个值可以在函数调用后使用。在前面的例子中,addNumbers
函数返回了整数值 8
,并将其存储在 sum
变量中。这样,我们可以在后续的代码中使用 sum
变量。
函数的重载和覆盖
Java支持函数的重载和覆盖,这使得我们可以根据需要定义多个具有相同名称但不同参数的函数,以及在子类中覆盖父类中的函数。
- 函数的重载(Overloading): 函数的重载允许在同一个类中定义多个函数,它们具有相同的名称但不同的参数列表。编译器根据参数数量和类型来选择调用哪个函数。
- 函数的覆盖(Overriding): 在面向对象编程中,子类可以覆盖父类中的函数,以改变函数的行为。被覆盖的函数必须具有相同的名称、参数列表和返回类型。
这些特性提供了灵活性和可扩展性,允许我们根据不同的情况来选择适当的函数。在接下来的部分,我们将深入探讨主函数的作用以及如何在Java中编写主函数。 😊📞
4. 主函数的作用
主函数的特殊性质
主函数(main
函数)在Java程序中具有特殊性质,它是程序的入口点。这意味着程序从main
函数开始执行,可以在其中执行各种初始化和设置操作。主函数通常是程序中的第一个函数,是程序的起始位置。
主函数的入口点
main
函数被视为程序的入口点,程序从这里开始执行。在main
函数中,我们可以编写程序的主要逻辑,包括调用其他函数、处理输入、执行计算和生成输出。这个函数负责启动整个程序的执行。
主函数的命令行参数
主函数可以接受命令行参数,这些参数可以在程序启动时传递给程序。命令行参数是字符串数组,它允许程序在运行时动态配置和控制。通过命令行参数,我们可以向程序传递数据或设置选项,以便根据不同的需求执行不同的操作。
在Java中,main
函数的签名通常如下所示:
public static void main(String[] args) {// 主函数的代码逻辑
}
其中,String[] args
是命令行参数数组,它包含了在程序启动时传递的参数。通过处理这些参数,我们可以使程序更加灵活和通用,适应不同的使用场景。
接下来,我们将探讨函数的使用场景和最佳实践,以及如何编写可维护的函数代码。在编写代码时,请记得保持微笑和好奇心!😊🚀
函数在编程中的重要性
函数在编程中扮演着关键的角色,具有以下重要性:
- 模块化和复用性: 函数将代码分解为独立的模块,每个模块执行特定的任务。这使得代码更易于管理和维护,并且可以在不同的地方重复使用。
- 可读性: 使用函数将复杂的操作抽象为简单的功能单元,使代码更易于理解和阅读。清晰的函数名称和参数名有助于代码的自说明性。
- 可维护性: 函数将代码分解为小块,当需要进行修改或修复错误时,可以更容易地定位和编辑特定部分的代码,从而提高了代码的可维护性。
- 测试: 函数可以单独进行单元测试,确保其功能的正确性。这使得调试和问题排查更加高效。
- 协作: 在团队开发中,函数的使用使不同的开发者能够分工合作,独立开发和测试各自负责的函数。
编写可维护的函数代码
编写可维护的函数代码是良好编程实践的一部分。以下是一些编写可维护函数的建议:
- 清晰的函数命名: 函数的名称应该反映其功能,让人一目了然。使用有意义的命名,避免使用过于简单或含糊不清的名称。
- 注释和文档: 对于复杂的函数或算法,提供适当的注释和文档以解释函数的工作原理和输入输出。这有助于其他开发者理解函数的用途。
- 适当的函数长度: 函数应该足够短小,每个函数应该只执行一个明确定义的任务。过长的函数难以理解和维护。
- 避免副作用: 函数应该尽量避免对外部状态产生副作用,这有助于预测函数的行为和测试。
- 参数和返回值: 参数和返回值的类型应该明确,命名应该具有描述性。考虑参数的顺序和数量,使函数易于使用。
函数的单一职责原则
函数的单一职责原则是面向对象编程和函数式编程的基本原则之一。它要求函数只执行一个单一的、明确定义的任务。遵循这一原则有助于使函数更加模块化、可测试和易于理解。当函数仅负责一个任务时,出现问题时更容易进行故障排查和修复。
在编写函数时,考虑将函数划分为小块,每个块负责一个特定的功能。这样的函数更易于维护和重用,并且提供更好的代码组织结构。通过遵循良好的编程实践,我们可以编写出高质量、可维护的函数代码。😊🛠️
6. 高级函数概念
递归函数的原理和用法
递归函数是一种自我调用的函数,通常用于解决问题可以分解成相似子问题的情况。它的工作原理是将问题分解成更小的、相同类型的子问题,然后逐级解决这些子问题,直到达到基本情况(递归终止条件)。递归函数在以下情况下特别有用:
- 处理树形结构或图形数据,如树遍历或图形搜索。
- 解决可以分解成更小实例的数学或计算问题,如斐波那契数列或阶乘计算。
- 实现一些复杂的算法和数据结构,如快速排序和归并排序。
递归函数要小心使用,确保存在终止条件,以防止无限递归。正确设计的递归函数可以提高代码的可读性和效率。
匿名函数和Lambda表达式
Java引入了匿名函数和Lambda表达式的概念,使得函数式编程更容易实现。匿名函数是没有名称的函数,通常用于传递给其他函数或方法。Lambda表达式是一种简洁的语法,用于创建匿名函数。它们通常在需要函数作为参数的地方使用,如集合操作、多线程编程和事件处理。
Lambda表达式的语法类似于 (参数列表) -> { 表达式或代码块 }
,它允许你更紧凑地定义函数,而无需显式声明函数名称。这使得代码更加简洁和易读。
// Lambda表达式示例
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(number -> System.out.println(number));
Lambda表达式和匿名函数提供了更高级的编程抽象,使Java更加灵活和强大。
内部类和函数的关系
内部类是定义在其他类内部的类,它可以访问外部类的成员变量和方法。内部类的存在可以与函数相关联,使函数能够访问外部类的私有成员和方法。这在某些情况下非常有用,特别是当函数需要与外部类的状态互动时。
内部类通常有以下几种类型:
- 成员内部类:定义在外部类的成员变量位置,可以访问外部类的成员。
- 静态内部类:定义在外部类内部,但被声明为静态,不依赖于外部类的实例。
- 局部内部类:定义在方法内部,通常用于解决某个具体问题。
内部类与函数的关系取决于具体的用例,但它们提供了一种将函数与外部类的状态和行为联系起来的方法,从而实现更丰富的功能。
7. Java函数的调试和错误处理
调试函数代码的工具和技巧
在Java中,有多种工具和技巧可用于调试函数代码,以帮助识别和解决问题。一些常用的调试工具包括:
- IDE集成调试器: 主流Java集成开发环境(IDE)如Eclipse、IntelliJ IDEA和NetBeans都提供了内置的调试器,允许你设置断点、逐步执行代码、监视变量和查看堆栈跟踪等功能。
- 日志记录: 在代码中添加日志语句,以便在运行时记录信息。使用Java的日志框架如Log4j或SLF4J可以更灵活地控制日志输出级别。
- 调试输出: 使用
System.out.println
或System.err.println
输出调试信息。这对于在代码中插入临时输出以诊断问题很有用,但不推荐在生产代码中保留这些输出。 - 调试工具: 一些独立的Java调试工具如jdb(Java调试器)也可用于命令行调试。
调试函数时,关键是识别问题的位置和原因,然后采取适当的措施解决问题。在调试期间,要注意避免修改代码以修复问题,而应该集中于了解问题的根本原因。
常见的函数错误和如何处理它们
在函数编程中,常见的错误包括但不限于:
- 空指针异常(NullPointerException): 当尝试访问一个空对象的属性或方法时抛出。要避免这种错误,需要确保在使用对象之前进行空值检查。
- 数组越界异常(ArrayIndexOutOfBoundsException): 当尝试访问数组中不存在的索引位置时抛出。要避免这种错误,需要确保在访问数组元素之前检查索引范围。
- 类型转换异常(ClassCastException): 当尝试将一个对象强制转换为不兼容的类型时抛出。要避免这种错误,需要使用
instanceof
操作符进行类型检查。 - 除零异常(ArithmeticException): 当尝试进行除零运算时抛出。要避免这种错误,需要在执行可能导致除零的运算前进行条件检查。
处理这些错误的方法包括添加条件检查、使用异常处理机制(try-catch
块)和提供良好的错误信息。在编写函数时,应该考虑到这些潜在的错误情况,并采取适当的预防和处理措施。
异常处理和函数的异常抛出
Java使用异常处理来处理运行时错误和异常情况。在函数中,可以通过以下方式处理异常:
- 使用
try-catch
块:在可能引发异常的代码块中使用try
关键字,然后使用catch
块捕获并处理异常。这可以确保程序在遇到异常时不会终止执行,而是继续执行catch
块中的代码。 - 抛出异常:如果函数无法处理某个异常情况,可以使用
throw
关键字抛出异常,然后由调用者或上层函数处理。这允许异常从一个函数传播到另一个函数,直到被捕获和处理。
在编写函数时,应该考虑到可能发生的异常情况,并根据需要添加适当的异常处理代码。这有助于提高程序的稳定性和可靠性,并使错误情况更容易诊断和修复。
8. 函数库和标准库函数
Java标准库中常用的函数
Java标准库中包含了众多常用的函数,涵盖了文件操作、字符串处理、日期时间处理、集合操作等各个领域。这些函数可以大幅简化开发过程,提高开发效率。一些常见的Java标准库函数包括:
java.io
包中的文件和流处理函数,用于读写文件和流。java.util
包中的集合框架,包括ArrayList
、HashMap
等常用数据结构。java.lang
包中的常用函数,如字符串处理函数和数学函数。java.time
包中的日期时间处理函数,用于日期和时间的操作和格式化。
了解这些标准库函数的使用方法可以加速开发,并且通常是编写高效且可靠代码的关键。
自定义函数库的创建和使用
在项目中,除了使用标准库函数外,我们还可以创建自定义函数库,将项目中经常使用的功能封装成函数,以便在不同部分和不同项目中重用。自定义函数库可以提高代码的模块化和可维护性,同时也减少了代码冗余。
创建自定义函数库通常需要遵循一些最佳实践,如清晰的函数命名、适当的注释和文档、函数的单一职责等。这些库可以存储在单独的Java文件中,以便在不同项目中进行导入和使用。
第三方库函数的整合
在实际项目中,我们可能需要使用第三方库来满足特定的需求,如数据库连接库、图形库、网络库等。整合第三方库函数通常需要在项目中添加相应的依赖,并学习如何正确使用这些库提供的函数和功能。
使用第三方库可以显著加速开发过程,因为它们通常提供了经过优化和测试的功能。然而,整合第三方库也需要小心,以确保它们与项目的其他部分兼容,并且不会引入潜在的问题。
总之,Java函数库的使用是Java开发的重要组成部分,了解如何使用标准库函数、创建自定义函数库和整合第三方库函数都有助于提高代码质量和开发效率。
9. Java函数的性能优化
函数调用的开销和性能考虑
函数调用确实会涉及一定的开销,这包括将参数传递到函数、在堆栈上分配空间以保存局部变量和返回地址、跳转到函数体执行等操作。尽管这些开销通常非常小,但在某些性能敏感的场景中可能会产生影响。
在实际编程中,可以通过以下方式减少函数调用的开销:
- 避免不必要的函数嵌套:过多的函数嵌套可能导致多次函数调用,增加了开销。在适当的情况下,可以考虑将某些函数内联,以减少函数调用。
- 使用函数参数和返回值:在合理范围内使用函数参数和返回值,而不是依赖全局变量,可以减少数据的传递开销。
- 考虑编译器优化:现代编译器通常会进行函数内联和优化,以减少函数调用的开销。可以查看编译器文档了解更多信息。
内联函数和性能优化技巧
内联函数是一种性能优化技巧,它可以减少函数调用的开销。当函数被内联时,函数的代码将被嵌入到调用位置,从而避免了函数调用的开销。不过,内联函数也有一些限制,因为过多的内联可能会导致代码膨胀和可维护性下降。
编译器通常会自动进行函数内联,但也可以使用inline
关键字来建议编译器进行内联。这个决策通常由编译器根据代码和性能需求自动进行。
此外,还有其他性能优化技巧,如使用合适的数据结构、避免不必要的循环迭代、选择适当的算法等,都可以提高函数的性能。
函数的时间复杂度和空间复杂度分析
了解函数的时间复杂度和空间复杂度对于评估函数性能和选择适当的算法非常重要。时间复杂度描述了函数执行所需的时间与输入规模的关系,而空间复杂度描述了函数执行所需的内存空间与输入规模的关系。
常见的时间复杂度包括常数时间复杂度(O(1))、线性时间复杂度(O(n))、对数时间复杂度(O(log n))等。选择合适的算法和数据结构可以降低时间复杂度,从而提高函数的性能。
空间复杂度通常包括额外的空间开销,如局部变量、递归调用所需的堆栈空间等。了解函数的空间复杂度可以帮助我们优化内存使用和避免内存泄漏。
总之,深入了解函数调用的性能开销、内联函数优化和时间空间复杂度分析等方面的知识,将有助于编写高效的Java函数和算法。
10. 实际项目中的Java函数应用
实际项目中的函数设计和实现
在实际项目中,良好的函数设计和实现可以提高代码的可维护性、可读性和可测试性。以下是一些函数设计和实现的最佳实践:
- 单一职责原则: 每个函数应该执行一个明确的任务,遵循单一职责原则。这样可以使函数更加模块化和易于理解。
- 适当的命名: 使用清晰、具有描述性的函数命名,以便其他开发人员能够轻松理解函数的用途。
- 合理的函数长度: 函数的长度应该适中,避免过于庞大的函数。长函数难以理解和测试。
- 注释和文档: 提供必要的注释和文档,解释函数的输入、输出和用途。这有助于其他开发人员理解函数,并提供使用示例。
- 错误处理: 在函数中处理错误和异常情况,以确保程序的稳定性。可以使用
try-catch
块来捕获异常并进行适当的处理。
大型应用中的函数组织和管理
在大型应用中,函数的组织和管理是复杂的任务。以下是一些组织和管理大型应用中函数的方法:
- 包结构: 使用合理的包结构将函数组织成模块,并根据功能划分包。这有助于将相关函数放在一起,提高代码的可维护性。
- 模块化设计: 将相关的函数封装成模块,每个模块负责一组相关功能。这可以降低代码的复杂性。
- 代码注释和文档: 在大型应用中,提供详细的代码注释和文档非常重要。这有助于其他开发人员快速了解每个函数的用途和接口。
- 版本控制: 使用版本控制系统(如Git)来管理代码库,确保代码的版本追踪和团队协作。
- 代码审查: 进行定期的代码审查,以确保函数的质量和一致性。代码审查可以发现潜在的问题并提供反馈。
通过案例研究学习函数的应用
案例研究是学习函数应用的重要方法。通过实际项目或问题的案例,可以更深入地理解函数如何解决实际问题。案例研究还可以帮助开发人员学习如何将函数组合在一起,以实现复杂的功能。
在案例研究中,可以关注以下方面:
- 问题描述: 清晰地描述问题或需求,以便理解要解决的挑战。
- 函数设计: 设计函数以解决问题,考虑函数之间的协作和数据流。
- 函数实现: 实现函数并确保它们能够正常工作。
- 测试和验证: 对函数进行测试和验证,确保它们在各种情况下都能够正确运行。
- 性能优化: 如果需要,考虑性能优化以提高函数的执行速度或内存效率。
总结
本文深入探讨了Java函数的各个方面,从基础概念到高级技巧,以及函数在实际项目中的应用。通过深入研究和实际示例,我们希望读者能够全面掌握Java函数的知识,并在编程中运用这些技巧。函数是Java编程的基础,精通函数将使您成为更出色的Java开发人员。继续学习,不断提高,您将在Java编程的道路上越走越远。感谢您的阅读! 🚀📚
参考资料
- Oracle Java官方文档
- Java编程思想(第四版)
- Effective Java(第三版)
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥
如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )
点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。
相关文章:
【JAVA-Day32】精通Java函数:定义、调用和主函数的完整指南
精通Java函数:定义、调用和主函数的完整指南 精通Java函数:定义、调用和主函数的完整指南摘要引言1. Java函数基础什么是Java函数?函数的定义和命名规则参数和返回值的概念 2. 函数的定义与语法如何声明和定义函数?函数的参数和参…...
springboot相关操作学习汇总
IDEAMAVEN apache maven 3.6.3 的安装及配置IntelliJ IDEA 安装及配置详细教程Maven下载安装及IDEA配置Maven的超详细教程 GIT 版本控制工具 - git的安装与使用gitlab上传新项目全过程 SPRINGBOOT IDEAmavenSpringboot工程创建超详细过程示例SpingBoot:整合Myb…...
如何在微信上制作自己的小程序卖东西
在当今的数字化时代,微信小程序已成为电商行业的重要平台。本文将详细解析电商微信小程序的制作流程,帮助你了解从零到上线的过程。 一、前期准备 1. 确定商城定位和目标群体:在制作电商微信小程序前,你需要明确商城的定位&#x…...
24.Xaml ListView控件-----显示数据
1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…...
YoloV5改进实战:使用MPDIoU改进YoloV5
文章目录 摘要论文:揭秘精准高效的MPDIoU损失函数摘要1、简介2、相关工作2.1、目标检测和实例分割2.2. 场景文本识别2.3、边界框回归的损失函数3、点距最小的并集交点4、实验结果4.1、 实验设置4.2、数据集4.3、 评估协议4.4、 目标检测的实验结果4.5、 字符级场景文本识别的实…...
从电大搜题到上海开放大学,广播电视大学引领学习新风尚
近年来,随着信息技术的飞速发展,互联网的普及和应用成为了我们生活中不可或缺的一部分。而在大学学习领域,电大搜题微信公众号应运而生,为广大学子提供了便捷的学习资源和交流平台。在这个信息高速发展的时代,上海开放…...
DC/DC开关电源学习笔记(九)Buck降压拓扑原理
(九)Buck降压拓扑原理 1.概述2. Buck降压原理3. Buck电路的三种工作模式3.1 CCM:3.2 BCM3.3 DCM4. 伏秒法则1.概述 Buck电路属于非隔离的直流变换器,在开关电源中广泛应用,BUCK电路是一种基于电感储能原理的DC-DC变换器,其涉及到物理中的电磁感应和电能转换的基本原理。…...
【浏览器】主流浏览器伪元素一览
不同浏览器对于伪元素的支持程度可能会有所差异。以下是各主流浏览器对一些常见伪元素的支持情况: WebKit(Chrome、Safari、新版Edge): ::-webkit-scrollbar:用于自定义滚动条样式的伪元素。::-webkit-outer-spin-butt…...
国内首个潮玩行业沉浸式IP主题乐园,泡泡玛特城市乐园即将开园
近年来,泡泡玛特以潮玩IP为核心,不断拓展业务版图,推进国际化布局同时实现集团化运营,而泡泡玛特首个城市乐园将于9月下旬开业。据了解,泡泡玛特城市乐园是由泡泡玛特精心打造的沉浸式IP主题乐园,占地约4万…...
编译工具:CMake(八) | cmake 常用指令
编译工具:CMake(八) | cmake 常用指令 基本指令 基本指令 ADD_DEFINITIONS向 C/C编译器添加-D 定义,比如:ADD_DEFINITIONS(-DENABLE_DEBUG-DABC),参数之间用空格分割。 如果你的代码中定义了#ifdef ENABLE_DEBUG #end…...
什么是GPT磁盘?介绍GPT(GUID 分区表)磁盘及其优势!
GPT概述 GPT磁盘是什么意思?GPT是全局唯一标识符分区表(GUID Partition Table)的简称,它是硬盘分区表结构的一个标准模式。在我们深入了解GPT磁盘的特性之前须知,MBR磁盘的分区信息直接保存在主引导记录࿰…...
直播视频处理过程
视频其实就是快速播放一连串连续的图片。 每一张图片,我们称为一帧。只要每秒钟帧的数据足够多,也即播放得足够快。比如每秒 30 帧,以人的眼睛的敏感程度,是看不出这是一张张独立的图片的,这就是我们常说的帧率&#…...
CGI与FastCGI的区别在哪里,FastCGI的应用场景讲解
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…...
记录selenium和chrome使用socks代理打开网页以及查看selenium的版本
使用前,首先打开socks5全局代理。 之前我还写过一篇关于编程中使用到代理的情况: 记录一下python编程中需要使用代理的解决方法_python 使用全局代理_小小爬虾的博客-CSDN博客 在本文中,首先安装selenium和安装chrome浏览器。 参考我的文章…...
2023 年最新 Docker 容器技术基础详细教程(更新中)
Docker 基本概述 Docker 是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间…...
初学phar反序列化
以下内容参考大佬博客:PHP Phar反序列化浅学习 - 跳跳糖 首先了解phar是什么东东 Phar是PHP的压缩文档,是PHP中类似于JAR的一种打包文件。它可以把多个文件存放至同一个文件中,无需解压,PHP就可以进行访问并执行内部语句。 默认开…...
嵌入式web项目框架解读
文章目录 前言一、阅读Makefile可以迅速了解整个项目框架二、项目框架中的服务器:boa三、接口:cgi四、项目文件总结 前言 项目框架敬上!!! 一、阅读Makefile可以迅速了解整个项目框架 项目中的Makefile主要分为三个部…...
MySQL什么情况下会死锁,发生了死锁怎么处理呢?
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…...
数字孪生行业相关政策梳理--智慧水利领域相关政策(可下载)
自2021年国家“十四五”规划纲要提出“探索建设数字孪生城市”以来,国家发展和改革委员会、工业和信息化部、住房和城乡建设部、水利部、农业农村部等部门纷纷出台政策,大力推动数字孪生在千行百业的落地发展。这些政策不仅为数字孪生的应用提供了广阔的…...
SQL plus简单使用
查看Oracle数据库全部数据库 数据库名称 SELECT name FROM v$database;这将返回所有数据库的名称。 视图 通过SQL查询dba_registry视图: 另一个查看数据库的方法是查询dba_registry视图,该视图包含了数据库中安装的所有组件的信息。以下是示例SQL查询…...
pnpm入门教程
一、概述 1、更小 使用 npm 时,依赖每次被不同的项目使用,都会重复安装一次。 而在使用 pnpm 时,依赖会被存储在内容可寻址的存储中。 2、更快 依赖解析。 仓库中没有的依赖都被识别并获取到仓库。目录结构计算。 node_modules 目录结构是…...
JADE盲分离算法仿真
JADE算法原理 JADE 算法首先通过去均值预白化等预处理过程得到解相关的混合信号,预处理后的信号构建的协方差矩阵变为单位阵,为后续的联合对角化奠定基础;其次,通过建立四阶累积量矩阵,利用高阶累积量的统计独立性等性…...
CMake教程-第 1 步:基本起点
CMake教程-第 1 步:基本起点 1 CMake教程介绍2 学习步骤Step 1: A Basic Starting PointStep 2: Adding a LibraryStep 3: Adding Usage Requirements for a LibraryStep 4: Adding Generator ExpressionsStep 5: Installing and TestingStep 6: Adding Support for…...
Linux 或者 Docker 容器通过 date 设置系统时间
目录 1. Linux2. Docker 容器2.1 进入容器内部修改2.2 可能会遇到的问题 1. Linux 要在Linux系统中设置日期和时间,可以使用date命令。 使用以下命令格式来设置日期和时间: sudo date -s "YYYY-MM-DD HH:MM:SS"其中,YYYY表示年份…...
Docker 容器中运行 Kibana
Kibana 的 Docker 镜像可以从 Elastic 官网上的 Docker 镜像仓库获取。该镜像是随 X-Pack 一起打包的。 X-Pack 在这个 image 中是预装好的。安装了 X-Pack,Kibana 会去连接同样带有 X-Pack 的 Elasticsearch 集群。 获取镜像 向 Elastic Docker 仓库发送一条 do…...
【23种设计模式】建造者模式【⭐⭐⭐】
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...
进阶指针(一)
✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 进阶指针(一) 0.回顾初阶指针1.字符指针1.1 相关面试题 2.数组指针3.指针数组3.1 数组指针的定义3.2 &数组名VS数组名3.3 数组指针的使用 4.数组传参和指针传参4.…...
Linux: code: name: void dev_deactivate(struct net_device *dev)
一开始看这个函数,还以为要做,网卡设备的down操作。 后来一看代码,原来这个函数是在net/sched/sch_generic.c 文件里,而且不是要做网络接口的down操作。操作的结果是:deactivate transmissions on several devices&…...
语义分割——灰度图像转伪彩色图像
目录 检验灰度图检验代码 灰度图转伪彩色图代码转换代码使用细则 示例转换结果总结 检验灰度图 制作语义分割数据集或用训练好模型测试图像时,得到的结果是灰度图像,如下: 检验代码 上面图像灰度值不是全是全为0,灰度范围在[0…...
观察级水下机器人使用系列之七机械手臂
本期是观察级水下机器人使用系列的最后一期,主要讲ROV所使用的机械臂。机械臂正式名称为5功能电动机械,型号为BE-500,由法国公司Ocean Innovation System设计的,可代替人工进行水下作业,完成海底样品采集、打捞、设备定…...
注册登录/安卓优化大师新版
1.实现如下类之间的继承关系,并编写Music类来测试这些类。 package workhome0922休息;public class People {protected double height;protected double weight;public double getHeight() {return height;}public void setHeight(double height) {this.height hei…...
wordpress个性化友情链接页面/网站建设开发公司
上一篇博客:数据类型转换、ASCII编码 目录 算术运算符赋值运算符比较运算符逻辑运算符三元运算符 开始 算术运算符 算数运算符包括: 加法运算,字符串连接运算 - 减法运算 * 乘法运算 / 除法运算 % 取模运算,两…...
建设网站需要的人员及资金/网红营销
极限的计算方法 一、初等函数: 1.limCC(C是常值函数);2.若 fx≤M(即fx是有界量),limα0(即α是无穷小量),⇒limfx⋅α0, 特别:fxC⇒limC⋅α0 ;3.若 fx≤…...
网站建设要符合哪些标准/静态网站模板
整个视频打包下载地址:史上最全的数据结构视频教程系列分享之《[北大张铭 教学版]数据结构与算法(C)》,转载请保留出处和链接! 更多优秀资源请访问:我是码农 数据结构与算法是计算机专业一门相当重要的专业…...
wordpress文件管理器/seo怎么发外链的
前言:你对手机存储到底了解多少?从安卓4.4以后在外置内存卡中有没有存储过东西。先上两张图片。第一张图片是酷我音乐下载设置的选项:酷我下载截图第二张是网易云音乐下载设置的选项:网易云下载截图从上面两张图可以看到外置卡的名…...
电脑课做网站的作业/怎么创建一个网站
1426: 收集邮票 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 261 Solved: 209[Submit][Status][Discuss]Description 有n种不同的邮票,皮皮想收集所有种类的邮票。唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究…...