空间数据

值类型和引用类型在栈和堆中的分配

谁说我不能喝 提交于 2020-01-10 03:25:47
类型基础及背后的工作原理 数据在内存中的分配与传递 值类型和引用类型它们在内存分配与传递上的区别 内存分配 首先要了解一下内存中栈和堆的概念。 栈(Stack) ##栈是一种先进后出的内存结构。 方法的调用追踪就是在栈上完成的。比如我们有一个main方法(程序入口), 在main方法中会调用一个GetPoint的方法。在线程执行时,会将main方法压入栈底(包括编译好的方法指令,参数,和方法内部变量),然后再将GetPoint的方法压入栈底,GetPoint中没有调用其它方法,压栈完毕。出栈顺序是先进后出,也就是后进先出,栈顶的方法GetPoint先执行完毕,然后出栈,所占内存清空,接着main方法执行后出栈,所占内存清空。 //示意图:自己脑补吧... 从上面方法的压栈出栈中可以看出: ##栈只能在一端对数据进行操作,也就是栈顶端进行操作。’ ##栈也是一种内存自我管理的结构,压栈自动分配内存,出栈自动清空所占内存。 另外值得注意的两点: ##栈中的内存不能动态请求,只能为大小确定的数据分配内存,灵活性不高,但是栈的执行效率很高。 ##栈的可用空间并不大,所以我们在操作分配到栈上的数据时要注意数据的大小带来的影响。 堆(Heap) ##堆与栈有所区别,堆在C#中用于存储实实例对象,能存储大量数据,而且堆能够动态分配存储空间。 ##相比栈只能在一端操作,堆中的数据可以随意存取。 #

寒江独钓(2):串口的过滤

烈酒焚心 提交于 2020-01-09 17:01:31
一、过滤的概念   “过滤”(filter)是极其重要的一个概念。过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而 不需要修改上层的软件或者下层的真实驱动程序,就加入了新的功能。 二、绑定设备的内核Api之一   通过编程可以生成一个虚拟的设备对象,并“绑定”(Attach)在一个真实的设备上。一旦绑定,则本来操作系统发送给真实设备 的请求,就会首先发送到这个虚拟设备。   在WDK中,有多个内核API能 实现绑定功能 。下面是其中一个函数的原型: NTSTATUSIoAttachDevice(IN PDEVICE_OBJECT SourceDevice,IN PUNICODE_STRING TargetDevice,OUT PDEVICE_OBJECT *AttachedDevice);   IoAttachDevice参数如下:      SourceDevice 是调用者生成的用来过滤的虚拟设备;      TargetDevice 是要被绑定的目标设备。请注意这里的 TargetDevice并不是一个PDEVICE_OBJECT(DEVICE_OBJECT   是设备对象的数据结构,以P开头的是其指针),而是一个字 符串(在驱动开发中字符串用UNICODE_STRING来表示)。实际上,   这个字符串是要被绑定的设备的名字

关于mysql 删除数据后物理空间未释放

孤街醉人 提交于 2020-01-09 01:25:07
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删除操作后在数据文件中留下碎片所致。OPTIMIZE TABLE 是指对表进行优化。如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR 、 BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化。这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 。 OPTIMIZE TABLE 命令只对 MyISAM 、 BDB 和 InnoDB 表起作用 。表优化的工作可以每周或者每月定期执行,对提高表的访问效率有一定的好处,但是需要注意的是,优化表期间会锁定表,所以一定要安排在空闲时段进行。 一,原始数据 mysql> select count(*) as total from ad_visit_history; +---------+ | total | +---------+ | 1187096 | //总共有118万多条数据 +---------+ 1 row in set (0.04 sec) 2,存放在硬盘中的表文件大小 [root@BlackGhost test1]# ls |grep

关于mysql 删除数据后物理空间未释

丶灬走出姿态 提交于 2020-01-09 01:21:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删除操作后在数据文件中留下碎片所致。OPTIMIZE TABLE 是指对表进行优化。如果已经删除了表的一大部分数据,或者如果已经对含有可变长度行的表(含有 VARCHAR 、 BLOB 或 TEXT 列的表)进行了很多更改,就应该使用 OPTIMIZE TABLE 命令来进行表优化。这个命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费 。 OPTIMIZE TABLE 命令只对 MyISAM 、 BDB 和 InnoDB 表起作用 。表优化的工作可以每周或者每月定期执行,对提高表的访问效率有一定的好处,但是需要注意的是,优化表期间会锁定表,所以一定要安排在空闲时段进行。 一,原始数据 mysql> select count(*) as total from ad_visit_history; +---------+ | total | +---------+ | 1187096 | //总共有118万多条数据 +---------+ 1 row in set ( 0.04 sec) 2,存放在硬盘中的表文件大小 [root @BlackGhost test1]# ls |grep

表空间Tablespace

别说谁变了你拦得住时间么 提交于 2020-01-08 22:09:28
Oracle Schema Objects Table Storage O racle 数据库 如何保存表数据? Oracle Database uses a data segment in a tablespace to hold table data. Oracle 数据库使用 表空间 中的 数据段 保存表 数据 。 As explained in "User Segments" , a segment contains extents made up of data blocks . 如 " 用户段 " 所述, 段 包含 由 数据块 组成的 扩展盘区 。 The data segment for a table (or cluster data segment, when dealing with a table cluster ) is located in either the default tablespace of the table owner or in a tablespace named in the CREATE TABLE statement. 表数据段 (或涉及表簇时的簇数据段)位于表所有者的默认空间中,或 CREATE TABLE 语句中所指定的表空间中。 表空间、段、区、块的关系 逻辑存储结构包括 表空间,段,区,数据块 。逻辑结构之间的关系是

