最新Java零基础知识(持续更新中......)

1. 学习前的准备

  1. 一个好的学习方法(如何更高效学习):

    • 成为一名合格的程序员,需要具备两个关键能力:

      • 指法速度:高效的代码输入速度。
      • 编程思想:能够用编程的方式解决现实问题的能力。
    • 指法速度:

      • 正确的手势:左手放在asdf,右手放在jkl;,确保每根手指的位置正确。如果你目前使用错误的指法,从现在开始纠正。刚开始时可能不如二指打字快,但随着练习,速度会大幅提升。坚持下去,并确保自己在一开始就强迫自己盲打(不要看键盘)。
      • 工具练习:可以安装像金山打字通这类软件来提升打字速度,也可以在敲代码过程中自然地进行练习,最终目标是形成肌肉记忆
    • 编程思想的形成:

      • 编程思想指的是通过逻辑思维解决问题的能力。很多初学者会发现,虽然听课能听懂,但面对实际问题却无从下手。这种困惑源于编程思路尚未完全形成。
      • 不要照抄代码:除了HelloWorld,因为这个程序是用来测试本地开发环境的,不需要理解其含义。其余的代码都要理解后自己动手编写,照抄只能让人失去学习兴趣。
  2. 一个好用的截图工具:

    • Snipaste:一个非常好用的截图工具,适合在编程过程中快速捕捉代码片段或其他重要信息。
  3. 一台好一点的电脑:

    • 建议配置:酷睿i7九代及以上,至少16G内存。现代开发环境复杂,尤其是涉及虚拟机、数据库服务、开发工具等,内存和处理器要求较高。此外,电子产品更新快,稍高的配置可以延长设备使用寿命并提升开发效率。

2. 开启你的学习之旅

  1. JavaSE

    • 这是Java开发的基础,还是要打牢。基础语法、面向对象编程、常用类库(集合、异常、IO等)仍然是学习的核心。
  2. 数据库

    • MySQL仍然是主流,但可以考虑学习更加现代的NoSQL数据库,如MongoDB,特别是在涉及高并发和大数据量的应用中会非常有用。
    • JDBC部分可以简化,更多地将精力放在使用ORM框架(如MyBatis、Hibernate)上,这样可以更高效地处理数据库交互。
  3. 前端框架(Vue.js)

    • 传统的HTML、CSS、JavaScript仍是基础,但现在主流的前端开发已经过渡到现代的JavaScript框架。
    • Vue.js 是非常受欢迎的轻量级框架,学习它能让你更高效地构建复杂的前端界面。
      • 学习Vue CLIVue RouterVuex等工具,掌握单页应用的开发流程。
    • 可以额外了解ES6标准,学习更现代的JavaScript语法和功能。
    • 其他可选框架:还可以选择学习ReactAngular,这两个也是非常流行的前端框架,尤其在大型企业项目中使用较多。
  4. 后端框架(Spring Boot + Spring Cloud)

    • 传统的Servlet + JSP逐渐被现代框架取代。建议直接学习Spring Boot,它是目前企业中Java后端开发的主流框架。
    • Spring Boot简化了Spring的配置流程,开发效率大大提高。学习内容包括:
      • RESTful API开发
      • 与数据库交互(JPA或MyBatis)
      • Spring Security(用于用户认证与授权)
    • Spring Cloud用于微服务架构的开发,企业级项目中广泛应用。学习Spring Cloud后,能掌握微服务、分布式系统的开发技巧。
  5. 前端进阶

    • 可以跳过传统的AJAX,直接学习Axios(一个基于Promise的HTTP库,代替原生的XMLHttpRequest),它与Vue.js结合非常好。
    • jQuery已经逐渐淡出主流开发,可以不再作为重点。
  6. 项目实战(Vue.js + Spring Boot)

    • 实战项目可以使用Vue.js + Spring Boot + MySQL的组合,完成一个完整的前后端分离项目。通过这个项目,你将学会:
      • 使用Vue.js构建响应式前端界面
      • 使用Spring Boot提供后端服务和RESTful API
      • 使用MySQL存储和管理数据
      • 使用JWT(JSON Web Token)实现用户登录和身份验证
  7. 分布式技术与微服务

    • 学习Docker,用来创建轻量级的容器,以便开发、测试、部署分布式应用。
    • Spring Cloud作为微服务架构的核心,掌握其相关组件,如:Eureka(服务注册与发现)、Feign(声明式HTTP客户端)、Ribbon(负载均衡)、Hystrix(熔断器)。
    • 掌握消息中间件,如RabbitMQKafka,它们用于处理分布式系统中的异步通信。
    • Redis作为缓存技术,仍然是分布式系统中的重要组件。
  8. 前后端分离项目实战

    • 最终实战项目可以结合前后端分离的架构,使用Vue.js作为前端,Spring Boot + Spring Cloud作为后端,构建一个具有微服务架构的实际应用。
    • 在项目中实现服务拆分、负载均衡、分布式缓存等技术,进一步提升对现代开发流程的掌握。

