自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Amesteur的博客

注重实效的程序员

  • 博客(42)
  • 收藏
  • 关注

原创 WebGL绘制带箭头贴图的线

示例在讲述本文内容之前,我希望读者先具备以下知识点:了解WebGL的基本知识,懂得调用自定义的Shader程序; 基本的数学基础和空间几何知识; 明白GPU的渲染管线流程;因为,本文内容主要讲述绘制的核心思路和注意事项,所以对于基本知识只能简单描述,请谅解;前言首先,先附上一篇至今我看到思路十分正确,图文并茂(图片真的很好看)的讲述WebGL绘制有宽度的线和箭头贴图的文章:...

2019-07-15 16:44:10 3286 6

原创 JavsScript 使用Buffer操作二进制数据

目录TypedArraysBufferWebWorker注意事项二进制数据和文本数据是我们常见的两种格式数据。而在某些应用场景,则需要我们使用JavaScript去操作读写二进制格式文件,比如WebSocks获取原始数据、操作音视频文件、获取商业软件格式的数据等。尽管JavaScript是一门动态语言(弱类型),不擅长于处理二进制数据,但是我们可以使用JavaScript的类型...

2019-07-14 22:08:31 707 1

原创 WEBGL入门的基础介绍

目录WebGL基本介绍概述WebGL的特性图形硬件的介绍WebGL开发入门WebGL绘制图形抽象过程基于WebGL封装的框架WebGL坐标系基础视变换投影变换视口变换实例演示(使用ThreeJS)光照光照类型光照的原理(漫反射)光照的原理(环境反射)光照效果的对比纹理映射图片纹理凹凸纹理环境贴图开发调试与...

2019-07-12 17:17:39 1804 1

原创 绘制几何图形,生成辅助线的思路

目录辅助线的概念绘制线规则捕捉辅助线的思路生成辅助线的思路总结在实际绘制几何图形过程时,有几个工具比较实用:鼠标绘制时,焦点捕捉已绘制图形的端点、线段上; 撤销与回退 辅助线焦点捕捉的功能的思路相对比较简单,不断地比较当前鼠标所在的屏幕像素点为圆心,R为半径的搜索圆与绘制图形的端点和线段是否相交的问题。但在实时的图形编程的难点在于细节,至于如何优化搜索的速度,有很...

2019-07-12 14:42:46 1256 1

原创 常见的空间索引方法

在谈论空间索引之前,我们必须了解索引的概念。索引是为了提高数据集的检索效率。打个比喻,一本书的目录就是这本书的内容的“索引”,我们查看感兴趣的内容前,通过查看书的目录去快速查找对应的内容,而不是一字一句地找我们感兴趣的内容。所以,索引是一种“前人栽树,后人乘凉”的东西。空间索引不同于书本“目录”,“目录”对应的书本内容是不变的,而我们讨论的空间索引是根据空间数据...

2018-05-21 15:51:17 25418

原创 如何编写高效的程序?

编写高效的程序需要做到以下几点:第一,我们必须选择一组适当的算法和数据结构。第二,我们必须编写出编译器能够有效优化以转换成高效可执行代码的源代码。对于第二点,理解优化编译器的能力和局限性是很重要的。编写长须方式中看上去只是一点小小的变动,都会引起编译器优化方式很大的变化。有些编程语言比其他语言容易优化。C语言的有些特性,例如执行指针运算和强制类型转换的能力,使得编译器很难对它进行优化。程序...

2018-05-10 18:47:20 1246

原创 Vue中使用责任链与AOP等设计模式

目录前言正文责任链模式Vue中示例AOP切面编程Vue中示例总结前言最近因为业务临时调整,被调派至另外一个子公司做一个使用Vue2的项目。在支撑任务还剩两天临别时,决定重构自己的业务逻辑代码,留下自己好的印象给其他人(或许只是在挖坑)。因此,决定优雅地编写设计模式。正文在Vue2的项目中,存在大量的流程化的业务功能,申请业务、业务流转等等,一环扣一...

