这是本人的第一篇回顾文,从事多年了,但是技术一直比较菜,杂七杂八的会很多点,但是不精,想要让自己清醒一点,萌发了发文串一串各个知识点的想法,文章专属自身做总结回顾,用自己的语言转述一些自己的理解,所以肯定有些错误,如果你是大牛又愿意屈尊看一眼,望有缘指正,如果是新手或者是刚接触想学习的也可以顺便看那么一眼,提出你的建议,或许会有认知的碰撞,谢谢。

小卷来到了魔都,看着川流不息的人群,想想电视剧中写字楼的办公场景,高呼一声:我要混出个样来!可是面对兜里仅有的200块,还是只能先在薯片厂搬砖,终于在这天,小卷看到了一则广告:JAVA高级程序员培训,让你的人生……,小卷决定去咨询

计算机程序工作过程

培训中心的老师得知来意就问小卷,你学校里面学过计算机语言吗?没有!小卷回答很干脆,我零基础。没关系,我们这个班就是针对零基础的,只要你识字!

我们先说说程序是干啥的,计算机程序就是替我们干活的一个工具,比如让你做数学题,3+2,7-1,你张口就来,可比计算机快多了(咱不抬杠哈,说的是从人的提出到人对结果的摄入,不是比计算速度),就说如果是这么简单的事你肯定不愿写一个程序来做,那么如果让你做庞大的计算,20万道四则混合运算,你肯定愿意写一个程序,秒秒钟就算完了。

就拿你在薯片厂工作来说,工厂有仓库,有车间,车间有流水线,从仓库(硬盘)用车(总线)运一车土豆到车间(经过的各个门是各设备的IO),然后将土豆放到流水线传送带(内存),经过切片机切片(CPU处理)后再运输到仓库保存。

你看你在厂里面是负责把土豆搬到机器上的,如果来我们这里学习,我们编写的程序就是解决怎么操纵土豆从仓库出来,分配到哪条流水线,流水线生产空间配置多大,切片机切片方式,薯片包装方式等一系列问题的。

小卷听得热血沸腾,当即决定把卡里仅有的钱交了培训费。

入坑扫盲

小卷开始了第一节课,自然是java的发展历史,其他有的没有就没在意了,比如java的各种特点、市场份额等等,一句话:java牛,比较印象深刻的是说到java跨平台是一大特点,当然也不只是java跨平台,接下来,小卷就开始做笔记了
        
        我们常说计算机机器语言是基于0101编写的,为什么呢?因为根本上到了电信号的时候,可以通过高电位、低电位来区分,或者有信号和无信号来区分(更深层的原理我也说不详细,可以去看模电、数电的知识了),从自然规律形式来看,这契合了我们中国人说的万物分阴阳,一组对立关系是很简单,容易识别的特征。


        那么我们的java,c++,python,php等等在计算机语言中称为高级语言,高级语言主要用来描述逻辑,这个逻辑用于模拟人的生产生活活动,要想把高级语言表达的内容翻译成低级语言(也就是机器语言0101),中间是要经历很多的,那么中间这个很多又是一块很大的研究对象(对不起,我胆怯了,让有志之士去研究吧),但是我们知道一点,我们的高级语言是运行在计算机上的,而计算机上有操作系统,操作系统就去负责勾兑(哦,应该说翻译)这个操作系统就是我们常说的平台,所谓跨平台就是同一段java代码编写好,编译后,可以运行在window操作系统,linux操作系统等等,比如c语言在window操作系统下编译好的在linux不能用,这就叫不跨平台;

说到这里,可以感觉到一点,这个编译是一个重要的环节,一段c语言代码在window下编译及运行的时候会依赖对应的连接文件,dll文件等(这里我纯属瞎编,因为我不懂c,就坊间这么一听说,所以你也就坊间这么一听,大概这意思),到了linux下那些依赖的文件有所不同,所以运行不起来,但是java呢比较奸,在自己和操作系统中间请了一些代理人,代理人1负责和window勾兑,代理人2负责和linux勾兑,但是这些代理人都是他自己花钱雇的,谁花钱听谁的,所以同一段代码在这些代理人眼里都是一样的,但是每个代理人和对应操作系统之间能通话的,这样沟通就无障碍了


        所以java的编译和运行需要一些代理人,这些代理人的称呼叫java虚拟机,虽然叫虚拟机,但是其实比较勉强,因为相对VMware这些正牌虚拟机来说,他能提供的支持太少了,只是姑且这么叫。

