当前位置: 首页 > 编程日记 > 正文

深入Java虚拟机读书笔记[10:20]

第十章 栈和局部变量操作

第十一章 类型转换

第十二章 整数运算

第十三章 逻辑运算

第十四章 浮点运算

第十五章 对象和数组

第十六章 控制流

第十七章 异常

以上一些是操作码相关的内容,

第十八章 finally子句

微型子例程

字节码中的finally子句表现的很像微型子例程。Java方法与微型子例程使用不同的指令集。跳转到微型子例程的指令是jsr或者jsr_w,将返回地址压入栈。执行完毕后调用ret指令。ret指令并不会从栈中弹出返回地址,而是在子例程开始的时候将返回地址从栈顶取出存储在局部变量,ret指令从局部变量中取出。这是因为finally子句本身会抛出异常或者含有return、break、continue等语句。finally确保会执行到,即使try或者catch中有return等语句。

第十九章 方法的调用与返回

实例方法和类方法区别:

a) 实例方法调用之前需要一个示例,类方法不需要
b) 实例方法使用动态绑定,类方法使用静态绑定

调用的指令是invokevirtual和invokestatic。根据引用类型调用使用invokespecial,包括实例初始化、私有方法和super调用方法。在调用的引用类型是接口时使用invokeinterface。invokeinterface必须搜寻方法表而不是使用偏移量,因此速度比invokevirtual慢。

第二十章 指令invokespecial

第二十一章 线程同步

监视器

Java中使用的同步机制是监视器,监视器支持两种线程:互斥和协作。通过对象锁实现互斥,允许多个线程在同一个共享数据上独立而互不干扰地工作。协作通过Object类的wait和notify方法,允许多个线程为同一个目标而共同工作。监视区域是最小的不可分割的代码块。在同一个监视器中,监视区域只会同时被一个线程执行。Java所使用的监视器被称为wait and notify监视器。Java虚拟机在执行wait命令时可以指定一个暂停时间。唤醒命令有两种:notify和notifyAll。notify命令随意从等待区中选择一个线程并标记为可能苏醒,notifyAll命令将等待区中的所有线程标记为可能苏醒。

类锁用对象锁实现

锁住一个类实际上锁住的是类的Class对象。对于对象来说,Java虚拟机维护一个计数器,对象被加锁时计数加1。Java中有两种监视区域:同步语句和同步方法。每一个监视区域都和一个对象引用关联。同步语句块使用monitorenter和monitorexit两个操作码。对方法加锁比同步代码块更加高效。

相关文章:

docker Rails Permission denied @ dir_s_mkdir

sudo chmod 777 -R public转载于:https://www.cnblogs.com/znsongshu/p/9777543.html

图形化的Redis监控系统redis-stat安装

Redis需要监控才知道具体运行信息,虽然Redis也提供了info等命令行,但是毕竟不方便而且不能保存历史信息。 redis-stat是一个用ruby写成的监控redis的程序,基于info命令获取信息,而不是通过monitor获取信息。 关于Redis的安装参考此…

