09 2020 档案

Test命令--数值测试
摘要:参数 说明 -eq 等于则为真,否则为假 -ne 不等于则为真,否则为假 -gt 大于则为真,否则为假 -ge 大于等于为真,否则为假 -lt 小于则为真,否则为假 -le 小于等于则为真,否则为假 1、-eq num1=100 num2=100 if test $[num1] -eq $[num2 阅读全文

posted @ 2020-09-30 16:25 Eleanor123 阅读(326) 评论(0) 推荐(0) 编辑

堆的核心概述
摘要:一个JVM实例对应一个进程,一个进程对应多个线程。一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 堆是JVM管理的最大一块内存空间,Java堆在JVM启动的时间就被创建,它的大小也就确定了。堆的大小是可以调整的。 《Java虚拟机规范》规定堆可以处于物理上不连续的内存空间,但是逻 阅读全文

posted @ 2020-09-29 19:44 Eleanor123 阅读(141) 评论(0) 推荐(0) 编辑

Test命令--字符串测试
摘要:= 判断是否相等,如果相等为真 != 判断是否不相等,如果不相等为真 -z 判断字符串的长度为0,如果为0则为真 -n 判断字符串长度不为0,如不为0则为真 1、判断字符串是否相等 char1='1ruk' char2='ldjsll' if test $char1 = $char2/; then 阅读全文

posted @ 2020-09-29 19:11 Eleanor123 阅读(547) 评论(0) 推荐(0) 编辑

Test命令--常用文件测试
摘要:判断给出的条件真假,如果为真,它的执行状态为0,否则为非0。 -e判断文件是否存在 -f 普通文件 -L 链接文件 -d 目录 -x 执行权限 -s 判断文件是否是空文件 1、判断文件是否存在 cd bin if test -e f.txt; then echo '文件已存在!'; else ech 阅读全文

posted @ 2020-09-27 19:06 Eleanor123 阅读(911) 评论(0) 推荐(0) 编辑

虚方法表
摘要:在面向对象的编程中,会很频繁的使用到动态分派,如果每次动态分派的过程中都要重新在类的方法元数据中搜索合适的目标的话可能影响到执行效率。为了提高性能,JVM采用在类的方法区建立一个虚方法表(virtual method table)(非虚方法不会出现在表中)来实现。使用索引代替查找。 每个类中都有一个 阅读全文

posted @ 2020-09-12 18:28 Eleanor123 阅读(816) 评论(0) 推荐(0) 编辑

方法返回地址
摘要:方法返回地址存放调用该方法的PC寄存器的值。一个方法的结束,有两种方式:正常地执行完成,出现未处理的异常非正常的退出。无论通过哪种方式退出,在方法退出后都返回到该方法被调用的位置。方法正常退出时,调用者的PC计数器的值作为返回地址,即调用该方法的指令的下一条指令的地址。而通过异常退出的,返回地址是要 阅读全文

posted @ 2020-09-12 18:15 Eleanor123 阅读(863) 评论(0) 推荐(0) 编辑

方法重写的本质
摘要:Java语言中方法重写的本质: 1、找到操作数栈顶的第一个元素所执行的对象的实际类型,记作C。 2、如果在类型C中找到与常量中的描述符号简单名称都相符的方法,则进行访问权限校验,如果通过则返回这个方法的直接引用,查找过程结束;如果不通过,则返回java.lang.IllegalAccessError 阅读全文

posted @ 2020-09-12 17:11 Eleanor123 阅读(540) 评论(0) 推荐(0) 编辑

动态链接
摘要:动态链接即指向运行时常量池的方法引用,每一个栈帧内部都包含一个指向运行时常量池中该栈帧所属方法的引用。包含这个引用的目的就是为了支持当前方法的代码能实现动态链接(dynamic linking),比如invokedynamic指令。 动态链接的作用就是为了将这些符号引用转换为调用方法的直接引用。在J 阅读全文

posted @ 2020-09-12 16:28 Eleanor123 阅读(228) 评论(0) 推荐(0) 编辑

关于invokedynamic指令
摘要:JVM字节码指令集一直比较稳定,到Java7中才增加了一个invokedynamic指令,这是Java为了实现动态类型语言支持做的一种改进。但是Java7中没有提供直接生成invokedynamic指令的方法,需要借助ASM这种底层字节码工具来产生invokedynamic指令。到Java8的Lam 阅读全文

posted @ 2020-09-12 16:05 Eleanor123 阅读(202) 评论(0) 推荐(0) 编辑

普通调用指令与动态调用指令
摘要:普通调用指令: invokestatic:调用静态方法,解析阶段确定唯一方法版本。 Invokespecial:调用<init>方法、私有及父类方法,解析阶段确定唯一方法版本。 Invokevirtual:调用所有虚方法。 Invokeinterface:调用接口方法。 动态调用指令: Invoke 阅读全文

posted @ 2020-09-12 15:54 Eleanor123 阅读(215) 评论(0) 推荐(0) 编辑

虚方法与非虚方法
摘要:非虚方法:如果方法在编译期就确定了具体的调用版本,这个版本在运行时是不变的,这样的方法称为非虚方法。静态方法、私有方法、final方法、实例构造器、父类方法都是非虚方法,其它方法称为虚方法。 阅读全文

posted @ 2020-09-12 15:33 Eleanor123 阅读(614) 评论(0) 推荐(1) 编辑

方法的调用
摘要:JVM中,将符号引用转换为调用方法的直接引用与方法的绑定机制有关。 静态链接:当一个字节码文件被装载进JVM内部时,如果被调用的目标方法在编译期可知且运行期保持不变时,这种情况下将调用方法的符号引用转换为直接引用的过程称为静态链接。 动态链接:如果被调用的方法在编译期无法被确定下来,也就是说只能够在 阅读全文

posted @ 2020-09-12 15:11 Eleanor123 阅读(130) 评论(0) 推荐(0) 编辑

本地方法栈
摘要:Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。 本地方法栈允许被实现成固定或者是可动态扩展的内存大小。如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverflowError异常;如果本地方法可 阅读全文

posted @ 2020-09-12 14:56 Eleanor123 阅读(277) 评论(0) 推荐(0) 编辑

为什么要使用Native Method
摘要:Java使用起来非常方便,然而有些层次的任务用Java实现起来不容易,或者我们对程序的效率很在意时,问题就来了。 1、与Java环境外交互 有时Java应用需要与Java外面的环境交互,这是本地方法存在的主要原因。本地方法为我们提供了一个非常简洁的接口,比如Java需要与一些底层系统像操作系统或某些 阅读全文

posted @ 2020-09-12 14:17 Eleanor123 阅读(204) 评论(0) 推荐(0) 编辑

什么是本地方法
摘要:一个native method就是一个Java调用非Java代码的接口。一个native method就是这样一个Java方法:该方法的实现由非Java语言实现的,比如C。这并非Java特有,其它很多编程语言都有这个机制,比如C++,你可以用extern “C”告诉C++编译器去调用一个C的函数。 阅读全文

posted @ 2020-09-12 13:56 Eleanor123 阅读(1365) 评论(0) 推荐(0) 编辑

nignx简单操作
摘要:一、安装nginx (1) nginx网站下载安装包进行安装,下载链接:http://nginx.org/download。下载命令wget http://nginx.org/download/下载的版本,或者直接下载后拖到系统中 (2) yum进行安装nginx yum install nginx 阅读全文

posted @ 2020-09-11 19:54 Eleanor123 阅读(145) 评论(0) 推荐(0) 编辑

nginx的原理
摘要:Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。 nginx的模块从结构上分为核心模块、基础模块和第三方模块。 Ngi 阅读全文

posted @ 2020-09-09 10:41 Eleanor123 阅读(119) 评论(0) 推荐(0) 编辑

nginx简单了解
摘要:Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能 阅读全文

posted @ 2020-09-09 10:13 Eleanor123 阅读(96) 评论(0) 推荐(0) 编辑

操作数栈
摘要:每一个独立的栈帧中除了包含局部变量表以外,还包含一个先进后出(last-in-first-out)的操作数栈,也可以称为表达式栈(Expression stack)。它在方法执行过程中根据字节码指令,往栈中写入数据或提取数据,即入栈、出栈。 操作数栈主要保存计算过程的中间结果,同时作为计算过程中变量 阅读全文

posted @ 2020-09-07 19:21 Eleanor123 阅读(647) 评论(0) 推荐(0) 编辑

静态变量与局部变量
摘要:参数表分配完毕后,再根据方法体内定义的变量的顺序和作用域分配。 类变量有2次初始化机会,第1次是“准备阶段”,执行系统初始化,对类变量设置零值;还有1次是“初始化”阶段,赋予程序源在代码中定义的初始值。局部变量和类变量初始化不同的是,局部变量表不存在系统初始化过程,即一旦定义了局部变量必须要进行人为 阅读全文

posted @ 2020-09-06 18:45 Eleanor123 阅读(279) 评论(0) 推荐(0) 编辑

局部变量表
摘要:局部变量表也称为局部变量数组或本地变量表,定义一个数字数组,主要用于存储方法参数和定义在方法体内的句柄变量,这些数据类型包括各类基本数据类型、对象引用以及returnAddress类型。 由于局部变量表是建立在线程的栈上,是线程的私有数据,所以不存在数据安全问题。 局部变量表所需要的容量大小是在编译 阅读全文

posted @ 2020-09-04 17:48 Eleanor123 阅读(929) 评论(0) 推荐(0) 编辑

关于slot理解
摘要:参数值的存放总是在局部变量数组的index0开始的,到数组长度-1的索引结束。 局部变量表最基本存储单元是slot(变量槽),它存放编译期间可知的各种基本数据类型(8种)、引用类型(reference)、returnAddress类型。 在局部变量表里,32位以内的类型只占用1个slot(包括ret 阅读全文

posted @ 2020-09-04 17:31 Eleanor123 阅读(571) 评论(0) 推荐(0) 编辑

栈运行的原理
摘要:JVM直接对栈的操作有2个,即对栈帧的压栈和出栈,遵循“先进后出”、“后进先出”原则。 在一条活动线程中,一个时间点上,只会有一个活动的栈帧。在执行的方法的栈帧是有效的,该栈帧被称为当前栈帧(current frame),与当前栈帧对应的方法是当前方法(current method),定位这个方法的 阅读全文

posted @ 2020-09-04 17:17 Eleanor123 阅读(601) 评论(0) 推荐(0) 编辑

虚拟机中的栈
摘要:由于跨平台性设计,Java的指令都是根据栈来设计的。不同CPU架构不同,所以不能基于寄存器的。栈的优点就是跨平台、指令集小,编译器容易实现;缺点是性能下降,实现同样的功能需要更多的指令。 Java虚拟机栈(Java Virtual Machine Stack)早期叫Java栈,每个线程创建时都会创建 阅读全文

posted @ 2020-09-03 19:21 Eleanor123 阅读(166) 评论(0) 推荐(1) 编辑

内存中的栈与堆
摘要:栈是运行时的单位,堆是存储的单位。栈解决程序的运行问题,即程序如何执行,如何处理数据;堆解决的是数据存储的问题,即数据怎么放,放到哪里。 阅读全文

posted @ 2020-09-03 18:50 Eleanor123 阅读(122) 评论(0) 推荐(1) 编辑

CPU时间片
摘要:CPU时间片即CPU分配给多个程序的时间,每个线程被分配一个时间段,称作它的时间片。宏观上,我们可以同时打开多个应用程序,每个程序并行不悖,同时运行;微观上,由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。 阅读全文

posted @ 2020-09-03 18:35 Eleanor123 阅读(912) 评论(0) 推荐(0) 编辑

关于PC Register
摘要:JVM的PC寄存器是对物理PC寄存器的一种抽象模拟,JVM中的程序计数寄存器(program counter register),register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息,CPU只有把数据装载到寄存器才能运行。 PC寄存器用来存储指向下一条指令的地址,即将要执行的命令。 阅读全文

posted @ 2020-09-03 10:32 Eleanor123 阅读(265) 评论(0) 推荐(0) 编辑

关于classloader
摘要:Classloader类,它是一个抽象类,其后所有的类加载器都继承自classLoader(不包括启动类加载器) 获取classLoader的途径 1、获取当前类的classLoader Clazz.getClassLoader() 2、获取当前线程上下文的classLoader Thread.cu 阅读全文

posted @ 2020-09-02 19:24 Eleanor123 阅读(118) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示