JVM系列-07-1、内存与垃圾回收篇---本地方法栈
本地方法栈(Native Method Stack) Java 虚拟机栈用于管理 Java 方法的调用,而本地方法栈用于管理本地方法的调用。 本地方法栈,也是线程私有的。 允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的) 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java 虚拟机将会抛出一个 StackOverflowError 异常。 如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么 Java 虚拟机将会抛出一个 OutOfMemoryError 异常。 本地方法是使用 C 语言实现的。 它的具体做法是 Native Method Stack 中登记 native 方法,在 Execution Engine 执行时加载本地方法库。 当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。它和虚拟机拥有同样的权限。 本地方法可以通过本地方法接口来访问虚拟机内部的运行时数据区。 它甚至可以直接使用本地处理器中的寄存器 直接从本地内存的堆中分配 ...
Python-10-文件
Python 文件 编码格式的介绍 常见的字符编码格式 Python的解释器使用的是Unicode(内存) py文件在磁盘上使用UTF-8存储(外存) 指定编码格式 在程序的第一行写上#encoding=gbk 1#encoding=gbk 文件操作 文件的读写原理 文件的读写俗称"IO操作" 文件读写操作流程 操作原理 文件的读写操作 内置函数open()创建文件对象 语法规则 创建一个file文件 12中国美丽 读取 123file=open('a.txt','r')print(file.readlines()) #结果是 一个列表 #['中国\n', '美丽']file.close() 常用的文件打开模式 文件的类型 按文件中数据的组织形式,文件分为以下两大类 文本文件:存储的是普通"字符"文本,默认为unicode字符集,可以使用记事本程序打开 二进制文件:把数据内容用"字节"进行存储,无法用记事本打开,必须使用专用的软件打开,举例:mp3音频文件, ...
Python-09-模块与包
Python 模块与包 什么叫模块 模块 模块英文为Modules 函数与模块的关系 一个模块中可以包含N多个函数 在Python中一个扩展名为.py的文件就是一个模块 使用模块的好处 方便其他程序和脚本的导入并使用 避免函数名和变量名冲突 提高代码的可维护性 提高代码的可重复性 自定义模块 创建模块 新建一个.py文件,名称尽量不要与Python自带的标准模块名称相同 导入模块 import 模块名称 [as别名] from 模块名称 import 函数/变量/类 12345678910import math #关于数学运算的模块print(id(math))print(type(math))print(math)print(math.pi)print('-------------------------------------')print(dir(math))print(math.pow(2,3),type(math.pow(2,3))) #2的3次方 8.0 floatprint(math.ceil(9.001)) #最接近的 ...
Python-08-面向对象
Python 面向对象 编程思想 编程届的两大阵营 面向过程 面向对象 区别 实物比较简单,可以用线性的思想去解决 事物比较复杂,使用简单的线性思维无法解决 共同点 面向过程和面向对象都是解决实际问题的一种思维方式 二者相辅相成,并不是对立的,解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间的复杂的关系。方便我们分析整个系统,具体到微观操作,任然使用面向过程方式来处理 类与对象 类 类别,分门别类,物以类聚,人类,鸟类,动物类,植物类... 类是多个类似事物组成的群体的统称。能够帮助我们快速理解和判断事物的性质。 数据类型 不同的数据类型属于不同的类 使用内置函数type()查看数据类型 对象 100、99、520都是int类之下包含的相似的不同个例,这个个例专业数语称为实例或对象。 类的创建 123456class Student: #Student是类的名称 简称类名 有一个或多个单词组成,每个单词的首字母大写,其余小写 pass#Python中一切皆对象Studnet是对象吗 内存有开空间吗pr ...
Python-07-异常处理
Python 异常处理 Bug的由来及分类 Bug的由来 世界上第一部万用计算机的进化版-马克2号(Mrrk ||) Debug Bug的常见类型 粗心导致的语法错误 SybtaxError 漏了末尾的冒号,如if语句,循环语句,else子句等 缩进错误,该缩进的没缩进,不该缩进的瞎缩进 把英文符号写成中文符号,比如说:引号、冒号、括号 字符串拼接的时候,把字符串和数字拼在一起 没有定义变量,比如说while的循环条件的变量 "=="比较运算符和"="赋值运算符的混用 知识点不熟练导致的错误 索引越界问题IndexError 12lst=[11,22,33,44]print(lst[4]) append()方法的使用掌握不熟练 123lst=[]lst=append('A','B','C')print(lst) 思路不清晰的问题解决方案 使用print()函数 使用"#"暂时注释部分代码 12345678910lst=[{'rating':[9,7,20 ...
Python-06-函数与变量作用域
Python 函数与变量作用域 函数的创建和调用 什么是函数 函数就是执行特定任务和以完成特定功能的一段代码 为什么需要函数 复用代码 隐藏实现细节 提高可维护性 提高可读性便于调试 函数的创建 1234567def calc(a,b): c=a+b return cresult=calc(1,2)print(result) #3 函数的参数传递 12345678910def calc(a,b): #a,b称为形式参数,简称形参,形参的位置是在函数的定义处 c=a+b return cresult=calc(1,2) #1,2称为实际参数,简称实参,实参的位置是在函数的调用处print(result) #3res=calc(b=10,a=20) #=左侧的变量的名称称为 关键字参数print(res) 函数调用的参数传递内存分析 123456789101112131415161718192021222324def fun(arg1,arg2): print('arg1',arg1) #arg1 11 pr ...
Python-05-字符串
Python 字符串 字符串的驻留机制 字符串 在Python中字符串是基本数据类型,是一个不可变的字符序列 什么叫字符串驻留机制呢? 仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符时,不会开辟空间,而是把该字符串的地址付给新创建的变量 驻留机制的几种情况(交互模式) 字符串的长度为0或1时 符合标识符的字符串 字符串只在编译时进行驻留,而非运行时 [-5,256]之间的整数数字 sys中的intern方法强制2个字符串指向同一个对象 PyCharm对字符串进行了优化处理 1234567891011121314151617181920212223242526s1=''s2=''s1 is s2 #Trues1='%'s2='%'s1 is s2 #Trues1='abc%' #不符合标识符(数字、字母、下划线)的字符串s2='abc%'s1 == s2 #T ...
Python-04-元组和集合
Python 元组和集合 什么是元组 元组 Python内置的数据结构之一,是一个不可变序列 不可变序列与可变序列 不可变序列:字符串、元组 不变可变序列:没有增、删、改的操作 可变序列:列表、字典 可变序列:可以对序列执行增、删、改操作,对象地址不发生更改 12345678910111213''' 不可变序列,可变序列''''''可变序列 列表,字典'''lst=[10,20,45]print(id(lst)) #2607077621248lst.append(300)print(id(lst)) #2607077621248'''不可变序列 字符串、元组'''s='hello'print(id(s)) #2178033099568s=s+' world'print(id(s)) #2178035703344print(s) # ...
Python-03-字典
Python 字典 什么是字典 字典 Python内置的数据结构之一,与列表一样是一个可变序列 以键值对的方式存储数据,字典是一个无序的序列 字典示意图 字典的实现原理 字典的实现原理与查字典类似,查字典是先根据部首或拼音查找汉字对应的页码。Python中的字典是根据key查找value所在的位置 字典的创建 最常用的方式:使用花括号 1score={ '张三':100,'李四':98,'王五':45} 使用内置函数dict() 1dict( name='jack',age=20) 12345678910111213'''字典的创建方式''''''使用{}创建字典'''scores={'张三':100,'李四':98,'王五':45}print ...
Python-02-列表
Python 列表 为什么需要列表 123456a=10 #变量存储的是一个对象的引用lst=['hello','world',98] #泪飙可以存储n多个对象的引用print(id(lst)) #print(type(lst)) #listprint(lst) #['hello','world',98] 列表的创建 1234567'''创建列表方式一:使用[]'''lst=['hello','world',98]'''创建列表的第二种方式,使用内置函数list()'''lst2=list(['hello','world',98]) 列表的特点 123456789'''创建列表方式一:使用[]'''lst=['hello ...