自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 常用空间分析函数

常用空间分析函数包含 点、线、面 之间的相互关系本文主要记录一些自己开发中常用的一些分析函数,比较正宗和全面的可以看一些空间分析库,比如前端的 Turf 和 JSTS1、点1.1、点到点的距离//点到点的距离function dist2d(coord1, coord2) { let dx = coord1[0] - coord2[0]; let dy = coord1[1] - coord2[1]; return Math.sqrt(dx * dx + dy * dy)}dist

2020-12-23 14:53:06 1936 2

原创 JS开发常用工具函数

1、isStatic:检测数据是不是除了symbol外的原始数据function isStatic(value) { return( typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'undefined' || v...

2019-06-27 17:11:49 429

原创 发布订阅模式与观察者模式

背景设计模式并非是软件开发的专业术语,实际上,“模式”最早诞生于建筑学。设计模式的定义是:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。通俗一点说,设计模式是在某种场合下对某个问题的一种解决方案。如果再通俗一点说,设计模式就是给面向对象软件开发中的一些好的设计取个名字。这些“好的设计”并不是谁发明的,而是早已存在于软件开发中。一个稍有经验的程序员也许在不知不觉中数次使用过这些设...

2019-03-29 18:25:12 43358 15

原创 webpack打包时如何修改文件名

webpack打包时如何修改文件名在使用webpack进行项目打包的时候,我们可通过以下方式对不同类型的资源,进行文件名或文件路径的修改

2022-06-14 15:46:51 5511 1

原创 V8是怎么执行JS代码的

1、V8的演进历史2008年V8发布第一个版本,当时的V8架构比较激进,直接将js代码编译为机器码并执行,所以执行速度很快,但是只有Codegen一个编译器,所以对代码的优化很有限。2010年V8发布了Crankshaft编译器,js代码会先被Full-Codegen编译器编译,如果后续改代码块会被多次执行,则会用Crankshaft编译器重新编译,生成更优化的代码,之后就使用优化后的代码来执行,进而提升性能。Crankshaft编译器对代码的优化有限,所以2015年V8中加入了TurboFa

2022-04-01 10:33:23 733

原创 gis中的坐标系

地球的三级逼近地球的自然表面不是平整的,需要想办法用数学公式描述地球表面,只能设想一个近似的数学面。大地水准面是地球表面的第一级逼近。假设当海水处于完全静止的平衡状态时,从海平面延伸到所有大陆下部,而与地球重力方向处处正交的一个连续、闭合的曲面,这就是大地水准面。地球椭球体是地球表面的第二级逼近。大地水准面可以近似成一个规则成椭球体,但并不是完全规则,其形状接近一个扁率极小的椭圆绕短轴旋转所形成的规则椭球体,这个椭球体称为地球椭球体。由一系列参数可确定一个椭球体,地球椭球体的基本参数如下大地基准

2021-05-17 14:26:09 4538 1

原创 vue2开发中遇到的一些问题

项目使用webpack + vue + element 进行开发,但是将打包后的项目在ie上运行时,发现了以下错误:1.项目在ie9下样式错乱,这是和vue及element没有什么关系,基本上都是自己样式书写没有考虑到浏览器兼容性问题比如:flex布局,clear:both清除浮动,::after伪元素等2.element-ui 的loading 加载动画不能自动关闭原因:未知!!!Github上的讨论:https://github.com/ElemeFE/element/issues/8894

2021-05-07 16:51:03 917 2

原创 arcgis图层数据查询

有时候我们需要根据发布的arcgis服务查询服务上的一些数据,比如点击地图上的某个位置,比如根据某个关键字进行要素查询等等,而arcgis关于这方面的api常用的有三个:find、query和identify。一、find查询查找操作在地图服务资源上执行。此操作的结果是查找结果资源。每个结果都包含其值,要素ID,字段名称,图层ID,图层名称,几何图形,几何类型以及名称 - 值对形式的属性。api说明:http://xxx/arcgis/sdk/rest/index.html#/Find/02ss000

2021-05-07 16:37:36 4227

原创 数据库基础概念学习

本文主要记录一些数据库基础概念,如关系型数据库和非关系型数据库数据库数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图

2021-02-03 09:27:56 612

转载 地理坐标系与投影坐标系的区别

1、基本概念 地理坐标系:为球面坐标。 参考平面地是椭球面,坐标单位:经纬度; 投影坐标系:为平面坐标。参考平面地是水平面,坐标单位:米、千米等; 地理坐标转换到投影坐标的过程可理解为投影。(投影:将不规则的地球曲面转换为平面) 2、地理坐标系 2.1 地球的三级逼近 2.1.1大地水准面 地球的自然表面有高山也有洼地,是崎岖不平的,我们要使用数学法则来描述他,就必须找到一个相对规则的数学面。 大地水准面是地球表面的第一级逼近。假设当海水处于完全静止的平衡状态时,从海平面延伸到所有大陆下部.

2020-12-22 15:38:09 7977

原创 对三次贝塞尔曲线过点平滑中尖角和交叉现象的优化

目前在做等值线等值面相关的功能,用户可拖拽控制点修改等值线,再用等值线生成等值面。因为初始的等值线点数据太多,不利于用户操作,所以先使用道格拉斯-普克算法(Douglas–Peucker)进行等值线抽稀,再将抽稀后的控制点使用贝塞尔曲线算法进行平滑。对于贝塞尔曲线算法的平滑过程,有人做了很详细的示意图,推荐大家看下贝塞尔曲线算法之JS获取点可以了解到贝赛尔曲线算法平滑得到的曲线是经过起始点的,同时二阶算法需要三个点,三阶算法需要四个点,四阶算法需要五个点,以此类推。一般的来说,三阶贝塞尔曲线就已经够用

2020-10-09 17:10:14 1667 3

原创 页面渲染流程

1.解析html文件,创建DOM树自上而下解析,遇到任何样式(link、style)和脚本(script)都会阻塞  1)css加载不会阻塞html文件的解析,但会阻塞dom的渲染  2)css加载会阻塞后面js语句的执行  3)js会阻塞html的解析和渲染  4)没有defer和async标签的script会立即加载并执行  5)有async标签的js,js的加载执行和html的解析和渲染并行  6)有defer标签的js,js的加载和html的解析和渲染并行,但会在html解析完成后执行

