当前位置: 首页 > news >正文

国外做的好的医疗网站/俄罗斯搜索引擎入口

国外做的好的医疗网站,俄罗斯搜索引擎入口,无锡公司网站制作,网站备案代码学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/196593.html JVM(Write Once,Run Anywhere) 以下是一些学习时有用到的资料,只学习了JVM的基础知识,对JVM整体进…

学习笔记系列开头惯例发布一些寻亲消息

链接:https://baobeihuijia.com/bbhj/contents/3/196593.html
在这里插入图片描述

JVM(Write Once,Run Anywhere)

  • 以下是一些学习时有用到的资料,只学习了JVM的基础知识,对JVM整体进行了解

(5 封私信 / 80 条消息) Java JVM怎么学习啊?从哪方面入手? - 知乎
(zhihu.com)

JVM入门教程开篇:为什么要学虚拟机? - 陈树义 - 博客园
(cnblogs.com)

【精选】Java | JVM | 详细图解,坚持看完,带你真正搞懂Java虚拟机_java jvm
图-CSDN博客

抽象语法树AST的全面解析(一)_语法树解析_嘿嘿帆的博客-CSDN博客

可移植性的两个层次

  • 源代码级可移植性和二进制代码的可移植。 大部分的语言都支持源代码级的可移植性(编译器是平台有关的) JAVA语言不仅支持源码可移植性,其源代码编译之后生成的字节码同样具有可移植性。【理解:系统能够识别是编译后形成的二进制文件,操作系统有一套对应的机制能够识别出来,比如对应于0011,win操作系统认为是+,但是放到linux下可能就认为是非法操作,所以需要“编译”+“识别”要成对,而对于java代码,我们的编译和识别是不需要成对的,因为java不直接生成给系统看的二进制代码,而是先生成字节码再通过jvm匹配不同的系统。】

java到机器码流程

  • java并不是一上来直接把代码编译为系统识别的机器码,而是编译为一种特定的语言规范——字节码,java虚拟机解析字节码内容,将其翻译为操作系统能理解的机器码
    • javac: 将源代码翻译为字节码**(前端编译器)**——>16 进制数据流 / javap可以反编译
      • 将源码的字符流转化为token流,构建抽象语法树(AST)
      • 将定义的符号信息输入到符号表(符号地址和符号信息)
      • 注解处理:对生成的语法树进行增删改查,还是要进行token生成和符号表新增,重复直到新增注解后语法树没有修改
      • 语法分析
        • 语义分析:使用前是否声明/路径的返回值/受查异常被正确处理
        • 解语法糖:自动拆箱-还原简单的数据结构
      • 生成字节码(将语法树和符号表转为字节码.class)
    • 字节码到机器码(java解释器和JIT编译混用)
      • java解释器:直接执行字节码,调用系统(启动快但是过程慢)
      • JIT编译器:将字节码转化为本地机器码(启动慢过程很快)
        • c1编译模式:进行简单、可靠的优化,如有必要将加入性能监控的逻辑
        • c2编译模式:会启用一些编译耗时较长的优化,甚至会根据性能监控信息进行一些不可靠的激进优化。
    • AOT编译器:是一种由源代码直接到机器码的方法,但是对于java 的动态特性并不友好,所以是一种牺牲质量换取性能的策略,如动态类加载无法实现

对字节码进行深入理解

  • 源代码
    在这里插入图片描述

  • 常量池

在这里插入图片描述

  • 类索引:地址指向了常量池中的Demo类

  • 父类索引:地址指向常量池的object类

  • 接口索引:接口计数器+接口信息

  • 字段表集合:类级变量、实例级变量(不包括类中的局部变量)/ 同样是字段计数器+属性数据

  • 方法表索引:方法计数器+方法表

    • public访问修饰符 + 方法名的索引,指向了常量池的 + 属性表计数器+属性表
      • 属性表名code+属性长度+操作数栈深度的最大值+为局部变量分配的存储空间+字节码指令(通过查询字节码指令表可以知道,类似于汇编)+异常表长度+又来一个属性表放的是line_number_info表,其中包含了start_pc(字节码行号)+ line_number(java源码的行号)
  • 属性表(是类层次的属性,其中包含了该字节码文件的源文件即demo.java)

