Java 语言概述 -- Java 语言的介绍、现在、过去与将来

news2024/11/27 20:28:59

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 001 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自己的技术栈的同学。与此同时,本专栏的所有文章,也都会准备充足的代码示例和完善的知识点梳理,因此也十分适合零基础的小白和要准备工作面试的同学学习。当然,我也会在必要的时候进行相关技术深度的技术解读,相信即使是拥有多年 Java 开发经验的从业者和大佬们也会有所收获并找到乐趣。

作为 “Java 入门” 也是整个专栏的第一篇文章,我在这里主要是会先介绍一下 Java 语言 —— Java 是什么? 可以用来做什么? 从诞生到现在依旧有这么多人用着 Java,说明它一定做对了一些,有着一些优点,那么都是什么?Java 近些年来在全球的热度有所下降,是什么原因?Java 还值得作为第一门编程语言或者工作语言来学习吗?现在的 Java 就业前景是怎样的?这些都是本篇内容所要讨论的。

最后在前言的末尾我补充一下,如果这篇文章,对大家有所帮助或收获一定的乐趣和想法,那么非常欢迎大家能够,点赞、评论、收藏、订阅。这些也将是我持续更新的最大动力。


文章目录

      • 1、Java 语言的简介
        • 1.1、Java 语言的概述
        • 1.2、Java 语言的特性
        • 1.3、Java 语言的应用现状
      • 2、Java 语言的演进
        • 2.1、"Java"名字的由来
        • 2.2、Java 演进历史
        • 1.3、Java 各个版本特性
      • 3、Java 语言的前景
        • 3.1、Java 语言发展现状
        • 3.2、Java 语言就业前景


1、Java 语言的简介

1.1、Java 语言的概述

Java 语言是于 1991 年由 Sun(Sun Microsystems,美国)公司的 詹姆斯·高斯林(James Gosling)团队研发的一门面向对象的编程语言。最初命名为 Oak,并于 1995 年更名为 Java 后开始推广。

如今,随着互联网的崛起,Java 已经成为目前世界上最流行、最重要的计算机编程语言之一。

image-20231004233354669

Java 作为一门面向对象的高级编程语言,在设计之初,借鉴了多种编程语言的特性和理念。比如它吸收了 C 语言的优点(语法结构、操作符和数据类型),同时摒弃了 C 语言中难以理解的多继承、指针等概念,使得 Java 语言既功能强大又简单易用。

作为静态面向对象编程语言的代表,Java 极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

1.2、Java 语言的特性

Java 自 1995 年问世以来,因其卓越的通用性、高效性、平台移植性和安全性等特性,成为全球范围内应用范围最广的开发语言,而且即使历经十余年发展仍然在行业内保持着其"常青树"的地位。

1995 年 Java 发布的同时,Sun 公司也发布的一份官方文档,在后来也被大家称作 Java 白皮书。Java 白皮书是理解 Java 语言设计初衷和主要特性的重要参考资料,对于 Java 开发者和学习者来说具有很高的参考价值。

Oracle 官网 Java 白皮书参考链接:https://www.oracle.com/java/technologies/language-environment.html

在这份文档中 James Gosling 主要介绍了 Java 语言的设计理念、核心特性和应用领域。同时也阐述了 Java 的跨平台性、面向对象、网络编程、安全性、多线程等众多特性。

