Title: 编程入门

GitHub: BenCoper

Reference: 尚硅谷-2019

Study: 文字版+视频+实战(第一个自学的网站)

Explain: 文末附带Java学习视频以及项目实战

1.简介

计算机包括硬件(hardware)和软件(software)两部分。硬件包括计算机中可以 看得见的物理部分。而软件提供看不见的指令。这些指令控制硬件并且使得 硬件完成特定的任务。

  • 程序设计

定义:创建(或开发)软件。软件包含了指令,告诉计算机做什么。

应用场景:软件遍布我们周围。除了个人计算机,飞机、汽车、手机甚至烤 面包机中,同样运行着软件。

  • 程序设计语言

软件开发人员在称为程序设计语言的强大工具的帮助下创建软件。

2.计算机硬件

总线

硬件

冯·诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯·诺依曼计算机的组 织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。冯·诺依曼 也因此被人们称为“计算机之父”。

中央处理器

  • 中央处理器(Central Processing Unit,CPU)是计算机的大脑。它从内存中获取指令,然 后执行这些指令。

  • 包括:控制单元(control unit)和算术/逻辑单元(arithmetic/login unit)。

控制单元:用于控制和协调其他组件的动作。

算术/逻辑单元:用于完成数值运算(+、-、*、/)和逻辑运算(比较)。

  • 每台计算机都有一个内部时钟,该时钟以固定速度发射电子脉冲。时钟速度越快,在给 定的时间段内执行的指令就越多。速度的计量单位是 赫兹(Hz),Hz相当于每秒1个脉 冲。随着CPU速度不断提高,目前以千兆赫(GHz)来表述。

  • 最初一个CPU只有一个核(core)。核是处理器中实现指令读取和执行的部分。一个多核 CPU是一个具有两个或者更多独立核的组件。可提高CPU的处理能力。

存储设别

  • 内存中的信息在断电时会丢失。那我们可以考虑将程序和数据永久的保存在存储设备上。当计算机 确实需要这些数据时,再移入内存,因为从内存中读取比从存储设备读取要快得多。

  • 存储设备主要有以下三种:

磁盘驱动器: 每台计算机至少有一个硬盘驱动器。硬盘(hard disk) 用于永久的保存数据和程序。

​ 光盘驱动器: CD的容量可达700MB。 DVD的容量可达4.7GB

​ USB闪存驱动器: Universal Serial Bus,通用串行总线。可以使用USB将打印机、鼠标、外部硬盘驱动器连接到计算机上。

内存

比特(bit)和字节(byte)

  • 在讨论内存前,先清楚数据是如何存储在计算机中的。

  • 计算机就是一系列的电路开关。每个开关存在两种状态:关(off)和开(on)。如果电路 是开的,它的值是1。如果电路是关的,它的值是0。

  • 一个0或者一个1存储为一个比特(bit),是计算机中最小的存储单位。

  • 计算机中是最基本的存储单元是字节(byte) 。每个字节由8个比特构成。

  • 计算机的存储能力是以字节和多字节来衡量的。如下:

    千字节(kilobyte,KB) = 1024B

    兆字节(megabyte,MB) = 1024KB

    千兆字节(gigabyte,GB) = 1024MB

    万亿字节(terabyte,TB) = 1024GB

  • 内存(也叫 Random-Access Memory,RAM):由一个有序的 字节序列组成,用于存储程序及程序需要的数据。

  • 一个程序和它的数据在被CPU执行前必须移到计算机的内存中句号

  • 每个字节都有一个唯一的地址。见右图。使用这个地址确定 字节的位置,以便于存储和获取数据。

  • 一个计算机具有的RAM越多,它的运行速度越快,但是此 规律是有限制的。

  • 内存与CPU一样,也构建在表面嵌有数百万晶体管的硅半导 体芯片上。但内存芯片更简单、更低速、更便宜。

输入和输出设备

  • 常见的输入设备:键盘(keyboard)和鼠标(mouse)
  • 常见的输出设备:显示器(monitor)和打印机(printer)