运行时数据区(java虚拟机的内存)【java类加载到java内存中,类信息存在方法区,创建对象存在堆中,调用方法就开启线程】

  • 公有(所有线程共享)

    • java堆
      • 存储java实例对象的内存分配
    • 方法区
      • 存储java类字节码数据,存储每一个类的结构信息如运行时常量池、字段和方法数据
      • 常量池也在里边
  • 私有(线程私有)

    • PC寄存器:线程正在执行的字节码指令地址
    • java虚拟机栈:存储局部变量,操作数栈
    • 本地方法栈:。。。

类加载机制(即字节码如何翻译)【遇到static单独开出去内存,不会每次new 对象都新开内存】有几个例子要多看

  • 加载:将字节码加载到内存,在方法区创建对应的class对象

  • 校验:对字节码文件继续校验,是否规范

  • 为类变量(static修饰的变量)分配内存,并按照

    • 变量的话:java语言的数据零值来赋值【注意不是代码里边的值】
    • 常量final的话:直接就是用户代码给出的值
  • 解析:将常量池中的符号引用替换为直接的内存地址

  • 初始化:new/读取或者设置一个类的static(被final修饰、或者在编译器把结果放入常量池的静态字段除外)/调用一个类的静态方法

在这里插入图片描述

  • 从入口程序开始执行

  • 执行结束后,jvm销毁创建的class对象,最后JVM也退出内存

重点,先类初始化,结束后就对象初始化,如果没有实例化,只是因为main入口或者用了其中的static或者因为子类初始化的时候父类还没有初始化,那么只会类初始化不会对象初始化,understand!!!类初始化只有一次

  • 类初始化的细节(jvm看到方法区的字节码其实分不清构造函数啥的)【是先类初始化后对象初始化】
    • 类初始化:类变量的赋值语句、静态代码块的执行
    • 对象初始化(实例化之后才会执行):赋值语句,普通代码块,最后才是构造函数代码【按照我们平时构造函数中可以调用对象字段就可以推测出来】

垃圾回收机制

  • 判断垃圾:GC Root Tracing 算法:从 GC Root 出发,所有可达的对象都是存活的对象,而所有不可达的对象都是垃圾。为什么不使用引用计数:是因为引用计数会存在循环引用的问题

  • 三种垃圾回收机制

    • 标记清除

    • 复制算法

    • 标记压缩

  • 堆区的回收总的来说分为年轻代和老年代 1:3

    • 【年轻:存活率低,复制算法;老年:存活率高,标记-压缩方法】

      • 年轻代用复制:年轻代分为Eden(伊甸园),From Survivor 0(幸存0区),To Survivor 1(幸存1区)
      • 分区比例8:1:1,这么分区是因为ibm公司统计98%对象都是短期的,不必单独浪费一半的空间来存储,只需要用10%即可保留下当前年轻代中的精华对象

      • 老年代用标记-压缩方法

    • 扫描的时候,如果没有引用且计数为0就直接回收,如果+1后够年龄就放入老年

    • 一进来就进新生代Eden,Eden一满就会触发GC进行垃圾回收,新生代会频繁存入新的对象,所以触发很频繁

    • Survivor 0:上一代GC的时候保留下来的数据,但是还不够进入老年,和Eden作为本次的扫描区域

    • Survivor 0:我感觉像个temp,耶斯就是一个temp,理解的很棒~!

    • 如果前边几次扫描发现某个对象都在,够一定年龄,就放到老年代,减少GC重复的判断

  • 四大垃圾回收器

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 一些术语

    • Minor GC:从年轻代回收内存叫做minor GC, Eden满了就会触发
    • Major GC: 如果老年代的空间也不够了,就会触发,也可以认为major GC是由minor GC引起的
    • Full GC:年轻代预感到有大量对象即将进入老年代,于是发起full gc将年轻和老年都整理
    • stop the world

相关文章:

学习笔记3——JVM基础知识

学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/196593.html JVM(Write Once,Run Anywhere) 以下是一些学习时有用到的资料,只学习了JVM的基础知识,对JVM整体进…...

图像处理:图片二值化学习,以及代码中如何实现

目录 1、了解下图片二值化的含义 2、进行图像二值化处理的方法 3、如何选择合适的阈值进行二值化 4、实现图片二值化(代码) (1)是使用C和OpenCV库实现: (2)纯C代码实现,不要借…...

