Table of Contents

一:Java入门

1:java诞生

2;Java语言是什么?

2.1:Java是一种编程语言;

2.2:Java是一种软件开发平台;

2.3:Java 是一种软件运行平台;

2.4:Java  是一种软件部署环境

3:Java能干嘛;

4:Java有什么;


一:Java入门

1:java诞生

在 1990 年,Sun 公司成立了一个由 James Gosling 领导的软件设计团队,他们合作的项
目称为“绿色计划”。他们认为计算机技术发展的一个趋势是数字家电之间的通讯。James 开始
负责为设备和用户之间的交流创建一种能够实现网络交互的语言。随着大量的时间和金钱投入到
“绿色计划”,他们创建了一种语言。这种语言一开始被叫做“Oak”,这个名字得自于 Gosling
想名字时看到了窗外的一棵橡树,后来被改为了“Java”。

Java 的快速发展得利于 Internet 和 Web 的出现,到了 2000 年,Java 已经成为世界上
最流行的电脑语言。绿色小组当初设计 Java 是为了面向数字家庭,支持各种家电设备。他们没
有想到的是,Java 支持的计算模式,实际上就是互联网的模式 。

Java的重要历史事件

目前主流的 JDK 是 Sun 公司发布的 JDK,除了 Sun 之外,还有很多公司和组织都开发了自
己的 JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU 组织开发的JDK等等。
印度尼西亚有一个重要的盛产咖啡的岛屿,中文名叫爪哇,开发人员为这种新的语言起名为
Java,其寓意是为世人端上一杯香浓的热咖啡。现在就让我们来一起品尝吧。

2;Java语言是什么?

Java 的内容很丰富,实现的功能也很多,我们从以下几个角度来描述它。
一种计算机编程语言
一种软件开发平台
一种软件运行平台
一种软件部署环境
句法与 C++相似,语义与 Small Talk 相似
用来开发 applets,又用来开发 applications

2.1:Java是一种编程语言;

语言
我们说的普通话、英语都是语言,语言是一种交流的工具,语言具有创造性和结构性,并且
代表一定的意义。比如我说下课了,大家都明白什么意思,证明这个语句的意思表达清楚了,正
规的语言在交流上是不能有歧义的。

计算机编程
计算机编程就是:把程序员的要求和设想,按照能够让计算机看得懂的规则和约定,编写出
来的过程,就是编程。编程的结果就是一些计算机能够看懂并能够执行和处理的东西, 我们把
它叫做软件或者程序。事实上,程序就是我们对计算机发出的命令集(指令集)。

Java  是一种计算机编程语言
首先,Java 是一种语言,也就是 Java 是用来交流的,那么用来谁和谁交流呢?很明显
就是程序员和计算机交流,换句话说把我们的要求和设想用 Java 语言表达出来,那么计算机能
看懂,就能够按照我们要求运行,而这个过程就是我们所说的使用 Java 编程,所以我们讲
Java 是一种计算机编程语言。为了让计算机看懂,Java 会有一系列的规则和约定,这些就是
Java 的语法。

2.2:Java是一种软件开发平台;

什么是软件开发
可以简单地理解为:编程的结果是软件或者程序,而编程的过程就是软件开发。软件开发的
基本步骤包括:需求分析、概要设计、详细设计、编码、测试、维护等阶段。

需求分析:这里指的需求不仅仅是用户需求,应该是开发中遇到的所有的需求。比如,你首
先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据…… 为了清楚地知道
这些需求,你经常要和客户、项目经理以及项目伙伴调查研究,这就是需求分析。

编码:开发代码,完成设计的具体实现。

测试:利用测试工具按照测试方案和业务流程对产品进行功能和性能测试,对测试方案可能
出现的问题进行分析和评估,并修改代码

维护:根据用户需求的变化或硬件环境的变化,对应用程序进行部分或全部的修改。

具体表现为以下流程图:

Java  是一种开发平台
Java 不单纯是一个编程的语言,它自身提供了一系列开发 Java 所需要的环境和工具,
来进行编译、解释、文档生成、打包等,比如:javac.exe、javadoc.exe 等等,这些我们
后面会讲到,所以我们讲 Java 是一个开发平台。

