空间数据

python 类学习笔记

血红的双手。 提交于 2020-02-04 13:49:21
Python的类机制使用尽可能少的新语法和语义将类引入语言。Python的类提供了面向对象程序设计语言所有的 标准特性:类继承机制允许有多个基类,一个派生类可以覆盖基类中的任何方法,一个方法可以使用相同的名字调用 基类中的方法。 Table of Contents 1 名字和对象 2 Python的域(scopes)和名称空间(namespaces) 3 初识类 3.1 定义类 3.2 类对象 3.3 实例化对象 3.4 方法对象 4 漫谈 5 派生 6 多重继承 7 私有变量和类局部引用 8 结构体 9 异常(Exceptions)也是类 10 迭代器 11 生成器(Generators) 1 名字和对象 对象有其特性,同一个对象可以有多个名字,这与其它语言中的别名很相似。别名有时候像指针,例如将对象当做 函数参数传递的时候非常高效,因为只传递了指针,这避免了pascal中的两套参数传递机制。 2 Python的域(scopes)和名称空间(namespaces) 在引入类之前,我们讲Python的域规则。类的定义巧妙地运用了名称空间,所以你需要知道域和名称空间如何工作才能理解发生了什么。 首先从定义开始。 名称空间是名字和对象之间的映射。多数名称空间使用Python的字典来实现,但 除非出于性能考虑,我们 通常不关心具体如何实现。名称空间的例子有,内置的名称例如abs()

Linux内存管理(上)

天大地大妈咪最大 提交于 2020-02-04 04:00:08
摘要 : 本章首先以应用程序开发者的角度审视 Linux 的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。力求从外自内、水到渠成地引导网友分析 Linux 地内存管理与使用。在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终能驾驭 Linux 内存管理。 前言 内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,无论市面上或是网上都充斥着大量涉及内存管理的教材和资料。因此我们这里所要写的 Linux 内存管理采取必重就轻的策略,从理论层面就不去板门弄斧,贻笑大方了。我们最想做的和可能做到的是以开发者的角度谈谈对内存管理的理解,最终目的是把我们在内核开发中使用内存的经验和对 Linux 内存管理的认识与大家共享。 当然这其中我们也会设计一些诸如段页等内存管理的基本理论,但我们目的不是为了强调理论,而是为了指导理解开发中的实践,所以仅仅点到为止,不做深究。 遵循“理论来源于实践”的“教条”,我们先不必一下子就钻入内核里去看系统内存到底是如何管理,那样往往会让你陷入似懂非懂的窘境(我当年就犯了这个错误!)。所以最好的方式是先从外部(用户编程范畴)来观察进程如何使用内存,等到对大家内存使用有了较直观的认识后,再深入到内核中去学习内存如何被管理等理论知识。最后再通过一个实例编程将所讲内容融会贯通。

统计学习方法笔记

烂漫一生 提交于 2020-02-03 03:33:55
统计学习方法概论 1.1 统计学习 统计学习 (statistics learning): 计算机 基于 数据 构建 概率统计模型 并运用 模型 对 数据 进行 预测与分析 。也称为 统计机器学习 (statistics machine learning)。 统计学习的特点: 以 计算机及网络 为平台,是建立在计算机及网络之上的; 以 数据 为研究对象,是数据驱动的学科; 目的是对 数据 进行 预测与分析 ; 统计学习以 方法 为中心,统计学习方法构建 模型 并应用模型进行预测与分析; 是 概率论、统计学、信息论、计算理论、最优化理论及计算机科学等 多个领域的交叉学科; // 现在我们所说的机器学习,往往是指 统计机器学习 。 统计学习的对象 数据(data) 。 首先呢,统计学习从数据出发,提取数据的特征,抽象出数据中的模型,发现数据中的知识,最终又回到对数据的分析预测中去。 其次,作为统计学习的对象,数据是多样的,它包括存在于计算机及网络上的各种 数字 、 文字 、 图像 、 视频 、 音频 数据以及它们的组合。 关于数据的基本假设: 同类数据具有一定的统计规律性。 (什么叫“同类数据”:具有某种共同性质的数据,比如英文文章,互联网网页,数据库中的数据等,它们具有统 计规律性 ,所以可以用 概率统计方法 来进行处理。比如,可以用随机变量描述数据中的特征