补充学习建议

  • DevOps:在学习开发的同时,可以了解一下DevOps工具,如JenkinsKubernetesCI/CD等,用于持续集成和部署。
  • 云技术:现代开发环境中,云技术广泛应用。可以学习AWSAzure阿里云的相关服务,比如云服务器、对象存储、负载均衡等。

当然,后面这些技术只是给大家做一个前瞻,我们慢慢来!!!

本博客采用JDK13进行讲解

1. 第一章 Java 开发环境搭建

1.1 章节目标与知识框架

1.1.1 章节目标

掌握 Java 的开发环境搭建,会编写 HelloWorld 程序,并能够准确的进行编译和运行;理
path classpath 环境变量并可以自行配置。

1.1.2 知识框架

1.2 Java 语言概述(了解)

Java 编程语言是 Sun Microsystems 公司的 James Gosling 1990 年创建的,于 1995 年公布
于世(一般说 Java 诞生于 1995 年)。 Java 是一门面向对象的编程语言,不仅吸收了 C++ 语言
的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大
和简单易用两个特征。 Java 语言作为面向对象编程语言的代表,极好地实现了面向对象理论,
允许程序员以优雅的思维方式进行复杂的编程。
目前在世界各地都有 Java 程序员的存在,你走到哪里也不再孤单,因为有你的 Java 编程
小 伙 伴 在 陪 伴 着 你 。 我 们 一 起 来 看 看 世 界 编 程 语 言 排 行 榜 TIOBE
https://www.tiobe.com/tiobe-index/ )给出的统计数据。
1-1 2018 5 月编程语言排行榜
上图是 TIOBE 排行榜给出的 2018 5 月份的编程语言排行榜的统计数据,如果你一直在
关注编程语言排行榜,那么你应该很容易发现 Java 的排名多年以来一直在前两名徘徊,并且
多数情况下都是以排名第一的形式存在。

1.3 Java 语言发展史(了解)

