在开发IM、推送这类应用系统时,尤其在移动网络下,各种弱网问题,让人非常痛苦。

典型的弱网问题,比如:

1)频繁掉线;
    2)丢包严重;
    3)网络抖动;
    4)网络延迟;
    ........
那么,针对以上现象,怎么才能有底气的跟老板、客户、产品经理地解释以下问题?

1)导致这些现象的根本原因到底是什么?
    2)怎么跟老板解释,要搞定在高铁上用好音视频聊天功能很困难?
    3)怎么跟客户解释P2P在3G、4G甚至5G网络下的成功率问题?
    4)怎么向客户说明,商场或人多场合下,明明信号很好,但你的APP确用不了?

网上能找到的通信技术资料都太过专业或太不专业,要么都是搞网络工程方面的内行人编写的(内容专业但很枯燥难懂),要么就是外行的IT开发人员写的(很少见,且价值不大,因为不够专业,所以内容并不准确,参考价值很有限)。

既能让外行的普通程序员看懂,还能准确地讲明白通信技术知识,这样的资料简直比找金矿还难。因为普通程序员能接触到的网络编程、网络通信方面的资料多针对数据通信的逻辑层(比如:tcpip、socket等知识范畴),而通信技术涉及的是数据通信的物理层(交换机、路由器、天线、网络制式等),某种意义上来说,这是完全不同的技术方向。

好消息是,经过长时间的资料搜集,终于有了本系列文章,希望能给你带来帮助。

对于IM开发者来说,用户的地理位置、附近的人这类功能,都需要用到手机的定位技术。不过,当用户、产品经理、测试人员使用这类功能,有某些情况下定位不出结果或者定位不准时,这锅是要程序员来背吗?显然不是。

那么,定位技术到底是怎么实现的?技术原理怎样?有哪些局限性?貌似我们平时也没有做更多了解,既然这样,那就跟着本文来一窥究竟吧。

定位技术,应用广泛

今天我们所处的移动互联网时代,手机成了每个人的生活标配。这些手机里,安装了形形色色的APP,提供了各种服务,彻底改变了我们的生活。

这些服务里面,就包括我们今天的主角——定位。

每一个人,每一件物品,在这个地球上都有一个空间位置信息,这就是定位。它非常重要,我们靠它来找到这个人或这件物。

自从有人类文明开始,地图就被发明出来,用于标示位置信息。但是,因为技术手段的落后,人们只能通过参照物来“佛系”定位。

那么,大家平时使用手机定位服务的时候,有没有想过这些问题:

1)手机到底如何实现定位的?工作原理是什么?
    2)大家都知道卫星定位,那么,是不是只有卫星这一种定位方式?
    3)为什么有时候我们没有打开手机的卫星定位开关,仍然能够进行定位?
    4)如果我们在室内,没有卫星信号覆盖,是不是就彻底不能定位了?
    5)…

卫星定位技术

定位,我们通常按使用场景,分为室内定位和室外定位。

我们先来说说用得最多的室外定位。目前最主流的室外定位方式,刚才我们已经提到了,就是卫星定位。即时通讯聊天软件app开发可以加蔚可云咨询

卫星定位:是利用人造地球卫星进行点位测量的技术,也是目前使用最为广泛、最受用户欢迎的定位技术。它的特点非常突出,就是精度高、速度快、使用成本低。

但是,目前世界上只有少数国家,具备建设和维护卫星定位系统的能力。

大家所熟知的,包括:美国的GPS,中国的北斗(BDS)、欧洲的伽利略(Galileo)、俄罗斯的格洛纳斯(GLONASS)。此外,还有日本的准天顶系统(QZSS)和印度的IRNSS。

我们就拿使用最为广泛的美国GPS系统来说吧。GPS,英文全名是Global Positioning System,全球定位系统。

它起始于1958年美国军方的一个项目,1964年投入使用,1994年彻底布设完成。

GPS系统的主要建设目的,是为陆海空三大领域提供实时、全天候和全球性的导航服务,并用于情报搜集、核爆监测和应急通讯等一些军事目的。

该系统由24颗卫星构成,其中21颗为工作卫星,还有3颗是在轨备用卫星。它们共同组成了GPS卫星星座。

基站定位技术

好了,说完了卫星定位,再来看看地面定位。说到地面定位,大家首先想到了什么?哈哈,是不是雷达?

确实,雷达作为一项搜索定位技术,广泛应用于军事和民用领域。但是,毕竟普通手机数量非常庞大,加之生活场所障碍物非常复杂,不管从技术角度,还是成本角度,都不适合采用雷达进行定位。

那我们采用什么方式呢?其实可以用的方法很多,最常用的,是基站定位,也就是常说的LBS,Location Based Service(基于位置服务)。

基站定位的原理和雷达有相似之处。雷达定位大家都知道,就是发射雷达波,根据目标的反射,进行空间位置测算。

基站定位的话,基站就相当于是一个“雷达”。

