19、Java Core之字节码与内部类原理与操作系统原理 二
字节码解释如下:
下图右边红字 讲 的是 ,如何构造内部类对象。
上面的程序,如果把 static int i = 100; 去掉呢? 那就是访问外部类的非静态属性了。
和上面小程序的字节码的主要区别如下:
所以下面总结一下:
再看看匿名内部类
然后看字节码(还是那个学习的套路)
编译完之后是这么几个文件:
Hello$1 就是匿名内部类。
《init》 是构造器,
先看看Hello的字节码
再看看 Hello$1 的字节码、对Hello$1 反编译一下。 javap -verbose Hello$1
第一句话就是调了A类的构造器
20、21的泛型先没看
22、Java core之计算机组成原理与JAVA线程
操作系统是用来屏蔽底层硬件的。
CPU 有一堆指令,一个指令有一个操作码和操作数,一个操作码指定了CPU所操作的东西的类型,后面有可能是操作数也有可能指向下一条指令的地址。(这段话有点模糊,有个感性认知就行)
操作系统是用来屏蔽底层硬件的。管理CPU和进程之间的关系,内存的分配,cpu如何跟IO设备进行中断处理,这些都是由操作系统来做。
每个硬件上都有一个驱动程序
在操作系统之上是什么呢? JVM Java撒。scala可以调Java 。
Scala是函数式编程的语言,完全面向对象的语言,他没有基本数据类型。
js 就是 函数式语言,可以把函数当作参数传进去,Java只能传对象(jdk 8新增的特性就是。)
从Scala可以引申出2个大数据框架,spark和Kafka。
看看大数据的思路
数据存储,什么是结构化数据(DBMS mysql的),什么是半结构化数据(例如html的),什么是非结构化数据(一团乱,一堆文本)。
这里听一耳朵。
插入:看一个常量值
泛型是在这节课结束的,泛型用的最多的就是代码的复用。
泛型 字面记忆:做相同的事情,但是有不同的类型。
再来看线程
时间片:
在一次时钟周期里,把这次时钟周期分成一个个微小的时间片,一般是几微秒一个时间片,然后平分给每个核心线程,核心线程再平分给每个外部进程,外部进程再把时间片分给内部进程里的每个线程,线程拿到东西之后进程上下文切换,切换了之后就通过核心线程来执行线程里的内容,执行完之后就把线程销毁,没执行完就挂起继续时间片分配。
这段话 目前听的有点模糊,后续熟悉里操作系统再来看。
看看线程执行的现象