2020-07-16 15:22:10 184

原创 js内存数据

基本储存单元位(bit):二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。字节(Byte,B):计算机中数据的基本单位,每8位组成一个字节。各种信息在计算机中存储、处理至少需要一个字节。例如,一个ASCII码用一个字节表示,一个汉字用两个字节表示。字(Word):两个字节称为一个字。汉字的存储单位都是一个字。扩展的存储单位在计算机各种存储介质(例如内存、硬盘、光盘等)的存储容量表示中,用户所接触到的存储单位不是位、字节和字,而是KB、MB、GB等,但这不是新的存储单位,而是基于字节

2020-07-16 15:20:10 885

原创 HTTP状态码

1、消息:这一类型的状态码,代表请求已被接受,需要继续处理100 Continue //客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。101 Switching Protocols //服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。102 Processing //由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。2、成功:这一类型的状态码,代表请求已成功被服务器接收、理解、并

2020-07-16 15:17:16 186 1

转载 图解JavaScript——进阶篇(执行上下文、变量对象、作用域、作用域链、闭包、this、原型及原型链、事件循环等一把梭)

一、函数执行过程本节主要从代码整个执行过程出发,然后阐述遇到函数后如何执行,紧接着分点对执行过程中的关键知识点(执行上下文、变量对象、作用域、作用域链、this指向、闭包、原型、原型链等)进行阐述,按照自己的理解将整个过程进行了叙述。1.1 JavaScript代码的整体执行过程1.2 函数执行过程1.3 执行上下文1.4 变量对象1.5 作用域1.6 JavaScript查询方式1.7 作用域链1.8 闭包1.9 this1.10 new1.11 原型/构.

