Java学习笔记 0、计算机相关知识了解

简介: Java学习笔记 0、计算机相关知识了解

一、计算机基本知识


1、认识CPU


     早期cpu由运算器、控制器组成,之后随着ULSI技术发展,cpu芯片增加了其他逻辑功能部件,cpu开始变得越来越复杂,基本部分包含运算器、cache缓存、控制器三个部分,称为中央处理器。


cpu中的计量单位是赫兹。


1khz=1024hz

1mhz=1024khz

1Ghz=1024mhz

CPU中的核实现指令的读取和执行的部分。



2、认识内存


内存(RAM):内存读取速度比硬盘快10倍,是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的。内存的运行决定计算机整体运行快慢的程度。


计算机执行时,操作系统会将运算数据从内存调到CPU中进行运算,当运算完成之后,CPU将结果传送出来。

单位是比特或字节,在计算机中最基本的是字节。


1字节=8比特

B


二、三大定律


摩尔定律:英特尔创始人之一戈登-摩尔(Gordon Mooore)提出,价格不变的情况,每隔18-24个月会增加一倍集成电路上可容纳的元器件数量,也就是说同样的价格过了18或24个月以上,买到机器的性能会高出一倍。


安迪比尔定律:阐述硬件厂商与软件厂商的关系,硬件设备的提升,也会使软件公司开发出更庞大、更消耗资源的软件,与此同时会将硬件提升的性能消耗掉。


反摩尔定律:是Google的前CEO埃里克.施密特提出的,若是一个IT公司现阶段卖出与18个月之前同样多的产品,那么营业额就会降低一半,这种则称为反摩尔定律。其定律逼迫所有硬件设备公司要赶上摩尔定律所规定的更新速度,也是十分苦逼的。



三、IT两大鼻祖


两位鼻祖介绍


艾伦.图灵:计算机科学和人工智能之父,相关电影《模仿游戏》可以去看下。


冯诺依曼:计算机之父和博弈论之父。


各自做出贡献:计算机的基本概念属于图灵,冯诺依曼的基本作用是使世界认识了由图灵引入的计算机基本概念



图灵机与图灵奖


图灵机:1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机。将人们使用纸笔进行数学运算过程进行抽象,由一个虚拟的机器来替代人类进行数学运算。


图灵奖:名称取自阿兰・麦席森・图灵,奖励对计算机事业做出重要贡献的人,一年仅授予一名计算机科学家。图灵奖也是计算机领域的国际最高奖项,誉为计算机界的诺贝尔奖。


中国人姚期智2000年获得图灵奖,至今唯一华人学者,他教的班级就叫做姚班。


四、万维网


万维网


万维网(World wide web):环球信息网,也称Web。其发明者:蒂姆.伯纳斯.李,是无数个网络站点和网页的集合,在一起构成了因特网最初要的部分。它实际上是多媒体的集合,是由超级链接连接而成的,我们一般在浏览器上上网观看的就是万维网内容。


万维网分为web客户端以及web服务器程序。


统一资源定位器(URL):通过超文本协议(http)获取资源并传送给用户,可通过点击链接虎丘。



万联网、因特网、互联网的相包含关系


互联网包含因特网,因特网包含万维网。


看一下两种架构:


B/S(browser server):通过浏览器来与网路服务器交互获取资源。

C/S(client server):通过桌面客户端与服务器进行交互。


五、windows下的常用命令


dir:查看当前下的目录。


md 名称:创建文件夹 (make direction)。


cd 目录:进入指定目录,若是当前盘符是C盘,想要进到D盘的某个文件中,首先输入如D:进入到d盘了之后再cd d盘路径。


cd.. :返回上一层目录。


cd/ :直接回到最初盘符位置如:D:\。


echo 内容>1.doc:创建1.doc在当前目录下将内容写到1.doc中。


del 1.doc:删除当前目录下的1.doc。


del *.txt:删除以txt结尾的文件。


rd 文件名 删除空的文件目录。


如何删除不为空的文件?


首先使用del 文件名,输入Y,此时就清空了该文件,然后在使用rd 文件名,删除文件夹。


六、各类语言及应用


第一代:机器语言


第二代:汇编语言 使用助记符来表示


第三代:高级语言



面向过程/对象的语言:


c,Pascal,Fortran 面向过程

c++ 面向过程,面向对象

java 跨平台的纯面向对象的语言

.NET跨语言平台

Python,Scala … 面向对象


应用方向:


底层linux内核,libray部分c语言(开发效率不高,但是运行快),框架使用java语言

Javascript是解释语言(前端)与python都是轻型语言,

Java主要霸占web开发

Objective-C 开发苹果的语言

MATLAB 用于做图表的

效率排行:c/c++



七、各种进制数


四个进制介绍

计算机中包含二进制、八进制、十进制以及十六进制


二进制(binary):0-1,满2进1,以0b或者0B开头,例如:0b110,表示数字6。 (4+2)


八进制(octal):0-7,满8进1,以数字0开头表示,例如061,表示数字49。(6*8+1)


十进制(decimal):0-9,满10进1,与我们的日常生活相关联,如1,20,30。


十六进制(hex):0-9及A-F,满16进1,以0x或0X开头表示,例如:0x21,表示33。(2*16+1)


A-F表示数字10-15,由于是16进1,所以字母只表示到F。注意:A-F不区分大小写,a与A在十六进制中表示相同含义,例如:0xbA,表示为186。(11*16+10)

扩展:上面只是列举了常用的进制数,还有三进制,四进制,七进制等等,规则也与上面相同,三进制就是逢三进一,四进制就是逢四进一,只不过这些进制在生活中不太实际用得到。



原码、反码、补码

二进制、机器数


在计算机中使用二进制来表示的数就叫做这个数的机器数,计算机底层就是使用的机器数。


