自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (5)
  • 收藏
  • 关注

原创 如何开发一个地图导航系统

入职新公司以来的第一项任务就是参与原有导航系统的重构。原有的导航系统基本上就是在高德地图API的基础上做了一次封装,现在希望能慢慢建立自己的导航系统。一般来说,导航系统可分为以下部分:1、地理基础数据。包括地图、天气数据、交通数据、行政规划数据等。国外来看的话,地图数据较为开放。国内的话,地图数据的保密性比较高。一般具有测绘资质的公司才有资格进行地图测绘,拥有地图数据。获取地理基础数据的通...

2019-08-22 16:16:19 18613 11

原创 JVM 详解

jvm是什么使用过 Java 的同学都知道,Java 代码可以在服务端(Linux 系统)运行,也可以在 Windows 系统运行。我们编写的一份java代码可以在不同的系统中运行。与其他语言不同,Java 语言并不直接将代码编译成与系统有关的机器码,而是编译成一种特定的语言规范,这种语言规范我们称之为字节码。无论 Java 程序要在 Windows 系统,还是 Mac OSX 系统,抑或是 Linux 系统,它首先都得编译成字节码文件,之后才能运行。但即使编译成字节码文件了,各个系统还是无法明白字节码文

2021-08-02 20:29:34 306

原创 Redisson分布式锁使用

一、分布式锁简介在单进程的系统中,如果服务在运行时只有一个线程在使用,其实是不需要锁的,因为不存在对某个变量同时操作的情况。当存在多个线程同时使用某个变量时,就需要对变量或者代码块进行控制,防止线程之间相互影响。锁的本质可以理解为一种标记,这个标记对于所有的线程都是可见的,当某个线程先拥有这个标记时,同时也就拥有了对变量的读写权利,此时其他的线程都处于等待状态,等待获取标记的线程操作完成后,释放标记,才会轮到下一个线程操作。说起分布式,就不得不提CAP理论,目前我们的很多服务都是采用多节点部署的,这种情

2021-05-11 08:47:28 2024 7

原创 一篇文章掌握GeoHash

一、基本概念地球是一个球,我们常用经纬度来表示某个点的坐标,例如:北海公园的坐标为(39.928167,116.389550)。GeoHash的基本原理就是将地球理解为一个展开的二维平面,将这个二维平面按照一定的规则划分为不同的单元格,每个单元格拥有具有唯一性的编码,如图一所示。至于这个编码如何计算,将会在后面的内容予以介绍。图1:GeoHash原理示意图从图中可以看出,每一个单元...

2019-10-29 19:57:49 2162

原创 计算经纬度点之间的距离

球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章。 Great-circle distance Haversine formula值得一提的是,维基百科推荐使用Haversine公式,理由是Great-circle distance公式用到了大量余弦函数, 而两点间距离很短时(比如地球表面上相距几百米的两点),余弦函数会得出0.999...的结果, 会导致较大的舍入误差。...

2019-10-23 19:37:55 9061

原创 阿里面试题目

