北京微信网站建设报价旅游网站建设可行性分析

web/2025/10/2 20:29:56/文章来源:
北京微信网站建设报价,旅游网站建设可行性分析,网站的规划与创建,如果用百度cdn缓存wordpress文章目录 1. 前言2. 常用api介绍3. 需求假设#xff08;获取离我最近的停车场#xff09;4. 代码示例 1. 前言 接着上一篇Redis那些事儿#xff08;二#xff09; #xff0c;这一篇主要介绍Redis基于Geo数据结构实现的地理服务#xff0c;它提供了一种方便的方式来存储和… 文章目录 1. 前言2. 常用api介绍3. 需求假设获取离我最近的停车场4. 代码示例 1. 前言 接着上一篇Redis那些事儿二 这一篇主要介绍Redis基于Geo数据结构实现的地理服务它提供了一种方便的方式来存储和处理与地理位置相关的数据。Geo数据结构是Redis的一种特殊数据类型用于存储地理位置信息每个地理位置被表示为经度和纬度的坐标可以将这些坐标与一个或多个成员关联起来。Redis的地理服务提供了一套简单而强大的功能可以方便地存储和处理与地理位置相关的数据它适用于许多应用场景如地理定位、附近的人、附近的店铺搜索、附近的停车场、附近的地铁站…等等大大提升了定位排序的效率。 2. 常用api介绍 Redis地理服务API方法包括GEOADD向Geo数据结构中添加一个或多个地理位置信息GEODIST计算两个地理位置之间的距离GEORADIUS获取给定地理位置附近一定范围内的成员GEOPOS获取给定成员的经纬度坐标GEOHASH获取给定成员的Geohash值…以上都是Geo地理服务内置的常用方法接下来还是基于开发中的StringRedisTemplate对象作为切入点更直观地说明实际应用中对于Geo地理服务地应用。         StringRedisTemplate中定义了RedisGeoCommands的接口RedisGeoCommands中封装了一系列的内置方法及子类所以Redis中基于opsForGeo()的操作都离不开RedisGeoCommands如下为部分截图 Geo数据结构中存入坐标数据redisTemplate.opsForGeo().add(key, locations) ListPark parks getParks(); //TODO 获取停车场列表信息//初始化Redis区域对象集合ListRedisGeoCommands.GeoLocationString locations new ArrayList();for (Park park : parks) {//实例化ponit对象传参[经度、纬度]Point point new Point(park.getLng(), park.getLat());//构造location对象传参[name值一般取ID、point对象]RedisGeoCommands.GeoLocationString location new RedisGeoCommands.GeoLocation(park.getParkId() , point);locations.add(location);}String key GEO_PARK_KEY;//存入坐标数据redisTemplate.opsForGeo().add(key, locations);Geo数据结构中删除坐标数据redisTemplate.opsForGeo().remove(key, …members) String key GEO_PARK_KEY;//删除单个坐标数据parkId为单个停车场ID类型为StringredisTemplate.opsForGeo().remove(key, parkId);//删除多个坐标数据第一个参数为key后面可以传入多个parkIdredisTemplate.opsForGeo().remove(key, parkId1, parkId2, parkId3);Geo数据结构中检索坐标数据由近到远redisTemplate.opsForGeo().radius(key, within, args) String key GEO_PARK_KEY;//检索20公里内的Distance distance new Distance(20, Metrics.KILOMETERS);//以目标坐标为圆心distance为半径的圆圈范围其中lng代表中心坐标的经度、lat代表中心坐标的纬度Circle within new Circle(new Point(lng, lat), distance);//条件参数按照距离查询默认就是升序RedisGeoCommands.GeoRadiusCommandArgs args RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs().includeDistance();//执行查询GeoResultsRedisGeoCommands.GeoLocationString results redisTemplate.opsForGeo().radius(key, within, args);Geo数据结构中检索坐标数据由近到远redisTemplate.opsForGeo().search(key, reference, distance, args) String key GEO_PARK_KEY;//检索20公里内的Distance distance new Distance(20, Metrics.KILOMETERS);//条件参数按照距离查询默认就是升序RedisGeoCommands.GeoSearchCommandArgs args RedisGeoCommands.GeoSearchCommandArgs.newGeoSearchArgs().includeDistance();//中心点位确认其中lng代表中心坐标的经度、lat代表中心坐标的纬度GeoReferenceString reference GeoReference.fromCoordinate(lng, lat);//执行查询GeoResultsRedisGeoCommands.GeoLocationString results redisTemplate.opsForGeo().search(key, reference, distance, args);以上列了四个最常用的方式类似于我们最常规的CURD其中最后两个radius和search是查询方法二者最终查询的结果是一致的只是手段方式不同而已 3. 需求假设获取离我最近的停车场 这个时候有人就说了我使用GeodeticCalculator工具类在代码中计算距离也很方便的啊。我想了想确实很方便只需要引入geodesy的依赖就可以直接使用GeodeticCalculator的calculateGeodeticCurve方法就可以计算了还不需要麻烦的用redis搞那么长的代码了。但是问题来了就以停车场为例假如只有十几个停车场遍历一下然后按升序排个序很快就计算出了离我最近的停车场列表了。如果我有上千个或者上万个停车场总不能遍历上万次然后再排序吧那这速度就一言难尽了…如果这个时候使用redis的geo数据结构来读取那就完美解决这个问题了。Redis提供的GeoHash算法功能对于这方面的需求就太好用了那么附近的停车场、附近的人、附近的商家就都是一个思路了 4. 代码示例 /*** 获取距离最近的停车场列表由近到远* param lng 当前位置经度* param lat 当前位置纬度* param page 页数第n页* param size 每页数量10、20...* param value 公里范围内搜索范围半径* return*/public ListPark getLatestParks(Double lng, Double lat, Integer page, Integer size, Double value){//计算分页起始参数Integer start (page - 1) * size;Integer end page * size;//查询redis按照距离排序String key GEO_PARK_KEY;//检索value公里内的Distance distance new Distance(value, Metrics.KILOMETERS);//以目标坐标为圆心distance为半径的圆圈范围其中lng代表中心坐标的经度、lat代表中心坐标的纬度Circle within new Circle(new Point(lng, lat), distance);//条件参数按照距离查询默认就是升序截止到endRedisGeoCommands.GeoRadiusCommandArgs args RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs().includeDistance().limit(end);//执行查询GeoResultsRedisGeoCommands.GeoLocationString results redisTemplate.opsForGeo().radius(key, within, args);if (results null) {return new ArrayList();}//获取最终检索的内容ListGeoResultRedisGeoCommands.GeoLocationString content results.getContent();//截取从起始到结束如果总数小于起始数就证明已经页数超了返回空集合if (content.size() start) {return new ArrayList();}//初始化parkId集合ListLong parkIds new ArrayList();//初始化距离mapMapString, Distance distanceMap new HashMap();//分页跳过之前的数据并遍历赋值content.stream().skip(start).forEach(i-{String parkIdStr i.getContent().getName();parkIds.add(Long.valueOf(parkIdStr));Distance dis i.getDistance();distanceMap.put(parkIdStr, dis);});//固定排序String join StringUtils.join(parkIds,,);//根据parkId集合获取park集合ListPark newParks parkService.list(new QueryWrapperPark().in(park_id, parkIds).last(ORDER BY FIELD(park_id, join ))).stream().map(i - {i.setDistance(distanceMap.get(i.getParkId() ).getValue());return i;}).collect(Collectors.toList());return newParks;}以上代码为由近到远获取距离最近的停车场列表的示例方法仅供参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高州市网站建设广州越秀公司网站建设