1990 年末, Sun 公司准备为下一代智能家电(电视机,微波炉,电话)编写一个通用的控
制系统。该团队最初考虑使用 C++ 语言,很多成员包括 Sun 公司的首席科学家 Bill Joy ,发现
C++ 语言在某些方面复杂,系统资源极其有限,缺少垃圾回收系统等,于是 Bill Joy 决定开发
一种新的语言: Oak
1992 年夏天, Green 计划已经完成新平台的部分功能,包括 Green 操作系统, Oak 的程序
设计语言、类库等。同年 11 月, Green 计划被转成“ FirstPerson 有限公司”,一个 Sun 公司的
全资子公司。该团队致力于创建一种高度互动的设备。
1994 年夏天,互联网和浏览器的出现不仅给广大互联网的用户带来了福音,也给 Oak
言带来了新的生机。 James Gosling Java 之父)立即意识到,这是一个机会,于是对 Oak 进行
了小规模的改造。
1994 年秋,小组中的 Naughton Jonathan payne 完成了第一个 Java 语言的网页浏览器:
WebRunner Sun 公司实验室主任 Bert Sutherland 和技术总监 Eric Schmidt 观看了该网页的演
示并给予了高度的评价。当时 Oak 这个商标已经被注册了,于是将 Oak 改名为 Java
1995 年初, Sun 公司发布 Java 语言, Sun 公司直接把 Java 放到互联网上,免费给大家使
用,甚至连源代码也不保密,也放在互联网公开。几个月后, Java 成了互联网上最热门的宝贝。
各种各样的小程序层出不穷, Java 终于扬眉吐气,成为了一种广为人知的编程语言。
1996 年底, Flash 问世了,这是一种更加简单的动画设计软件:使用 Flash 几乎无须任何编
程语言知识,就可以做出丰富多彩的动画。 Flash 逐渐蚕食了 Java 在网页上的应用。
1997 2 18 日, Sun 公司发布了 JDK1.1 ,增加了即时编译器 JIT
1995 Java 诞生到 1998 年底, Java 语言虽然成为了互联网上广泛使用的编程语言,但它
没有找到一个准确的定位。
1998 12 月, Sun 发布了 Java 历史上最重要的 JDK 版本: JDK1.2 。并将 Java 分成了 J2EE
(提供了企业应用开发相关的完整解决方案)、 J2SE (整个 Java 技术的核心和基础)、 J2ME
(主要用于控制移动设备和信息家电等有限存储的设备)三个版本。
2002 2 月, Sun 发布了 JDK 历史上最为成熟的版本, JDK1.4
2004 10 月, Sun 发布了万众期待的 JDK1.5 JDK1.5 增加了诸如泛型、增强的 for 语句、
可变数量的形参、注释、自动拆箱和装箱等。
2005 年, Java 诞生十周年, J2SE/J2EE/J2ME 分别改名为: JavaSE/JavaEE/JavaME
2006 12 月, Sun 发布了 JDK1.6
2009 4 20 日, Oracle 甲骨文公司宣布将以每股 9.5 美元的价格收购 Sun Oracle 通过
收购 Sun 获得了两项资产: Java Solaris
2007 11 月, Google 宣布推出一款基于 Linux 平台的开源手机操作系统: Android Android
使用 Java 语言来开发应用程序。 Android 平台的流行,让 Java 语言获得了在客户端程序上大
展拳脚的机会。
2011 7 28 日, Oracle 发布了 Java SE7 ,这次版本升级耗时将近 5 年时间。引入二进
制整数、支持字符串的 switch 语句等。
2014 3 18 日, Oracle 发布了 Java SE 8
2017 7 月, Oracle 发布了 JavaSE 9
2018 3 20 日, Oracle 发布了正式版 JavaSE 10 。同一年 9 25 日发布了 Java11
2019 3 19 日, Oracle 发布了 Java12
以上的描述就是 Java 一路走来的发展历程,我们只能说: Java ,你好坚挺啊!在这个发展
的过程中一代语言的兴起又衰败,又兴起又衰败,但 Java 24 年来一直立于不败之地。并且
渗透到每个行业,已然根深蒂固
在以上的描述中,我们提到了 Java 包括三大块,分别是 JavaSE JavaEE JavaME ,这三
者之间存在什么样的关系呢?请看下图你就明白了:
1-2 JavaSE JavaEE JavaME 三者关系
如上图所示, JavaEE JavaME 都包含 JavaSE 。实际上,这三大块就是 Java 的三大版本,
JavaSE Java 的标准版,是学习 JavaEE JavaME 的基础, JavaEE 是企业版, JavaME 是微
型版。
Java SE Java Platform Standard Edition )。 Java SE 以前称为 J2SE 。它允许开发和部署
在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。 Java SE 包含了支持 Java Web
服务开发的类,并为 Java Platform Enterprise Edition Java EE )提供基础。
Java EE Java Platform Enterprise Edition )。这个版本以前称为 J2EE 。企业版本帮助开
发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。 Java EE 是在 Java SE 的基
础上构建的,它提供 Web 服务、组件模型、管理和通信 API ,可以用来实现企业级的面向服
务体系结构( service-oriented architecture SOA )和 Web 2.0 应用程序。
Java ME Java Platform Micro Edition )。这个版本以前称为 J2ME Java ME 为在移动设
备和嵌入式设备(比如手机、 PDA 、电视机顶盒和打印机)上运行的应用程序提供一个健壮且
灵活的环境。 Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可
以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,
就可以用于许多设备,而且可以利用每个设备的本机功能。
综上所述,我们用几句话简单概括一下它们之间的区别。 Java 标准版,主要做一般的 Java
应用,比如应用软件 / QQ 之类的通信软件等等。 Java 企业版,主要做企业应用,比如公司网
站,企业解决方案等。 Java 微型版,主要面向嵌入式等设备应用的开发,比如手机游戏等。

