学前准备工作

news/2024/11/16 15:19:03/文章来源:https://www.cnblogs.com/zhendai/p/18352086

什么是计算机

  • computer:全称电子计算机,简称电脑。
  • 能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备
  • 由软件和硬件组成
  • 常见形式有台式计算机,笔记本计算机,大型计算机等
  • 广泛应用在:科学计算、数据处理、自动控制、计算机辅助设计、人工智能等领域。

计算机硬件

组成:cpu、主板、内存、电源、主机箱、硬盘、显卡、键盘鼠标、显示器等

冯诺依曼体系结构

数学家冯·诺依曼提出了计算机制造的三个基本原则(采用二进制、程序存>储、顺序执行),以及计算机的五个组成部分(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构,根据这一原理制造的计算机被称为冯·诺依曼结构计算机。

冯诺依曼体系结构图

计算机软件

  • 软件是指计算机系统中的一系列指令和数据,其目的是使计算机能够执行特定的任务或解决特定的问题。软件通常包括应用程序、操作系统和其他支持软件,它们与硬件协同工作,为用户和其他软件提供功能和服务。
  • 软件可以按照功能、使用方式和授权方式等多种标准进行分类。以下是一些常见的软件分类:

按功能分类:

  • 应用软件(Application Software): 用于执行特定任务或解决特定问题的软件,例如文字处理软件(Microsoft Word)、电子邮件客户端(Outlook)、图形设计软件(Adobe Photoshop)等。
  • 系统软件(System Software): 支持计算机硬件运行和应用软件的软件,例如操作系统(Windows、macOS、Linux)、驱动程序、工具软件等。

计算机语言发展史

引用文心一言回答

计算机语言发展史可以清晰地分为几个主要阶段,每个阶段都伴随着技术的进步和编程语言的创新。以下是计算机语言发展的简要概述:

  1. 机器语言阶段:
    时间:20世纪40年代
    特点:计算机刚刚问世时,人们直接通过一系列由“0”和“1”组成的二进制代码(即机器语言)来控制计算机硬件执行特定的任务。这种语言只有计算机能够理解,对于人类来说极难理解和编写。
  2. 汇编语言阶段:
    时间:在机器语言之后
    特点:汇编语言用助记符代替了操作码,用地址符号或标号代替地址码,从而用符号代替了机器语言的二进制码。这使得编程语言对人类来说更加容易理解和记忆,但仍然需要编程者将每一步具体的操作用命令的形式写出来。
  3. 高级语言阶段:
    时间:从20世纪50年代中叶开始,一直发展至今
    特点:高级语言是一种更接近于人类自然语言的编程语言,它允许使用英文编写程序,并且程序中的符号和算式也与日常使用的数学式子相似。高级语言的发展极大地提高了程序设计的效率和可读性。

重要事件和人物:

  1. Fortran(公式翻译)语言的诞生(1957年左右),它是科学和工程计算中常用的编程语言。
  2. C语言的诞生(1972年),由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室设计并推出。C语言具有革命性的意义,因为它结合了高级语言的特性和机器语言的效率,成为许多现代编程语言的基础。
  3. 面向对象编程(OOP)的兴起,这标志着编程方式的重要转变。C++、Java和Python等语言都是面向对象编程的代表。
    互联网时代的编程语言,如JavaScript、Python等在网络编程中占据重要地位。
  • 编程语言的发展趋势:
    面向对象编程和组件化编程成为主流,使得软件开发更加灵活和可扩展。
    脚本语言和动态语言(如Python、Ruby等)因其易用性和快速开发能力而受到欢迎。
    跨平台编程语言和框架(如Java、.NET等)使得应用程序可以在不同操作系统上运行。

总结来说,计算机语言的发展经历了从机器语言到汇编语言,再到高级语言的演变过程。每个阶段都伴随着技术的进步和编程语言的创新,使得人与计算机之间的交互变得更加容易和高效。随着技术的不断发展,未来的编程语言将继续朝着更加人性化、高效化和智能化的方向发展。

c语言的优点及缺点

引用文心一言回答:

  1. 高效性:C语言是一种用于系统编程的低级语言,因此非常高效。它能够直接访问内存和硬件,允许开发者进行底层操作,这使得C语言在嵌入式系统、操作系统等领域有着广泛的应用。
  2. 可移植性:C语言的标准库是高度可移植的,因此可以轻松地在不同的操作系统上编译和运行。这使得C语言编写的程序具有广泛的适用性。
  3. 结构化编程:C语言支持函数、指针、结构体等结构化编程元素,使得程序更加易于理解和维护。这些特性有助于开发者编写清晰、可读的代码。
  4. 静态类型:C语言是一种静态类型语言,在编译期间进行类型检查,可以避免一些潜在的类型错误。这有助于提高代码的稳定性和安全性。
  5. 底层访问:C语言允许直接访问内存、硬件和底层系统资源,这使得它非常适合嵌入式系统和操作系统开发。
  6. 指针:C语言具有强大的指针功能,可以从多个角度处理数据,提高程序效率。指针是C语言的重要特性之一,也是其区别于其他高级语言的重要方面。
  7. 开放性:C语言的开放性使得它具有广泛的应用,可以编写各种类型的程序,如操作系统、编译器、设备驱动程序、数据库、图形界面等。

优点:

  1. 贴近硬件,高效。
  2. 指针功能强大

缺点:由于指针和内存管理的复杂,需要新手一定的学习成本,可移植性事实上并不正确,需要每次移植都需要调整。

Java语言的特性及优点

Java语言的特性

  1. 面向对象:
    Java是一种完全面向对象的编程语言,支持类和对象的概念,允许程序员以优雅的思维方式进行复杂的编程。
    Java中的万物皆对象,所有元素都要通过类和对象来访问。
  2. 平台无关性(跨平台性):
    Java编写的程序可以在任何安装了Java虚拟机(JVM)的计算机上运行,实现了“一次编写,到处运行”的承诺。
    Java编译器将源代码编译为字节码,这些字节码在JVM上执行,与底层操作系统无关。
  3. 简单性:
    Java相对于C++等语言更为简单,去除了多继承、指针等复杂和难以理解的概念。
    Java的语法清晰明了,易于学习和使用。
  4. 健壮性:
    Java在开发初期便能通过编译检查出代码错误,有助于开发过程的顺利进行。
    Java提供了丰富的异常处理机制,可以捕获并处理运行时错误,提高程序的健壮性。
  5. 安全性:
    Java内置了多种安全机制,如类加载器、安全管理器和沙箱机制,可以防止恶意代码的执行。
    Java不支持指针操作,避免了非法内存访问等安全问题。
  6. 多线程支持:
    Java内置对多线程编程的支持,允许程序员编写并发程序,更好地利用多核处理器的优势。
    Java提供了丰富的同步机制,确保多线程程序的正确执行。
  7. 高性能:
    尽管Java是解释型语言,但通过即时编译(JIT)和优化技术,Java程序可以获得接近甚至超过编译型语言的性能。
    Java还提供了丰富的库和工具,用于进一步优化性能。
  8. 动态性:
    Java可以在运行时动态地加载、链接和执行类,这使得Java具有更强的适应性和灵活性。
    Java支持动态类型检查和反射机制,可以在运行时获取类的信息并操作对象。

Java语言的优点

  1. 广泛的应用领域:
    Java在桌面应用程序、Web应用程序、分布式系统和嵌入式系统等领域都有广泛的应用。
    Java是Android应用开发的主要语言之一。
  2. 强大的社区支持:
    Java拥有庞大的开发者社区和丰富的资源,为开发者提供了强大的支持。
    Java的开源项目众多,如Spring、Hibernate等,为开发者提供了丰富的工具和框架。
  3. 稳定性与可靠性:
    Java语言本身的设计保证了其程序的稳定性和可靠性。
    Java的垃圾回收机制避免了内存泄漏等问题,提高了程序的健壮性。
    丰富的库和API:
    Java标准库提供了丰富的功能和API,可以满足大多数开发需求。
    Java还有大量的第三方库和框架可供选择,如JDBC、Servlet等。

Java三大版本

Java平台包含三个主要版本:Java SE(Java Platform, Standard Edition)、Java EE(Java Platform, Enterprise Edition)和Java ME(Java Platform, Micro Edition)。

Java SE(Java Platform, Standard Edition)

也称为J2SE,是Java的标准版本。
提供Java语言的核心库、虚拟机和工具,用于开发普通桌面应用、企业级应用和嵌入式系统等。
特点:
平台无关性:提供跨平台的解决方案。
面向对象:完全支持面向对象编程。
强大的库支持:提供丰富的类库,如输入输出、网络通信、图形界面、数据库访问等。

Java EE(Java Platform, Enterprise Edition)

也称为J2EE,主要用于开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。
包含Java SE的所有特性,并增加了许多用于企业级开发的组件和API,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JNDI(Java Naming and Directory Interface)等。
应用:
广泛应用于大型企业级应用的开发,如银行系统、电子商务平台和供应链管理系统等。

Java ME(Java Platform, Micro Edition)

也称为J2ME,主要用于在移动设备和嵌入式设备上运行的应用程序。
提供一个精简的Java虚拟机(KVM)和一组核心类库,用于处理移动设备的特定功能,如电话通信、设备控制、用户界面等。
特点:
适用于资源有限的设备。
提供在移动设备和嵌入式设备上运行Java程序的能力。

JDK、JRE、JVM

包含关系
alt text
alt text

安装与卸载环境

卸载jdk:

  1. 删除java安装目录
  2. 删除Java_HOME
  3. 删除path里关于java的目录
  4. cmd进入命令窗口,输入java -v,查看是否删除。

安装jdk:

  1. 百度搜索jdk8,下载对应32位或64位,windows或者Linux。
  2. 下载完成,双击安装jdk。
  3. 开始安装,点击下一步,选择安装路径。建议不要放c盘,自己在起停牌新建目录,并记住安装路径,后续配置环境变量要用到。
  4. 配置环境变量。
    1. 我的电脑->高级系统设置->环境变量->系统环境变量,
    2. 新建,JAVA-HOME,粘贴路径。
    3. 配置path变量。
  5. cmd进入命令窗口,输入java -v,查看是否安装成功。

HELLO,WORLD!!!

  1. 新建一个目录,用来存放代码
  2. 在目录里,新建文件,改名为Hello.java
  3. 写代码。
public class Hello(){public static void main(String args[]){System.out.print("Hello,World!");} 
}
  1. 编译。在该目录下打开命令窗口。
    输入javac Hello.java ,没有出现问题。
    目录下出现新文件Hello.class。
  2. 运行。输入java Hello,出现运行结果Hello,World!

可能出现的问题:

  1. 代码段单词大小写出错。Java是大小写敏感的
  2. 尽量使用英文。
  3. 文件名与类名一致。首字母大写,养成代码书写习惯。
  4. 符号使用了中文,如括号分号等

java运行机制

编译型和解释型,编译型先全部编译再执行,解释型,编译部分执行部分,再编译部分执行部分。
java文件先编译成class文件,再在虚拟机jvm里进行代码检查,编译执行。
Java文件运行是两种都有的。

idea安装与使用

不想写了。

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

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

相关文章

多元时间序列分析统计学基础:基本概念、VMA、VAR和VARMA

多元时间序列是一个在大学课程中经常未被提及的话题。但是现实世界的数据通常具有多个维度,所以需要多元时间序列分析技术。在这文章我们将通过可视化和Python实现来学习多元时间序列概念。这里假设读者已经了解单变量时间序列分析。 1、什么是多元时间序列? 顾名思义,多元时…

wqs二分

wqs二分 用来处理一类带有限制的问题,如恰好选 \(k\) 个,本质是通过二分来规避这个选取数量的限制。 使用前提:原问题具有凹凸性。设 \(g_i\) 表示选 \(i\) 个物品的答案,那么所有 \((i, g_i)\) 点组成一个凸包,满足 \(g(k)\) 单调。 这类题目通常有以下特点:如果不限制选…

IDEA Sonar 扫描

1. 修改SonarQube-7.7\conf\sonar.properties数据库配置2. 启动SonarQube-7.7\bin\windows-x86-64\StartSonar.bat,打开 localhost:9000,账密 admin / admin3. pom文件配置:<profiles><profile><id>sonar</id><properties><sonar.host.url…

[AGC052B] Tree Edges XOR

好题,可以直接作为套路记录一下。 [AGC052B] Tree Edges XOR 题目大意: 给你一棵树,有奇数个点,每个边有边权 \(w_i\)。每次你可以选出一条边,将和这条边的所有相邻的边都异或这条边的边权,问你能否得到最终状态(操作次数不定)。 思路: 首先,上来会发现每次操作影响的…

[JVM] 应用诊断工具之java命令

0 序本章对java命令的使用、最佳实践进行全方位的总结。1 java命令 1.0 场景:查看版本方法1# java -version java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)方…

洛谷 P1127 词链——题解

洛谷P1127题解传送锚点摸鱼环节 词链 题目描述 如果单词 \(X\) 的末字母与单词 \(Y\) 的首字母相同,则 \(X\) 与 \(Y\) 可以相连成 \(X.Y\)。(注意:\(X\)、\(Y\) 之间是英文的句号 .)。例如,单词 dog 与单词 gopher,则 dog 与 gopher 可以相连成 dog.gopher。 另外还有一…

引领敏捷潮流:首届中国Scrum大会即将揭幕

中国「首届Scrum大会」将于2024年8月17日在上海大华虹桥假日酒店盛大召开。在全球数字化转型的浪潮中,敏捷已成为企业脱颖而出的关键。本次大会汇聚了Scrum领域的顶尖专家、实践者及企业领袖,共同探讨AI时代下的敏捷(Agile in the AI Age),深入探索智能时代的敏捷路径,掌…

解锁数学之美:VuePress博客如何优雅地呈现复杂公式

聊聊如何让 VuePress 显示数学公式块。聊聊如何让 VuePress 显示数学公式块。 ‍ 什么是数学公式块 如果你还不了解,可以先看看我的 Markdown 教程——Markdown 与数学公式。 ‍ ‍ 安装依赖 相关插件有很多,我这里选择的是 markdown-it-mathjax3​: npm i markdown-it-math…

【攻防】一个关于内网渗透过程的小技巧

在我们打攻防进行内网渗透的过程中,很多时候需要去收集内网的密码字典再对内网主机进行批量的密码喷洒。 这里密码获取的手段有很多,例如: 1、mimikatz抓取入口主机密码 2、翻查入口主机中关于密码的文件(例如数据库密码) 3、web系统的密码 4、自己构造目标的密码字典(xx…

matlab求解线性规划问题

在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支--数学规划,而线性规划(LinearProgramming,LP)则是数学规划的一个重要分支。本章会介绍线性规划模型与matlab求解 目录一、线性规划的标准形二、linpro…