2020-06-16 11:49:28 184

原创 vue-数据监听与依赖收集

文章围绕下面demo进行分析<div id="app"> <span>{{a.b}} {{c}} {{d}}</span></div><script>    var app = new Vue({       ...

2020-04-19 19:38:06 587

原创 JS禁止打开控制台

主要为了通过禁止打开控制台,防止别人进行代码调试。1、禁止右键查看源码和F12//禁止F12键盘事件document.addEventListener('keydown', function(event){ return 123 != event.keyCode || (event.returnValue = false)});//禁止右键、选择、复制document.addE...

2020-01-03 16:17:03 1786

原创 openlayers判断两个多边形的空间关系

1、 使用truf库的booleanContains函数,这个函数可以检测两个几何是否为包容关系使用:引入相关函数,因为truf识别的geometry不是openlayers中的geometry,所以需要使用其提供的函数,转换成对应的geometryimport booleanContains from '@turf/boolean-contains'import {geometry, po...

2019-11-05 18:25:23 2166 1

原创 vue数据初始化--initState

数据初始化Vue 实例在建立的时候会运行一系列的初始化操作,而在这些初始化操作里面,和数据绑定关联最大的是 initState。首先,来看一下他的代码:function initState(vm) { vm._watchers = []; var opts = vm.$options; if(opts.props) { initProps(vm, opts.props); //初始...

2019-04-10 16:39:49 4627

原创 vue响应式系统--observe、watcher、dep

Vue的响应式系统Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的JavaScript 对象,而当你修改它们时,视图会进行更新,这使得状态管理非常简单直接,我们可以只关注数据本身,而不用手动处理数据到视图的渲染,避免了繁琐的 DOM 操作,提高了开发效率。vue 的响应式系统依赖于三个重要的类:Dep 类、Watcher 类、Observer 类,然后使用发布订阅模式的...

2019-04-08 17:34:48 3974 3

原创 vue自定义指令--directive

Vue中内置了很多的指令,如v-model、v-show、v-html等,但是有时候这些指令并不能满足我们,或者说我们想为元素附加一些特别的功能,这时候,我们就需要用到vue中一个很强大的功能了—自定义指令。在开始之前,我们需要明确一点,自定义指令解决的问题或者说使用场景是对普通 DOM 元素进行底层操作,所以我们不能盲目的胡乱的使用自定义指令。如何声明自定义指令?就像vue中有全局组件和局...

2019-04-04 17:21:20 5810

转载 什么是MVVM,MVC和MVVM的区别,MVVM框架VUE实现原理

MVVM定义MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。【模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】是mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视图】,即将数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成数据。实现的方式是:DOM...

2019-04-01 14:27:13 563

原创 垃圾回收机制

1、 引用计数    引用计数算法是垃圾回收最早的算法,有其优势,也有其劣势,但是现在已经很少有使用了。原理:为每个对象添加一个计数器,表示对象的引用次数,每当创建一个新的引用指向该对象时其计数器就加1,每当指向该对象的引用失效时计数器就减1。当计数器的值为0时就会被浏览器回收。优点:可即刻回收垃圾:当计数器值为0时,会马上回收对象,提高内存使用效率STW(Stop-The-Worl...

2019-01-02 17:44:05 141

原创 学习并实现一个Promise

学习自阮一峰老师 ECMAScript 6 入门 Promise介绍参考 promise-实现Promise属于微任务,而模拟的 Promise 都是使用setTimeout,属于宏任务。所以在某些情况下会有bug,需要注意,如:setTimeout('console.log(1)')new Promise(resolve=&gt;{ console.log(2) resolve()...

2018-12-29 18:02:03 308

原创 类script标签,异步加载,顺序执行

主要是想实现把压缩加密后的js文件存储在本地,网上找了下没找到理想的,所以自己动手写了一个,主要是仿照script标签的功能,实现异步加载,顺序执行。如果本地已经有该文件,则不重新加载,直接调用本地数据。jsFile是存储文件信息的数组,其中,path是文件路径,name是存储在本地的名字,active表示当前文件是否已经执行,load表示当前文件手已经加载完成,还要一个隐藏的content属性...

2018-12-28 11:37:42 972

原创 document与Object的关系

window与Objet1、 window.__proto__ === Window.prototype2、 window.__proto__.__proto__ === 窗口属性(WindowProperties)3、 window.__proto__.__proto__.__proto__ === EventTarget.prototype4、 EventTarget.prototyp...

2018-12-28 11:26:25 448

原创 GIT学习笔记

笔记整理自廖雪峰老师Git教程创建本地版本库1、 创建版本库git init2、 把文件添加到仓库(从工作区到暂存区)git add readme.txtgit add .3、 把文件提交到仓库(从暂存区到当前分支)git commit -m 'commit'添加到远程库4、 添加一个远程库:生成 http://xxx.git5、 要查看远程库的信息,用git remote,...

2018-12-28 11:04:55 102

原创 js数据类型--object

系列文章1 、从数据类型讲原型原型链内容回顾在JavaScript中,数据类型可以分为原始类型以及引用类型。其中原始类型包括string,number, boolean, null, undefined, symbol(ES6新增,表示独一无二的值),这6种数据类型是按照值进行分配的,是存放在栈(stack)内存中的简单数据段,可以直接访问,数据大小确定,内存空间大小可以分配。...

2018-09-02 15:33:48 2323

原创 类script加载,异步加载,顺序执行

主要是想实现把压缩加密后的js文件存储在本地,网上找了下没找到理想的,所以自己动手写了一个,主要是仿照script标签的功能,实现异步加载,顺序执行。如果本地已经有该文件,则不从新加载,直接调用本地数据。jsFile是存储文件信息的数组,其中,path是文件路径,name是存储在本地的名字,active表示当前文件是否已经执行,load表示当前文件手已经加载完成,还要一个隐藏的content属...

2018-07-27 09:01:12 405

原创 vue开发中出现的一些问题记录

项目使用webpack + vue + element 进行开发,但是将打包后的项目在ie上运行时,发现了以下错误:1、项目在ie9下样式错乱,这是和vue及element没有什么关系,基本上都是自己样式书写没有考虑到浏览器兼容性问题比如:flex布局,clear:both清除浮动,::after伪元素等2、element-ui 的loading 加载动画不能自动关闭原因:未知!!...

2018-07-12 08:50:26 1788

原创 jqGrid使用过程中的一些问题及解决(持续更新中)

前言在使用JQuery进行项目开发的时候,我们多会使用表格进行数据的展示,这时候我们就需要一款好的表格插件。这一块上比较出名的也就是bootstrap-table,datatables以及jqgrid了,但是在使用中发现bootstrap-table和datatables的问题是真的不少,所以最后就选择了jqgrid,虽然也有问题,但不及bootstrap-table和datatables那么...

2018-05-04 17:59:47 6699

原创 从js数据类型到原型原型链

一、数据类型  在JavaScript中,数据类型可以分为原始类型以及引用类型。其中原始类型包括string,number, boolean, null, undefined, symbol(ES6新增,表示独一无二的值),这6种数据类型是按照值进行分配的,是存放在栈(stack)内存中的简单数据段,可以直接访问,数据大小确定,内存空间大小可以分配。引用类型包括function,object,...

2018-04-07 17:45:29 1020

原创 记一次IE9下数据请求description:"拒绝访问"的坑

问题描述:有两个项目:项目A和项目B,项目B是从项目A直接复制过来的,然后改的路径(后台已经设置跨域cros)。项目A与项目B发布到服务器后,在ie9及以上浏览器中是可以正常请求数据的,但本机测试的话ie9环境下不能成功请求 (向服务器发起的,本地json文件请求可以成功),错误信息:description:”拒绝访问”,ie9以上及谷歌是可以的。换用jq的ajax请求,出现’No T...

2018-03-23 14:33:44 5573 3

原创 canvas绘制验证码

没什么好说的,如题,利用canvas绘制验证码,代码里有注释,应该说很清楚 ☻&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head lang="en"&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;canvas绘制验证码&lt;/title&gt;&lt;/head

2018-03-07 17:07:16 577

原创 判断一个对象是不是数组,有几种办法?

这是一个出现过无数次的话题,这里再次重写仅作为个人的学习笔记,谢谢观看。0、typeoftypeof 运算符的主要作用就是用来检测数据的类型,一般情况下我们都是使用它来判断数据类型,但是这里,我把typeof 放在0的位置,因为 typeof 不能检测到数组类型!typeof 所能识别的类型只有原始类型(Undefined,Null,Boolean,Number,String,Symb...

2018-03-07 17:04:02 2888

原创 canvas+audio+range 模拟音乐播放器

这次利用h5的一些功能,来简单实现一个音乐播放器的播放界面,主要体现在canvas绘制,audio播放音频,range控制进度及音量。h5有很大的浏览器兼容性问题,这里不做考虑。demo中有一个canvas动画的实现,考虑到动画的流畅性及性能,这里使用requestAnimationFramerequestAnimationFrame 采用系统时间间隔,保持最佳绘制效率,不会因为间隔时...

2018-02-23 15:01:02 277600

原创 Javascript设置和获取文本框鼠标位置

最近在csdn问答板块看到了一个问题:如何实现textarea中输入@在右下方出现一个提示框? 主要难点是光标所在的位置,网上找了下,大多是获取光标所在的字符位数,而不是距离开头的宽高,所以舍弃。但是本文还是需要这个技术,来判断光标是不是在文本最后。//输入框获取光标function getPosition(element) { var cursorPos = 0;...

2018-02-07 11:58:53 1782

原创 调整html元素大小 resize

1、使用css属性:resizediv{ resize: both;}resize 属性规定是否可由用户调整元素的尺寸。取值:none:默认,用户无法调整元素的尺寸。Both:用户可调整元素的高度和宽度。Horizontal:用户可调整元素的宽度。Vertical:用户可调整元素的高度。缺点:不支持ie!仅Firefox 4+、Chrome 以及 Safari 支持

2018-02-01 22:18:53 10185

原创 JS 拖拽实现

拖拽有两种,一个是利用h5的拖拽属性 drag 实现,另一种是利用鼠标 按下-移动-抬起 事件模拟实现。1、h5拖拽function myDrag(el){ var disX,disY,left,top; el.draggable = true; el.ondragstart=function(e){ disX = e.clientX;

2018-02-01 22:02:04 322

原创 基于Highcharts箱线图实现k线图

如何制作一个k线图?似乎可利用的插件或库有很多,比如echarts、highcharts、d3.js等。使用echarts是最简单的,有现成的demo可供参考,而d3可定制性是最高的,这些定制需要你一点点去写,也不好写,highcharts官网上没有demo,网上也没有相关的案例,但是通过阅读他的说明文档,发现了箱线图这一图表类型,这不正是highcharts实现k线图最好的方法吗?认

2018-01-27 15:19:41 4893 1

全国 1-5 级河流 gis 地图shp,xml,shx,dbf文件

全国 1-5 级河流 gis 地图shp,xml,shx,dbf文件 全国 1-5 级河流 gis 地图shp,xml,shx,dbf文件 全国 1-5 级河流 gis 地图shp,xml,shx,dbf文件

2017-12-12

全国主要公路铁路gis地图shp,xml,shx,dbf文件

全国主要公路铁路gis地图shp,xml,shx,dbf文件 全国主要公路铁路gis地图shp,xml,shx,dbf文件 全国主要公路铁路gis地图shp,xml,shx,dbf文件

2017-12-11

全国省市县gis地图shp,xml,shx,dbf文件

全国省市县gis地图shp,xml,shx,dbf文件 全国省市县gis地图shp,xml,shx,dbf文件

2017-12-11

全国省市县及外国gis地图json数据

比较全面的gis地图json数据 比较全面的gis地图json数据 比较全面的gis地图json数据

2017-07-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除