2019-07-18 16:54:21 1250

原创 RBush 快速拓扑查询大规模空间数据

R树是空间数据索引结构中重要的一种层次结构,R树是基于B树索引改造的二叉树索引结构。目前已成为许多空间索引方法的基础,不少前沿的空间索引都使用到R树或者对R树改良。其构建思想是以最小边界矩形(MBR)递归地对空间数据集的空间按照“面积”规划进行划分。它的特点如下:1. R树中非叶子节点代表一个划分的空间区域,即一个矩形空间区域;2. R树中的叶子节点包含的矩形区域对应空间对象的...

2019-07-17 15:54:43 1876

原创 WebGL优化的技巧--持续更新中

Webgl性能瓶颈,图形绘制是异步的流水线绘制以及浏览器的本身的缺陷。尝试优化的方法如下:找到性能瓶颈,尝试降低CPU或者GPU的时钟频率去测试哪个效率低 纹理受限,可以采取 减少canvas的长宽或者使用低分辨率的纹理测试;webgl 纹理绑定伸展和收缩效果时,gl.NEAREST 是最快的但会产生块状效果,gl.LINER因为是取平均值,会产生模糊 将Mip映射应用于纹理贴图 处理w...

2019-07-12 17:34:42 2826 2

原创 二维几何图形自由变换的思路(平移、缩放、旋转)

目录图形自由变换图形的存储方式鼠标交互图形拓扑算法总结 常见的二维几何图形包括点、线、面三种类型,而某些的地图标准规范中还区分多点、多线、多面、环等。本文,主要讲述简单的几何图形的自由变换(平移、缩放、旋转)的核心思路。至于复杂的几何图形则可以通过简单的几何图形组装变换得到。后面的文章会讲述如何拖拽增加修改顶点和编写辅助线的核心思路。图形自由变换 ...

2019-07-11 10:29:04 2437 1

原创 openlayer-Identify 基于ol/Control的第三方插件