这 11 个关键特性体现了 Java 设计哲学的核心核心:

  1. 简单性:Java 旨在易于学习和使用。其语法类似于 C++,但去除了指针和多重继承等容易引起错误的特性,使编程更加直观;

  2. 面向对象:Java 是纯面向对象的编程语言,所有代码必须位于类中。面向对象的设计使得代码模块化、可重用,并促进代码维护;

  3. 分布式:Java 提供丰富的 API,支持 TCP/IP 协议,使网络编程和分布式计算变得简单,可以方便地创建和访问远程对象;

  4. 健壮性:Java 强调健壮性,通过强类型检查、异常处理和自动垃圾回收,确保程序能可靠地运行,并在编译时发现潜在错误;

  5. 安全性:Java 内置多种安全特性,包括类加载机制、沙盒安全模型和内存管理,保护系统免受恶意代码的侵害;

  6. 体系结构中立:Java 实现了"一次编写,到处运行"的目标,通过 Java 虚拟机(JVM),使得程序可以在任何平台上运行,而无需修改代码;

  7. 可移植性:Java 程序编译成平台无关的字节码,可以在任何支持 Java 的平台上运行,无需重新编译,确保了应用的可移植性;

  8. 解释型:Java 程序在运行时通过 JVM 解释执行,这赋予了 Java 强大的跨平台能力,并允许即时(JIT)编译以提高性能;

  9. 高性能:尽管 Java 是解释型语言,但通过 JIT 编译技术,Java 程序的执行速度接近于原生编译的 C++ 程序,兼具灵活性和性能;

  10. 多线程:Java 原生支持多线程编程,提供一套简便的 API,用于创建和管理线程,简化了并发编程,提升程序的响应性和性能;

  11. 动态性:Java 是动态语言,可以在运行时加载新类和对象,支持动态扩展和模块化编程,适应不断变化的运行环境。

这些特点共同构成了 Java 设计哲学的核心,使得 Java 成为一种功能强大、灵活且安全的编程语言,广泛应用于各个领域。

1.3、Java 语言的应用现状

即使经过了近 30 年的发展,Java 依旧在软件开发领域保持强劲的活力,并且在多个行业中占据重要地位。以下是 Java 在一些主要领域的应用现状:

  1. 企业应用开发:Java 是企业级应用开发的主要语言。许多大型企业和组织选择 Java 来构建高性能、可靠和安全的应用程序。Spring Framework 和 Jakarta EE(原 Java EE)等框架为企业级 Java 应用提供了强大支持;

  2. 移动应用开发:在移动应用开发领域,Java 依然是核心语言,特别是在 Android 平台上。Android 使用 Java 作为主要开发语言,开发者利用 Android SDK 构建功能丰富的移动应用程序;

  3. 大数据和云计算:Java 在大数据处理和云计算领域表现出色。许多大数据框架和平台(如 Apache Hadoop 和 Apache Spark)都支持 Java 编程。Java 的跨平台性和稳定性使其成为构建可扩展大数据解决方案的理想选择;

  4. 物联网(IoT):随着物联网的快速发展,Java 在这个领域也发挥着重要作用。Java ME(Micro Edition)被广泛用于嵌入式设备和物联网应用的开发,其高度可移植性和安全性是关键优势;

  5. 人工智能和机器学习:尽管 Java 在人工智能和机器学习领域并不是首选语言,但仍然有一些强大的库和工具可以支持 Java 在这些领域的开发。例如,Weka 和 Deeplearning4j 等库提供了在 Java 中进行机器学习和深度学习的功能;

  6. 游戏开发:相对于其他编程语言和引擎,Java 在游戏开发领域的应用较少。尽管如此,仍然有一些游戏开发者和公司选择使用 Java 来开发他们的游戏。例如,Minecraft 就是一个使用 Java 编程语言开发的知名游戏,其后端服务和游戏逻辑都是通过 Java 实现的。此外,一些游戏开发框架和库,如 libGDX,也支持使用 Java 来开发跨平台的游戏应用程序。

总的来说:Java 作为一种稳定可靠、灵活易用且功能强大的编程语言,在全球范围内的各个领域赢得了广泛认可和应用。无论是初学者还是资深开发者,通过学习和掌握 Java 都能显著提升编程技能和竞争力。


2、Java 语言的演进

2.1、"Java"名字的由来

