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零基础教程(宋红康主讲)


相关文章
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
1月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
45 0
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
2月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
78 2
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
2月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
44 0
|
2月前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
46 0
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
4月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
62 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
4月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
172 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
下一篇
DataWorks