1.4 Java 语言特性(了解)

sun 公司对 Java 的描述: "Java is a simple object-oriented, distributed, interpreted, robust,
secure, architecture neutral, portable, high-performance, multihreaded, and dynamic language" 。翻译
起来就是 : Java 是一门简单的,面向对象,分布式,解释性,健壮的,安全的,结构中立的,便
捷的,高性能的,多线程的,动态的语言”。那么,在学习 Java 编程语言之前,让我们一起
来看一看它有哪些特性吧?
① 简单性: Java 语言底层采用 C++ 语言实现,相对于 C++ 来说, Java 是简单的,在 Java
语言中程序员不需要再操作复杂的指针(指针的操作是很复杂的),继承方面也是只支持单继
承( C++ 语言是一种半面向对象的编程语言,支持多继承,多继承会导致关系很复杂),在很
多方面进行了简化。
② 面向对象: Java 中提供了封装、继承、多态等面向对象的机制。
健壮性 :在 C++ 程序当中的无用数据 / 垃圾数据需要编程人员手动释放,当忘记释放内
存的时候,会导致内存使用率降低,影响程序的执行;在 Java 语言当中这种问题得到了解决,
因为 Java 语言引入了自动垃圾回收机制( GC 机制), Java 程序启动了一个单独的垃圾回收线
程,时刻监测内存使用情况,在特定时机会回收 / 释放垃圾数据,这样会让内存时刻处于最好
的状态。
④ 多线程: Java 语言支持多个线程同时并发执行,同时也提供了多线程环境下的安全机
制。
可移植性 / 跨平台 :可移植性 / 跨平台表示 Java 语言只需要编写 / 编译一次,即可处处运
行。 Java 代码既可以运行在 windows 的环境下,又可以运行在 Linux 的环境下,而不需要修改
Java 源程序,那么它是怎么做到的呢?功劳全在于“ Java 虚拟机( Java Virtual Machine ,简称
JVM )”这种机制,实际上 Java 程序运行的时候并不是直接运行在操作系统上面的,而是在
操作系统上先安装了一个 JVM ,把 Java 程序放到了 JVM 当中运行, JVM 屏蔽了各操作系统
之间的差异,这样就完成了跨平台。但是, JVM 的出现虽然搞定了跨平台,同时也带来了一
些问题,比如要想运行 Java 程序就必须先安装 JVM ,没有 JVM Java 程序是运行不了的,就
像你要在网页上看视频,结果浏览器却提示你需要安装 Flash 插件,这一点你是不是感觉非常
不爽呀!那么 Java 程序、 Java 虚拟机、操作系统之间是怎样的关系呢?请看下图
通过上图我们可以看到不同的操作系统中安装的 JVM 肯定也是不同的, windows 操作系
统则必须安装 windows 版本的 JVM Linux 操作系统则必须安装 Linux 版本的 JVM 。这是因
JVM 是和操作系统直接打交道的, windows Linux 操作系统本身的执行原理不同,所以
JVM 肯定也必须是定制的,不能通用。但是 Java 程序放到 windows JVM 上和放到 Linux
JVM 上最终执行效果是完全相同的。这是因为:虽然 JVM 版本不同,但是所有版本的 JVM
的实现都是遵守 sun 制定的 JVM 规范的,这样就可以达到编写一次到处运行的效果,有没有
感觉很神奇呀!
当然, Java 语言除了以上的特性之外还有很多其它的特性,我在这里就不再一一赘述了,
大家对以上的特性来说重点知道 Java 的跨平台性以及垃圾回收机制即可,其它的作为了解。