Kdtree(K-dimension tree)学习

你。 提交于 2020-01-08 10:47:41
以下总结纯属个人学习理解,如有不对还望留言改正。参考文章博客地址如下: https://blog.csdn.net/likika2012/article/details/39619687 https://blog.csdn.net/zhjchengfeng5/article/details/7855241 https://www.joinquant.com/view/community/detail/c2c41c79657cebf8cd871b44ce4f5d97 https://zhuanlan.zhihu.com/p/22557068 https://www.cnblogs.com/dirge/p/6091241.html https://leileiluoluo.com/posts/kdtree-algorithm-and-implementation.html 感谢几位大神的详细总结; 首先要学习kdtree就要先理解二叉树,因为实现kdtree的数据结构是基于二叉树思想来实现的。 二叉树顾名思义就是一个根节点有两个子节点;二叉树思想: 二叉查找树(Binary Search Tree,BST),是具有如下性质的二叉树(来自wiki): 1)若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; 2)若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值;

链表知识总结

岁酱吖の 提交于 2020-01-08 09:34:39
一、什么是链表? 和数组一样,链表也是一种线性表。 从内存结构来看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构。 链表中的每一个内存块被称为节点Node。节点除了存储数据外,还需记录链上下一个节点的地址,即后继指针next。 二、为什么使用链表?即链表的特点 插入、删除数据效率高O(1)级别(只需更改指针指向即可),随机访问效率低O(n)级别(需要从链头至链尾进行遍历)。 和数组相比,内存空间消耗更大,因为每个存储数据的节点都需要额外的空间存储后继指针。 三、常用链表:单链表、循环链表和双向链表 1.单链表 每个节点只包含一个指针,即后继指针。 单链表有两个特殊的节点,即首节点和尾节点。为什么特殊?用首节点地址表示整条链表,尾节点的后继指针指向空地址null。 性能特点:插入和删除节点的时间复杂度为O(1),查找的时间复杂度为O(n)。 2.循环链表 除了尾节点的后继指针指向首节点的地址外均与单链表一致。 适用于存储有循环特点的数据,比如约瑟夫问题。 3.双向链表 节点除了存储数据外,还有两个指针分别指向前一个节点地址(前驱指针prev)和下一个节点地址(后继指针next)。 首节点的前驱指针prev和尾节点的后继指针均指向空地址。 性能特点: 和单链表相比,存储相同的数据,需要消耗更多的存储空间。 插入、删除操作比单链表效率更高O

01-机器学习基础

天涯浪子 提交于 2020-01-08 09:26:05
第1章 机器学习基础 机器学习 概述 机器学习(Machine Learning,ML) 是使用计算机来彰显数据背后的真实含义,它为了把无序的数据转换成有用的信息。是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。 海量的数据 获取有用的信息 机器学习 研究意义 机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。” 一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

Linux 虚拟内存和物理内存的理解

血红的双手。 提交于 2020-01-07 12:11:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 首先,让我们看下虚拟内存: 第一层理解 1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构 2. 一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间,哪些数据在哪里,都由进程控制表中的task_struct记录,task_struct中记录中一条链表,记录中内存空间的分配情况,哪些地址有数据,哪些地址无数据,哪些可读,哪些可写,都可以通过这个链表记录 3. 每个进程已经分配的内存空间,都与对应的磁盘空间映射 Linux 使用虚拟地址空间,大大增加了进程的寻址空间, 由低地址到高地址分别为 : 只读段: 该部分空间 只能读,不可写 ;(包括: 代码段、rodata 段(C常量字符串和#define定义的常量) ) 数据段: 保存 全局变量、静态变量 的空间; 堆 : 就是平时所说的动态内存, malloc/new 大部分都来源于此。其中堆顶的位置可通过函数 brk 和 sbrk 进行动态调整。 文件映射区域 : 如 动态库、共享内存 等映射物理空间的内存,一般是 mmap 函数所分配的虚拟地址空间 。 栈: 用于维护函数调用的上下文空间,一般为 8M ,可通过 ulimit –s 查看。 内核虚拟空间: 用户代码不可见的内存区域,由内核管理

数据驱动的地理学 Data-driven Geography

陌路散爱 提交于 2020-01-07 06:57:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 数据驱动的地理学 Data-driven Geography 引用:Miller H J, Goodchild M F. Data-driven geography[J].GeoJournal, 2015, 80(4): 449-461. 这篇文章的两个作者可是鼎鼎大名,搞地理学的应该不陌生,Miller是俄亥俄州立大学教授,在地理信息科学尤其是交通地理信息方面很有名,Goodchild基本上可以算目前地理信息科学领域第一人了吧,加州大学圣塔巴巴巴拉分校(这可是涛哥心中的圣地啊^-^ )的教授,美国科学院院士,地理信息科学这概念就是他老人家首先提出来的。 文章的题目很吸引人,“大数据”是近几年非常火的概念,数据时代已经来临,大数据开始影响社会各行各业,那么在地理学的研究领域会引发什么样的变化呢,数据如何驱动地理学的研究呢。文章从大数据的概念开始,重点分析了用数据驱动地理学研究所面对的主要挑战是什么;在数据驱动的地理学研究中的理论扮演什么样的角色;以及大数据技术如何融入到地理学的研究中。 1、什么是大数据。 大数据的“大”不仅是指数量多,它体现在三个维度上,“3V”, volume:采集和存储的数据数量;velocity:数据获取的速度;variety:获取数据的类型。 2、大数据与数据驱动的地理学。