5.JVM-字节码
1. Java 字节码代码编译结果从本地机器码转变为字节码,是存储格式发展的一小步,确是编程语言发展的一大步。
2. 字节码文件剖析我们从一段简单的代码来入手
1234567891011public class MyTest01 { private int a = 0; public int getA() { return a; } public void setA(int a) { this.a = a; }}
我要要看一下 java 文件对应的 class 文件的结构,定位到工程的 out\production\classes 下边执行:
javap -c com.cuzz.jvm.bytecode.Mytest01
12345678910111213141516171819202122232425警告: 二进制文件com.cuzz.jvm.bytecode.Mytest01包含com.cuzz.jvm.bytecode.MyTest01Compiled from ...
Node.js中使用MongoDB数据库
组件
组件 (Component) 是 Vue.js 最强大的功能之一
组件可以扩展 HTML 元素,封装可重用的代
组件注册全局注册
Vue.component(‘组件名称’, { }) 第1个参数是标签名称,第2个参数是一个选项对象
全局组件注册后,任何vue实例都可以用
组件基础使用1234567891011121314151617181920212223242526272829303132<body> <div id="app"> <button-counter></button-counter> <button-counter></button-counter> <button-counter></button-counter> </div> <script type="text/javascript" src="js/vue.js"></script> ...
4.JVM-类加载器
1. ClassLoader文档:https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html
我们知道类的加载是双亲委派机制,我们先来看一个例子
12345678910public class MyTest15 { public static void main(String[] args) { ClassLoader loader = MyTest15.class.getClassLoader(); System.out.println(loader); ClassLoader loader1 = loader.getParent(); System.out.println(loader1); ClassLoader loader2 = loader1.getParent(); System.out.println(loader2); }}
输出
123sun.misc. ...
3.JVM-类加载机制深度解析
1. 类加载机制在如下几种情况下,Java 虚拟机将结束生命周期
执行了 System.exit() 方法
程序正常执行结束
程序在执行的过程中遇到了异常或则错误而异常终止
由于操作系统出现了错误,导致 Java 虚拟机进程结束
Java 程序对类的使用方式可以分为两种:
主动使用
创建类的实例
访问某个类或接口的静态变量,或则对该静态变量赋值
调用类的静态方法
反射(如 Class.forName(“com.cuzz.Test”))
初始化一个子类
Java 虚拟机启动时被标明为启动类的类
被动使用
所有的 Java 虚拟机实现必须在每个类或接口被 Java 程序首次主动使用时才初始化他们
我们来看一段代码
12345678910111213141516171819public class MyTest01 { public static void main(String[] args) { System.out.println(Child1.str); }}class Parent1 { ...
2.JVM-类加载机制
概念:
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。
类加载器JVM预定义有三种类加载器,当一个 JVM启动的时候,Java开始使用如下三种类加载器。
Bootstrap ClassLoader: 它是根类加载器,由c++编写,JVM启动时加载它,然后它加载另外两个类加载器,它还会加载$JAVA_HOME中jre/lib/rt.jar里所有的class。
Extension ClassLoader: 扩展类加载器,负责加载$JAVA_HOME中jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包
App ClassLoader: 应用类加载器,一般我们用的类都是由它加载的,当然我们可以自定义类加载器,此时就是以它为父类加载器。
自定义类加载器: 可以通过继承 ClassLoader并重写findClass方法来实现。
1. 类加载过程JVM将类加载过程分为三个阶段,装载,链接,初始化 ...
1.JVM-运行时数据区
JVM体系结构预览
Class Loader类加载器
负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,值与他是否可以允许,则由Execution Engine决定
Execution Engine执行引擎 负责解释命令,提交操作系统执行
1. 运行时数据区程序计数器PCR 每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,也即将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。**(因为JVM执行代码是一行一行的执行,所以需要计数器来记录当前执行的行数)**
栈(包括虚拟机栈、本地方法栈)栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就Over,生命周期和线程一致,是线程私有的。基本类型 ...
Vue全家桶之常用特性
表单基本操作通过V-model获取单选框、复选框、下拉框、文本框中的值
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 <style type="text/css"> form div { height: 40px; line-height: 40px; } form div:nth-child(4) { height: auto; } form div span:first-child { display: inline-block; width: 100px; } </style></head><body> <div ...
Vue全家桶之Vue基础(2)
Vue中指令**v-bind **
v-bind 指令被用来响应地更新 HTML 属性
v-bind:href 可以缩写为 :href;
12345678910111213141516171819202122232425<body> <div id="app"> <a v-bind:href="url">百度</a> <a :href="url">百度1</a> <button v-on:click='handle'>切换</button> </div> <script type="text/javascript" src="js/vue.js"></script> <script type="text/javascript"> /* 属性绑定 */ ...
Vue全家桶之Vue基础(1)
1. Vue概述Vue:渐进式JavaScript框架
声明式渲染→组件系统→客户端路由→集中式状态管理→项目构建
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架
Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合
##2.Vue基本使用
2.1传统开发模式对比原生JS之HelloWorld基本步骤
123456<div id="msg"></div><script type="text/javascript">var msg = 'Hello World';var div = document.getElementById('msg');div.innerHTML = msg;</script>
Jquery之HelloWorld基本步骤
123456<div id="msg"></div><script type=&q ...
Express框架(包括Route组件使用)
前言:第三方模块 router功能:实现路由使用步骤:
获取路由对象
调用路由对象提供的方法创建路由
启用路由,使路由生效
123456789const server = http.createServer();const getRouter = require('router')const router = getRouter();router.get('/add', (req, res) => { res.end('Hello World!')}) server.on('request', (req, res) => { router(req, res)})
##1.Express框架
1.1 Express框架是什么Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。我们可以使用 npm install express 命令进行下载。
1.2 Express框架特性
提供了方便 ...