1.5 JDKJREJVM 三者关系(理解)

在学习 Java 之前,我们需要对一些专业术语有一定的了解,在 Java 中常见的专业术语包
括: JDK JRE JVM 等,它们分别是什么,它们之间的关系又是怎样的呢,请看下图:
从上图中我们可以看到, JDK JRE JVM 之间存在这样的包含关系: JDK 包含 JRE JRE
又包含 JVM 。换句话说,只要安装了 JDK JRE JVM 则自动就安装了。那么它们分别代表
什么呢:
JDK JDK Java Development Kit ) 是 Java 语言的软件开发工具包( SDK )。它是
每一个 Java 软件开发人员必须安装的。 JDK 安装之后,它会自带一个 JRE ,因为软件开发人
员编写完代码之后总是要运行的。注意:如果只是在这台机器上运行 Java 程序,则不需要安
JDK ,只需要安装 JRE 即可( JRE 是有独立安装包的,这个大家可以从 Oracle 官网上找一
下)。
JRE JRE Java Runtime Environment Java 运行环境),运行 JAVA 程序所必须的环
境的集合,包含 JVM 标准实现及 Java 核心类库。
JVM JVM Java Virtual Machine Java 虚拟机)的缩写, JVM 是一种用于计算设备
的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实
现的。 JVM 是实现 Java 语言跨平台的法宝。
在这里我需要重点强调一下,不同的操作系统需要安装不同版本的 JDK ,有专门的 windows
JDK Linux JDK Mac JDK 等,当然不同版本的 JDK 安装之后会对应不同版本的 JRE
JVM

1.6 初步了解 Java 的加载与执行(了解)