通信设备

  • 计算机可以通过通信设备进行联网。
  • 常见的设备有:
    • 拨号调制解调器:使用的是电话线,传输速度可达56 000bps(bps:每秒比特)
    • DSL(数字用户线):使用的也是电话线,但传输速度叫上面的快20倍
    • 电缆调制解调器:利用有线电视电缆进行数据传输,通常速度比DSL快。
    • 网络接口卡(NIC):将计算机接入局域网(LAN)的设备。局域网通常用于大学、 商业组织和政府组织。速度甚至可达1000Mbps 。
    • 无线网络:在家庭、商业和学校中极其常见。计算机可通过无线适配器连接到局域 网或internet上。

3.计算机发展史上的鼻祖

计算机诺贝尔奖

最近半个世纪以来,世界计算机科学界的重大进步,离不开图灵等人的 理论奠基作用和多方面的开创性研究成果。图灵是当之无愧的计算机科 学和人工智能之父。甚至认为,他在技术上的贡献及对未来世界的影响 几乎可与牛顿、爱因斯坦等巨人比肩。

图灵论文中的“用有限的指令和有限的存储空间可算尽一切可算之物” 理论让当时所有的科学家震惊

美国计算机学会(ACM)的年度“图灵奖”,自从1966年设立以来, 一直是世界计算机科学领域的最高荣誉,相当于计算机科学界的诺贝尔 奖。至今,中国人只有姚期智院士获该奖项。

计算机之父

20世纪最重要的数学家之一,在现代计算机、博弈论、核武器 和生化武器等诸多领域内有杰出建树的最伟大的科学全才之一, 被后人称为“计算机之父”和“博弈论之父”。

计算机基本工作原理是存储程序和程序控制,它是由世界著名 数学家冯·诺依曼提出的。最简单的来说,冯诺依曼理论的要点 是:数字计算机的数制采用二进制;计算机应该按照程序顺序 执行。

同样有着“计算机之父”称号的冯·诺依曼的助手弗兰克尔在一 封信中写到:“……计算机的基本概念属于图灵。按照我的看 法,冯·诺依曼的基本作用是使世界认识了由图灵引入的计算机 基本概念……”

4.操作系统

  • 操作系统(Operating System)是运行在计算机上的最重要的程序,它可以管理和控制计算机的活动。
  • 硬件、操作系统、应用程序和用户之间的关系如下图。

5.万维网