Oracle简单脚本演示样例

Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR VARCHAR2(5000); VN_COUNT NUMBER; BEGIN --查看现有系统是否有BT_PRODUCT_MODEL表 SELECTCOUNT(…

matlab看fft帮助,日记 [2009年06月02日] MATLAB FFT HELP 帮助文档及我的翻译

fftFast Fourier Transform 的缩写, 即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在…

用Kotlin在IntelliJ Idea中无法生成 spring-configuration-metadata.json 文件

为什么80%的码农都做不了架构师?>>> 问题描述 在百度搜索关键词,搜索到了 Stack Overflow 有相关问题 spring-configuration-metadata.json file is not generated in IntelliJ Idea for Kotlin ConfigurationProperties class 原文链接: https://stack…

Linux系统轻量级监控工具monitorix和munin安装

提到监控工具,大家都会想到zabbix等重量级的,这些好是好,但是需要安装数据库等等,如果有时候希望简单点其实可以借助一些轻量级的监控工具,例如monitorix和munin。需要做点前置工作开启Nginx和php-fpm的status&#xf…

MySql 查询表字段数

MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schematest_cases AND table_namecases_send ; test_cases 为数据库名称 cases_send 为表名 列出表字段名称 SHOW COLUMNS FROM cases_send

phpstudy2014 php7.0,phpstudy下载_phpStudy下载2014 官方版_php环境集成包 1.0_零度软件园...

phpStudy 1.7.0 (phpStudy V1.65 Build 080120)该程序包集成最新的ApachePHPmysqlphpMyAdminZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等…

AndroidApplication优化解耦

Application后处理器(AndroidPostProcessing): 通过注解配置初始化各模块及应用所需 sdk,按优先级/延时时间/是否只在Debug下有效/执行线程 等条件初始化 sdk 通常,我们要在 Application 中处理一堆的三方 SDK 和自定义…

Git 详解

1. Git 1.1. Git是何方神圣? Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态)。另一个状 态可以是不同的文件,也可以是不同的文件内容。举个例子&…

shell基础语法以及监控进程不存在重启

转码 # dos2unix ./test.sh 权限# chmod ax ./test.sh语法 变量 var"111" echo $var echo ${var}运算 no14; no25; let resultno1no2 echo $result;自增自减少 let no let no--[]和let类似 result$[ no1 no2 ] result$[ $no1 5 ] 也可以使用(()),但使…