在编写第一个 Java 程序之前,我们应当对 Java 的加载与执行提前有一个简单的了解,请
看下图
通过上图,我们可以看到 Java 程序从开发到最终运行是这样进行的:
第一步(写代码):在任意位置创建一个 .java 结尾的文件,程序员在该文件中编写符合 Java
语法的源代码,这个文件被称为 Java 源文件。
第二步(编译):使用“ javac ”命令对 java 源文件进行编译,如果 Java 源文件符合 Java
语法规则,则编译生成 1 个或者多个以“ .class ”结尾的文件。“ .class ”结尾的文件我们称之
为字节码文件,注意字节码文件不是普通文本文件,使用记事本等文本编辑器是无法打开的,
但该文件内容也不是二进制,如果是二进制形式的话,操作系统是可以直接执行的,这个文件
的内容我们称之为字节码。注意:这里有一个“类名”的概念,假设生成的文件是 A.class
则表示类名为 A B.class 则表示类名为 B
第三步(运行):使用“ java ”命令运行已编译的 Java 程序,假设编译之后的字节码文件
A.class ,则在 dos 命令窗口中执行 java A 命令,这个时候 Java 虚拟机( JVM )就启动了,
Java 虚拟机通过“类装载器 ClassLoader ”从硬盘中找到 A.class 文件并装载,字节码文件被装
载到 Java 虚拟机之后, Java 虚拟机解释器对字节码进行解释,最终解释为二进制码,然后操
作系统通过执行二进制指令来和硬件平台完成交互。
以上则是 Java 程序加载与执行的过程,接下来我给大家总结 7 条规则,大家可以理解并记
忆一下:
Java 程序从开发到运行包括编译和运行两个阶段,这两个阶段可以在不同的操作系统
中完成,例如在 windows 环境下进行编译,在 Linux 环境下运行,这是因为有 JVM 机制的存
在,做到了一次编译到处运行(跨平台 / 可移植)。
② 编译阶段需要使用 javac.exe (安装 JDK 之后该命令就存在了)命令,运行阶段需要使
java.exe (安装 JRE 之后该命令就存在了)命令。
③ 一个 Java 源文件可能会编译生成多个 class 文件。
Java 源文件中的源代码如果不符合 Java 的语法机制则编译时编译器会提示错误信息,
并且无法生成 class 文件。反之则生成 class 文件,而 class 文件才是最终要执行的程序,此时
Java 源文件删除是不会影响 Java 程序运行的(当然,我们也不必删除 java 源文件,因为在
运行 class 文件之后,如果没有达到预期的运行效果,这个时候还需要将 Java 源代码修改,重
新编译,以达到最终的运行效果)。
⑤ 若生成的字节码文件名为 A.class ,那么我们称 A 为一个类的名字(这个先记住就行,
后面的内容会讲)。
⑥ 当编译阶段完成之后,我们可以使用 JRE 中的 java.exe 命令运行程序,例如执行命令
java A ”,该命令执行后会启动类加载器,类加载器去硬盘上搜索 A.class 文件,找到该字节
码文件之后,将其加载到 JVM 当中, JVM 中的解释器会将 A.class 字节码文件解释为操作系
统可以执行的二进制码,然后操作系统通过执行二进制码和硬件平台交互。
⑦ 运行 Java 程序的前提是当前操作系统上已经安装了对应版本的 JVM JVM 不是单独
安装的,安装 JRE 即可,不同的操作系统需要安装不同版本的 JRE ,不同版本的 JRE 对应不
同版本的 JVM )。
在了解了 Java 程序的加载与执行之后,我们开始动手实现第一个 Java 程序吧!

1.7 开发前的准备工作(掌握)

1.7.1 windows 显示文件扩展名

Java 源文件要求文件扩展名必须为 .java ,不能使用其他扩展名,有些操作系统默认不显示
文件扩展名,大家可按照以下步骤,将文件的扩展名显示出来(以 win7 系统为例),请看以
下步骤:
第一步:打开电脑桌面上的“计算机”,在菜单栏上找“工具”。
第二步:点击“工具”,下拉列表中点击“文件夹选项 (O)… ”。
第三步:在弹出的“文件夹选项”对话框中点击“查看”选项卡,在列表中找到“隐藏已
知文件类型的扩展名”项,将该项前的“对勾”去掉,最后点击“应用”,点击“确定”即可。
以上是 win7 操作系统显示文件扩展名的步骤,其它 windows 系列版本的系统和以上操作
类似,大家可以自己找一下,并设置好

1.7.2 windows 系统的常用 DOS 命令

初次学习 Java 编程最好不要一上来就使用集成开发环境 IDE ,不利于代码的掌握,建议使
用文本编辑器,甚至可以使用记事本编写。在这种情况下,我们就需要熟悉一些 dos 命令,接
下来我们来看几个常见的 dos 命令吧:
打开 DOS 命令窗口,使用快捷键: win + r ,输入 cmd ,回车。
回车之后就可以输入一些命令
Windows系统常用操作命令大全_win常用命令大全-CSDN博客文章浏览阅读1.1k次,点赞20次,收藏12次。这些命令和示例涵盖了大部分 Windows 操作需求。_win常用命令大全https://blog.csdn.net/m0_61840987/article/details/142819342

1.8 开发第一个 Java 程序(掌握)