​​​​​​​        ​​​​​​​        

这里有几个概念:jdk,jre,jvm

jvm:就是我们上述的java虚拟机,jvm加载运行的是.class文件,也就是字节码文件

jre:java的运行环境,包含jvm,因为我们运行java程序需要提供一个进程入口,也就是说我们用java -jar来运行java程序的时候是依赖这个环境。

jdk:是java程序开发包,比如我们编写的代码需要编译成字节码就需要用到里面的编译工具,例如我们写了一个.java文件,就需要用到开发包里面的javac工具编译成.class文件,我们下载的jdk包里面就包含了jre

Look!这就是我们下载的jdk包,里面有jdk和jre,其实,jdk的里面还有一个jre

​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

小卷疑惑了,虚拟机?按字面意思,就是虚拟了一台机器咯!

没错,因为他本质是一个软件,所以是虚拟机,但是我们常说的虚拟机有很多种,他们是有差别的
        正牌虚拟机:我有虚拟cpu、内存、硬盘、网卡,我能很好的假装自己是一台物理机
        java虚拟机:我主要负责类加载、解释执行、内存管理、垃圾回收,我只对java负责

所以说,Java的虚拟机(JVM)只是基于java程序运行的专用虚拟机,不是普遍意义上的虚拟机,想深入研究可以学习类加载机制,解释器,算法,内存模型,垃圾回收算法等等

这一块主要讲述了几件事:

虚拟机如何把你的代码读取并解释的,简单说就是分解,分解的前提就是先定义特征,比如静态数据,方法栈,调用指针,计数器等的协作配合,比如A类中有那些方法,这些方法也是被解释的一种对象,先标记起来,方法之间调用关系入栈出栈也被标记起来,这些被标记的都是虚拟机管理的资源,然后就傻傻的按步骤一步一步的走,将高级语言复杂的逻辑简单化,代价就是不停的重复,谁叫我cpu的计算速度快呢,勤能补拙,我用多出几万倍的步骤重复做简单的事情来达到你们高级思维的模拟。

虚拟机的内存是怎么管理的,简单说就是分代,什么年轻代,老年代,元空间,把没有依赖的对象干掉来释放更多的运行内存,该干掉谁?当然是没有利用价值的,没有引用就是没有利用价值了,但是暂时有引用的我怎么评估未来有多少利用价值呢,打分!就是按回收次数等级年龄,越久没被干掉就说明你越有用,磨在转,驴不能杀,这其中牵扯的就是各种回收的算法,什么标记清除算法那一堆,另外收集的时候是不是并行的这些策略来管理。

请看下图,这是一个jvm的概要点:

小卷倒吸了一口凉气,则还只是概要,太难学了……

老师说道:那可不,几乎每一个点都可以讲很多内容出来,但是当下有个印象就行了,我给你们说这些,只是为了先画个饼,说明以后你们要学的很多,如果想提升水平,可以继续报读我们的二期,三期……课程(我仿佛听到了不断被割韭菜的声音),不过,千里之行始于足下,明天开始我们从基本的东西学起,因为你们现在的课程大纲不包含这些详解,你们的课程大纲就是学学什么叫对象,会写get,set,会照着spring架子写个增删改查出来就行了。

下一篇:第二回 小卷学语法