万维网(World Wide Web,www,环球信息网)常简称为Web,发明者蒂姆·伯纳 斯·李。分为Web客户端和Web服务器程序。 WWW可以让Web客户端(常用 浏览器)访问浏览Web服务器上的页面。 是一个由许多互相链接的超文本组成的系统,通过互联网访问。在这个系统中,每个有用的事物,称为一样“资 源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过超文本传输协议(Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源。 www.sina.com

万维网是无数个网络站点和网页的集合,它们在一起构成了因特网Internet最主要的部分(因特网也包括电子邮件、Usenet以及新闻组)。它实际上是多 媒体的集合,是由超级链接连接而成的。我们通常通过网络浏览器上网观看的, 就是万维网的内容

6.Java职业发展与提升

阿里等级划分

常见码农爬上之路

附:Java成长路线图

附:Java学习视频链接(bilibili)

附:Java实战项目推荐(精益求精)

免费版

SSM实现的开发视频考试系统

SSM框架新闻管理系统实战开发教程

基于SSM+layui的汽车出租项目

springboot+layui+mybatisplus+shiro仓库管理系统

springboot+layui+mybatisplus记账本小练习

SpringBoot项目实战:企业项目管理系统

付费版

Swing+MySQL的记账软件

HTML+CSS仿天猫的前端商城

JavaWeb版天猫商城

SSM版本天猫商城

SpringBoot天猫商城

springboot纯前后端分离仓储管理系统

SpringBoot+Vue个人博客系统

微人事vhr--开源版vhr

6.结语

  • 付费版内容酌情购买(目前我自己购买了JavaWeb版天猫商城+个人博客+微人事)--强烈安利一波
  • 免费版来自B站用户贡献(拒绝白嫖下次一定,反正我是....)
  • 越努力越幸运--大家一起加油
  • 我怕挨打--饶过我吧

3000字编程入门--附带Java学习路线及视频的更多相关文章

  1. 从入门到精通,Java学习路线导航

    引言最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. Ja ...

  2. 从入门到精通,Java学习路线导航(附学习资源)

    原文链接:https://blog.csdn.net/qq_42453117/article/details/100655512 引言 最近也有很多人来向我"请教",他们大都是一些 ...

  3. 分享篇——我的Java学习路线

    虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...

  4. java学习路线(好资源大家分享)

    对于入门java将近两年的时间,曾经迷惘过,一直想知道java的具体学习路线,看过了许许多多的java经验分享的帖子,评论,以及其他各种培训机构所谓的学习路线,发现没有一个符合我个人需求的学习路线,根 ...

  5. 【Todo】Java学习路线(方向指导)

    在网上搜了下Java学习路线(关键词:学习,因为众所周知,实践出牛人,在平时工作不怎么深入的情况下,才强调学习的方向的重要性 ^_^) 发现下面知乎这个回答写的真好.mark如下: https://w ...

  6. 【强烈推荐】可能是最适合你的 Java 学习路线和方法

    如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...

  7. Java学习路线【转】

    Java学习路线[转] 第一阶段:JavaSE(Java基础部分) Java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,程序的执行过程,相 ...

  8. 最新java学习路线:含阶段性java视频教程完整版

    最新java学习路线:带阶段性java视频教程版本 第一阶段:Java基础 学习目标: 掌握基本语法.面向对象.常用类.正则.集合.Io流.多线程.Nio.网络编程.JDK新特性.函数式编程 知识点细 ...

  9. 一份最中肯的Java学习路线+资源分享(拒绝傻逼式分享)

    这是一篇针对Java初学者,或者说在Java学习路线上出了一些问题(不知道该学什么.不知道整体的学习路线是什么样的) 第一步:Java基础(一个月左右) 推荐视频: 下面的是黑马内部视频,我比较推荐的 ...

随机推荐

  1. Scarpy框架安装教程

    在一切之前,建议升级pip,如果版本太低,安装会失败 升级pip命令: python -m pip install --upgrade pip 如果上面的命令不能用,用下面这个 easy_instal ...

  2. Selenium的Web自动化测试(送源码)

    8.1  Selenium自动化测试准备 1.Selenium介绍 Selenium是一个Web开源自动化测试框架,页面级操作,模拟用户真实操作,API从系统层面触发事件. Selenium 1.0  ...

  3. UMD: 通用模块规范

    既然CommonJs和AMD风格一样流行,似乎缺少一个统一的规范.所以人们产生了这样的需求,希望有支持两种风格的“通用”模式,于是通用模块规范(UMD)诞生了.

  4. mingster.com

    Good to Great: Why Some Companies Make the Leap... and Others Don'tby Jim Collinshttp://rcm.amazon.c ...

  5. charles添加https支持

  6. -scp Linux之间复制文件和目录

    scp 简介 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速 ...

  7. Flutter Widgets 之 BottomNavigationBar 和 BottomNavigationBarItem

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 BottomNavigationBar 和 BottomN ...

  8. 【快速上手】Git的使用教程

    创建Git仓库 git init 查看当前仓库情况 git status 添加修改 git add (file) or git add . 查看未提交的修改 git diff 撤销提交操作 git r ...

  9. Ubuntu 16.04 apt 国内源

    一.推荐几个 Ubuntu 16.04 国内的 apt 源 1. 阿里源 # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (2 ...

  10. iOS Swift 开发语言之初接触,纯代码创建UIView,UITableView,UICollectionView

    1. 初始化Label设置AttributeString override func viewDidLoad() { let label = UILabel(frame:CGRect(x:,y:,wi ...