- 博客(29)
- 资源 (7)
- 收藏
- 关注
原创 计算机知识记录本
1.原子操作 AtomicAdd32①所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。②原子操作是不需要synchronized(同步)③如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,那么这个操作是一个原子(atomic)操作。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分。将整个操作视作一个整体是原子性的核
2020-10-23 10:39:58
476
原创 C语言学习记录本
1.使用memcpy_s()代替memcpy()memcpy_s(void *dest, size_t destMaxLen, const void *src, size_t count);// destMaxLen表示目标地址的字符个数,目标缓冲区长度,可以用sizeof获取// count表示需要拷贝的字符串长度,可以用sizeof获取void *memcpy(void *str1, const void *str2, size_t n);2.字符串长度int len..
2020-10-15 20:51:23
349
原创 算法学习(2)--数组、链表和跳表的基本实现与特性
一、数组数组是一段连续地址的内存,使用内存管理器(memory controller)访问,访问的时间复杂度为O(1)。 增(删)元素:插入(删除)一个元素,该位置后元素全部后移(前移),时间复杂度为O(n)。 数组扩张时,如果原有内存大小不能满足需求,则开辟一块原来大小两倍的内存,用以复制旧数组。二、链表node,有单链表、双向链表、循环链表,pHead/pTail/构造函数。 增删不涉及群移操作,移动和修改操作的时间复杂度为O(1)。 访问元素节点的时间复杂度为线性复杂度O(n).
2020-08-06 00:09:10
283
1
原创 算法学习(1)--时间复杂度和空间复杂度
从现在开始自己想规范且高效化提高自己的编码能力,故开始正式的自我学习,从简单算法的学习开始入手。1.时间复杂度 Big O notationO(1) Constant Complexity常数时间复杂度O(log n) Logarithmic Complexity对数复杂度O(n) Linear Complexity线性时间复杂度O(n^2) N Square Complexity平方O(n^3) N Cubic Complexity 立方O(2^n) Exponenti..
2020-07-16 23:56:08
304
原创 操作系统原理学习(第六周)_进程同步
6-1进程同步背景1.生产者消费者问题采用共享内存解决生产中消费者问题时,N个缓冲区最多只能用N-1个,如何解决?2.共享数据的一致性①对共享数据的并发访问可能导致数据的不一致性②要保持数据的一致性,需要一种保证并发进程的正确执行顺序的机制。③竞争条件 race condition若干并发的进程(线程)都可以访问和操纵同一共享数据,从而执行结果取决于并发进程对这个...
2019-07-17 23:25:06
696
原创 python读取数据库PostgreSQL导出shapefile(shp)文件
1.现有数据和目标成果1.1现有数据源数据保存在数据库中,使用的数据库管理软件是PostgreSQL。本质上来说,数据存储在数据库中是以记录存储在表(table)上实现的,在shapefile中也是以记录的形式存在属性表(dbf)。所以数据库中表的列(字段)可以与dbf表的列一一对应。数据库中数据形式大致如下:1.2目标成果众所周知,shapefile是ESRI公司制...
2019-07-05 17:31:06
2747
原创 python读取数据库PostgreSQL导出excel表格
1.现有数据和目标成果1.1现有数据源数据保存在数据库中,使用的数据库管理软件是PostgreSQL。本质上来说,数据存储在数据库中是以记录存储在表上实现的,在excel表格中也是以记录的形式存在。所以数据库中表的列(字段)可以与excel表的列一一对应。形式大致如下:1.2目标成果导出成果是excel表格,文件后缀名是.xlsx。形式大致如下:2.代码过程...
2019-07-04 11:14:27
3802
6
原创 操作系统原理学习(第五周)_CPU调度
5-1 CPU调度的基本概念1.进程的CPU和I/O burst的交替序列①交替序列的图②CPU脉冲的分布:在系统中存在许多短CPU脉冲,只有少量的长CPU脉冲。③I/O型作业,许多短CPU脉冲;CPU型作业,有几个长CPU脉冲。2.当CPU空闲时,OS就选择内存中某个就绪进程,并给其分配CPU3.进程的CPU调度可能发生在以下情况下:①从运行转到等待 ...
2019-07-01 23:48:35
993
原创 操作系统原理学习(第四周)_线程
4-1 线程的引入1.线程的概念①进程具有两个基本属性:是一个拥有资源的独立单位,可独立分配虚地址空间、主存和其他 又是一个可独立调度和分派的基本单位这使得进程成为并发执行的基本单位②问题:由于进程是一个资源的拥有者,因而在创建、撤销、切换调度时,系统需要付出较大的时空开销,故进程的数目不宜过多,进程的切换频率不宜过高,限制了并发程度。③方法:将进程的两个基本属性分开对...
2019-06-27 21:33:40
396
原创 操作系统原理学习_第三周(下)_进程
3-5 进程操作1.进程控制①进程有生命周期:产生、运行、暂停、终止。对进程的这些操作叫进程控制。②进程控制的职责是对系统中进程实施有效的管理,它是CPU的管理的一部分(还有进程同步、通信和调度)。③当系统允许多进程并发执行时,为了实现共享,协调并发进程的关系,处理机管理必须对进场实施有效的管理。2.进程创建的情况①作业调度:在批处理系统中,作业调度程序调度到某个...
2019-06-26 17:59:28
369
原创 操作系统原理学习(第三周_上)_进程
3-1 进程概念 process1.顺序执行①顺序环境计算机只有一个程序在运行,改程序独占系统中所有资源,其执行不收外界影响。②顺序执行的特征:顺序性:按程序结构所指定的次序封闭性:独占系统资源可再现性:初始条件相同则结果相同2.并发环境①一定时间内物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,且次序不是事先确定的。②并发执行的特征:...
2019-06-18 12:15:24
334
原创 操作系统原理学习(第二周)_操作系统结构
2-1 计算机硬件1.计算机系统体系结构2.设备控制器①I/O设备与CPU可并行执行(execute concurrently)②每一设备控制器负责一个设备类型③每一设备控制器有一局部缓存(CPU与I/O交互)③CPU通过局部缓存与主缓存交换数据④I/O从设备到设备控制器的局部缓存⑤设备控制器通过引起中断来通知CPU的操作已经完成3.中断定义:...
2019-06-15 13:12:24
842
原创 操作系统原理学习(第一周)_操作系统概述
1.为什么要有操作系统:①硬件难用,只能识别0和1;②为了覆盖硬件2.CPU 心脏 操作系统 大脑、控制中心3.what is an Operating System ?it is a program that manages the computer hardware硬件上的第一层软件,是对硬件的首次扩充,其他软件运行的基础。4.①hardware...
2019-06-04 11:33:59
764
原创 C++中const用法
1.const和指针:如果const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量。char greet[] = “Hello”;char* p = greet;//①greet不能变,即不能通过(*p) = 的方式改变//但仍可通过greet = 的方式改变;指针可指向别处。const char...
2019-06-01 22:24:03
579
原创 C++中值传递(pass-by-value)和引用传递(pass-by-reference)
1.pass-by-value的情况:缺省情况C++以pass-by-value(继承C的方式)传递对象至(或来自)函数。函数参数都是以实际参数的复件为初值,调用端所获得的也是函数返回值的一个复件,复件由对象的拷贝构造函数产出,可能使pass-by-value成为耗时的操作。2.耗时的原因类的对象作为函数参数时,如果使用值传递,要先拷贝一份实参的副本,需要调用类的拷贝构造函数,函...
2019-05-31 10:07:45
2054
原创 python的模块导入
单个文件导入:导入的模块可以是一个py文件(放置在当前文件的同级目录、默认路径等)导入:import 模块名使用:模块名.函数名导入:from 模块名 import *使用:函数名-----------------------------------------------文件夹导入:文件夹必须要有一个__init__.py文件,同时包含其他的功能性的py文件导入...
2019-05-29 13:11:22
218
原创 利用道格拉斯·普客法(DP法)压缩矢量多边形(C++)
1.算法描述经典的Douglas-Peucker算法(简称DP法)描述如下:(1)在曲线首尾两点A,B之间连接一条直线AB,该直线为曲线的弦;(2)得到曲线上离该直线段距离最大的点C,计算其与AB的距离d;(3)比较该距离与预先给定的阈值threshold的大小,如果小于threshold,则该直线段作为曲线的近似,该段曲线处理完毕。(4)如果距离大于阈值,则用C将曲线分为两段...
2019-02-22 11:50:56
1404
原创 shp系列(七)——利用C++进行Shx文件的写(创建)
之前介绍了Shp文件和Dbf的写(创建),最后来介绍一下Shx文件的写(创建)。Shx文件是三者之中最简单的一个,原因有两个:第一是Shx文件的头文件与Shp文件的头文件几乎一样(除了FileLength);第二是Shx文件的主体只有两个记录项,分别是Offset和ContentLength。推荐结合读取shx的博客一起看!推荐结合读取shx的博客一起看!推荐结合读取shx的博客一起看...
2018-12-22 13:03:49
1286
原创 shp系列(六)——利用C++进行Dbf文件的写(创建)
上一篇介绍了shp文件的创建,接下来介绍dbf的创建。推荐结合读取dbf的博客一起看!推荐结合读取dbf的博客一起看!推荐结合读取dbf的博客一起看! 1.Dbf头文件的创建Dbf头文件的结构如下:记录项数组说明:字段类型说明:关于每项的具体含义参照读取dbf文件的解释,这里重点解释几项:HeaderByteNum指dbf头文件的字节数,数值不用...
2018-12-22 12:08:41
1492
2
原创 shp系列(五)——利用C++进行shp文件的写(创建)
之前介绍了shp文件、dbf文件和shx文件的的读取,接下来将分别介绍它们的创建过程。一般来说,读和写的一一对应的,写出的文件就是为了保存数据供以后读取的。写的文件要符合shapefile的标准。之前读取的时候使用的函数是fread,写的函数对应为fwrite,文件为二进制流文件。建议本博客和之前shp读取的博客一起看!建议本博客和之前shp读取的博客一起看!建议本博客和之前shp读取...
2018-12-21 18:37:54
2620
7
原创 shp系列(四)——利用C++进行Shx文件的读(打开)
1.shx文件的基本情况shx文件又叫索引文件,主要包含坐标文件的索引信息,文件中每个记录包含对应的坐标文件记录距离坐标文件的初始位置的偏移量。通过索引文件可以很方便地在坐标文件中定位到指定目标的坐标信息。 2.shx文件的组成索引文件也是由头文件和实体信息两部分构成,其中文件头部分是一个长度固定(100 bytes)的记录段,其内容与坐标文件的文件头基本一致(FileLength...
2018-12-20 18:04:03
2456
原创 shp系列(三)——利用C++进行DBF文件的读(打开)
1.DBF文件要点DBF文件又叫属性文件,也叫dBASE文件,文件后缀是.dbf,实际上ArcGIS打开后的属性表就是DBF的信息。DBF文件遵循以下几个条件:每个要素在表中必须要包含一个与之相对应的记录。 记录的顺序必须与要素在主文件中(*.shp)的顺序一样。 dBASE 文件头中的年份值必须要晚于 1900 年。2.DBF文件的组成属性文件(.dbf)用于记录属性信息。它是...
2018-12-20 17:24:33
2685
原创 shp系列(二)——利用C++进行shp文件的读(打开)
1.各数据类型及其字节数BYTE 1; char 1; short 2; int 4; double 8;2.位序big和little及其转换对于位序是big的数据我们在读取时要小心。通常,数据的位序都是Little,但在有些情况下可能会是big,二者的区别在于它们位序的顺序相反。一个位序为big的数据,如果我们想得到它的真实数值,需要将它的位序转换成...
2018-12-20 14:47:33
7053
3
原创 shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言
博客背景和目的最近在用C++写一个底层的东西,需要读取和创建shp文件。虽然接触shp文件已经几年了,但是对于shp文件内到底包含什么东西一直是一知半解。以前使用shp文件都是利用软件(如ArcGIS)直接打开,保存;创建文件则需要专门利用ArcToolBox等创建图形。 网上有现成的有关shp文件的库,如GDAL等,可以结合这些库来读写shp文件。但是由于编程环境问题、库的版本、编译、引...
2018-12-18 20:33:06
4368
3
原创 (四)建筑物多边形化简系统——“去尾巴”和分割复杂多边形
问题说明实际操作中,发现有的多边形存在“尾巴”或者很细的部分。“尾巴”细长,明显不是有效建筑物区域,特点就是区域面积小,看起来细长,附着于大面积多边形外测或者连接两个多边形。需要去除尾巴或者分割多边形,为后面拟合多边形做准备。 算法思想去除“尾巴”(凸出部分)和分割多边形的算法思想:1.求平均距离。针对环,遍历每个点,求到下一个点之间的距离,计算该环两点间...
2018-10-06 21:36:30
830
原创 (二)建筑物多边形化简系列——多边形点数化简
1.目的实验发现,一个多边形由多个环,每个环的点数数量都比较大,这直接导致程序处理速度非常慢。为了简化图形,加快程序运行速度,为方便后期拟合建筑物,打算对建筑物原始数据进行化简。2.做法化简的内容是去除部分建筑物多边形的点,采取保留一半点的做法,观察每次化简后图形与原始图形的差别。3.实施对去除噪点环之后的建筑物多边形数据进行处理。处理的方法是对半,函数为:// 0904,...
2018-09-04 11:00:15
1101
原创 (一)建筑物多边形化简系列——去除噪点环
由于本人最近在进行建筑物数据处理的项目,遇到了较多的问题,同时也收获了很多知识。所有打算写一个建筑物处理的系列博客。要处理建筑物多边形,首先得理解结构关系,这是所有实现处理的基础。建筑物多边形是由一条条封闭的环(线状)组成,环是由一组首尾相同的点组成,所以对建筑物多边形的处理实质是对环和点处理。实际项目中,所给的数据是非常凌乱的,杂质非常多。下图是初始的建筑物多边形数据,我们可以发现:局部...
2018-07-19 12:56:04
1615
1
原创 (三)建筑物多边形化简系列——去除冗余点
制图综合和建筑物数据处理等都涉及到建筑物多边形的化简。制图综合中,由于比例尺的变小,建筑物在小比例尺地图上所占面积变小,这意味着建筑物图形的形状精度也有一定的损失,为了更好地表示原有建筑物的特征(面积、图形和方向),需要对建筑物多边形进行化简。另外,从遥感影像提取的建筑物矢量数据需要经过图形化简等一系列操作才能作为可使用的数据。首先明确,矢量数据结构中,建筑物多边形是由一些列环(circle)...
2018-07-18 00:02:24
2084
1
原创 (五)建筑物多边形化简系列——最小外接矩形的获取
最小外接矩形问题是在给出一个多边形(或一群点),求出面积最小且外接多边形的矩形的问题。这个问题看起来并不难,但是具体实现并不简单。除了调用现有的公开库之外,这里给出一种简单且易理解的方法。 算法的主要思想是:(1)先实现多边形的简单外接矩形的算法。简单外接矩形是指边平行于x轴或y轴的外接矩形。简单外接矩形很有可能不是最小外接矩形,却是非常容易求得的外接矩形,这为后面做铺垫。(2)实...
2018-07-08 17:28:04
6462
2
地理信息展示系统.zip
2019-05-18
GIS小型地理展示系统
2018-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人