2.3:Java 是一种软件运行平台;

什么是软件的运行平台
如同人类需要阳光、空气、水和食物才能正常存活一样,软件最终要能够运行,也需要一系
列的外部环境,来为软件的运行提供支持,而提供这些支持的就是运行平台

Java  是一种软件运行平台
Java 本身提供 Java 软件所需要的运行环境,Java 应用可运行在安装了 JRE(Java
Runtime Environment)的机器上,所以我们说 Java 是一个运行平台。

2.4:Java  是一种软件部署环境

什么是软件部署

简单地讲,部署就是安装,就是把软件放置到相应的地方,并且进行相应的配置(一般称作
部署描述)让软件能够正常运行起来。

3:Java能干嘛;

Java 能做的事情很多,涉及到编程领域的各个方面。
桌面级应用:尤其是需要跨平台的桌面级应用程序
桌面级应用:简单的说就是主要功能都在我们本机上运行的程序,比如 word、excel 等运
行在本机上的应用就属于桌面应用。
企业级应用
企业级应用:简单的说就是大规模的应用,一般使用人数较多,数据量较大, 对系统的稳
定性、安全性、可扩展性和可装配性等都有比较高的要求。举例说明一下:

组件化:企业级应用通常比较复杂,组件化能够更好对业务进行建模,提高系统的扩展性和
维护性,做到组件复用。

分布式:企业组织机构复杂,同一地有多个分部,或者跨省,甚至跨国,COABA, RMI,Web Services 是 JavaEE 中支持的分布式访问技术,还有分布式的连接,如系统需要接入多个
数据源,可以用 JNDI 来透明实现。

事务管理:为了保证数据的安全操作、安全访问,事务是不可缺少的,事实上只要操作数据
库,就离不开事务管理。

消息管理:通过消息来实现异步触发从而降低系统耦合性,提高系统吞吐量。一个电子商务
网站也可以使用消息来进行异步发邮件,但在企业级应用当中,根据实际需求还可以演变成更多
复杂的应用,JEE 提供 JMS 实现消息管理

安全性:企业级应用的数据都更为敏感(比如公司的销售数据、财务数据),需要为此提供
严格的安全性保护,企业级组织的复杂性、接入访问的多样性增加了安全策略实施的难度,
JAAS 为此提供了一整套的安全策略,方便企业级应用以安全、一致、便捷的方式实现安全机
制。

目前企业级应用是 Java 应用最广泛的一个领域,几乎一枝独秀。包括各种行业应用、企业
信息化、电子政务等,包括办公自动化 OA,人力资源 HR,客户关系管理 CRM, 企业资源计划
ERP、供应链管理 SCM、企业设备管理系统 EAM、产品生命 周期管理 PLM、面向服务体系架构
SOA、商业智能 BI、项目管理 PM、营销管理、流程管理 WorkFlow、财务管理……等等几乎所
有你能想到的应用。

嵌入式设备及消费类电子设备
 包括无线手持设备、智能卡、通信终端、医疗设备、信息家电(如数字机顶盒、 电冰箱)、
汽车导航系统等都是近年以来热门的 Java 应用领域,尤其是手机上的 Java 应用程序和 Java
游戏,更是普及。
 嵌入式装置答题上区分为两种:一种是运算功能有限、电力供应也有限的嵌入式装置,例如:
PDA、手机;另外一种则是运算能力相对较佳、并且电力供应上相对比较充足的嵌入式装置,比
如:冷气机、电冰箱、电视机顶盒。
 除了上面提到的,Java 还有很多功能:如进行数学运算、显示图形界面、进行网络操作、
进行数据库操作、进行文件的操作等等。

4:Java有什么;

Java 体系比较庞杂,功能繁多,这也导致很多人在自学 Java 的时候总是感觉无法建立
全面的知识体系,无法从整体上把握 Java 的原因。在这里我们先简单了解一下 Java 的版
本。

Java 分成三种版本,分别是: Java 标准版(JSE)、Java 微缩版(JME)和 Java 企业
版(JEE)。

