类似微信的搜索附近的人的功能 在 服务端的实现
前提:根据两个点的经度和纬度计算两点之间的距离,公式见 http://en.wikipedia.org/wiki/Haversine_formula
思路 1)每个用户在服务器端都会保留最后的经度和纬度和时间
查找时,根据当前用户的经度和纬度 对 服务器端 每个用户的经度和纬度 进行计算,有人把上述公式做成mysql 函数放在 sql语句中调用
CREATE DEFINER=`root`@`localhost` FUNCTION `distance`(lat1 float,lng1 float,lat2 float,lng2 float) RETURNS float
BEGIN
set @num=
2 * 6371 * ASIN(SQRT(POW(SIN(PI() * (lat1 - lat2) / 360), 2) + COS(PI() * lat1 / 180)
* COS(lat2* PI() / 180) * POW(SIN(PI() * (lng1 - lng2) / 360), 2)));
RETURN @num;
END
可参见 http://hi.baidu.com/jlzan1314/blog/item/26f47251611698551038c2de.html 及 http://blog.csdn.net/alexjames_83/article/details/4261403
很显然,这种方法计算量巨大,实际应用中除非数量很小,否则可以排除
思路2)基准线预先计算法
每个用户在服务器端都会保留最后的经度j1 和纬度w1 的同时 保留对经度基准线的相对距离 dj1 和纬度基准线的相对距离 dw1
经度基准线可以是中国最东边的经度 纬度基准线可以是中国最北边的纬度
当前用户对经度基准线的相对距离 dj2 =230km 和纬度基准线的相对距离 dw2=350km
查找时sql语句可以这么写(1.5公里内的用户)
select * from user where dj1>(230-1.5) and dj1<(230+1.5) and dw1>(230-1.5) and dw1<(230+1.5)
相当于获得当前用户 周围正方形1.5公里区域的用户
此外通过将冷热数据分开存放及 分块存放 用户地理数据应该能有效的提高查询速度
相关推荐
系统由两大部分组成:服务器端(通常为嵌入式设备)和客户端(可能是PC、智能手机或其他联网设备)。服务器端负责接收客户端发送的控制命令,并控制电机运行,同时将电机的状态信息通过网络反馈给客户端。 【串行...
总的来说,这个Java Web手机端KTV点歌系统展示了Web开发中的基础技术和实践,包括数据库操作、用户认证、Ajax异步通信以及移动端UI设计。对于初学者来说,这是一个很好的学习和实践项目,可以帮助他们理解Web应用的...
现在,我们的智能家居系统已经基本实现了整体架构,包括服务器端、Web网页、Android手机客户端以及各种测试脚本,这些部分都已经可以进行实际调试。不过,由于我们的精力有限,智能控制部分仍在合作开发中。 智能...
随着技术的发展,滑动拼图验证码已经成为一种常见的验证码形式,尤其在PC、手机端和嵌入式设备上。本篇文章将深入探讨PC、手机端和嵌入式环境下的三种滑动拼图验证码实现效果及其相关技术。 首先,我们要理解滑动...
总结,本资料深入探讨了网络游戏的网络通信服务,包括通信方法、Web服务、Web服务器和客户端的设计,这些都是构建一个成功网络游戏不可或缺的元素。同时,它也触及了安全性与隐私保护,这是任何在线服务都需要重视的...
2. 联系人编辑:已存在的联系人信息允许用户进行修改,如更新电话号码、更换头像或添加备注等,确保信息的准确性和时效性。 3. 联系人搜索:强大的搜索功能使用户能够快速查找特定联系人,通常支持按姓名、电话号码...
物联网服务器需要具备实时处理和存储大量数据的能力,通常会采用如Node.js或Python的后端框架如Express或Flask来构建。此外,服务器还需要实现设备控制功能,能够向智能设备发送指令,比如自动灌溉或调节温室环境。 ...
本篇文章将聚焦于“新浪微博Android手机端和客户端”的源代码,旨在帮助读者深入理解Android应用开发的关键技术和实践方法。 首先,我们要明确的是,“新浪微博Android手机端”指的是运行在Android设备上的微博应用...
而Web服务器端采用Apache、PHP和MySQL,构建了一个可靠的后台数据处理和存储系统,支持大量的并发请求和高效的数据检索。 对于UI设计,开发者不仅需要关注视觉效果,还需确保用户体验流畅,操作直观。在实现全球化...
在实现这些功能时,开发者需要考虑服务器端和客户端的交互,通常使用HTTP/HTTPS协议。前端负责用户界面和初步的表单验证,后端负责业务逻辑和数据库操作。常见的前端验证库有jQuery Validate,后端框架如Spring Boot...
【标题】"WEB式MP3程序"涉及到的技术领域主要涵盖了Web开发、音频处理以及服务器端编程。这样的程序允许用户在网页上直接播放MP3音乐,无需下载到本地,提升了用户体验和方便性。以下是对这个主题的详细解释: 1. *...
综上所述,这个HTML5手机端抢红包福利袋游戏源码涵盖了许多前端开发的关键技术,对于学习和实践Web应用开发,尤其是移动Web开发,是非常有价值的参考资料。通过分析和研究这个源码,开发者可以深入理解前端技术的...
6. **保存和回放**:手写内容可以被编码为数据,存储在服务器或本地。回放功能则需要解析这些数据,再按照原始轨迹重新绘制。 7. **优化与兼容性**:为了确保在各种浏览器和设备上的良好体验,可能需要考虑使用...
当用户登录成功后,服务器会产生一个唯一的标识,存储在服务器端(session)或返回给客户端(JWT),之后的每次请求都将携带此标识进行身份验证,以确保操作的合法性。 安全性是会员系统不可忽视的部分,包括数据...
11. **部署与发布**: 游戏源码最后会经过打包、测试和部署,发布到Web服务器,供玩家在线游玩。 总的来说,"网页游戏源码五子棋onWeb"项目涵盖了前端开发、后端开发、游戏逻辑设计、用户体验优化等多个方面的知识,...
结合WEB接口实现定位服务,意味着开发者可能创建了一个后台服务器,该服务器接收手机上传的基站信息,并根据这些信息以及服务器端保存的基站位置数据库进行定位计算。服务器可能会使用一些定位算法,如格网定位、KNN...
服务器端主要负责处理玩家的请求,如开始新游戏、保存游戏进度、计算对手的最佳走法等。 6. **算法与数据结构**: 黑白棋的智能对战功能可能涉及到搜索算法,如Minimax或Alpha-Beta剪枝,以模拟计算机的决策过程。...
开发者需要设计一个接口,该接口能够接收用户的输入并将其与服务器端存储的信息进行匹配。服务器端一般会保存加密后的密码,以保护用户信息安全。 2. 密码管理:为了实现自动登录,程序需要能够记住用户的登录信息...
Java SE是Java编程语言的基础版本,专注于支持桌面应用程序以及服务器端的应用程序开发。学习Java基础是成为一名Java程序员的前提,内容通常涉及数据类型、变量、运算符、控制流程(条件和循环)、数组、面向对象...