基于Openlayer 的Control方式,仿照Arcgis desktop的Identify,包含所有动画和界面都非第三方插件包含了select组件、树状列表组件、表格组件、工具栏组件,均为没有引入第三方插件效果展示图仿照Arcgis Identify的功能,包括:1. 图层类型选择器,包括(所有图层、可见图层、最上面的图层以及图层树列表)  2. 工具栏(框选、隐藏树列表、隐藏表格、缩放至、...

2018-05-17 18:43:27 804

原创 DataTable 导出Excel表格(使用单独的ExcelApi.dll)

目前网上大部分导出Excel格式的方法,都是引用Microsoft.Office.Interop.Excel以及Microsoft Excel Object Library COM组件。但是,电脑必须安装Windows的Office软件才能使用。   下列,我介绍一下,引用NetOffice.dll、ExcelApi.dll及VBIDEapi.dll类库的方法导出Excel表格.using Ne...

2018-05-15 11:15:36 583

原创 关于空间数据库要素类的备份问题,有关热备份与冷备份以及逻辑备份与物理备份,附方法

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:1、 是非常快速的备份方法(只需拷文件)(的确很快的,1.2G只要一分钟)2、 容易归档(简单拷贝即可)(归档模式是记录每次备份的内容,便于每次增量备份)3、 容易恢复到某个时间点上(只需将文件再...

2018-05-15 11:14:55 1043

原创 GIS软件实施环境搭建 oracle服务器端与oracle客户端的搭建

oracle服务器端与oracle客户端的区别 服务端提供oracle服务的实例,其是数据库的核心,用于数据库的管理,对象的管理与存储、数据的存储、查询、数据库资源的监控、监听等一些服务。 而客户端只是一个与服务端交互的工具,如sqlplus,在sqlplus里执行SQL语句传到服务端,服务端进行解析后执行SQL里的操作,并将操作结果输出到客户端。这就完成了一个客户端与服务端交互的过程。 简单来...

2018-05-14 00:14:51 441

原创 windows下安装Apache24 + PHP5的步骤方法

前提开发环境搭建:在官网下载Apache时,会出现选择版本问题,值得注意下载windows版本下的Apache时,下载文件后面带有_V11或者_V14的字体,这个是windows的运行库,可以到微软的官网下载,V11是Visual Studio 2012的运行库,如果安装了VS2012后就不需要再安装V11了。其次是PHP5的下载,PHP官网下目前最新的版本是PHP7,但是目前用得最多的是PH...

2018-05-14 00:13:57 7619

原创 PHP5.5以上怎么开启curl功能

1.修改php.ini里面extension_dir为ext文件夹路径,以及删掉extension=php_curl.dll前面的“;”号2.添加环境变量path,添加php主目录路径以及ext文件夹路径,即可

2018-05-14 00:13:18 1342

原创 windows下PHP5与Mysql的搭建

MySQL是一个关系型数据库管理系统,分为MySQL Enterprise Edition(commercial)、MySQL Cluster CGE、MySQL Community Edition三个版本,第一个 MySQL Enterprise Edition需要花钱,提供技术支持。第二个 MySQL Cluster,要在MySQL Enterprise Edition或MySQL Comm...

2018-05-14 00:12:40 395

原创 微信内置的webview链接跳转,不能回去的问题

如果是通过微信公众号底部的菜单进入的 URL ,也即是通过View的方式 当跳转到另一个页面以后,就无法跳转回这个 URL 。 比方说我的微信公众平台里加的菜单是 #?page=1 然后在通过这个菜单进入以后,我在这个页面里的链接进入 #?page=2 这个时候,就无法再回到 #?page=1 了 解决办法,要在 url 后面加一个 wechat 的锚点,表示这个链接是来自微信的,。比如 http...

2018-05-14 00:12:05 1944

原创 Apache的SSL证书的安装配置

1.下载包含openssl的apache,并进行安装。    Apache版本如:httpd-2.2.22-win32-x86-openssl-0.9.8t.zip2.配置Apache下httpd.conf文件。      #LoadModule ssl_module modules/mod_ssl.so         #Include conf/extra/httpd-ssl.conf  删除...

2018-05-14 00:11:33 1120

原创 HTML5的文件/图片上传服务器方法,使用FileReader

FileReader对象有5种方法,其中四种用于读取文件,另一种用来读取过程中断,需要注意的是:无论读取成功与失败,方法并不会返回读取结果,而是将结果保存在result属性中。此对象也是异步的。 FileReader对象的方法如下: readAsBinaryString(file):  这个方法将blob对象或文件中的数据读取为二进制字符串,通常我们将它传送到服务器端,服务器端可以通过这段字符串存...

2018-05-14 00:09:41 6077

原创 微信公众号与企业号的TOKEN验证与使用

上图是,微信客户端与微信服务端与公众号、企业号的服务器的原理架构,首先,我们如果使用应用服务器,则需要告诉微信服务器,它在哪里,所以TOKEN就是一个标识的作用,TOKEN是一个参数,是一个自定义的值,负责标识微信服务器和应用服务是不是一一对应。url就是应用服务器的地址。当我们填写完url,token后,微信服务器就会发送请求到url,进行验证应用服务器,然后应用服务器做出对应响应...

2018-05-14 00:08:58 1238

原创 PHP服务器的日志记录类

class log{ //记录日志文件到本地 public function logger($log_filename, $log_content)     {     $IP = $this->getIp();         if($IP != "127.0.0.1"){ //LOCAL             $max_size = 1000000;             if...

2018-05-14 00:07:32 749

原创 微信Token验证的——C#

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;using System.Xml;namespace Weixin{    /// <summary>    /// 只适用于微信回调模式的请求    /// </summary> ...

2018-05-14 00:06:45 2749

原创 条件分支的两种方式的对比——条件控制与条件数据

1.条件码 前提:在机器代码中,寄存器里有一组单个字的条件码寄存器,他们描述了最近的算术或逻辑操作的属性。可以检测这些寄存器来执行条件分支指令。常见的条件码如下:但是,条件码是不能直接访问的,常用的方式有三种:1.)可以根据条件码的某种组合,将一个字节设置为0或者1;2.)可以条件跳转到程序的某个其他的部分;3.)可以有条件地传送数据2.跳转指令机器代码里面的跳转指...

2018-05-11 12:57:51 2577 1

原创 处理器的流水线式实现

我们熟知的编程语言C、java、脚本语言等,都是按照顺序执行的,前面提及过的文章中,机器代码也是按照顺序执行的,但是从机器硬件的实现上,近代处理器执行指令的顺序并不是我们所看到的顺序执行,然而,却能保证指令顺序执行的结果。前提知识:1.机器指令是二进制格式的代码,以字节为单位的一个或多个的字节序列。2.指令集体系结构(ISA):一个处理器支持的指令和指令的字节编码。不同的处理拥有不同的...

2018-05-11 12:57:01 2826

原创 存储器系统

存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。作为一个程序员,你需要理解存储器层次结构,因为它对应用程序的性能有着巨大的影响。如果你的程序需要的数据是存储CPU寄存器中的,那么在指令的执行期间,在0个周期内就能访问到他们。如果存储在高速缓存中,需要4-75个周期。如果储存在主存中,需要上百个周期。而如果储存在磁盘上,需要大约几千万个周期!因此,我们了解存储器系统可以优化...

2018-05-11 12:56:12 894

原创 网络编程

网络编程,我们的理解是基本的客户端-服务器的编程模型,这是基本的编程模型。所有的网络应用都依赖于前面文章提及到的进程、信号、字节顺序、内存映射以及动态内存分配。而网络编程就是基于因特网服务的客户端-服务端模型编程。何谓网络 从硬件上看待网络,网络依赖于一种I/O设备,成为网络适配器。这是一种从网络上接收到的数据从适配器经过I/O和内存总线复制大内容,通常是通过DMA传送。同样,数据也能从内存复制到...

2018-05-11 12:54:27 187

原创 Arcgis Api for JavaScript ——queryTask中url出现自动符号转义,&-》&

 如题,正确的代码是 var queryTask = new esri.tasks.QueryTask(url.trim()); 原因在于输入的url含有空格,自动转义,并拼接当前的href

2018-05-11 12:53:33 428

原创 人月神话笔记(一)——项目滞后原因

在众多软件项目中,缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还大。导致这种普遍性灾难的原因是什么呢? 首先,我们对估算技术缺乏有效的研究,更加严肃地说,它反映了一种悄无声息, 但并不真实的假设——一切都将运作良好。 第二,我们采用的估算技术隐含地假设人和月可以互换,错误地将进度与工作量相互混淆。 第三,由于对自己的估算缺乏信心,软件经理通常不会有耐心持续地进行估算这...

2018-05-11 12:52:35 394

原创 人月神话笔记(二)——人月的背后

人月。成本的确随开发产品的人数和时间的不同, 有着很大的变化, 进度却不是如此。 因此我认为用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是可以相互替换的。   人数和时间的互换仅仅适用于以下情况:某个任务可以分解给参与人员,并且他们之间不需要相互的交流。 这在割小麦或收获棉花的工作中是可行的;而在系统编程中近乎不可能 。 当任务由于次序上的限制不能分解时,人手...

2018-05-11 12:51:58 237

原创 DIV可以拖动的巧妙设计

DIV把拖动事件绑定在自己的身上是最容易实现的形式,但是,在实际应用中,把拖动事件绑定在自己身上当鼠标移动过快容易失去焦点,因此,有一个灵活的设计方法:把绑定事件绑定在某个范围更大的控件上。当鼠标在范围更大的控件上移动时,拖动事件就不会失去焦点!!如下代码所示:下面的代码有个地方写死了,在于只能拖动对话框的标题部分/*增加该弹框拖动功能 $t, 需要增加拖拽的element...

2018-05-11 12:51:05 1239

原创 ionic2和angular的一些记录

1.Ionic2编译成APP后,启动出现 can not connect www....index.html 问题所在是index.html页面上引入某些css,js文件,需要internet加载,因此不能联网报错。解决方法是不要在index.html上加载其他因特网上的资源,或者异步加载。 解决方法如下:添加<preference name="loadUrlTimeoutValue" va...

2018-05-11 12:50:22 353

原创 C# 线程访问winform控件的方法

在winform外调用winform控件的方法很多,比如delegate、Action、Func等方法异步调用,但是C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。Windows 窗体中的控件被绑定到特定的线程,不具备线程安全性 。因此,如果从另一个线程调用控件的方法...

2018-05-11 12:49:38 777

原创 ionic 以及cordova apk打包成功,安装不成功,显示Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]

原因是:因为AndroidManifest.xml里面某个prodivers标签的android:authorities有重复。出现场景:在两个app里面使用cordova-appupdate插件,第一个app安装成功,第二app因为,上面原因,产生冲突导致安装失败。解决方法:修改AndroidManifest.xml里面冲突的部分把com.vaenow.appupd...

2018-05-10 19:04:52 1743

原创 Ionic cordova Android定位相关问题的小记录

因为,ionic cordova-plugin-geolocation android插件不能使用,原因是google的服务被禁掉,这里是使用百度的定位SDK解决,手机定位的问题。但是,因为百度插件使用的是网络定位,因此存在误差较大的情况。1.申请Android 定位SDK,这里需要到百度地图APi的控制台申请 Android下的定位SDK的APi KEY。我申请的key为如下:apk...

2018-05-10 19:04:07 739

转载 搭建Ionic2的单元测试环境(基于angular2的环境下延伸)

这里搭建的环境是Jasmine作为单元测试框架,Karma框架作为自动化测试的框架。1.首先需要下载相关的依赖,"jasmine":"^2.8.0","jasmine-core":"^2.8.0","jasmine-spec-reporter":"^4.2.1","karma":"^1.7.1","karma-chrome-launcher":"^2.2.0",...

2018-05-10 18:59:44 233

原创 ionic2的swipe事件的上下滑动不能触发的问题解决

原因:ionic2采用hammerjs的手势事件,但是hammerjs的swipe默认是不允许垂直方向的滑动,因此,需要手动配置,并重载配置1.编写配置文件:下载hammerjs和类型描述文件:npm install hammerjs --save && npm install @types/hammerjs --save-dev;新建myHammer.config.t...

2018-05-10 18:56:09 1853

原创 leaflet 的tilelayer,如何在最大级别的瓦片下,仍能放大

leaflet的tilelayer在最大级别的瓦片后,继续拉取的话,不会让最大级别的瓦片放大,而是加载下一级的瓦片。但是,下一级的瓦片是不存在的。所以,就会出现加载错误(如果设置的加载失败显示的图片,则会显示图片),导致出现灰屏。如果,想要最大级别下,继续拉大,会再放大图片的效果,则可以这样。首先自定义一个变量unlimited,表示是否启用该效果。然后,重写tilelayer...

2018-05-10 18:55:28 4423 5

原创 移动端使用leaflet,如何适配手机的分辨率

当我们使用tilelayer时,会发现在PC端很清晰的地图,在移动端就不清晰了。原因是图片在高分辨率的手机会变模糊。这里leaflet是实现了一个属性detectRetina,如果设置detectRetina为true。那么,地图将会把原来一个瓦片填充的地方,变成需要四个瓦片填充,并且修改了缩放级别的设置(本质是修改了瓦片的大小tileSize.从而改变了img标签的大小和需要加载...

2018-05-10 18:54:25 2680 2

原创 javascript 比较两个数组和两个对象,包括嵌套的数组和深度的对象

export let isArrayEqual = function(arrya1: any[], array2: any[]){    if (!arrya1 || !array2)        return false;    // 比较长度    if (arrya1.length != array2.length)        return false;    for (let i =...

2018-05-10 18:53:14 1879

空空如也

空空如也

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

TA关注的人

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