Java 起初并非叫 Java,甚至于这个名字都没有进入备选前三(Java 排名第四)行列,最初架构搭建的时候这套语言被命名为"Greentalk",因为,当时这个项目组的名字叫 Green 很随意的起名。 后来改名为"Oak",翻译成中文是"橡树"的意思,在欧美很多国家,橡树因其高大、强壮、枝繁叶茂被视为国树,而恰巧的是,詹姆斯.高林斯(James Gosling) 的窗外就有一颗。

美国红橡

因此,Java 的第二个名字就应运而生了,但是天公不作美,当 James Gosling 团队打算注册新的名称时才发现,Oak 这个名字已经被其他公司捷足先登了。

无奈之下高林斯团队只能重新起名,新名字需要具备 Dynamic(动态的)、Revolutionary(革命性的)、Silk(像丝绸一样柔软的)、Cool(炫酷的)等特点,有人说用"Silk",也有人说用"Lyric",但最终都没有被律师团队认可。

有一天,团队中的一个工程师马克(Mark Opperman)去咖啡店喝咖啡,得到启发想将他们的语言命名为"Java”,这个命名源于印度尼西亚的爪哇岛,因其盛产咖啡而闻名

马克回去将自己想到的名字与团队成员分享之后,大家一拍即合,Java 之名从此诞生,并寓意:希望后世之人可以通过 Java 过上舒适,惬意的生活。

Ps:Java 语言中的许多类库名称,如 JavaBeans、NetBeans 和 ObjectBeans 等,也都与咖啡有关。

2.2、Java 演进历史

上个世纪 90 年代,单片计算机诞生,推动了电子产品的智能化,为抢占市场,Sun 公司高层紧急会议,推出"Green"计划,由詹姆斯·高斯林(James Gosling)牵头,开发出一种可以在多种电子产品上运行的程序架构。 由此 Green 项目组正式成立,决定采用 C++ 进行程序开发,但随着项目深度的进行,大家逐渐发现了 C++ 的弊端, 庞大且复杂的 C++ 无法满足他们丰富的跨平台需求,高林斯项目组经过深度讨论,最终咬牙跺脚,决定以 C++ 为底层开发出一套简单,高效,跨平台的程序语言。

1992 年 Oak 雏形诞生,东西搞出来了,Sun 公司经过多方洽谈,联系了不少的硬件公司进行商业展示,悲伤的是这一次 Oak 没有让金主爸爸们满意。

时间很快来到了 1994 年,Green 项目用 Oak 开发出了可以在网页上嵌入小程序的 Applet 技术,此举让很多公司看到了 Oak 的价值,Oak活了下来。

1995年,Sun 公司将 Oak 正式更名为 Java,同年发布了 Java1.0 版本,提出了那句"Write Once, Run anywhere",一次编译,随处运行,这句口号注定会写入世界编程史。而这一年也成为了 Java 的元年,此后 Java 正式进入了版本迭代时代。

image-20240605172721605

