三不朽

在Laravel中使用laravel-mysql-spatial处理geometry空间类型数据

Publish: July 13, 2020 Category: 编程 No Comments

接之前一篇文章,我们使用mysql来处理geometry相关数据。用到了laravel-mysql-spatial来处理geometry数据。今天正好有时间整理了laravel-mysql-spatial完整的使用方法。机器翻译为主哈,使用通俗易懂的文字加以描述。原文在这里 https://github.com/grimzy/laravel-mysql-spatial

开始之前必须要了解的概念: SRID (空间引用识别号, 坐标系)
地球并不是平的,也不是正圆形,而是一个非标准的椭圆,在不同的经纬度位置,计算两点的距离没有一个完美的公式(即快速、有准确)。
所以坐标系应运而生,SRID是指数据的坐标系,例如: 在PostGIS中可以查到支持的SRID。查询与北京、中国有关的坐标系。
postgres=# select from spatial_ref_sys where srtext ~ 'beijing';
postgres=# select from spatial_ref_sys where srtext ~ 'china';

数据可以在不同的坐标系之间转换,在进行GIS计算时,一定要在同一个坐标系中进行。

Laravel 包可轻松使用MySQL 空间数据类型和 MySQL 空间函数。
请检查 MySQL 版本的文档。MySQL 的空间数据扩展在 MySQL 5.5 中添加,但许多空间函数在 5.6 和 5.7 中已更改。
版本

  • 1.x.x: MySQL 5.6 (也支持 MySQL 5.5, 但不是所有空间分析函数)
  • 2.x.x: MySQL 5.7
  • 3.x.x: MySQL 8.0,支持 SRID(当前分支)
    此包还适用于 MariaDB。有关兼容性,请参阅 MySQL/MariaDB空间支持矩阵。







阅读剩余部分...

WEB页面JSON格式化显示和应用小技巧

Publish: July 4, 2020 Category: 小技巧 No Comments

如果使用JSON作为参数,JSON格式化显示在调试和简单配置系统中会经常用到。这里以PHP和JS为例子讲解如何更友好的显示JSON数据。

一 使用PHP来处理格式化显示JSON和使用JS来处理格式化显示JSON
先看下效果图:

上面这种效果是在html元素<pre>标签中显示的效果。通常我们拿到的数据是这种格式

{"username":"myname","password":"xsdasi349r034rdfasdfsaasdfasdfa","gender":"male","age":"12"}

如果有经过转义会是下面这种方式

{"username":"myname","password":"xsdasi349r034rdfasdfsaasdfasdfa","gender":"male","age":"12"}








阅读剩余部分...

Redis状态查看性能分析总结

Publish: July 4, 2020 Category: 运维 No Comments

作为一个广泛使用的缓存、消息队列、简单算法支撑基础组件,redis每一次大版本更新都会给我们带来惊喜。在写本文章的时候redis已经发布了6.0.5稳定版。后续会陆续分享一些使用redis实现各种算法的场景,本文主要讲述redis运维性能分析方面的实战总结。

一 查看redis运行状态

从如下几个方面来查看,info 命令有三种使用方式分别如下:

info 部分redis统计信息


info all 全部redis统计信息


info section 某一块的统计信息,其中section可以忽略大小写,例如: redis-cli info memory

通常情况下都是对某个块感兴趣,然后会对该块执行info 操作。










阅读剩余部分...

Android自学避坑笔记之发起一个完整http请求

Publish: June 29, 2020 Category: 编程 No Comments

新建一个项目,遇到如下问题

using legacy android.support libraries

看字面意思是是否启用旧的支持库,我选择不勾选。

在真机调试时候选择activity,然后提示如下错误:

The activity must be exported or contain an intent-filter

安卓中作为启动页的activity在mainfest中必须必须设置intent-filter或者设置成exported
在activity设置如下

<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>








阅读剩余部分...

MySQL基于距离半径的搜索和区域搜索POI实践

Publish: June 8, 2020 Category: 小技巧,代码分享 No Comments

因为应用是基于MySql的,所以我们的技术选型也是主要有两种:一种是多边形是否包含,一种是对每一个点进行计算。

首先看第一种:区域内搜索

在我们的业务平台中有很多景区的,每个景区都有围栏地址和中心点地址,我从中摘录一部分,这次重点关注fence_center也就是中心点字段。
我们的table定义如下:

CREATE TABLE `map` (
 `id` int(11) NOT NULL,
 `name` varchar(32) COLLATE utf8_unicode_ci NOT NULL COMMENT '景区名称',
 `fence_center` point DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='景区表';

我先确定一个多边形围栏,然后直接查找在围栏内的点。这样的计算有一个问题,就是必须事先知道多边形区域,这种方式更适合按区域查找场景。


阅读剩余部分...