通常,在城市中,一部手机会在多个基站的信号覆盖之下。手机会对不同基站的下行导频信号进行“测量”,得到各个基站的信号TOA(到达时刻)或TDOA(到达时间差)。根据这个测量结果,结合基站的坐标,就能够计算出手机的坐标值。

im即时通讯开发如何理解定位技术相关推荐

  1. im即时通讯开发:聊天消息的同步和存储

    IM全称是『Instant Messaging』,中文名是即时通讯.在这个高度信息化的移动互联网时代,生活中IM类产品已经成为必备品,比较有名的如钉钉.微信.QQ等以IM为核心功能的产品.当然目前微信 ...

  2. im即时通讯开发:IM系统中离线消息、历史消息实践

    在如今的移动互联网时代,IM类产品已是我们生活中不可或缺的组成部分.像微信.钉钉.QQ等是典型的以 IM 为核心功能的社交产品.另外也有一些应用虽然IM功能不是核心,但IM能力也是其整个应用极其重要的 ...

  3. 基于Netty实现分布式IM即时通讯开发

    计算机编程的学习,能不能把知识学到手,讲究的是动手实践.在我编写的文章中,基本都是以实践代码验证结果为核心来讲述文章内容. 可能有人不知道 Netty 是什么,这里简单介绍下: Netty 是一个 J ...

  4. im即时通讯开发:进程被杀底层原理、APP应对被杀技巧

    本文的技术原理讲解透彻.系统源码分享到位.样例代码也很有参考意义,希望能对有同样兴趣爱好的Android开发者.IM开发者.推送系统开发者等,带来对于Android进程保活技术的深入理解. 一直以来, ...

  5. im即时通讯开发的那些坑:架构设计、通信协议和客户端

    有过移动端开发经历的开发者都深有体会:移动端IM的开发,与传统PC端IM有很大的不同,尤其无线网络的不可靠性.移动端硬件设备资源的有限性等问题,导致一个完整的移动端IM架构设计和实现都充满着大量的挑战 ...

  6. Android 即时通讯开发小结(二)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 相关推荐阅读:. Android即时通讯 ...

  7. 谈谈即时通讯开发平台

    由于即时通讯系统的复杂性和对服务器稳定性的很高要求,一般即时通讯系统开发至少需要1年左右的时间,而这还只是测试版,离"稳定"还有一定距离,而这时匆匆上马的不稳定的系统会让你失去用户 ...

  8. Android 即时通讯开发小结(一)

    本文将基于 IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 客户端架构 作为一个 IM 软件,最重要的一个特性就是保证消息的达到率和实时性. ...

  9. im即时通讯开发:高可用、易伸缩、高并发的IM群聊、单聊架构方案设计

    要实现一整套能用于大用户量.高并发场景下的IM群聊,技术难度远超IM系统中的其它功能,原因在于:IM群聊消息的实时写扩散特性带来了一系列技术难题. 举个例子:如一个2000人群里,一条普通消息的发出问 ...

最新文章

  1. Linux开发工具的使用
  2. python创建一个空列表alist_【Python 1-7】Python手把手教程之——详解列表List
  3. mysql读写分离实现_脱离开发:Mysql读写分离方案之一
  4. bzoj1190:[HNOI2007]梦幻岛宝珠
  5. java初学者面试_Java面试的前50个问题,面向初学者和经验丰富的程序员
  6. 微软与开源,化干戈为玉帛
  7. BZOJ 2432 兔农
  8. 【结课报告】游戏中的知识产权
  9. Flash builder 4.6下载以及安装
  10. Unity喷墨效果Shader实现
  11. 3❤️Jenkins从零到壹❤️ :常用功能大全(JAVA 小虚竹)
  12. 《菜鸟教程》 EUI卡牌游戏制作
  13. 多元线性回归分析spss结果解读_SPSS--回归-多元线性回归模型案例解析
  14. java程序开发实用教程上机实训答案,京东高级java面试
  15. 文本主题模型之潜在语义分析(LSA)
  16. swing java awt_java中AWT和SWing的区别与联系
  17. python模块(pip、datatime和time、collections、random、glob、shutil、hashlib、argparse、 logging、doctest、unittes)
  18. 天猫复购用户预测之DIN模型
  19. 【Android进阶】7、Android 各 SDK 版本的区别与兼容
  20. mpvue微信小程序动画_微信小程序框架之mpvue(入门教程)

热门文章

  1. 逆向工程学习笔记#1——概况篇
  2. freertos和ucos的区别
  3. 如何将此电脑放到桌面上(windows10版本)
  4. 大前端学习--开发脚手架与自动化构建工作流封装
  5. C#与三菱PLC以太网通讯程序上位机源码 通过3E帧SLMP /MC协议与三菱FX5U/Q系列PLC通讯
  6. gic_architecture_specification解读一
  7. MetersPhere参数赋值时间戳+对接口参数进行加密---form-data格式请求
  8. 柯西传记资料(2012-10-16 21:50:47)
  9. 泰坦尼克号入门学习(思维导图)
  10. 学计算机Java和c语言哪个出路比较好