Java内容整理回顾——第一回 小卷入坑记相关推荐

  1. java面试整理(一)—— 小问题总结

    1.&和&&的区别 在java中,&和&&都可以是逻辑运算符一般这个问题都是问的&&的短路运算符这个点, 也就是说a&& ...

  2. MySQL8.0.11借助java程序实现增删等功能(跳坑记,功能待添加)

    网上有的那些内容我就不再赘述了,只说挡住我的几个"巨坑". (注意,以下内容仅适用于MySQL8.0级及以上版本,JDK8及以上版本,网上的例子随影的版本大多很陈旧) 一定要安装M ...

  3. 《HEAD FIRST JAVA》第一次回顾和整理

    <HEAD FIRST JAVA>第一次回顾和整理 第一章 进入Java的世界(基本概念) 主要介绍了Java的工作原理,发展简史,程序结构和一些简单的语法.学过其他语言的人表示这章完全没 ...

  4. 01_01 python机器学习_第一章学习内容整理_加载样本数据绘制散点图

    第一章学习内容整理_加载样本数据&绘制散点图 01 常用包说明 python可以解决很多问题,相应解决方案使用的包也很多,不太好记忆. 为了便于记忆,用大白话简单描述一下各个包的功能. # 科 ...

  5. 刷爆了!Java蝉联5次第一,网友:最强王者!附70k架构师Java学习路线

    图片来源:视觉中国 最近在知乎上,看到一位蚂蚁金服的Java工程师分享,985硕士,校招就拿到了30w的offer.群内也有群友分享,自己通过三年的奋斗,终于年薪70w.这让很多同龄人羡慕,但是羡慕的 ...

  6. 第十二届蓝桥杯 2021年省赛真题 (Java 大学A组) 第一场

    蓝桥杯 2021年省赛真题 (Java 大学A组 ) #A 相乘 朴素解法 同余方程 #B 直线 直线方程集合 分式消除误差 平面几何 #C 货物摆放 暴力搜索 缩放质因子 #D 路径 搜索 单源最短 ...

  7. 2021年JAVA 精心整理的常见面试题-附详细答案【持续更新~~】

    先罗列本篇文章包含的Java 常见面试的主题: 一.Java基础面试题 二.Java 集合框架 三.Linux常用指令 四.MySQL基础面试 多线程与多进程面试 常见设计模式 JVM 底层 关注我们 ...

  8. 各大公司java面试整理对应问题博客整理

    各大公司java面试整理对应问题博客整理! 阿里 分库分表 数据库中间件 MyCAT是一个强大的数据库中间件,不仅仅可以用作读写分离,以及分表分库.容灾管理,而且可以用于多租户应用开发.云平台基础设施 ...

  9. 谁说 Java 要过时?2017 年 Java 大事件回顾!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 在过去的一年中,Java 历经了许多变化.在今年年初,Java EE 处于一个不确定的状态, ...

最新文章

  1. 主窗体界面设计及功能实现
  2. 数据结构-直接插入排序讲解(C语言)
  3. thinkphp后台_【帮转】PS4中文社区php后台工程师志愿者/实习生招募
  4. 机器阅读理解 / 知识库 / 深度学习 / 对话系统 / 神经机器翻译 | 本周值得读
  5. nfc卡模式与标准模式_渠道如何标准化管理,建立新的销售模式,提升业绩完成率...
  6. [BZOJ1135][P3488][POI2009]LYZ[线段树+Hall定理]
  7. 细聊冗余表数据一致性(架构师之路)
  8. [android源码分析]sdp Server的启动分析
  9. sakai mysql_一个完整的Sakai安装步骤
  10. LM75AD温度传感器读写
  11. 基于Hadoop平台使用MapReduce统计某银行信用卡违约用户数量
  12. Word中设置三栏式表格
  13. 【问链财经-区块链基础知识系列】 第二十三课 一张纸搞定B2B供应链金融产品设计思路
  14. java扫雷初级代码_高分求一个运行在Eclipse环境下的java 扫雷游戏的初级代码 越小越好 越短越好 运行就好,就是初级就好了,...
  15. 切身体验苹果Reminders的贴心设计
  16. 红星美羚育儿经:宝宝上火,是奶粉的祸?
  17. 在c语言中 函数的作用是什么,C语言程序中函数的定义
  18. 把手机自带计算机软件,如何删除手机自带软件,小编告诉你手机自带软件如何删除...
  19. windows 2008 r2 sharepoint 2007 文档库 在windows资源管理器打开问题
  20. 我的奋斗之黑马第一天

热门文章

  1. XP的楼梯(跳楼梯)
  2. 扫描车牌是什么神经网络,卷积神经网络车牌识别
  3. 2021全球与中国PCIe芯片市场现状及未来发展趋势
  4. Android学习——UI高级组件三
  5. 视觉Transformer研究的关键问题: 现状及展望
  6. day04 RabbitMQ基本使用
  7. 微信公众号ios端,滚动条不隐藏解决办法其中之一
  8. 怎么科学开奶,堵奶怎么办?
  9. linux管理口连交换机灯不亮,交换机端口指示灯不亮了怎么办?
  10. 浅谈IT行业加班现象