1.编程语言的发展史 计算机是基于电工作(基于高.低电平)1010010101011 1.机器语言 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言(通过英文字符组成) 优点:执行效率相较于机器语言略低 缺点:开发效率相较于机器语言略高 ; hello.asm section .data ; 数据段声明 msg db "Hello, world!", 0xA ; 要输出的字符串 len equ $ - msg ; 字串长度 section .text ; 代码段声明 global…
转自: http://www.jianshu.com/p/1e375fb40506 先来个概述,第二部分的画述才是厉害的. Garbage collection(GC) 现在的高级语言如java,c#等,都采用了垃圾收集机制,而不再是c,c++里用户自己管理维护内存的方式.自己管理内存极其自由,可以任意申请内存,但如同一把双刃剑,为大量内存泄露,悬空指针等bug埋下隐患.对于一个字符串.列表.类甚至数值都是对象,且定位简单易用的语言,自然不会让用户去处理如何分配回收内存的问题.python里也同…
由于面试中遇到了垃圾回收的问题,转载学习和总结这个问题. 在C/C++中采用用户自己管理维护内存的方式.自己管理内存极其自由,可以任意申请内存,但也为大量内存泄露.悬空指针等bug埋下隐患. 因此在现在的高级语言(java.C#等)都采用了垃圾收集机制. python也采用了垃圾收集机制,采用引用计算机制为主,标记——清除和分代收集两种机制为辅的策略. 一.引用计数机制 python里每一个东西都是对象,它们的核心就是一个结构体:PyObject. typedef struct_object {…
垃圾回收 1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 257) 这些整数对象是提前建立好的,不会被垃圾回收.在一个 Python 的程序中,所有位于这个范围内的整数使用的都是同一个对象. 同理,单个字母也是这样的. 但是当定义2个相同的字符串时,引用计数为0,触发垃圾回收 2. 大整数对象池 每一个大整数,均创建一个新的对象. >>> b = 1245 >…
目录 编程语言分类 运行Python程序的两种方式 1.交互式 变量与常量 1.变量 2.常量 3.小整数池 垃圾回收机制 编程语言分类 编程语言分为: 1.机器语言:直接用二进制的0和1和计算机(CPU)直接沟通交流,直接操作硬件. 2.汇编语言:用简单的英文标签来表示二进制数,直接操作硬件. 3.高级语言:它并不是指某一种语言,而是包括很多编程语言,比如:PHP.c/c++.Java.C#.python.go等 # 机器语言 优点:不需转换,计算机能直接读懂,执行速度快. 缺点:二进制代码复…
编程语言分为 机器语言(直接用二进制01跟计算机直接沟通交流,直接操作硬件) 优点:计算机能够直接读懂,速度快 缺点:开发效率极低 汇编语言(用简单的英文标签来表示二进制数,直接操作硬件) 优点:开发效率高于机器语言 缺点:执行效率较机器语言 高级语言(直接用人类识别的字符去编写程序,不能直接操作硬件,需要借助特殊工具转换成机器语言去操作硬件 高级语言分为 编译型语言:借助编译器转换成机器语言,一次编译生成执行文件再去执行,若要修改源代码需要重新编译生成执行文件,如C.C++.Delphi等 优…
编程语言 从低级到高级的发展的过程 1.机器语言 计算机是基于电工作的.(基于高.低电平 1010010101011) 如果用机器语言表现一个字符的意思需要多段代码的行.但是计算机读取的快. 所以机器语言的 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言 汇编语言的属性,汇编语言通过英文字符组成 优点:执行效率相较于机器语言略低 缺点:开发效率相较于机器语言略高 举个例子: ; hello.asm section .data ; 数据段声明 msg db "Hello, world!&q…
Python程序运行流程 Python解释器首先将程序将py文件编译成一个字节码对象PyCodeObject(只存在于内存中).(当这个模块的 Python 代码执行完后,就会将编译结果保存到了pyc文件中,这样下次就不用编译,直接加载到内存中.pyc文件只是PyCodeObject对象在硬盘上的表现形式.) py文件被编译后,接下来的工作就交由 Python虚拟机来执行字节码指令.Python虚拟机会从编译得到的PyCodeObject对象中依次读入每一条字节码指令,并在当前的上下文环境中执行…
1.文件路径要注意 我把文件放在了D盘,如下图:你们可以根据自身情况设置 2.python环境要选择本地下载好的 如下图: 点击本机存在的环境,如果提示NO interpr,就点击第二步 如果还是没有则继续如下图 主题选择 点击file,settings,-Editor-color- scheme 如下图所示: pycharm切换解释器 点击file - settings - Project - Python Interpreter 如下图所示: 如何创建python脚本文件 由于文件的后缀名是…
编程语言分类:机器语言.汇编语言.高级语言. 机器语言:机器能直接识别的程序语言或指令代码(二进制指令),勿需经过翻译,每一操作码在计算机内部都有相应的电路来完成它 汇编语言:比机器语言略高级,用英文标签代表一组二进制指令操作机器 高级语言:分为编译型(C.C++.go)和解释型(C#.Python.Java(先编译后解释)). 开发效率:高级语言(解释型)>高级语言(编译型)>汇编语言>机器语言 执行效率:机器语言>汇编语言>高级语言(编译型)>高级语言(解释型) 跨…
简介: Python是一款高层次的解释性语言:Python对于初学者来说(易于学习)Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单.学习Python的目的就是为了能够与计算机进行沟通\交流,在Python的语法中,每个语法存在的意义就是为了让计算机能够像人类一样直白的讲,就是让计算机具备我们人类的某一项技能. ## ### ## 一:注释的语法 1.注释的意思就是对代码的解释说明,注释不会影响程序的运行,只起到提示作用! 注释分为两种: 其中一种叫单行注释 单行…
一.注释 1.什么是注释 注释就是对代码的解释说明,注释的内容不会被当作代码运行 2.为什么要注释 增强代码的可读性 3.怎么用注释? 代码注释单行和多行注释 单行注释用#号,可以跟在代码的正上方或正后方 多行注释可以用三对引号(单双都行)""" """ pycharm注释快捷键 ctrl + ?…
昨日内容回顾 协程实际上是一个线程,执行了多个任务,遇到IO就切换 切换,可以使用yield,greenlet 遇到IO gevent: 检测到IO,能够使用greenlet实现自动切换,规避了IO阻塞问题. 昨天没有讲到的小问题,看下面的例子: import gevent def func(): print('eating') gevent.spawn(func) # 协程任务开启 执行程序,没有输出结果 加上join import gevent def func(): print('eati…
垃圾回收机制和gc模块 Py的一个大好处,就是灵活的变量声明和动态变量类型.虽然这使得学习py起来非常方便快捷,但是同时也带来了py在性能上的一些不足.其中相关内存比较主要的一点就是py不会对已经销毁的对象所占据的内存做自动的释放内存空间的工作. 在细看内存释放工作之前,有必要先来了解一下py的垃圾回收机制. ■ 垃圾回收机制 Python中,主要依靠gc(garbage collector)模块的引用计数技术来进行垃圾回收.所谓引用计数,就是考虑到Python中变量的本质不是内存中一块存储数据…
一.写在前面: 我们都知道Python一种面向对象的脚本语言,对象是Python中非常重要的一个概念.在Python中数字是对象,字符串是对象,任何事物都是对象,而它们的核心就是一个结构体--PyObject. typedef struct_object{ int ob_refcnt; struct_typeobject *ob_type; }PyObject; PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数. 二.垃圾回收机制 垃圾回收(Garbage Colle…
python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式,所以当一个变量值没有关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是一个垃圾会被python解释的垃圾回收机制自动回收 二.什么是垃圾回收机制 垃圾回收机制(简称GC)是python解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间 三.为什么要用垃圾回收机制 程序运行过…
Python的垃圾回收机制 引子: 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,而变量名是访问到变量值的唯一方式,所以当一个变量值没有关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是一个垃圾会被Python解释的垃圾回收机制自动回收... 一.什么是垃圾回收机制? 垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间 二.为什么要用垃圾回收机制? 程序运行…
[python的垃圾回收机制是怎么实现的] 在C语言时代程序员要负责内存的申请和释放,虽然这样的程序可以对资源进行精细的控制.但是它也有它的问题.这就要求程序员 要写许多与业务逻辑无关的内容在代码里面:更大的问题是程序员有可能忘记了释放自己申请的资源.如果一个程序总是申请资源而 不主动把资源释放给操作系统.那么操作系统有再多的资源也不够给程序败的. 所以呢! C语言不但对程序员的能力有比较高的要求,还要它比较细心才行:我之前就遇到过一个家公司他们的C#代码有问题,Task 对象应该在用完之后要c…
构造函数与析构函数 构造函数: 用于初始化类的内容部状态,Python提供的构造函数式 __init__(); 也就是当该类被实例化的时候就会执行该函数.那么我们就可以把要先初始化的属性放到这个函数里面.如下程序: __init__()方法是可选的,如果不提供,Python 会给出默认的__init__方法 一般数据的获取需要定义的get和set方法 析构函数: 上图中的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕,在跳…
深拷贝与浅拷贝 import copy 浅拷贝:将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象.copy.copy() 深拷贝:将一个对象拷贝到另一个对象中,新开辟了一个空间,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象.copy.deepcopy() 进程.线程.协程 进程process:资源分配的最小单位,一个可执行的程序被加载到内存中.拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度. 多进程应用于CPU密集,进程间通信的方式:队列…
目录 一 引入 二.什么是垃圾回收机制? 三.为什么要用垃圾回收机制? 四.垃圾回收机制原理分析 4.1.什么是引用计数? 4.2.引用计数扩展阅读 4.2.1 标记-清除 4.2.2 分代回收 一 引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值是没有用的呢? 由于变量名是访问到变量值的唯一方式,所以当一个变量值不再关联任何变量名时,…
今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构.图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器.随着寄存器.异失性存储器(内存)和永久性存储器(硬盘)的出现,也出现了一个矛盾——存储器越来越快,价格也越来越贵.因此,如何利用好每一份告诉存储器的控件,永远是系统设计的一个核心. 回到Python的应用:Python程序在运行的时候,需要在内存中开辟一块空间,用于存放运行时产生的临时变量:计算完成后,再将结果输出到永久性存储器中.如果数据量过大,内存空间管理…
目录 一 引入 二.什么是垃圾回收机制? 三.为什么要用垃圾回收机制? 四.垃圾回收机制原理分析 4.1.什么是引用计数? 4.2.引用计数扩展阅读 一 引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值是没有用的呢? 由于变量名是访问到变量值的唯一方式,所以当一个变量值不再关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是没有…
一 .引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值是没有用的呢? 由于变量名是访问到变量值的唯一方式,所以当一个变量值不再关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是没有用的,就应该被当成一个垃圾回收.毫无疑问,内存空间的申请与回收是非常耗费精力的事情,而且存在很大的危险性,稍有不慎就有可能引发内存溢出问题,好在Cp…
文章链接:https://www.jianshu.com/p/1e375fb40506 Garbage collection(GC) 现在的高级语言如java,c#等,都采用了垃圾收集机制,而不再是c,c++里用户自己管理维护内存的方式.自己管理内存极其自由,可以任意申请内存,但如同一把双刃剑,为大量内存泄露,悬空指针等bug埋下隐患. 对于一个字符串.列表.类甚至数值都是对象,且定位简单易用的语言,自然不会让用户去处理如何分配回收内存的问题. python里也同java一样采用了垃圾收集机制,…
目录 字典的内置方法 类型转换 字典取值 修改值 计算字典长度 成员运算 删除元素 获取元素 更新字典 快速生成字典 setdefault()方法 元组的内置方法 类型转换 索引与切片操作 统计长度 成员运算 统计某个元素出现的次数 元组特性 集合内置方法 类型转换 集合去重 关系运算 简单认识垃圾回收机制 前言 引用计数 标记清除 分代回收 作业 答案 第一题 第二题 第三题 字典的内置方法 类型转换 # dict()用于转换成字典 print(dict(name='tom', age=18)…
概览:       主要通过 引用计数来进行垃圾收集, 就是说,当一个对象没有被其他对象引用的时候,会释放掉内存.     但是会有一些循环引用的对象,通过上面的方法,是没有办法清除掉的.所以,python还有另外的一个机制来解决这个问题,那就是标记-清除. 标记-清除:         主要过程为, 扫描所有容器对象(不会扫描int, string,这些简单对象,因为他们不能包含其他对象的引用,不会造成循环引用),通过一种方法将这些对象分为两部分,一部分表示可以被删除,一部分表示不可被删除,然…
一.前言 Python 是一门高级语言,使用起来类似于自然语言,开发的时候自然十分方便快捷,原因是Python在背后为我们默默做了很多事情,其中一件就是垃圾回收,来解决内存管理,内存泄漏的问题. 内存泄漏:当程序不停运行,有一部分对象没有作用,但所占内存没有被释放,服务器内存随时间越来越少,最终导致系统的崩溃,所以内存泄漏是一个需要重点关注的问题. 二.引用计数 Python 标记一个对象是否还有用的方法就是用引用计数,以下情形会为该对象的计数+1: 1. 创建时 2. 被引用时 3. 作为参数…
js垃圾回收机制:标记清除 Js具有自动垃圾回收机制.垃圾收集器会按照固定的时间间隔周期性的执行. JS中最常见的垃圾回收方式是标记清除. 工作原理 当变量进入环境时,将这个变量标记为"进入环境".当变量离开环境时,则将其标记为"离开环境".标记"离开环境"的就回收内存. 工作流程 1.    垃圾回收器,在运行的时候会给存储在内存中的所有变量都加上标记. 2.    去掉环境中的变量以及被环境中的变量引用的变量的标记. 3.    再被加上标记…
概述 python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略. 引用计数 Python语言默认采用的垃圾收集机制是『引用计数法 Reference Counting』,该算法最早George E. Collins在1960的时候首次提出,50年后的今天,该算法依然被很多编程语言使用. 『引用计数法』的原理是:每个对象维护一个ob_ref字段,用来记录该对象当前被引用的次数,每当新的引用指向该对象时,它的引用计数ob_ref加1,每当该对象的引用失效时计数ob_ref减1,一…