Full authentication is required to access this resource解决办法 报错问题:在使用 postman 测试接口时,该接口需要在 Header 中传入 access_token,实际上也在请求的 Header 中添加上了 access_token 参数,但是服务端还是返回4…

做淘宝客建网站要多少费用网站编辑心得体会

四 路由配置及页面跳转 (1)路由配置 uni-app页面路由全部交给框架统一管理,需要在pages.json里配置每个路由页面的路径以及页面样式(类似小程序在app.json中配置页面路由) (2)路由跳转 uni-app有两种页面路由跳转方式:使用navigator组件跳转(标签式导航)、调用API跳…

唐山网站制作案例网站设计流程软件

背景:在测试中,测试MM总喜欢连续重复点击Button,如果click事件的处理业务,稍微有些耗时,或者设备反应比较慢时,就会响应2遍处理,导致错误的现象出现。 前提:click事件的处理业务&…

企业网站模板 html广告公司平面设计培训

目录 一、下载 二、移植数据库 三、测试sqlite3 一、下载 SQLite Download Page 暂时先下载最新版的试试,我们以前其实在ubuntu上直接使用过 嵌入式数据库sqlite3_常见的嵌入式数据库-CSDN博客 当时我把常用的操作和怎么使用记录下来了 现在把他移植到开发板…

做计划的网站类似设计师联盟的网站

查看原文>>>【深度解析】WRF-LES与PALM微尺度气象大涡模拟 针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气模式、地形影响和…

怎么建立自己网站wordpress 生成页面

UML精简概述 UML精简概述 UML精简概述UML的定义常见的关系 在学习设计模式之前,需要掌握一些预备知识,主要包括UML类图和面向对象设计原则,它们是“基础内功”,将为后续的“深入修行”奠定基础。UML类图可用于描述每一个设计模式的…