java md5算法,JAVA实现MD5算法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package org.zcq100.Other;public class MD5 {static final int S11 8;static final int S12 13;static final int S13 18;static final int S14 23;static final int S21 7;static final int S22 11;static final int S23 …

Hulu直播服务难点解析(一):系统需求

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/83053654 Hulu在其博客发布了建立直播服务遇到的挑战及解决方案,这对于以前只提供点播服务的系统而言是一次彻底的升级。Li…

Velocity 入门(一)

Velocity是一种Java模版引擎技术,该项目由Apache提出。因为非常好用,和工作中有啥用,所以我在在理简单的入门一下。 网上找了很多教程,写的不是很明白,要么就是全部拷贝下来时候运行不起来。 在这里我来写一份比较完成…

php 魔术方法 多继承,day23:单继承多继承菱形继承__init__魔术方法

原文:https://www.cnblogs.com/libolun/p/13434675.html单继承关于继承的一些基本概念1.什么是子类?什么是父类?如果一个类继承另外一个类,该类叫做子类(衍生类),被继承的类叫做父类(基类,超类)2.继承的种类:1.单继承 2.多继承3…

最新版IntelliJ IDEA 15开发Java Maven项目

IntelliJ IDEA是最好的java开发IDE之一 下载地址:http://www.jetbrains.com/idea/download/1.安装好之后开始创建项目2.选择Maven类型项目,选择JDK3.设置Maven坐标4.需要给新项目Add Framework support5.选择Java EE项目模板6.初始的网站修改pom.xml文件…

Android APP全面屏适配技术要点

全面屏的概念 为什么先要解释一下全面屏,因为这个词在现在来讲就是一个伪命题。全面屏字面意思就是手机的正面全部都是屏幕,100%的屏占比。但是现在推出所谓“全面屏”手机的厂商没有一个能达到全面的。 那么下面来说一下Android开发领域对全面屏的理解和…

PHP数据库连接池SQL Relay安装使用

SQL Relay按照其官网http://sqlrelay.sourceforge.net/index.html上所说是:A powerful database connection management solution. 翻译为中文也就是说SQL Relay是一个开源的数据库池连接代理服务器。目前SQL Relay支持的数据库很多: SQL Relay supports…

oracle实例由,Oracle数据库和实例

Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例是一组管理数据库文件的内存结构。 另外,数据库由后台进程组成。一个数据库和一个实例是紧密相连的,因此术语 - Oracle数据库 通常用来指…

说一说activity

activity与service,provider,receiver并称为 android的四大对象。 而activity,是展现界面的必不可少的组件。我这里有几个问题要问了,他是如何加载,他是如何进行npc的。具体是怎么实现的了。 说道activity的加载&#…

zookeeper脑裂

出现: 在搭建hadoop的HA集群环境后,由于两个namenode的状态不一,当active的namenode由于网络等原因出现假死状态,standby接收不到active的心跳,因此判断active的namenode宕机,但实际上active并没有死亡。此…

C语言编写的PHP框架--yaf入门编程

首先--添加dll&#xff0c;修改php.ini--不同的版本&#xff0c;不同的需求 其次&#xff0c;根据教程http://www.laruence.com/manual/tutorial.firstpage.html#tutorial.directory手动搭建好目录结构 入口文件index.php位置稍作修改--个人习惯 入口文件内容 <?php header…

调试JDK源码-ConcurrentHashMap实现原理

调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hashtable实现原理以及线程安全的原因ConcurrentHashMap线程安全的总结是我从源码分析出来的&#xff1a; ConcurrentHashMap所谓线…

oracle某个表丢失,丢失一个控制文件并恢复数据库

只丢失或损坏一个控制文件的情况下来恢复数据库&#xff0c;相对来说简单一点。一般来说&#xff0c;控制文件都需要形成一个多路径冗余策略&#xff0c;来提高数据库的安全性。这样的话只需将完好的控制文件复制一个副本放到丢失或者损坏了的控制文件所在路径的目录下&#xf…

MySQL:一个死锁分析 (未分析出来的死锁)

最近一个朋友给了我一个死锁 没分析出来搞了好几天&#xff0c;但是把以前出现的一个死锁理了一下流程。这里大概记录一下&#xff0c;并且给出朋友的案例。 RC 隔离级别很少出GAP我已经知道的 继承和分裂会出LOCK_GAP这是代码写死的purge线程可能触发页的分裂融合可能触发内部…

经历一次真实的XSS跨站攻击以及应付之策

这是一个线上真实的事情&#xff0c;黑客已经攻破网站&#xff0c;并主动给我们上报了问题的根源以及解决方案还是不错的。1.前端网站某处存在用户评论输入&#xff0c;黑客再此输出跨站脚本&#xff0c;下面的是从数据库查出来的2.后台管理人员如果浏览到这条数据就会触发这个…

在linux中 要删除abc目录,在 Linux 中,要删除 abc 目录及其全部内容的命令为:

【单选题】星子本地人说( )【判断题】音乐的音响,虽然不能直接传达抽象概念,但是却可以通过同构联觉的去描摹围绕着抽象概念的氛围。( )【判断题】专项耐力负荷量度是通过对糖酵解无氧代谢供能能力与非乳酸供能无氧耐力能力的监控实现的。【单选题】电动轮廓仪是根据( )原理制成…

ECHO.js 纯javascript轻量级延迟加载

演示 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>简单的JavaScript图像延迟加载库Echo.js</title> <style> .demo img { width: 736px; height: 490px; background: url(images/…

SQL中的case when then else end用法

2019独角兽企业重金招聘Python工程师标准>>> Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sexWHEN 1 THEN 男WHEN 2 THEN 女 ELSE 其他 END --Case搜索函数 CASE WHEN sex 1 THEN 男WHEN sex 2 THEN 女 ELSE 其他 END这两种方式&#xf…

linux run文件夹,Linux下运行run文件

比如realplay.run安装方法如下chmod xrealplay.run./realplay.run然后他就会执行安装了&#xff0c;在过程中可能会要求你输入yes或no安装完后就可以用了,chmod实际上是加权限命令。&#xff0b;x表示可以执行chmod[-cfvR][--help][--version]modefile...说明:Linux/Unix的档案…