学_汇编语言_王爽版 要点采集笔记(未完待续...)

。_饼干妹妹 提交于 2020-02-02 19:06:12
第一章 基础知识 存储器(内存)存放CPU工作的指令和数据(CPU可以直接使用的信息在内存中存放);指令和数据都是二进制数没有任何区别,由CPU决定是数据还是指令 内存单元:存储器被分为若干个存储单元,并从0开始编号(存储单元的地址),一个存储单元为1字节(8bit) CPU的读写 总线逻辑上分为:地址总线、数据总线、控制总线 地址总线:地址线宽度决定了CPU的寻址能力,计算方式 :2^[地址线宽](个内存单元) 数据总线:决定了CPU和外界的数据传输速度(8根数据总线可传送一个8位(bit)二进制数,即1个字节) 控制总线:是各外部器件的不同控制线的集合 CPU进行数据读写必须经过3类信息交互: ①存储单元的地址(地址信息)②器件的选择,读或写的命令(控制信息)③读或写的数据(数据信息) 读:CPU在内存中读取数据时,要先指定存储单元的地址(你要找一个地方先要确定一个地址),会把要读取的地址经过地址总线发给内存;同时CPU控制器将内存读命令通过控制总线发送给内存,并通知内存要读取数据;最后内存将被指定的内存单元中的数据经过数据总线送入CPU 写:与读类似,CPU经地址线发送要操作的内存单元的地址,CPU经控制线将内存写命令发送至内存,并通知内存要写入数据;CPU通过数据线将数据送入指定的内存单元; 内存地址空间: 每一个外部器件都有自己的存储芯片(如显卡有显存RAM和ROM

深入理解JVM Note

对着背影说爱祢 提交于 2020-02-02 13:28:40
第2章 Java内存区域与内存溢出异常 运行时数据区域 在虚拟机有栈、堆和方法区。 线程共享的:堆、方法区 不共享的:栈、程序计数器(代码执行的行号) 程序计数器(Program Counter Register): 一小块内存空间,单前线程所执行的字节码行号指示器。字节码解释器工作时,通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 栈 通常我们定义一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间。 栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 存在栈中的数据可以共享。假设我们同时定义: int a = 3;  int b = 3; 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,如果没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址。接着处理int b = 3;在创建完b的引用变量后,由于在栈中已经有3这个字面值,便将b直接指向3的地址。这样,就出现了a与b同时均指向3的情况。 StackOverflowError 方法压入和弹出 连续 1.引用类型总是被分配到“堆”上。不论是成员变量还是局部 2.基础类型总是分配到它声明的地方:成员变量在堆内存里,局部变量在栈内存里。 比如

图神经网络 | (2) 图神经网络(Graph Neural Networks,GNN)综述

不打扰是莪最后的温柔 提交于 2020-02-01 16:21:16
原文地址 本篇文章是对 论文“Wu Z , Pan S , Chen F , et al. A Comprehensive Survey on Graph Neural Networks[J]. 2019.” 的翻译与笔记。 论文链接 目录 1. 什么是图神经网络? 2. 有哪些图神经网络? 3. 图卷积网络(Graph Convolution Networks,GCN) 4. 图注意力网络(Graph Attention Networks) 5. Graph Autoencoders 6. Graph Generative Networks 7. Graph Spatial -Temporal Networks 8. 图神经网络的应用 1. 什么是图神经网络? 在过去的几年中,神经网络的成功推动了模式识别和数据挖掘的研究。许多机器学习任务,如目标检测、机器翻译和语音识别,曾经严重依赖手工的特征工程来提取信息特征集,最近被各种端到端的深度学习范式(例如卷积神经网络(CNN)、长短期记忆(LSTM)和自动编码器)彻底改变了。在许多领域中,深度学习的成功部分归因于快速发展的计算资源(如GPU)和大量训练数据的可用性,部分归因于深度学习从欧氏空间数据中提取潜在表示的有效性。 尽管深度学习在欧氏空间中的数据方面取得了巨大的成功,但在许多实际的应用场景中的数据是从非欧式空间生成的

数据库存储引擎innodb与myisam

怎甘沉沦 提交于 2020-01-30 07:22:40
一、innodb与myisam的区别与取舍、innodb引擎的4大特性 如下是两者的索引图: 两者的 相同点 :两者都是mysql的常用引擎;两者的索引都是B+树 两者的 区别 : 事务:InnoDB支持,MyISAM不支持 外键:InnoDB支持,MyISAM不支持 索引类型:InnoDB是聚簇索引(叶子节点存数据),MyISAM是非聚簇索引(叶子节点存指针) 插入速度:MyISAM批量插入速度快 查询行数:MyISAM的查询性能会比InnoDB强,InnoDB查询表行数要全表扫描,MyISAM存在变量中直接读取 内存空间使用率:InnoDB比MyISAM高 全文索引:MyISAM支持。Innodb不支持,5.7以后才支持 压缩查询:MyISAM表格可以被压缩后进行查询操作 锁级别:InnoDB支持表级锁+(默认)行级锁,而MyISAM支持表级锁 主键:InnoDB必须有,MyISAM可没有 存储文件:Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI PS1:InnoDB的 行锁是实现在索引上 的,而不是锁在物理行记录上。潜台词是,如果访问没有命中索引,也无法使用行锁,将要退化为表锁。 举个例子:t_user(uid, uname, age, sex) innodb; uid PrimaryKey,无其他索引 update t_user set age

C#中Hashtable、Dictionary详解以及写入和读取对比

纵然是瞬间 提交于 2020-01-30 00:22:08
2013年04月22日 11:03 供稿中心: 互联网运营部 摘要: 在本文中将从基础角度讲解HashTable、Dictionary的构造和通过程序进行插入读取对比。 在本文中将从基础角度讲解HashTable、Dictionary的构造和通过程序进行插入读取对比。 一:HashTable 1.HashTable是一种散列表,他内部维护很多对Key-Value键值对,其还有一个类似索引的值叫做散列值(HashCode),它是根据GetHashCode方法对Key通过一定算法获取得到的,所有的查找操作定位操作都是基于散列值来实现找到对应的Key和Value值的。 2.我们需要使用一个算法让散列值对应HashTable的空间地址尽量不重复,这就是散列函数(GetHashCode)需要做的事。 3.当一个HashTable被占用一大半的时候我们通过计算散列值取得的地址值可能会重复指向同一地址,这就是哈希冲突。 在.Net中键值对在HashTable中的位置Position= (HashCode& 0x7FFFFFFF) % HashTable.Length,.net中是通过探测法解决哈希冲突的,当通过散列值取得的位置Postion以及被占用的时候,就会增加一个位移x值判断下一个位置Postion+x是否被占用,如果仍然被占用就继续往下位移x判断Position+2*x位置是否被占用

基础算法——数据排序——冒泡

匆匆过客 提交于 2020-01-30 00:08:22
刚看完洛谷网课回放,开始点懵。 以下总结,笔记整理(有点累了,内容简略,见谅)。 冒泡排序 每一次操作,从左往右扫这个数组;若a[i]>a[i+1],将其交换,重复n次,数组有序。 代码(懂意思就好,大量省略):void bubbleSort() { for(int i=1;i<=n;i++) for(int j=1;j<n;j++) if(a[j]>a[j+1]) swap(a[j],a[j+1]); } 时间复杂度:O(n*n); 空间复杂度:O(1)。 优点:简单明了,空间复杂度低,稳定。 缺点:效率较低,时间复杂度高。 来源: https://www.cnblogs.com/weijianzhen/p/12241753.html

android 堆内存和栈内存详解

Deadly 提交于 2020-01-29 01:38:07
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。 引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针! java中内存分配策略及堆和栈的比较 1 内存分配策略 按照编译原理的观点