如果你点击RabbitMQ Service - start了,但http://localhost:15672/#/还是访问不了,那么请看这篇博客!

RabbitMQ 服务启动失败问题小结(Windows环境)_rabbitmq启动不了-CSDN博客...

Shell 脚本学习 day01

release node v1 初始版本 #定义备份目录#当前时间#检查备份目录是否存在,不存在需要创建# 查找并备份 .xxx 文件# 提取文件名(不包含路径部分)# 构建备份文件名# 将查出来的.xxx文件拷贝到备份目录#!/bin/bash # context 备份根目录下所有.…...

esp32 rust linux

官方文档:https://esp-rs.github.io/book/introduction.html 安装 rust curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 工具 risc: rustup toolchain install nightly --component rust-src # nightly 支持 riscv或使用安装工具同时…...

一文了解Elasticsearch

数据分类 数据按数据结构分类主要有三种:结构化数据、半结构化数据和非结构化数据。 结构化数据 结构化数据具有明确定义数据模型和格式的数据类型。 特点: 数据具有固定的结构和模式。 数据项明确定义数据类型和长度。 适合用于数据查询、过滤和分…...

一篇文章认识【性能测试】

一、 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点再可以细分,如对于一个 C/S 软件的响应时间可以细分为网络传输时间、应用服务器处理时间、数据库服务器…...

linux环境mysql安装配置踩坑

背景: 最近公司项目希望改造工作流ACTIVITI5.x的源码框架支持大数据量(历史表单表数据达到10亿), 方案暂定为 1.使用动态数据源 2.将工作流归档历史数据数据保存到一个库中这里定义为读库, 3.在办办件的数据单独一个库…...

相关性网络图 | 热图中添加显著性