机器数:机器数是带符号的,使用二进制表示,如何区分是正数还是负数呢?通过在最高位存放符号,若这个数是正数,最高位为0;若是负数,最高位为1。


     首先我们使用8位二进制表示一个十进制数,例如:十进制正数10转为二进制数为00001010,十进制负数-10转为二进制数则为10001010。他们的最高符号位使用0、1表示正负数。


     接下来介绍一下原码、反码、补码,正数与负数对于这三个码的规则都不相同。


正数:原码、反码、补码都相同

负数:原码就是本身;反码就是在原码基础上最高位不变,其余位都取反;补码就是在反码基础上加1。、

     此时我们会发出疑问,为什么会存在反码,补码呢,我们使用原码不就可以计算了嘛?在计算机底层若是使用原码计算会导致最后结果有问题,因为其考虑数字本身还需要考虑符号位参与运算。


转换问题:


负数的原码转补码:除最高位取反,加1

负数的补码转原码:除最高位取反,加1

负数的反码转补码:末位加1

负数的补码转反码:末位减一

负数的原码转反码:除最高位取反

负数的反码转原码:除最高位取反

重要说明:计算机底层是使用补码形式来存储数据的。



实际举例,通过使用8位字长来举例


若是通过符号位运算的话,那么机器就只有加法而没有减法了,这样使得计算机运算设计更加简单。我们来看下面例子:


①此时阶段没有出现反码,只有原码情况下:


1-1=1+(-1)=[00000001]原+[10000001]原=[10000010]原=-2


原码相加后此时就会出现问题了,最后结果为-2。这显然是不对的,紧接着出现了反码。


②解决原码做减法的问题此时出现了反码,情况如下:


1-1=1+(-1)=[00000001]原+[10000001]原=[00000001]反+[11111110]反
=[11111111]反=[10000000]原=-0


结果真值正确,但是其符号位却有问题,从人的眼光来看+0与-0不都一样嘛,若是机器码中0包含符号就会有两个编码如:[00000000]原与[0000000]原。针对于这样的问题出现了补码。


③解决符号问题以及0的两个编码问题出现了补码,情况如下:


1-1=1+(-1)=[00000001]原+[10000001]原=[00000001]反+[11111110]反=[00000001]补+[11111111]补
=[100000000]补=[00000000]补=[00000000]原=0 //注意前面带有1的不在计算机的字长中,正数的补码就是原码,则最终结果为0


最终省去不在计算机字长的1,结果为0,解决了以前使用反码计算得到-0的结果。



上面列举了出现反码与补码的原因,解决了符号问题与0的编码问题,以及最终通过补码做加法运算成功取值到了0。之前在上面说了在计算机底层是使用补码来存储数据的。


0在计算机底层通过补码表示:[00000000]补

那么对于8位字长的二进制,正数的话最大也就只有127,[0111111]原,又正数的原码转补码不变,还是[01111111]补,结果为127。


接着我们探讨负数最小会是多少,在这里先明确说最小负数使用补码表示是-128,怎么算的呢?如下:


-1-127=(-1)+(-127)=[10000001]原+[1111111]原=[11111111]补+[10000001]补=[1000000]补


按常理来说-1-127=-128,这里通过补码计算得到[10000000]补,这不是-0吗,实际上就是使用以前的-0,[10000000]补来表示-128。并且需要说明的是这个特殊补码表示的的-128并没有原码与反码。


总结:8位的原码、反码、补码取值范围


原码:[-127,127]

反码:[-127,127]

补码:[-128,127] 包含一个最小值。


八、职业发展


博客园文章(别人写的笔记可以看一下):《程序员跳槽全攻略》读书笔记


若是我们的目标是CTO(Chief Technology Officer,首席技术执行官),发展路线大致是这样:应届生----->初级程序员----->小组主管----->部门经理----->总监----->CTO。


挣钱的四种形式:帮别人挣钱(打工);为自己挣钱( SOHO);雇比人挣钱(企业主);让钱自己挣钱(投资)


互联网公司的职业发展图如下:




参考资料

[1]. 正负数的源码、反码、补码相互转换


[2]. 原码、反码、补码 详解!不懂的请看过来!


[3]. 尚硅谷_Java零基础教程(宋红康主讲)


相关文章
|
3月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
3月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
6月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
357 5
|
6月前
|
人工智能 Java 开发者
【Java实例-简易计算机】使用Java实现简单的计算机案例
一个简单的Java案例——“简易计算器”,帮助编程新手快速上手。通过实现用户输入、基本逻辑运算和结果输出,学习者可以掌握变量声明、Scanner对象使用、控制流语句等关键知识点。文章分为设计思路、关键知识点、完整代码和测试运行四个部分。
192 9
【Java实例-简易计算机】使用Java实现简单的计算机案例
|
9月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
160 13
|
9月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
378 17
|
9月前
|
开发框架 Java 开发工具
【Java全栈学习笔记-U1-day01】Java介绍
本笔记整理了Java学习的基础内容,涵盖程序理解、Java语言特性、JDK安装与配置、Java程序开发工具及编写步骤。重点介绍了Java程序的基本结构、编译和运行过程,以及输出语句的使用。通过实例演示了IDEA创建Java程序的方法,并强调了编码规范和注意事项。适合初学者复习和交流学习。 主要内容: 1. 理解程序:计算机组成、程序定义。 2. 简介:Java语言特点、技术平台、JDK作用。 3. 编写Java程序:编写、编译、运行步骤,基本结构。 4. 输出语句 5. DEA使用:新建工程、保存位置、文件介绍、新建类。 6. 扩展:注释、代码规范、大小写敏感、缩进等。
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
227 0
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
155 0
|
Java 程序员 开发工具
java学习笔记
java学习笔记
118 0