下面是 Java 语言发展的大事记:

  • 1991 年Sun MicrosystemsPatrick NaughtonMike SheridanJames Gosling 在这一年启动了 Green 项目,这个项目的目标是为数字设备(如电视机、电话机等)开发编程语言。这个项目最终导致了 Java 语言的诞生;
  • 1995 年 05 月:Sun Microsystems 正式发布了 Java 语言,最初名为 Oak,后来改名为 Java。其主要特点是跨平台性,即 “写一次,处处运行”,这使得 Java 语言具有很好的跨平台性;
  • 1996 年 01 月:JDK 1.0 发布,这是 Java 的第一个正式版本;
  • 1996 年 02 月:Java 白皮书发布;
  • 1997 年 02 月:JDK 1.1 发布;
  • 1998 年 12 月:JDK 1.2 发布,也被称为 Java 2;
  • 1999 年 12 月:Apache Tomcat 发布,这是一个开源的 Servlet 容器,广泛用于 Java Web 应用的开发和部署;
  • 1999 年 12 月:Sun Microsystems 在 Java 2 基础上,引入了多个 Java 版本,即 J2SE(后来的 Java SE,即 Standard Edition,是 Java 平台的标准版本),JJ2EE(后来的 Java EE,即 Enterprise Edition,专注于企业级开发的版本)和 J2ME(后来的 Java ME,即 Micro Edition,是 Java 平台的嵌入式开发版本);
  • 1999 年 12 月:Java Community Process (JCP)的成立,旨在规范 Java 技术的发展,确保其开放性和标准化;
  • 2000 年 05 月:JDK 1.3 发布;
  • 2001 年 01月:JetBrains 发布了 IntelliJ IDEA(收费),这是一个专为提高开发者生产力而设计的集成开发环境(IDE),以其智能代码补全和高级调试功能著称,发布后迅速成为 Java 开发者的首选 IDE 之一;
  • 2001 年 11 月:Eclipse(免费) 发布,这是一个由 IBM 发起的开源 IDE 项目,发布后迅速成为 Java 开发者的首选工具之一;
  • 2002 年 02 月:JDK 1.4 发布;
  • 2003 年 10 月:Rod Johnson 发布了 Spring Framework,为 Java 开发引入了 IoC(Inversion of Control)和 AOP(Aspect-Oriented Programming)等概念,极大简化了企业级应用的开发;
  • 2004 年 09 月:JDK 5 发布,J2SE 更名为 JavaSE;
  • 2006 年 11 月:Sun Microsystems 宣布启动 OpenJDK 项目,将 Java 平台开源,允许开发者参与 Java 开发并改进其功能;
  • 2006 年 12 月:JDK 6 发布;
  • 2008 年 09 月:Google(谷歌) 发布了 Android(安卓) 操作系统,这是基于 Java 的移动操作系统,迅速成为全球最流行的智能手机平台之一,极大地推动了 Java 在移动设备上的应用;
  • 2009 年 04 月:Oracle(甲骨文)公司在 2009 年 4 月 20 日宣布正式以 74 亿美元的价格收购 Sun 公司,Java 商标从此正式归 Oracle 所有;
  • 2010 年 08 月:Oracle 起诉 Google,指控其在 Android 中非法使用 Java API。此案历时多年,对 Java API 的版权问题产生了深远的影响。最终,2021 年 04 月,美国最高法院裁定 Google 对 Java API 的使用属于 “合理使用”;
  • 2011 年 07 月:JDK 7 发布;
  • 2014 年 03 月:JDK 8 发布,这是一个里程碑式的、非常稳定和成熟的版本,这个版本引入了 Lambda 表达式、函数式接口、方法引用、Stream API、默认方法和静态方法等特性;
  • 2014 年 04 月:Spring Boot 发布,Spring Boot 的发布进一步简化了 Spring 应用的创建和配置,成为微服务架构中广泛使用的框架;
  • 2017 年 09 月:JDK 9 发布,同时 Oracle 宣布 Java 将采用半年发布一次的版本计划,以便更快地引入新特性和改进;
  • 2017 年 10 月:为了应对 Oracle 对 Java SE 商业支持政策的改变,AdoptOpenJDK 项目启动,提供免费的开源 Java SE 构建,得到广大社区和企业的支持;
  • 2018 年 01 月:Oracle 宣布,从 2019 年 01 月起,对用于商业用途的 Java SE 8 将开始收费,用户需要购买商业许可证才能继续获得更新和支持。这一公告促使许多企业和开发者转向开源的 AdoptOpenJDK;
  • 2018 年 03 月:JDK 10 发布;
  • 2018 年 09 月:JDK 11 发布,这是一个长期支持版本;
  • 2019 年 03 月:JDK 12 发布;
  • 2019 年 09 月:JDK 13 发布;
  • 2020 年 03 月:JDK 14 发布;
  • 2020 年 09 月:JDK 15 发布;
  • 2021 年 03 月:JDK 16 发布;
  • 2021 年 09 月:JDK 17 发布,这是一个长期支持版本;
  • 2022 年 03 月:JDK 18 发布;
  • 2022 年 09 月:JDK 19 发布;
  • 2023 年 03 月:JDK 20 发布;
  • 2023 年 09 月:JDK 21 发布,这是一个长期支持版本;
  • 2024 年 03 月:JDK 22 发布;