晚上正在公司加班,突然收到阿里的电话,其实之前已经面试过阿里的杭州岗位,只不过连电话面试都没通过就被刷下来了。现在又来了一次,被问到了以下的题目:1、Java引用类型有哪些Java不同于C/C++,不需要程序员来管理内存,Java会自己进行内存回收,回收操作通过垃圾收集器线程进行处理,jvm在进行垃圾收集的时候,需要判断哪些对象需要销毁,这时就与这几种引用类型相关。强引用(Strong...

2019-10-21 20:56:43 511

原创 leetcode 25题 K 个一组翻转链表 Java解法

算法题目描述:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返...

2019-10-15 20:40:28 279

原创 红黑树查找和删除操作深入讲解

一、基本概念二叉树中任意一个节点的左右子树的高度相差不能大于 1。从这个定义来看,上一节我们讲的完全二叉树、满二叉树其实都是平衡二叉树,但是非完全二叉树也有可能是平衡二叉树。平衡二叉查找树中“平衡”的意思,其实就是让整棵树左右看起来比较“对称”、比较“平衡”,不要出现左子树很高、右子树很矮的情况。这样就能让整棵树的高度相对来说低一些,相应的插入、删除、查找等操作的效率高一些红...

2019-10-14 20:07:17 530

原创 Java 二叉平衡树高度解法

废话少说,直接上代码import java.util.LinkedList;/** * @author hehe * @version : TreeHeight.java, v 0.1 2019-10-10 19:52 */public class TreeHeight { static class TreeNode{ int val; T...

2019-10-10 20:27:39 178

原创 二叉树深入讲解

一、树的基本概念关于树的概念:节点的高度:节点到叶子节点的最长路径(边数);节点的深度:根节点到这个节点所经历的边的个数;节点的层数:节点的深度+1;树的高度:等于根节点的高度。二、二叉树二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子节点和右子节点。编号 2 的二叉树中,叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两...

2019-10-10 20:25:41 337

原创 搞定哈希算法

1、基本概念哈希算法历史悠久,业界著名的哈希算法例如:MD5、SHA等。将任意长度的二进制值串映射为固定长度的二进制串,这个映射的规则就是哈希算法。通过原始数据映射之后得到的二进制串就是哈希值。哈希算法需要满足的几点要求: 从哈希值不能反向推导出原始数据(所有哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个Bit,最后得到的哈希值大小也大不相同; ...

2019-10-09 20:01:56 1931

原创 散列表数据接口详解

1、基本概念散列表的英文叫做“HashTable”,我们平时也叫它“哈希表”或“Hash表”,散列表用的是数组支持按照下标随机访问的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说是没有数组就没有散列表。将关键词转换为数组下标的映射方法 就叫做散列函数(或Hash函数哈希函数),而散列函数计算得到的值就叫做散列值(或hash值哈希值)。构造散列函数有三个基本要点:...

2019-10-08 19:22:17 231

原创 二分查找算法介绍及实现

一、基本概念二分查找法(BinarySearch)算法,也叫折半查找算法。二分查找针对的是一个有序的数据集合,查找思想有点类似于分治思想。每次都通过跟区间的中间元素对比,将带查找的区间缩小为之前的一半,知道找到要查找的元素,或者区间被缩小为0。二分查找是一种非常非常高效的查询算法,时间复杂度未O(logn)。二、算法实现二分查找法Java实现:非递归方法:public ...

2019-09-20 09:20:38 9112

原创 冒泡、插入、选择排序方法思想和实现

排序算法 时间复杂度 是否基于比较 冒泡、插入、选择 O(n²) 是 快排、归并 O(nlogn) 是 桶、计数、基数 O(n) 否 ...

2019-09-17 18:18:00 343

原创 线性排序方法

一、基本概念排序算法的时间复杂度是线性的,我们把这类排序算法叫做线性排序,例如桶排序、计数排序、基数排序这三种排序算法的时间复杂度是线性的,都是O(n)。之所以能做到线性的时间复杂度,主要原因是这三个算法是非基于比较的排序算法,不涉及元素直接的比较操作;二、桶排序:核心思想是将要排列的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排序完之后,再把每个桶里的数据安装顺序依次取...

2019-09-17 18:16:01 5908

原创 从事务到分布式事务详解

一、事务概念 事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单位。 事务四大特性(ACID) Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败; Consistency(一致性):事务必须使数据库从一个一致性状态...

2019-09-16 19:45:54 197

原创 Java合并有序链表--空间复杂度低

一般说来,合并有序链表都会定义一个新的链表存放处理后的结果,笔者在想能不能利用原有两个链表的存储空间,不占用额外的存储空间,只在两个链表之间进行连接操作。以下为代码实现。但是这样会破坏原有链表的值。/** * @author haojiajin * @version : MergeSortedList.java, v 0.1 2019-09-12 16:20 */public cla...

2019-09-12 17:47:27 503

原创 利用栈实现字符串表达式计算

栈的基本机构1、栈典型的结构,先进者后出,后进者先出,从操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。2、用数组实现的栈叫做顺序栈,用链表实现的栈,我们叫做链式栈;栈的简单实现:// 基于数组实现的顺序栈public class ArrayStack {private String[] items;// 数组private ...

2019-09-11 15:52:52 598

原创 链表数据结构讲解 --数据结构与算法之美读书笔记

链表(上)1、数组和链表区别数组需要一块连续的内存空间来存储,链表恰好相反,并不需要一块连续的内存空间,通过“指针”将一组零散的内存卡串联起来使用。2、常见的链表结构单链表:第一个点叫作头结点,最后一个节点叫作尾结点。头结点记录链表的基地址,尾结点的下一个指向空地址null。链表插入和删除操作的时间复杂度是O(1)。链表的随机访问时间复杂度未O(n)。循环链表:循环链表...

2019-09-10 19:58:41 181

原创 @Component 和 @bean的区别

@Component和@bean注解都是管理Javabeans,但是各自的目的不同。@Component、 @Controller、@Service、@Repository通过classpath扫描实现实体自动检测。@bean只能用来声明一个单独的bean。component类型的注解: 注解名称 作用 @Component ...

2019-09-10 15:15:41 4498

原创 数组下标为什么从0开始编号 -- 数据结构与算法之美 读书笔记

1、什么是数组 数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据;2、引申概念 线性表(LinearList):就是数据排成像一条线一样的结构,每个线性表上的数据最多只有前和后两个方向。数组、链表、队列、栈等也是线性表结构。 非线性表:与线性表想队里的概念,例如二叉树、堆、图,在非线性表中,数据...

2019-09-09 18:45:13 362

原创 算法复杂度分析--数据接口与算法之美读书笔记

1、数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。2、负责度分析是整个算法学习的精髓,只要掌握了她,数据结构和算法的内容基本上就掌握了一半;3、为什么需要复杂度分析? 事后统计法 测试结果非常依赖测试环境,硬件对测试结果有很大影响 测试结果手数据规模影响很大;4、大O时间复杂度病不具体代表代码真正的执行时间...

2019-09-08 18:15:27 297

原创 消息队列扫盲

我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ。1、为什么使用消息队列消息队列常见的使用场景,叫偶、异步、削峰;解耦消息队列使利用发布-订阅模式工...

2019-09-05 15:12:53 213

原创 Java中controller层和service代码应该怎么分配?

相信大家对SpringMVC的架构都比较清楚了。Spring MVC是Spring框架的一部分,Spring框架成为Java EE开发主流框架后,Spring开发小组又在Spring框架的基础上推出了MVC架构,主要用于支持WEB应用程序的开发。MVC是Model(模型,也称为数据模型)、View(视图)、Controll(控制器)三个英文单词首字母的缩写。从MVC组合的三个单词也可以看出,MV...

2019-09-02 15:30:27 7905 1

原创 OSM PBF 文件格式说明

File Format 一个pbf文件通常包括一个文件头和一系列的文件体。这种设计是为了以后文件随机读取,并且跳过不理解或者不需要的数据。文件格式由以下部分组成:int4: 以网络字节顺序排列的BlobHeader长度BlobHeader: 定义如下message BlobHeader { required string type = 1;类型 optional...

2019-08-27 19:19:35 10338

原创 Graphhopper Routing导航API请求参数和返回结果说明

route请求参数说明: 参数名称 参数类型 是否必选(默认值) 参数说明 point string of array (纬度,经度) 是 路线计算坐标,至少包括一个起点和一个终点 point_hint ...

2019-08-21 15:04:41 3079 2

原创 Graphhopper OSM地图路径规划导航 离线搭建教程

GraphHopper是一种快速且内存有效的Java导航引擎,默认使用OSM和GTFS数据,也可导入其他的数据源。支持CH(Contraction Hierarchies)、A*、Dijkstra算法。优点:1、算法。Dijkstra算法运行得较慢,但确实能保证找到一条最短路径。最佳优先搜索(BFS)运行得较快,但是它找到的路径不一定是最好的。A*算法把启发式方法(heuristic ap...

2019-08-20 15:43:07 9127 15

原创 OSRM开源地图导航引擎介绍一

OSRM(Open Source Routing Machine)( https://github.com/Project-OSRM/osrm-backend)开源导航引擎,用C++14编写完成,此引擎基于OpenStreetMap数据进行计算。OSRM提供了以下服务:Nearest :根据坐标查找最近的匹配目标;Route:查找坐标间最快的路径Table :计算路径上坐标之间的时...

2019-08-19 14:43:23 9597

原创 组件化开发和模块化开发

组件化开发和模块化开发实际上是两种编程思想,也可以被认为是两种解决方案。组件化开发注重重用,可以用作实现基础架构的技术方案。举个例子:加入现在我需要实现一个几何图形库,包括图形的生成、修改、删除等基本功能。按照组件化的开发思想来说,所有的几何图形都有共同的方法,即新增、编辑和移除。我们这里就可以先定义一个几何图形的基本类型。一般说来,通常从点、线、面三个方面分别对几何图形进行基类的定义处理。至于不...

2018-11-27 15:32:36 4613

原创 openlayers 鼠标点击交互事件

目前,openlayers中利用ol.interaction.Select接口进行事件交互操作。在此接口中,有几个重要的参数说明如下:condition:表示鼠标事件类型,例如ol.events.condition.click表示单击事件(其他事件可参考api)style:可为style或function,其中为function时函数参数为feature;filter:function...

2018-10-18 19:29:59 8899

原创 TLE(两行轨道数据)卫星行李数据格式解析

笔者在利用Cesium进行卫星显示的时候遇到了卫星星历信息,卫星星历信息用TLE格式进行描述,初次看到这种数据很难看出描述的数据,所有在查询了相关子类之后对TLE数据进行了介绍,如下所示:卫星星历的结构为三行,首行数据为卫星名称;后面两行则存储了卫星相关数据,每行69个字符,包括0~9、A~Z(大写)、空格、点和正负号。下面的示例及相关介绍参考维基百科(https://en.wikipedia...

2018-10-16 18:54:33 43611 1

原创 Cesium半椭球体面的生成思路

Cesium提供了两种方式让使用着加载自己所需要的几何图形,分别是Entity和Primitive。前者是一些已经封装好的接口,可以很方面的添加点、线、面、矩形、椭球体、圆柱体等形状。对于一些意见的使用来说,Entity接口可以用极少量的代码就可以实现所需要的功能。另外一种则是Primitive,相比Entity来说,这种方式需要使用者对Cesium有着更深层次的理解,因为在Primitive中我...

2018-10-15 19:15:37 3294 1

原创 CMS系统之java

程序员小白一枚,最近在写一个练手项目,用java+kingbase写一个新闻管理系统。系统主要包括用户管理,角色管理,菜单管理,新闻管理和操作日志管理。现在做下来有一些自己的经验想跟大家分享一下。首先,在编写代码之前,大家一定要认真阅读需求文档,搞清楚需求之间的逻辑关系,前期因为没有好好阅读,后期写的代码被项目经理批评了好久。其次,在kingbase的使用方面,资料真是少之又小,略坑。这里要注

2017-07-12 14:08:36 532

python-selenium-api

快速查询所需api

2017-08-29

arcgis空间分析使用手册

arcgis的空间分析功能十分强大,掌握好空间分析非常重要

2014-08-16

Arctoolbox实用教程

学习ARCGIS的好东西,掌握arcgis是优秀的GISER必备品质

2014-08-16

空空如也

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

TA关注的人

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