一边学习,一边总结,一边分享! 本期教程 写在前面 此图是一位同学看到后,想出的一期教程。 最近,自己的事情比较多,会无暇顾及社群和公众号教程。 1 安装和加载相关的R包 library(ggraph) library(tidy…...

cocosCreator 之 微信小游戏授权设置和调用wxAPI获取用户信息

版本: 3.8.0 语言: TypeScript 环境: Mac 官方文档: 微信官方文档 - 开放能力 微信 API 小游戏环境 在cocosCreator的3.x版本项目开发中,TypeScript最终会被转换为JavaScript语言。 JavaScript的运行时调用的API…...

element ui el-table表格纵向横向滚动条去除并隐藏空白占位列

需求 当table内容列过多时,可通过height属性设置table高度以固定table高度、固定表头,使table内容可以滚动 现在需求是右侧滚动条不好看,需要去除滚动条,并隐藏滚动条所占列的位置 // ----------修改elementui表格的默认样式-…...

防止python进程重复执行

前言 通过保存的进程pid查询上次执行的进程是否退出,决定是否启动新的python进程 代码 pidOption.py import os import psutil pidPath = "saveFile.pid"#写入进程号 def writePid():pid = str(os.getpid())f = open(pidPath, w)f.write(pid...

LV.12 D13 C工程与寄存器封装 学习笔记

一、C语言工程简介 把模板在linux解压出来 代码写在interface.c就可以了。 map.lds是链接脚本文件(负责代码的排布) include中是头文件,src中是写好的源代码 start.s是启动代码,在interface.c之前运行,把cpu和栈做一…...

Java SE 学习笔记(十九)—— XML、设计模式

目录 1 XML1.1 XML 概述1.2 XML 语法规则1.3 XML 文档约束(了解)1.3.1 DTD 约束1.3.2 schema 约束 2 XML 解析2.1 XML 解析概述2.2 Dom4J 解析 XML 文件2.3 XML 解析案例 3 XML 检索4 设计模式4.1 工厂模式4.2 装饰模式 1 XML 在有些业务场景下&#xff…...

grafana InfluxDB returned error: error reading influxDB 400错误解决

问题: 如图提示错误解决 确认自己的docker容器是否配置了以下3个字段 DOCKER_INFLUXDB_INIT_USERNAMExxx DOCKER_INFLUXDB_INIT_PASSWORDyyy DOCKER_INFLUXDB_INIT_ADMIN_TOKENzzz 如果有,在grafana中需要添加header配置Header: Authorization , Value…...

【LeetCode:150. 逆波兰表达式求值 | 栈】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

什么是神经网络,它的原理是啥?(2)

参考:https://www.youtube.com/watch?vmlk0rddP3L4&listPLuhqtP7jdD8CftMk831qdE8BlIteSaNzD 视频3:什么是激活函数?为什么我们需要激活函数?它的类型有哪些? 为什么需要激活函数?如果没有激活函数&…...

leetcode做题笔记206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入&am…...

2023/10/31 JAVA学习

idea一般会自动帮我们导包 new string创建出的字符串是空的,可以对其进行新赋值 s[i]在Java字符串中是没有这个东西的,想要遍历字符串只能用下面这种方式 但是可以把字符串,转换为字符数组然后那样输出 java中是无法s1 s2这样比较字符串的,因为这样比较的是地址,如果是new创建…...

SurfaceFliger绘制流程

前景提要: 当HWComposer接收到Vsync信号时,唤醒DisSync线程,在其中唤醒EventThread线程,调用DisplayEventReceiver的sendObjects像BitTub发送消息,由于在SurfaceFlinger的init过程中创建了EventThread线程&#xff0c…...

系统架构设计师-第14章-云原生架构设计理论与实践-

云原生架构产生背景 云原生与商业场景的深度融合 ( 1 )从为企业带来的价值来看,云原生架构有着以下优势通过对多元算力的支持,满足不同应用场景的个性化算力需求,井基于软硬协同架构,为应用提供极致性能的云原生算力 (2) 通过最…...

conda 实践

1. 环境部署 1.1. 下载 anaconda 安装包 下面这个网址查找自己需要的版本 https://repo.anaconda.com/archive/ 或者手动下载。 wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh 1.2. 执行安装程序 #安装依赖: sudo yum install bzip2…...

行业追踪,2023-10-31

自动复盘 2023-10-31 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...

springboot 配置多个Redis数据源详解

实现原理 需要配置好两个数据源,创建两个RedisTemplate在配置类中注入两个RedisConnectionFactory,分别创建对应的RedisTemplate进行操作 详解 配置数据源 我这里是在之前已有一个配置下面另外加了一个 spring:redis:# 地址host: localh…...

【数据结构】排序算法总结

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 总结 1. 归并排序2. 计数排序3. 排序…...

作为20年老程序员,我如何使用GPT4来帮我写代码

如果你还在用google寻找解决代码bug的方案,那你真的out了,试试gpt4, save my life. 不是小编危言耸听,最近用gpt4来写代码极大地提高了代码生产力和运行效率,今天特地跟大家分享一下。 https://www.promptspower.comhttps://www.…...

【机器学习合集】模型设计之残差网络 ->(个人学习记录笔记)

文章目录 模型设计之残差网络1. 什么是残差结构1.1 网络加深遇到的优化问题1.2 short connect技术 2. 残差网络及有效性理解2.1 残差网络 3. 残差网络的发展3.1 密集残差网络3.2 更宽的残差网络(wide resnet)3.3 分组残差网络3.4 Dual Path Network3.5 加权残差网络3.6 预激活残…...

GoLong的学习之路(十六)基础工具之Gin框架

Gin框架介绍及使用,这张不用看内容就知道非常重要,重要到什么地步呢?重要到开发java不会Spring全家桶这种概念。 上几篇文章写的是如何构建骨架,经脉。这一章是将血肉注入。 文章目录 Gin框架RESTful API Gin渲染HTML渲染静态文件…...

VMware打开centos黑屏解决方法汇总

VMware打开centos黑屏解决方法汇总 前言:一. VMware打开centos黑屏解决方法汇总一 .情况情况一:情况二情况三 二. 解决方法最简单的方法:一. 以管理员权限在命令行执行1. 管理员身份运行cmd2. 输入“netsh winsock reset”,回车3. 重启电脑即…...

5G物联网关相较有线网关有哪些独特优势

5G为产业物联网应用带来了质的飞跃,5G技术实现更高速率、更低延迟和更大带宽,使得物联网能够接入更多数量的设备,实现更稳定、高效的连接和数据传输,在提高生产效率的同时,也进一步促进了物联网的应用发展和升级。 针对…...