midpoint

MySQL —— 缓冲池 Buffer Pool

。_饼干妹妹 提交于 2021-02-04 09:39:57
本文主要内容源自官网: https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-pool.html 感兴趣的可以直接阅读 缓冲池是主内存的一块区域,在 InnoDB 访问表和索引数据时会在其中进行高速缓存(可以联系 CPU 的高速缓存)。在专用服务器上,通常会把 80% 的内存分配给缓冲池。 缓冲池被分为多个页面,这些页面可能包含多个行。缓冲池使用列表数据结构。使用 LRU (Least Recently Used,最近最少使用)算法的变体将数据从缓存中老化。 缓冲池 LRU 算法 缓冲池 LRU 算法将缓冲池作为列表进行管理。当缓冲池空间不足,但有新页面需要添加到缓冲池时,将驱逐最近最少使用的页面,并将新页面添加到列表的 Midpoint(中点)。总列表分为两个子列表(Sublist): 1. 最前面的是最近访问过的新页面(或者叫 young 页面,年轻页面)子列表 2. 末尾是最近访问的旧页面的子列表 该算法将经常需要访问的页面保留在 New Sublist。Old Sublist 包含不常用的页面,这些页面是驱逐的候选对象。 通常情况,该算法遵循以下规则: 1. 的 Buffer Pool 用于 Old Sublist 2. 列表的 Midpoint 是 New Sublist 的 Tail 和 Old Sublist 的

基于球面的常用地图计算分享

 ̄綄美尐妖づ 提交于 2020-12-04 19:17:46
引言 在地图的开发中,涉及到经纬度计算,本身显示坐标是度数的单位,这在计算距离、角度等地理信息时,会有一定的不同,特别是在球面的计算时,要考虑地球的半径等信息,本文分享一个开源的球面常用地图计算公式网站。 链接 http://www.movable-type.co.uk/scripts/latlong.html This page presents a variety of calculations for lati­tude/longi­tude points, with the formulas and code fragments for implementing them. 国外英文的介绍网站,请耐心观看,每个计算中,都有对应的JavaScript示例代码。 示例说明 Distance,使用haversine(半正矢公式)公式,计算两个经纬度点之间的距离,计算结果为米制单位,公式和计算代码参见网站; Spherical Law of Cosines,余弦球面定理; Bearing,计算正北的偏转角度; Midpoint,计算两个点之间的中心点; Destination point given distance and bearing from start point,根据起点坐标、偏北角度、距离,计算目的点坐标; Intersection of two paths

土地覆盖/土地利用简介及数据集

荒凉一梦 提交于 2020-05-06 01:20:51
1 简介 土地覆盖:地球表面当前所具有的自然和人为影响所形成的覆盖物,是地球表面的 自然状态 ,如森林、草场、农田、土壤、冰川、湖泊、沼泽湿地及道路等。 土地利用:是人类在生产活动中为达到一定的经济效益、社会效益和生态效益, 对土地资源的开发、经营、使用方式 的总称。 两者的区别: • 土地利用表示与土地相结合的人类活动而产生的不同利用方式,反映土地的 社会和经济属性 。 • 土地覆盖表示地球表面存在的不同类型的覆盖特征,强调的是土地的表面形状,反映土地的 自然属性 。 土地利用/土地覆盖分类系统 LULC分类系统是根据人类土地利用行为的目的、方式等不同,将一定时期的土地利用行为分为若干种类型,由这些类型组成的有一定结构关系的系统框架(包括类型名称、识别标准、类型之间的联系等)。一般采用 分级结构 。 可参考文献: http://sourcedb.igsnrr.cas.cn/zw/lw/201112/P020111207607064684999.pdf 可用来进行土地利用/土地覆盖分类的遥感信息源选取: 主要使用空间分辨率为米级至1公里的可见光及近红外波段遥感数据.如GF-1、GF-2、HJ-1A/B、ZY-1 02C、IKONOS、Landsat-TM 、MSS、CEBERS、SPOT–HRV、NOAA-AVHRR及MODIS等。 分类方法 • 目视解译定性分析方法 •

Cesium专栏-地形开挖2-任意多边形开挖(附源码下载)