1.3、Java 各个版本特性

Java 语言自 1995 年由 Sun Microsystems 公司发布以来,已经经历了多次重要的版本更新和语言特性的改进。以下是 Java 语言的一些主要演进阶段:

版本日期版本特性
JDK_1.0#1996_01Java 的首个正式版本,伟大的一个里程碑,提供了基本的对象导向编程能力和网络处理能力
JDK_1.1#1997_02引入了 内部类、Java Beans、JDBC、反射 API、RMI 等新特性
JDK_1.2#1998_12引入了 集合框架、Swing 包、内存映射文件 I/O、NIO、断言、正则表达式等新特性
JDK_1.3#2000_05增加了 HotSpot JVM、JavaSound、Java Naming and Directory Interface (JNDI) 等特性
JDK_1.4#2002_02增加了 XML 解析、正则表达式、Java Web Start、Java Print Service 等特性
JDK_5.0#2004_09引入了泛型、自动装箱/拆箱、枚举、可变参数、for_each 循环等特性
JDK_6.0#2006_12增加了 JDBC 4.0、Java Compiler API、Pluggable Annotations 等特性
JDK_7.0#2011_07引入了 switch 对字符串的支持、自动资源管理、改进的类型推断、多异常捕获等特性
JDK_8.0#2014_03引入了 Lambda 表达式、函数式接口、方法引用、Stream API、默认方法和静态方法等特性
JDK_9.0#2017_09引入了模块系统,可以将 JDK 划分为多个模块,便于开发大型应用。同时还引入了 JShell、改进了 Javadoc、增强了 Stream API 等
JDK_10#2018_03引入了局部变量类型推断,可以使用 var 关键字声明局部变量,无需显式指定其类型
JDK_11#2018_09引入了新的垃圾收集器 ZGC,可以处理 TB 级别的堆内存,且停顿时间不超过 10ms。同时还引入了新的字符串方法、HTTP 客户端 API 等
JDK_12#2019_03引入了新的 switch 表达式,可以使用更简洁的方式编写 switch 语句
JDK_13#2019_09引入了文本块功能,可以方便地编写多行字符串
JDK_14#2020_03引入了 instanceof 的模式匹配,对 switch 语句进行了改进等特性
JDK_15#2020_09引入了密封类和接口,可以限制哪些其他类或接口可以继承或实现它们
JDK_16#2021_03引入了 Records,可以方便地创建只包含数据的类,无需编写大量模板代码
JDK_17#2021_09引入了模式匹配的第二阶段,可以在 switch 表达式中使用模式匹配。同时还引入了新的垃圾收集器 Shenandoah
JDK_18#2022_03默认 UTF_8、简单的网络服务器、弃用 finalize
JDK_19#2022_09模块化编程、本地类型推断、文本块、嵌套注解、改进的 Garbage Collection
JDK_20#2023_03模式匹配、Sealed Classes、Records、Text Blocks、ZGC
JDK_21#2023_09引入虚拟线程、结构化并发、顺序集合、记录模式、外部函数和内存 API、向量 API
JDK_22#2024_03提供了符合 GPL 协议的生产就绪二进制文件、G1 的区域引入、未命名变量和模式等新特性

3、Java 语言的前景

3.1、Java 语言发展现状

时至今日,Java 语言已经火爆 20 余载,那么,在这个瞬息万变的移动互联网时代,未来,它还能一如既往,引领开发界吗?还是如有些人说的会饱和而辉煌不再?