杭州网站前端建设嘉定网站设计制作公司

FPGA里面的可执行文件都涉及到 *.bit, *.mcs, *.bin 和 *.elf。 bit文件 bit 文件一般用于JTAG在线进行调试的时候,是把bit文件是烧写到FPGA中进行在线调试。 bin文件 bin 文件是二进制文件,按顺序只包含原始字节流&#xff0c…

网站建设开发岗位职责产品设计大师作品

http://www.68design.net/Development/Aspnet/Basis-AspNet/26011-1.html 转载于:https://www.cnblogs.com/faxian/p/4402910.html

大兴建设网站wordpress有几张表

文章目录 前言基础说明关键配置与代码其它补充示例链接 前言 多个定时器同步触发启动是一种比较实用的功能,这里将对此做个示例说明。 基础说明 该示例演示通过一个TIM使能时同步触发使能另一个TIM。 本例中使用TIM1作为主机,使用TIM1的使能信号作为…

网站如何盈利流量费wordpress关闭注册邮件

一、OpenStack镜像服务 1、什么是镜像 镜像通常是指一系列文件或一个磁盘驱动器的精确副本。虚拟机所使用的虚拟磁盘,实际上是一种特殊格式的镜像文件。云环境下尤其需要镜像。镜像就是一个模板,类似于VMware的虚拟机模板,其预先安装基本的…

网站的开发是使用什么技术南京外贸网站建设报价

目的: 让通过ssh在目标机器上执行命令和scp, 不必每次输入密码. 做法: 假设有机器A, 机器B 在A上执行, ssh-keygen, 一路使用默认值, 成功生成: 私钥id_rsa, 公钥id_rsa.pub 把A上生成的公钥id_rsa.pub的内容, 写入机器B的.ssh/authorized_keys文件中, 文件不存在则创建. cat i…

360度搜索建站网宜宾建设局网站

关于内存单根16G和两根8G的差别,小编觉得这些事实,你得知道! 论单根16G和两根8G的区别! 内存单通道和双通道,大家都有听过吧! 理解起来很简单,一个单通道,只能进行单向传输数据&…

企业网站模板php直播型网站开发

Altair Radioss是解决瞬态加载工况下非线性问题的领先的结构分析求解器。其具备高扩展性、高品质、高鲁棒性,以及诸多功能:多域求解技术、高级材料功能(复合材料)等。Radioss求解器被广泛应用于汽车、航空航天、电子/家电、包装、轨道机车、生物医疗、能…

网站出售商品建设高清视频服务器内存

区别 BottomNavigationBarr和TabBar都是用于创建导航栏的组件,但它们有一些区别。 位置不同:BottomNavigationBar通常位于屏幕底部,用于主要导航;而TabBar通常位于屏幕顶部或底部,用于切换不同的视图或页面。 样式不…

网站开发案例phpwordpress提示没有

简介: 项目的初衷是独立作出一个成熟的有特色的IOC容器,但由于过程参考Spring太多,而且也无法作出太多改进,于是目的变为以此项目作为理解Spring的一个跳板,与网上的一些模仿Spring的框架不同,本项目主要是针对注解形式 概述 项目的初衷是独立作出一个成熟的有特色…

网站建设方案交换认苏州久远网络php网站怎么缓存

一个月的时间,就为了解决一个问题,段错误运行环境:arm-linux模块:XML,为多线程,多socket的网络通信协议程序现象:XML在运行一段时间以后,出现段错误,运行的时间和出现问题…

北滘网站建设公司连南网站建设

阿里云-容器镜像服务ACR 将本地/服务器docker image(镜像)推送到 阿里云容器镜像服务仓库 1. 在容器镜像服务ACR中创建个人实例 2. 进入个人实例 > 命名空间 创建命名空间 3. 进入个人实例 > 镜像仓库 创建镜像仓库 4. 进入镜像仓库 > 基本信…

网站建设与制作总结wordpress session

杰理-按键多次按下识别多击 #define ALL_KEY_EVENT_CLICK_ONLY 0 //是否全部按键只响应单击事件

商务网站建设模块查学校去哪个网站

采用OpenCV和深度学习的钢印识别_菲斯奇的博客-CSDN博客采用OpenCV和深度学习的钢印识别[这个帖子标题党了很久,大概9月初立贴,本来以为比较好做,后来有事情耽搁了,直到现在才有了一些拿得出手的东西。肯定不会太监的。好&#xf…

西安北郊做网站公司海盐网站设计

概念理解mac算法是(Message Authentication Codes 消息认证码算法),是含有密钥散列函数算法。主要通过异或运算,再配合其他加密算法实现mac值的运算,用于校验。实现过程将需要加密计算的字符串转换为16进制字符串例如:密钥&#x…