1.8.1 JDK 的下载与安装

Java 语言由 Sun Sun Microsystems )公司开发, 2009 年被 Oracle (甲骨文)公司收购,
所以目前 JDK 需要从 Oracle 下载, Oracle 官网地址是 https://www.oracle.com
下载教程
2024最新版JDK安装-CSDN博客文章浏览阅读3.4k次,点赞33次,收藏38次。安装JDK以及配置环境变量,检查是否安装成功_jdkhttps://blog.csdn.net/m0_61840987/article/details/140116454

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

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

相关文章

SpringBoot中的Component和ComponentScan注解工作原理

Spring IoC 容器的工作是通过管理对象的生命周期和配置来保持业务逻辑清晰,但是 Spring 容器并不会自动知道要管理哪些 bean。所以我们来告诉 Spring 应该处理哪些 bean 以及如何处理,很简单这就是 Spring 的 Component 和 ComponentScan 注释的作用所在…

算法题总结(二十)——并查集

并查集理论基础 并查集常用来解决集合连通性问题,两个节点在不在一个集合,也可以将两个节点添加到一个集合中。 大白话就是当我们需要判断两个元素是否在同一个集合里的时候,我们就要想到用并查集。 并查集主要有两个功能: 将…

linux介绍与基本指令

前言 本次博客将会讲解linux的来源历史、linux操作系统的理解以及它的一些基本指令。 1.linux的介绍 linux的来源 linux的来源最初还是要说到unix操作系统的。 1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作…

C语言 | Leetcode C语言题解之第502题IPO

题目&#xff1a; 题解&#xff1a; #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX_INT_NUMBER 0x7FFFFFFEtypedef struct {int capital;int profit; } ProNode;int CompareProfit(const ProNode *a, const ProNode *b) { /* 从大到小排序 */return b->pr…

根据发生异常的汇编指令以及函数调用堆栈,从内存的角度出发,估计出问题的可能原因,确定排查方向,快速定位C++软件问题

目录 1、前言 2、初步分析dump文件 3、加载更多模块的pdb文件&#xff0c;可能能看到更多行的函数调用堆栈 4、从内存的角度去看&#xff0c;估计是访问了野指针导致的&#xff0c;沿着这个怀疑的方向快速地定位了问题 5、最后 C软件异常排查从入门到精通系列教程&#xf…

力扣OJ算法题:合并两个有序链表

—————————————————————————————————————————— 正文开始 OJ算法题&#xff1a;合并两个有序链表 思路 创建一个新的空链表&#xff08;可以用malloc优化&#xff09;和两个指针L1、L2分别指向两个链表&#xff0c;遍历两个链表&am…

Chromium 中chrome.contextMenus扩展接口实现分析c++

一、chrome.contextMenus 使用 chrome.contextMenus API 向 Google Chrome 的上下文菜单中添加项。您可以选择从右键菜单中添加的对象类型&#xff0c;例如图片、超链接和页面。 权限 contextMenus 您必须在扩展程序的清单中声明 "contextMenus" 权限&#xff0c…

R语言机器学习算法实战系列(十二)线性判别分析分类算法 (Linear Discriminant Analysis)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍LDA的原理LDA的步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve保存模型总结优点:缺…

Ubuntu(22.04)本地部署Appsmith

Ubuntu&#xff08;22.04&#xff09;安装Appsmith 简要介绍 Appsmith 是一个开源的低代码开发平台&#xff0c;旨在帮助开发者和非开发者快速构建定制化的内部应用程序和管理工具。通过直观的拖拽界面和丰富的预配置组件&#xff0c;Appsmith 让用户无需编写大量代码即可创建…

Postman使用-基础篇

前言 本教程将结合业界广为推崇和使用的RestAPI设计典范Github API&#xff0c;详细介绍Postman接口测试工具的使用方法和实战技巧。 在开始这个教程之前&#xff0c;先聊一下为什么接口测试在现软件行业如此重要&#xff1f; 为什么我们要学习Postman&#xff1f; 现代软件…

