字节码

python day01 知识点总结

爱⌒轻易说出口 提交于 2020-02-05 02:19:43
1.python的历史 python2x, python3x源码区别: python2x: C,java,大牛 : 重复代码多,冗余,代码不规范。 python3x :源码规范,清晰 简单。 2.python的语言编程分类 (重点) 编译型: 将代码一次性·全部编译成二进制,然后再执行。 优点:执行效率高 缺点: 开发效率低,不能跨平台。 代表语言 :C 解释型: 逐行解释称二进制,逐行运行 优点: 开发效率高。可以跨平台 缺点:执行效率低。 代表语言 :python 3.python的种类 。Cpython:官方推荐解释器。可以转化成C语言能识别的字节码。 。Jpython:可以转化成Java语言能识别的字节码。 。Ironpython:可以转化成。net语言能识别的字节码 。pypy:动态编译。 4.安装python解释器 1.去官网查找版本(直接去百度搜) 2.选择版本 3.安装python编译器,配置环境变量 (此处省略了具体图片,可自行去知乎搜索) 4.Windows+R 输入cmd 进行验证 如图所示 即安装成功。如果 环境变量 没有勾选上,黑框输入python会回车报错。建议卸载掉重新安装 原因就i是安装python编译器的时候没有勾选环境变量的话后来重新设置比较麻烦。 5.运行第一个python代码 print(“hello world!”) 运行结果如图所示: 6

2020年大前端发展趋势

帅比萌擦擦* 提交于 2020-02-04 23:26:38
迅速发展的前端开发,在每⼀年,都为开发者带来了新的关键词。2019 年已步⼊尾声,2020 年前端发展的关键词⼜将有哪些呢?发展的方向又会是什么呢?参考2019年大前端的发展,不出意外,前端依旧会围绕⼩程序、超级APP、跨端开发、前端⼯程化以及新技术运用等几个方面进行展开(可以参考 2019年大前端技术趋势深度解读 )。 小程序 在⼩程序⽅⾯,今年仍然是⼩程序突⻜猛进的⼀年,各⼤主流的 App 都上线了⼩程序能⼒的⽀持,各前端团队也都有了专⻔的⼩程序开发团队,以适应更快的⼩程序开发需求。同时App 中很多关键的功能都被⼩程序所替代,甚⾄有些 App 已经变成 Native ⼩程序壳,上层的应⽤实现全部是⼩程序。 在微信小程序出现以前,大家在谈 Hybird、ReactNative,但终归只是技术层面的狂欢,始终没有业务属性的注入。小程序的出现,一方面告诉业界在当前设备上 Webview 也没差到哪去,另外一方面告诉业界如何让有能力的商家在超级 APP上进行私域运营。 另一方面,从技术角度说,在上层 DSL 的严格限制下,超级 APP 就可定义符合自己诉求的 Web 标准,弥补当前 Web 标准的不足,最后和客户端配合,结合离线、预加载、定制Webview 能产出类似于 NSR 等各种酷炫的技术模型,让 Web 在端内低成本达到 Native 版的体验,端外也不会像 Weex

Java - JVM

邮差的信 提交于 2020-02-04 14:09:09
前言 面向人群及参考书目 Java及JVM简介 Java发展的重大事件 虚拟机与Java虚拟机 虚拟机分为 系统虚拟机 和 程序虚拟机 。 系统虚拟机:Visual Box、VMware - 完全对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。 程序虚拟机:Java虚拟机[JVM] - 专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称为JVM字节码指令[这里不一定是Java字节码,只要是按照JVM规范编译出的字节码文件,Java虚拟机都可以解释运行]。 无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。 Java虚拟机 Java虚拟机是一台直行JVM字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。 JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回收器,以及可靠的即时编译器。 Java技术的核心就是Java虚拟机(JVM,Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。 作用:Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编辑对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细的定义,如怎么取操作数,怎么处理操作数,处理结果放哪里。 特点 一次编译,到处运行。

JVM第一弹

微笑、不失礼 提交于 2020-02-04 11:56:09
JVM第一弹 基本概念 JVM是可运行java代码的假想计算机,包括一套字节码指令集,一组寄存器,一个栈,一个垃圾回收、堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。 运行过程 我们都知道Java代码源文件,通过编译器能够产生相应的.Class字节码文件,而字节码文件又通过Java虚拟机中的解释器,编译成特定机器上的机器码。 ① Java源文件 ——> 编译器 ——> 字节码文件 ② 字节码文件 ——> JVM ——> 机器码 每种平台的解释器是不同的,但是虚拟机是相同的,这也就是java为什么能够跨平台的原因了。当一个程序从开始运行,这时虚拟机就开始实例化了,多个程序 启动就会存在多个虚拟机实例。 程序退出或者关闭,则虚拟机实例消亡,多个虚拟机实例之间数据不能共享。 类加载器 什么是类的加载? 类的加载是指将类的字节码文件数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。 类的加载的最终产品是位于堆区内中的Class对象,Class对象封装了类在方法区内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口。 类加载器包括: 启动类加载器(BootStrap) ——主要有C++进行实现的。用来加载jdk安装目录下的:jre/lib下的可执行jar包。

王之泰201771010131《面向对象程序设计(java)》第一周学习总结

核能气质少年 提交于 2020-02-04 08:28:24
王之泰201771010131 《面向对象程序设计( java )》第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园: www.cnblogs.com zdyhzt 程序设计评测: https://pintia.cn/ 2104173571@qq.com 代码托管平台: https://github.com/ YHwzt 中国大学MOOC: https://www.icourse163.org/ 17610929871 以下回答是或否 是否加入课程班级博客群 是 是否加入课程QQ讨论群 是 第二部分:理论知识学习部分 第一章 第一章内容主要是关于对Java语言的简介,包括它的各种特性,发展简史等介绍。学习了第一张内容后,有助于程序员更好的使用Java语言设计程序。 1、Java是一个完整的程序设计平台,其语法既美观又便于理解。它有一个独立庞 大的类库,包含多种功能。它的安全性和跨操作系统移植性获得大量好评。 2、“Java白皮书“即sun公司对Java特性的语言表述,有简单性、面向对象、分布式、 健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、动态性这些特性。 1)简单性 a)语法分格与c或c++极为相似,对于已经学过这两种语言的人来说容易上手,但删除了指针、结构体等容易引发程序错误的内容。 b

JVM系列(二)——Jvm内存结构

醉酒当歌 提交于 2020-02-04 04:01:06
    JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块,由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配;方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆);栈又分为java虚拟机栈和本地方法栈主要用于方法的执行。     如何通过参数来控制各区域的内存大小呢? 控制参数 -Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -XX:NewSize设置新生代最小空间大小。 -XX:MaxNewSize设置新生代最大空间大小。 -XX:PermSize设置永久代最小空间大小。 -XX:MaxPermSize设置永久代最大空间大小。 -Xss设置每个线程的堆栈大小。 没有直接设置老年代的参数,但是可以设置堆空间大小和新生代空间大小两个参数来间接控制。 老年代空间大小=堆空间大小-年轻代大空间大小     JVM和系统调用之间的关系: 1.Java堆(Heap)     对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例