下图是反映编程语言热门程度「Tiobe 排行」在 2024 年 5 月的编程语言热度排名:

image-20240522131742854

下图是反映编程语言热门程度「Tiobe 排行」在 2024 年 5 月的排名趋势图:

image-20240522134017157

从以上趋势图来看,Java 的热度排名有所下降,尤其是在 2016 年之后这一趋势更为明显,这一趋势的主要原因可以归结为以下两个方面:

  1. 编程语言的多样化:随着技术的进步和应用场景的多样化,越来越多的新编程语言被开发和应用。例如,Python 因其简洁的语法和强大的库支持,尤其在数据科学、人工智能和机器学习领域获得了广泛的应用;
  2. 特定领域语言的兴起:一些语言在特定领域表现出色,吸引了大量开发者。例如,JavaScript 在前端开发中的主导地位,Swift 和 Kotlin 在移动开发中的流行,Go 和 Rust 在系统编程和高性能应用中的使用。
3.2、Java 语言就业前景

诚然,仅从以上的热度占比来看,Java 已经显露出了明显颓势,并且在网上也可以看到很多人开始看衰 Java,觉得它已经要彻底凉了。实则并不是,即便如此衰败的情况下,Java 仍然是国内市场上使用率最高,那么真如网上所说,Java 市场彻底饱和了吗?

目前来看,Java 程序员远远没有饱和,现在 Java 程序员是挺多的,但是职位需求量更大,只是相对来说高薪酬的要求变高了,特别是能干实干或优秀的程序员是相当缺乏的,不存在存在饱和一说。

就工作而言,对于国内 Java 程序员来说,年薪 10 万+ 是很正常的一个薪酬水平,从经验来说,如果你是一位实干,又有强烈改变际遇的意志力的人,我建议可以做 Java 技术开发,至少你的付出会有收获(技术领域内相对公平);

就学习而言,Java 作为一门优秀的语言,可以让你在学习过程中收获很多。它的面向对象编程思想和设计模式能够帮助你建立扎实的编程基础,同时其广泛的应用场景和强大的生态系统可以让你在各个领域获得实践经验和职业机会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用proteus仿真51单片机的流水灯实现

proteus介绍: proteus是一个十分便捷的用于电路仿真的软件,可以用于实现电路的设计、仿真、调试等。并且可以在对应的代码编辑区域,使用代码实现电路功能的仿真。 汇编语言介绍: 百度百科介绍如下: 汇编语言是培养…

Knife4j 生成 API 文档

文章目录 Knife4j 简介使用步骤Knife4j 常用注解的列表案例注意 Knife4j 简介 Knife4j 是一个增强的 Swagger 文档生成工具,提供了更加友好的界面和更多功能,使得 API 文档更加美观且易于使用。它是基于 Spring Boot 和 Swagger 进行封装的,…

【下篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了YoloX, 今天从Yolov6开始。 YOLOv6:面向工业应用的单级物体检测框架 美团视觉人工智能事业部(Meituan Vision AI Department)于 2022 年 9 月在…

《精通ChatGPT:从入门到大师的Prompt指南》第4章:避免常见错误

第4章:避免常见错误 在使用ChatGPT进行Prompt编写时,常见的错误可能会大大影响生成内容的质量和准确性。本章将详细讨论这些错误,并提供如何避免它们的建议。 4.1 不明确的指令 在使用ChatGPT时,一个常见的问题是指令不够明确。…

Vue3中的常见组件通信之$attrs

Vue3中的常见组件通信之$attrs 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $re…

LLVM Cpu0 新后端4

想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1V_tZkt9uvxo5bnUufhMQ_Q?…

动态规划学习(分组背包)

分组背包的定义 分组背包是相比于01背包来讲,其就是多了一个组,给你n个组,每个组里有各自的物品,每个组里的物品只能选择一个,问你,选出来的最大价值是多少 这里我们的遍历顺序的三层循环,最外…