末鹿安然 提交于 2020-05-01 22:05:54
“任意多边形地形开挖” 是“地形开挖”的补充篇,在这节里,我们介绍关于如何使用任意多边形对地形进行开挖,同时,由于有不少小伙伴也咨询了关于“地形开挖”篇后序内容中的填充地形的效果,之前没放出来,是想让小伙伴有个思考的过程,现在放出来,也是提供一种解决方法。 效果图 直接上代码说明方法 1、使用鼠标交互事件,采集需要开挖的范围 注: 这里要特别注意一点,为了下面的计算 ClippingPlane 方便,采集点顺序最好是 逆时针,如果点集的组织是顺时针,需要首先逆序成逆时针,关于如果判断一个点集是否是顺时针或者是逆时针,可以用向量法求多边形面积的方式,如果为正,则为顺时针,否者为逆时针。或者使用JS插件计算,比如turf.js。 var points = [ new Cesium.Cartesian3( -1715292.6999753984, 4993153.157628936, 3566663.752912529), new Cesium.Cartesian3( -1715285.8150713604, 4993167.072601330, 3566647.6921528564), new Cesium.Cartesian3( -1715286.5985765400, 4993181.309761941, 3566627.519787549), new Cesium

常用数据结构与算法(python)

依然范特西╮ 提交于 2020-04-27 18:56:25
常用排序与插入算法 冒泡排序 冒泡排序 (英语: Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 冒泡排序的分析 交换过程图示 (第一次): 代码如下: def bubble_sort(li): for i in range(len(li) - 1): for j in range(len(li) - i - 1): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1], li[j] return li list1 = [15, 66, 20, 350, 464, 88, 995, 100] print(bubble_sort(list1)) 时间复杂度 最优时间复杂度: O(n) (表示遍历一次发现没有任何可以交换的元素

Scala模拟图形绘制

亡梦爱人 提交于 2020-02-06 16:02:15
对于一个图形绘制程序,用下面的层次对各种实体进行抽象。定义一个 Drawable 的特 质,其包括一个 draw 方法,默认实现为输出对象的字符串表示。定义一个 Point 类表示点, 其混入了 Drawable 特质,并包含一个 shift 方法,用于移动点。所有图形实体的抽象类为 Shape,其构造函数包括一个 Point 类型,表示图形的具体位置(具体意义对不同的具体图 形不一样)。Shape 类有一个具体方法 moveTo 和一个抽象方法 zoom,其中 moveTo 将图形从 当前位置移动到新的位置, 各种具体图形的 moveTo 可能会有不一样的地方。zoom 方法实 现对图形的放缩,接受一个浮点型的放缩倍数参数,不同具体图形放缩实现不一样。继承 Shape 类的具体图形类型包括直线类 Line 和圆类 Circle。Line 类的第一个参数表示其位置, 第二个参数表示另一个端点,Line 放缩的时候,其中点位置不变,长度按倍数放缩(注意, 缩放时,其两个端点信息也改变了),另外,Line 的 move 行为影响了另一个端点,需要对 move 方法进行重载。Circle 类第一个参数表示其圆心,也是其位置,另一个参数表示其半 径,Circle 缩放的时候,位置参数不变,半径按倍数缩放。另外直线类 Line 和圆类 Circle 都混入了 Drawable 特质,要求对

假期二

半腔热情 提交于 2020-02-03 00:00:57
Spark提供的数据集操作类型有很多种,大致分为:转换操作和行动操作两大类,即对RDD的操作,RDD相关操作较多,这里不做表述。此外各个处理节点之间的通信模型不再像Hadoop只有Shuffle一种模式,用户可以命名、物化,控制中间结果的存储、分区等。下载完Spark后,启动spark shell 然后建在了spark自带的本地测试文件,以及简单的RDD操作和退出spark shell。 case class Point( var x : Double, var y : Double) extends Drawable{ def shift(deltaX : Double,deltaY : Double){x+ = deltaX;y+ = deltaY} } trait Drawable{ def draw(){println( this .toString)} } abstract class Shape( var location : Point){ //location是Shape的一个可变字段 def moveTo(newLocation : Point){ //默认实现,只是修改位置 location = newLocation } def zoom(scale : Double) } class Line(beginPoint : Point, var endPoint

20182310第八周学习总结

眉间皱痕 提交于 2019-12-03 10:45:27
20182310 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结 教材学习内容总结 1.泛型 之前涉及过通过继承实现多态,而Object则是所有类型的父类,因此只要将一个数组指向Object类型,那么该数组理论上就可以保存所有类型的数据了,这是一种极端情况 但是,当使用了Object后,容易出现兄弟类型之间转换的问题,编译不会报错,但是运行时会出错。 泛型:可以定义一个类,可以保存数据及操作,但只有当实例化时才确定类型(一般用T来表示泛型) class Box { T类型对象的声明与操作代码 } 当要使用Box定义的数据时,通过实例化来实现它的具体类型,来替代T Box box1=new Box ; Box box2=new Box ; ... 2.线性查找法 线性查找法就是从头开始查找,与每一个列表中的元素进行比较,直到找到该目标元素或查找到末尾还没找到。 以下的方法实现了一个线性查找。该方法返回一个布尔值,若是true,便是找到该元素,否则为false,表示没找到。 public static boolean linearSearch(T[] data, int min, int max, T target) { int index = min; boolean found = false; while (!found && index <= max) {

Cesium专栏-地形开挖2-任意多边形开挖(附源码下载)

可紊 提交于 2019-11-30 21:54:48
“任意多边形地形开挖” 是“地形开挖”的补充篇,在这节里,我们介绍关于如何使用任意多边形对地形进行开挖,同时,由于有不少小伙伴也咨询了关于“地形开挖”篇后序内容中的填充地形的效果,之前没放出来,是想让小伙伴有个思考的过程,现在放出来,也是提供一种解决方法。 效果图 直接上代码说明方法 1、使用鼠标交互事件,采集需要开挖的范围 注: 这里要特别注意一点,为了下面的计算 ClippingPlane 方便,采集点顺序最好是 逆时针,如果点集的组织是顺时针,需要首先逆序成逆时针,关于如果判断一个点集是否是顺时针或者是逆时针,可以用向量法求多边形面积的方式,如果为正,则为顺时针,否者为逆时针。或者使用JS插件计算,比如turf.js。 var points = [ new Cesium.Cartesian3( -1715292.6999753984, 4993153.157628936, 3566663.752912529), new Cesium.Cartesian3( -1715285.8150713604, 4993167.072601330, 3566647.6921528564), new Cesium.Cartesian3( -1715286.5985765400, 4993181.309761941, 3566627.519787549), new Cesium

二分法查找

五迷三道 提交于 2019-11-27 00:24:50
二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 递归实现 def binary_search ( alist , item ) : if len ( alist ) == 0 : return False else : midpoint = len ( alist ) // 2 if alist [ midpoint ] == item : return True else : if item < alist [ midpoint ] : return binary_search ( alist [ : midpoint ] , item ) else : return binary_search ( alist [ midpoint + 1 : ] , item ) testlist = [ 0 , 1 , 2 , 8 , 13 , 17 ,