浅谈字节码对象的唯一性

夙愿已清 提交于 2020-02-03 22:21:35
浅谈字节码对象的唯一性 杂谈 概念 验证 字节码对象的获取方式(常用方式) 实践 注意点 杂谈 回过神来有一段时间没有写博客,并且令人心痛的是,我的note坏了,在上面的笔记只找回一部分!这更加坚定了我把笔记搬到博客上面的信心。 ps(哪怕没人看,自己看) 概念 每个类在加载的时候都会创建一个字节码对象,或者换一种说法,将类读到内存的时候都会创建一个字节码对象,其类型为Class类型,且这个对象在 一个JVM 中是 唯一 的,此对象存储的是类的结构信息(元数据信息)。 验证 字节码对象的获取方式(常用方式) 获取方式有许多,但是毕业到现在我用过的只有三种,咨询过周围的朋友,他们也大部分只用过这三种(或者只用过其中一两种)~那么这三种就是日常常用的啦 1 类的实例对象.getClass(); ps(有个 点 ,注意一下) 2 Class.forName(“类的全路径”) 3 类名.Class 字节码对象是获取类结构信息(元数据信息)的入口,也是反射技术的基石。 第三种方式更加安全,性能也更好,因为在编译时期就可以检查要访问的Class对象是否存在,同时不用调用方法。( 推荐 ) 实践 实践是检验真理的唯一标准,那么开始吧。 public class ClassLoderTest { public static void main ( String [ ] args ) throws

JVM的认识

不问归期 提交于 2020-02-03 22:08:56
一、概念   JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个 虚构出来 的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后,Java语言在 不同平台上运行时不需要重新编译 。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 二、概述 Java虚拟机有自己 完善的硬件架构 ,如处理器、堆栈等,还具有相应的指令系统。 Java虚拟机本质上就是一个 程序 ,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“ 一次编译,多次运行 ”。 Java技术使同一种应用可以运行在不同的平台上。Java平台可分为两部分,即J ava虚拟机 (Java virtual machine,JVM)和 Java API类库 三、体系结构 Java虚拟机主要分为五大模块: 类装载器子系统 、 运行时数据区 、 执行引擎 、 本地方法接口 和 垃圾收集模块。 Java虚拟机不是真实的物理机,它没有寄存器,所以指令集是使用

JVM系列(二)——Jvm内存结构

六月ゝ 毕业季﹏ 提交于 2020-02-03 15:57:31
    JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块,由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配;方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆);栈又分为java虚拟机栈和本地方法栈主要用于方法的执行。     如何通过参数来控制各区域的内存大小呢? 控制参数 -Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -XX:NewSize设置新生代最小空间大小。 -XX:MaxNewSize设置新生代最大空间大小。 -XX:PermSize设置永久代最小空间大小。 -XX:MaxPermSize设置永久代最大空间大小。 -Xss设置每个线程的堆栈大小。 没有直接设置老年代的参数,但是可以设置堆空间大小和新生代空间大小两个参数来间接控制。 老年代空间大小=堆空间大小-年轻代大空间大小     JVM和系统调用之间的关系: 1.Java堆(Heap)     对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例

201772020113李清华《面向对象程序设计(java)》第一周学习总结

随声附和 提交于 2020-02-02 14:42:54
201772020113《面向对象程序设计(java)》第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com bmwb 程序设计评测:https://pintia.cn/ bmwb 代码托管平台:https://github.com/ 登陆不上 中国大学MOOC: https://www.icourse163.org/ 白漫卫兵 以下回答是或否 是否加入课程班级博客群 是 是否加入课程QQ讨论群 是 第二部分:理论知识学习部分 JAVA核心技术一,二章学习总结 第一章 java语言的特点:1.java不只是一种程序设计语言,而是一个人完整的程序设计平台。2.简单性:语法风格类似C++摒弃了C++中的一些很少使用,难理解,容易引发程序错误的内容;一些第三方开发环境提供了类似VB的拖放风格的程序开发工具;Java基础开发环境可在很小的空间独立运行。3.面向对象:java面向对象特性与C++旗鼓相当,面向对象是现代程序设计语言的主要特点。4.对网络编程支持好,Java应用程序通过URL打开和访问网络对象非常便捷。5. 健壮性好,Java编译器能够检测许多在其它语言中仅在运行时才能够检测出来的问题。例如Java和C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。6.安全性高