Burp Suite Professional 2024.5 (macOS, Linux, Windows) - Web 应用安全、测试和扫描

Burp Suite Professional 2024.5 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接:Burp Suite Professional 2024.5 (macOS, Linux, Windows) - Web 应用安全、测试和扫描…

Spring boot+vue前后端分离

目录 1、前端vue的搭建 2、后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 service层 imp层 mapper 实体类 额外写一个类、解决跨域问题 3、测试 1、前端vue的搭建 建立项目的过程略 开启一个建立好…

Linux之进程信号详解【上】

🌎 Linux信号详解 文章目录: Linux信号详解 信号入门 技术应用角度的信号 信号及信号的产生       信号的概念       信号的处理方式 信号的产生方式         键盘产生信号         系统调用产生信号         软件…

python - pandas常用计算函数

文中所用数据集有需要的可以私聊我获取 学习目标 知道排序函数nlargest、nsmallest和sort_values的用法 知道Pandas中求和、计数、相关性值、最小、最大、平均数、标准偏差、分位数的函数使用 1 排序函数 导包并加载数据集 import pandas as pd ​ # 加载csv数据, 返回df对…

htb-linux-7-cronos-53-dns-nslookup-axfr

nmap DNS服务的枚举 靶机开启了53端口域名服务 枚举DNS服务 - nslookup 使用nslookup工具,设置DNS服务器的地址为10.10.10.13,需要查询10.10.10.13绑定的域名 枚举DNS服务 - axfr 使用dig工具来做区域传输(Zone Transfer)的查询:dig ax…

SpringBoot+Vue免税商品优选购物商城(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 用户商家 功能截图

记一次极其坑爹的 process.waitFor() 卡死问题

项目中有个需求需要截取wav的音频文件 ,网上找了找方法 用java调用ffmpeg 来截取 public static InputStream trimAudio(MultipartFile inputFile, Double startTime, Double endTime,Double volume) throws IOException {File file new File(FileUtil.getTmpDir…

程序猿大战Python——运算符

常见的运算符 目标:了解Python中常见的运算符有哪些? 运算符是用于执行程序代码的操作运算。常见的运算符有: (1)算术运算符:、-、*、/、//、% 、**; (2)赋值运算符&am…

“论边缘计算及应用”必过范文,突击2024软考高项论文

论文真题 边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的分布式开放平台(架构),就近提供边缘智能服务。边缘计算与云计算各有所长,云计算擅长全局性、非实时、长周期的大数据处理与分析,能够在…

拯救者Legion Y9000X IRX9 2024(83FD)原装出厂Windows11系统镜像下载

lenovo联想2024款拯救者Y9000X IRX9 笔记本电脑【83FD】OEM预装Win11系统安装包,恢复开箱状态,自带恢复重置还原功能 链接:https://pan.baidu.com/s/1i_sVcnXF4qgsuj02rebe-Q?pwdyefp 提取码:yefp 联想原装WIN11系统自带所有…

Leetcode 力扣 112. 路径总和 (抖音号:708231408)

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点…

Git:从配置到合并冲突

目录 1.前言 2.Git的下载与初始化配置 3.Git中新建仓库 4.Git的工作区域和文件状态 5.Git中查看操作和提交记录 6.Git中添加和提交文件 7.Git中回退提交版本 8.Git中查看版本间的差异 9.Git中删除文件 10.Git中忽略指定文件 11.Git中配置SSH密钥 12.Git中关联克隆仓库 13.Git中…

参考——温湿度传感器DHT11驱动_STM32

设备:stm32f407ZGT6 环境:FreeRTOS HAL 一、简介 到网上找DHT11的驱动,但是都无法使用。原因是RTOS环境中,由于多线程,使用循环计数阻塞式的delay_us延时函数就没那么准,且不同设备中delay_us的计数…