Java  标准版: JSE(Java Standard Edition

JSE 是 Sun 公司针对桌面开发以及低端商务计算解决方案而开发的版本,例如:我们平常
熟悉的 Application 桌面应用程序。这个版本是个基础,它也是我们平常开发和使用最多的
技术,Java 的主要的技术将在这个版本中体现。

Java  企业版:JEE (Java Enterprise Edition )
JEE 是一种利用 Java 平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体
系结构。JEE 技术的基础就是核心 Java 平台或 Java 平台的标准版,JEE 不仅巩固了标准
版中的许多优点,例如“一次编写、处处运行”的特性、方便存取数据库的 JDBC API、CORBA
技 术 以 及 能 够 在 Internet 应 用 中 保 护 数 据 的 安 全 模 式 等 等 , 同 时 还 提 供 了 对
EJB(Enterprise Java Beans)、Java Servlets API、JSP(Java Server Pages) 以
及 XML 技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时 间
的体系结构。

JEE 体系结构提供中间层集成框架来满足无需太多费用而又需要高可用性、高可靠性以及
可扩展性的应用的需求。通过提供统一的开发平台,JEE 降低了开发多层应用的费用和复 杂性,
同时提供对现有应用程序集成强有力支持,完全支持 Enterprise Java Beans,有良好的向
导支持打包和部署应用,添加了目录支持,增强了安全机制,提高了性能。

JEE 是对标准版进行功能扩展,提供一系列功能,用来解决进行企业应用开发中所面临的
复杂的问题。具体的我们会放到后面 JEE 的课程去讲。

Java  微缩版:JME(Java Micro Edition )
JME 是对标准版 JSE 进行功能缩减后的版本,于 1999 年 6 月由 Sun Microsystems
第一次推向 Java 团体。它是一项能更好满足 Java 开发人员不同需求的广泛倡议的一部分。
Sun Microsystems 将 JME 定义为“一种以广泛的消费性产品为目标的高度优化的 Java 运
行时环境”,应用范围包括掌上电脑、移动电话、可视电话、数字机顶盒和汽车导航系统及其他
无线设备等。

5:Java的特点;

简单地说,Java 具有如下特点:简单的、面向对象的、平台无关的、多线程的、安全的、
高效的、健壮的、动态的等特点。

简单的
简单是指 Java 既易学又好用。不要将简单误解为这门编程语言很干瘪。你可能很赞同这样
的观点:英语要比阿拉伯语言容易学。但这并不意味着英语就不能表达丰富的内容和深刻的思想,
许多荣获诺贝尔文学奖的作品都是用英文写的。如果你学习过 C++,你会感觉 Java 很眼熟,因
为 Java 中许多基本语句的语法和 C++一样,像常用的循环语句、控制语句等和 C++几乎一样,

但不要误解为Java是C++的增强版,Java和C++是两种完全不同的编程语言,它们各有各的优
势,将会长期并存下去,Java 和 C++已成为软件开发者应当掌握的编程语言。如果从语言的简
单性方面看,Java 要比 C++简单,C++中有许多容易混淆的概念,或者被 Java 弃之不用了,或
者以一种更清楚更容易理解的方式实现,例如,Java 不再有指针的概念。

面向对象的
面向对象是指以对象为基本粒度,其下包含属性和方法。对象的说明用属性表达,而通过使
用方法来操作这个对象。面向对象技术使得应用程序的开发变得简单易用,节省代码。基于对象
的编程更符合人的思维模式,使人们更容易编写程序。Java 是一种面向对象的语言,也继承了
面向对象的诸多好处,如代码扩展、代码复用等。我们将在以后的章节中详细地讨论类、对象等
概念。

平台无关的
与平台无关是 Java 最大的优势。其他语言编写的程序面临的一个主要问题是:操作系统的
变化,处理器升级以及核心系统资源的变化,都可能导致程序出现错误或无法运行。而用 Java
写的程序不用修改就可在不同的软硬件平台上运行。这样就能实现同样的程序既可以在
Windows 下运行,到了 Unix 或者 Linux 环境不用修改就直接可以运行了。Java 主要靠
Java 虚拟机(JVM)实现平台无关性。平台无关性就是一次编写,到处运行:Write Once, Run
Anywhere。

多线程的
Java 实现了内置对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生
多个任务在同时执行的错觉,因为,目前的计算机的处理器在同一时刻只能执行一个线程,但处
理器可以在不同的线程之间快速地切换,由于处理器速度非常快,远远超过了人接收信息的速度,
所以给人的感觉好像多个任务在同时执行。C++没有内置的多线程机制,因此必须调用操作系统
的多线程功能来进行多线程程序的设计。

安全的
安全性可以分为四个层面,即编译、类装载、字节码校验、沙箱机制。

高效的
高级语言程序必须转换为机器语言程序才能执行,但不同的计算机系统所使用的机器语言不
同。Java 为了实现“一次编译,随处运行”的目标,Java 的源程序在编译时,并不直接编译成
特定的机器语言程序,而是编译成与系统无关的 字节码,由 Java 虚拟机(JVM )来执行。当
JVM 解释执行 Java 程序时,Java 实时编译器(Just-In-Time,JIT)会将字节码译成目标
平台对应的机器语言的指令代码。
早先的许多尝试解决跨平台的方案对性能要求都很高。其他解释执行的语言系统,如 BASIC、
PERL 都有无法克服的性能缺陷。然而,Java 却可以在非常低档的 CPU 上顺畅运行,这是因为
Java 字节码是经过精心设计的,能够直接使用 JIT 编译技术将字节码转换成高性能的本机代码。
事实上,Java 的运行速度随着 JIT 编译器技术的发展已接近于 C++。

健壮的
Java是健壮的语言。为了更好地理解Java的健壮性,先讨论一下在传统编程环境下程序设
计失败的主要原因:内存管理错误和误操作引起的异常或运行时异常。
在传统的编程环境下,内存管理是一项困难、乏味的工作。例如,在C或C++ 中,必须手工

分配、释放所有的动态内存。如果忘记释放原来分配的内存,或是释放了其他程序正在使用的内
存时,就会出错。在传统的编程环境下,异常情况可能经常由“被零除”、“Null 指针操作”、
“文件未找到”等原因引起,必须用既繁琐又难理解的一大堆指令来进行管理。
对此,Java 通过自行管理内存分配和释放,从根本上消除了有关内存的问题。Java 提供
垃圾收集器,可自动收集闲置对象占用的内存。通过提供面向对象的异常处理机制来解决异常处
理的问题。通过类型检查、Null 指针检测、数组边界检测等方法,在开发早期发现程序错误

动态的
Java 语言具有动态特性。Java 动态特性是其面向对象设计方法的扩展,允许程序动态地
装入运行过程中所需的类,这是 C++进行面向对象程序设计所无法实现的。C++程序设计过程中,
每当在类中增加一个实例变量或一种成员函数后,引用该类的所有子类都必须重新编译,否则将
导致程序崩溃。

6:Java的三大技术特性;

6.1:Java虚拟机

Java 虚拟机 JVM(Java Virtual Machine)在 Java 编程里面具有非常重要的地位,相当于前面学到的 Java 运行环境,虚拟机的基本功能如下:

(1)通过 ClassLoader 寻找和装载 class 文件
(2)解释字节码成为指令并执行,提供 class 文件的运行环境
(3)进行运行期间垃圾回收
(4)提供与硬件交互的平台

Java 虚拟机是在真实机器中用软件模拟实现的一种想象机器。Java 虚拟机代码被存储
在 .class 文件中;每个文件都包含最多一个 public 类。Java 虚拟机规范为不同的硬件平台
提供了一种编译 Java 技术代码的规范,该规范使 Java 软件独立于平台,因为编译是针对作为
虚拟机的“一般机器”而做。这个“一般机器”可用软件模拟并运行于各种现存的计算机系统,

也可用硬件来实现。编译器在获取 Java 应用程序的源代码后,将其生成字节码,它是为 JVM 生
成的一种机器码指令。每个Java解释器,不管它是Java技术开发工具,还是可运行 applets
的 Web 浏览器,都可执行 JVM。

JVM 为下列各项做出了定义:
- 指令集(相当于中央处理器[CPU])
- 寄存器
- 类文件格式
- 栈
- 垃圾收集堆
- 存储区

JVM 的代码格式由紧缩有效的字节码构成。由 JVM 字节码编写的程序必须保持适当的类型
约束。大部分类型检查是在编译时完成。任何从属的 Java 技术解释器必须能够运行任何含有
类文件的程序,这些类文件应符合 Java 虚拟机规范中所指定的类文件格式。

虚拟机是 Java 平台无关的保障

正是因为有虚拟机这个中间层,Java 才能够实现与平台无关。虚拟机就好比是一个 Java
运行的基本平台,所有的 Java 程序都运行在虚拟机上,如下图所示:

6.2:垃圾回收;

什么是垃圾
在程序运行的过程中,存在被分配了的内存块不再被需要的情况,那么这些内存块对程序来
讲就是垃圾。

产生了垃圾,自然就需要清理这些垃圾,更为重要的是需要把这些垃圾所占用的内存资源,
回收回来,加以再利用,从而节省资源,提高系统性能。

垃圾回收
- 不再需要的已分配内存应取消分配(释放内存)
- 在其它语言中,取消分配是程序员的责任
- Java 编程语言提供了一种系统级线程以跟踪内存分配:垃圾收集机制
- 可检查和释放不再需要的内存
- 可自动完成上述工作

许多编程语言都允许在程序运行时动态分配内存,分配内存的过程由于语言句法不同而有所
变化,但总是要将指针返回到内存的起始位置,当分配内存不再需要时(内存指针已溢出范围),
程序或运行环境应释放内存。

在 C,C++ 或其它语言中,程序员负责释放内存。有时,这是一件很困难的事情。因为你
并不总是事先知道内存应在何时被释放。当在系统中没有能够被分配的内存时,可导致程序瘫痪,
这种问题被称作 内存漏洞。

Java 编程语言解除了程序员释放内存的责任。它可提供一种系统级线程以跟踪每一次内存
的分配情况。在 Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内存。垃
圾收集在 Java 技术程序的生命周期中自动进行,它解除了释放内存的要求,这样能够有效避
免内存漏洞和内存泄露(内存泄露就是程序运行期间,所占用的内存一直往上涨, 很容易造成系
统资源耗尽而降低性能或崩溃) 。

提示
(1)在 Java 里面,垃圾回收是一个自动的系统行为,程序员不需要控制垃圾回收的功能
和行为。比如垃圾回收什么时候开始,什么时候结束,还有到底哪些资源需要回收等。
(2)程序员可以通过设置对象为 null(后面会讲到)来标示某个对象不再被需要了, 这
只是表示这个对象可以被回收了,并不是马上被回收。
(3)有一些跟垃圾回收相关的方法,比如:System.gc() ,调用  gc 方法暗示着 Java
虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权
从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。

6.3:代码安全;

Java 如何保证编写的代码是安全可靠的呢?
第一关:编写的代码首先要被编译成为 class 文件,如果代码写得有问题,编译期间就会
发现,然后提示有编译错误,无法编译通过。
第二关:通过编译关后,在类装载的时候,还会进行类装载检查,把本机上的类和网络资源
类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。
第三关:类装载后,在运行前,还会进行字节码校验,以判断你的程序是安全的。
第四关:如果你的程序在网络上运行,还有沙箱(Sand Box)的保护,什么是沙箱呢? 就
是如果你的程序没有获得授权,只能在沙箱限定的范围内运行,是不能够访问本地资源的, 从而
保证安全性。

JAVASE-01-java入门相关推荐

  1. JavaSE基础篇——超详细,Java入门,这一篇就够了

    第一节:Java语言概述 一.java背景知识 1.Java是美国sun公司(Stanford University Network)在1995年推出的一门计算机高级编程语言. 2.Java早期被称为 ...

  2. Java 基础-01 Java语言入门

    文章目录 Java 基础-01 Java语言入门 1.计算机基本概念 1.1 计算机概述 1.2 计算机组成 1.3 CPU.内存与硬盘 2.软件基本概念 2.1 软件概述 2.2 人机交互方式 2. ...

  3. Java入门算法(动态规划篇2:01背包精讲)

    本专栏已参加蓄力计划,感谢读者支持❤ 往期文章 一. Java入门算法(贪心篇)丨蓄力计划 二. Java入门算法(暴力篇)丨蓄力计划 三. Java入门算法(排序篇)丨蓄力计划 四. Java入门算 ...

  4. 【Java全栈学习笔记:第一阶段:JavaSE】:Java入门及环境搭建

    Java全栈课程网站: KuangStudy JavaSE课程地址: 狂神说Java 参考书籍:Java大学实用教程(第四版) 目录 Java入门及环境搭建 Java帝国的诞生 Java发展 Java ...

  5. JavaSE学习第一次笔记---Java入门知识

    目录 一.Java入门知识 1.JDK组成 2.Path环境变量 2.1在配置环境变量时注意: 2.2配置JAVA_HOME 一.Java入门知识 1.JDK组成 首先,使用通过javac开发工具对. ...

  6. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  7. Java入门(一):Hello World !

    前言 从今天开始,准备写Java Web开发的系列文章,毕竟自己主攻的还是Java方向,Python只是业余学习的兴趣使然,在第二技能还没有培养成熟前,做好第一技能的巩固和提高是很有必要的.从正式入行 ...

  8. Java入门学习笔记[狂神说Java]

    写在前面: 本文根据B站狂神说Java 与菜鸟教程 整理而来,仅供个人学习使用,如有侵权,请联系删除. 文章目录 IDEA使用 Java基础01:注释 Java基础02:数据类型 Java基础03:类 ...

  9. 一、Java入门和环境安装

    @Author : By Runsen 本专栏是零基础学java的第一篇 Java入门和环境安装(一) 文章目录 1.Java入门 1.1 了解Java 1.2 选择Java版本 1.3 下载jdk ...

  10. Java入门篇 2021/02/22

    Java入门篇 2021/02/22 Java的三大版本 java三大版本主要包括 JavaSE, JavaME, JavaEE,其中现如今的JavaME已经是很少见了,JavaSE是JavaEE的基 ...

最新文章

  1. search strategies
  2. pytorch贝叶斯网络_贝叶斯神经网络:2个在TensorFlow和Pytorch中完全连接
  3. 想领取开发套件,就来参加AIoT开发者大赛
  4. idea设置自定义代码模板(webstorm也是如此)
  5. 加载elementor时出现问题_在使用聚氨酯发泡机时出现问题的解决方法!
  6. 闲鱼靠什么支撑起万亿的交易规模?
  7. 【Codeforces549F】Yura and Developers [单调栈][二分]
  8. 汇编语言上机考试三星题——加密的key和明文字符串(二)
  9. 传统金融行业 IT 的核心竞争力究竟在何处?
  10. mysql导入hdfs参数_导入数据到HDFS
  11. 不知为不知--信息论和最大熵原则
  12. 【测试】一步步教你写一份优秀的软件测试简历
  13. 3D贴图绘制软件Substance 3D Painter 2022中文版
  14. 系统集成项目管理: 三点估算法估算工期和方差的计算公式和习题
  15. python人名独特性统计_荐第六章:组合数据类型练习[人名独特性统计]学习思考...
  16. hihocoder-1498-Diligent Robots
  17. matplotlib plot显示marker超出边界部分
  18. 数据分析报告这样写,才算真正读懂了数据
  19. 服务器怎么向指定客户端发送信息,WebSocket 如何实现服务端向客户端发送消息?...
  20. 26丨案例:手把手带你理解TPS趋势分析*

热门文章

  1. 魔兽世界Gm重置副本命令
  2. 关注 Flutter 社区微博账号
  3. Chrome手机调试模式
  4. 中国人遗传基因数据泄露,或提高生物武器准确性
  5. 基于深度学习的Image Inpainting (图像修复)论文推荐(持续更新)
  6. plc和单片机及c语言区别,PLC和单片机有什么区别?如何分清PLC和单片机
  7. 随笔:金融的“游戏”规则——游戏世界的区块链喵与现实世界的金融科技
  8. (项目实战)基于QT嵌入式ARM数据采集卡上位机(二)——页面布局
  9. 硬件基础:带缓启动MOS管电源开关电路
  10. git上如何通过本地仓库推送自己的代码到远程仓储