数据轻松上云——Mbox边缘计算网关

随着工业4.0时代的到来&#xff0c;工厂数字化转型已成为提升生产效率、优化资源配置、增强企业竞争力的关键。我们凭借其先进的边缘计算网关与云平台技术&#xff0c;为工厂提供了高效、稳定的数据采集与上云解决方案。本文将为您介绍Mbox边缘计算网关如何配合明达云平台&…

基于SpringBoot微信小程序的书院预约系统【附源码】

基于SpringBoot微信小程序的书院预约系统 效果如下&#xff1a; 微信小程序首页界面 用户登录界面 书院信息界面 会议室界面 管理员登录界面 管理员主界面 用户界面 书院信息界面 会议室界面 会议室预约界面 研究背景 随着社会的快速发展&#xff0c;计算机技术的影响是全面…

SpringBoot 单元测试 - 登录认证在 Spring Boot 上的标准单元测试写法。

&#x1f449; 请投票支持这款 全新设计的脚手架 &#xff0c;让 Java 再次伟大&#xff01; 不要使用 SpringBootTest 使用 SpringBootTest 进行单元测试会启动整个 Spring Boot 容器&#xff0c;并引入整个项目的 development&test 依赖。缺点是速度慢、体积大、测试目标…

HarmonyOS Next应用开发——图像PixelMap变换

【高心星出品】 图像变换 图片处理指对PixelMap进行相关的操作&#xff0c;如获取图片信息、裁剪、缩放、偏移、旋转、翻转、设置透明度、读写像素数据等。图片处理主要包括图像变换、位图操作&#xff0c;本文介绍图像变换。 图形裁剪 // 裁剪图片 x&#xff0c;y为裁剪的起…

【element-tiptap】如何把分隔线改造成下拉框的形式?

当前的分隔线只有细横线这一种形式 但是咱们可以看一下wps中的分隔线&#xff0c;花里胡哨的 这些在wps里都需要使用快捷键打出来&#xff0c;真没找到菜单在哪里 那么这篇文章咱们就来看一下如何改造分隔线组件&#xff0c;改造成下拉框的形式&#xff0c;并且把咱们想要的分…

如何调试浏览器中的内存泄漏?

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介⭐ 如何调试浏览器中的内存泄漏&#xff1f;1. 什么是内存泄漏&#xff1f;2. 调试内存泄漏的工具3. 如何使用 Memory 面板进行内存调试3.1 获取内存快照&#xff08;Heap Snapshot&#xff09;获取内存快照的步骤&#xff1a;快照…

【二刷hot100】day 4

终于有时间刷刷力扣&#xff0c;求实习中。。。。 目录 1.最大子数组和 2.合并区间 3.轮转数组 4.除自身以外数组的乘积 1.最大子数组和 class Solution {public int maxSubArray(int[] nums) {//就是说可以转换为计算左边的最大值&#xff0c;加上中间的值&#xff0c…

1.6,unity动画Animator屏蔽某个部位,动画组合

动画组合 一边跑一边攻击 using System.Collections; using System.Collections.Generic; using UnityEngine;public class One : MonoBehaviour {private Animator anim;// Start is called before the first frame updatevoid Start(){anim GetComponent<Animator>();…

PPT自动化:Python如何修改PPT文字和样式!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 使用 Python 修改 PPT 文本内容📝 遍历所有幻灯片和文本框📝 设置和修改文本样式📝 复制和保留文本样式⚓️ 相关链接 ⚓️📖 介绍 📖 在日常工作中,PPT 的文字内容和样式修改似乎是一项永无止境的…

渗透测试实战—教育攻防演练中突破网络隔离

免责声明&#xff1a;文章来源于真实渗透测试&#xff0c;已获得授权&#xff0c;且关键信息已经打码处理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本…