00:00
好,各位同学,接下来案例实战落地代码演示美团地图附近的酒店推送在这个APP上怎么找怎么查?这是一道真实的面试题,下面我们来看一下需求和面试题复盘那么这一切这道题目,美团APP附近的酒店lo眼打开美团APP啊,这是我五年前的一个学生啊,去美团九旅事业部去面试啊,给我的一个反馈,人家面试官直接让他说那个你用过美团的APP嘛,当然那肯定用过,对不对?应该来说的话,现在大家什么饿了么呀,美团啊,淘宝手机上或多或少都装了,说没装或者卸掉了也知道美团APP是个什么东东,我直接让他OK,有手机拿出来直接找到这儿,请问你现在在万金这块啊,查找酒店,然后按照位置距离。500米内一公里内选一下,请给我查出附近的叉叉叉,附近的酒店推送或者是附近的单车,请问对于这样的需求你有什么想法?OK,好,那么大家可以看一下啊,现在基本上呢,大厂也比较现实,来了就能干活啊,几乎没有那么多时间什么来培养你,所以说平时你就要做这些积累,你简历上写的项目最好是要和面试官所需要的。
01:16
重视的功能能够说这么一两个对吧,准备一两个案例,纯粹的登上改查,没人听了,那么好,再来看交友软件啊,陌陌呀,或者说是这个等等的话呢,那么摇个妹子,附近的妹子请看一下,你摇一摇,哎,比如说我是附近妹妹。OK。可以呢,做核酸,约你下去做核酸对不对,那么这个时候呢,OK,贵了点,可以免费做的是吧,之前的话都是免费,11月份的北京的话核酸还是免费的,OK,那么对于父亲的妹妹这样你有没有点想法?怎么能够定位到并筛选出来,按照距离对不对,好那么除此之外高德地图附近的人,哎,打开高德地图是吧,太多了。
02:01
各种营业厅,加油站,理发店,超市附近的衣食住行统统有,不废话了,来吧,那么架构设计就是我们red新类型go地理空间,那么这个命令不熟悉的同学那么自行呢,最后复习一遍,自己呢去看,那么接下来我们呢,Java代码说话,关键点就是。以给定的经纬度为中心,找出某一半径内的全部元素多少距离我多少多少米的对不对?好了,那么下面兄弟们controller调service还是熟悉的配方,还是熟悉的味道,那么首先啊,Controltler调service这种东东我先提前写好,咱们就写主要的业务逻辑,那么对于controltrler调一个service,这些是斯袜哥的事,不废话了,那么大家请看啊,那么也就是。全部命令,我们把它用微服务做一遍来G,那么是不是。Ctrler调service添加我们的天安门,故宫,还有长城,哎,对吧,这些地理相关的经纬度添了以后就要获取,获取以后它的哈希编码的32位,然后呢,DISTINCT2个点的距离,然后BYXY,那么这个就是我们的半径。
03:18
比如说通过经纬度查找王府井附近离天安门有多远,离长城有多远,然后呢,这个,那说白了,为什么要复习上一讲的这几个命令,那么把这几个命令是不是全部的用微服做一遍啊?哎,那么同学们你看我说啊,简单两个不就是调下命令的事吗?那么下面呢,我们呢,还是那句话啊,有些事呢,你不写一遍还真过不去,你脑子懂了,和你手抖是两回事,那么来吧,各位亲,咱们呢,第一个先添加啊,我先说好,我刚才呢已经delete CT,刚才我命令敲了一遍,我把这个CT给删掉了,现在没有,我们要用Java代码纯粹的生成一遍,OK好了,那么第一个我们来先来看看怎么来玩这个god命令,那么对应着。
04:10
我们的这个命令是不是就是god,没问题吧?好了,那么下面同学们搞到这,首先呢,100%是不是应该是返回我们的red temp.OS for,大家看这是不是有个G,那么G的话,那是不是应该有个a DD lawyer,人家要的是什么?请看这个呢,就是我们的key,好说这个K我们在这定义了,是不是叫CT,关键是后面这个A,它有些方法重载,我们用哪一个呢?那么它有这个go location,有map,有point,有word嘛,那么这个时候映入我们眼帘的,咱们最熟悉的是不是就是这个TV建筑队map啊,两个齿啥意思啊,这个key就是我们的一个什么东东?
05:02
Go的那个K,那么这个map回到我们之前所说过的这个,那么这个map是不是就应该是有一个天安门,就对应着我们的一个Y6值就是我们经纬度,所以同学们我们这叫点ad,我们用这么一个东西好了,那么用这么一个东东呢?City是我们的key,那可是杨哥这个map没有啊那。怎么办呢?没关系,没有前面你一个好,那么同学们,我们先点开我们的这个map,来请看人家说是什么map m啊,Point,诶,有这么一个,原来人家有一个类型叫什么point,那么这个point又是何方神圣呢?下载源码看看啊,那么来,那么spring,你看啊,Spring跟整合也好,Spring是不是有个专门有个go类型,这个point就是X和Y,说白了就是我们的什么经纬度。
06:03
OK好了,那么所以说这会有一个point这么样的一个类型,那么来吧,我们直接呢搞到这。走一步,那么就是我们的这个,那么这呢,我们用string表示啊,全部是按照它的编码要求规范来的,那么map new哈西map好了,那么那杨哥这个咋处理呢?那么你有这个map第2PUT第一个,那么就是我们的天安门没问题吧,那么接下来你尿POINT1,它刚才已经看了这个构造方法了,那么大家请看是不是。X和Y经纬度直接查过来没问题吧?那么怎么玩呢?你们弟兄们,这个是不是就是我们天安门的经纬度,弟兄们没有任何问题吧?OK,好了,那么这是天安门,那么接下来是不是就是我们刚才所写过的什么故宫,OK,然后呢?
07:06
这个呢,是不是我们的长城好了,老规矩,那么故两个故宫又是多少的坐标系呢?那么来。我们呢,直接过来,那么故宫博物院就是这个403414和924091,那么直接复制过来。一张贴没问题吧,那接下来呢,同学们老规矩,长城搜一下来了,那么这是不是我们呢?就取最简单的八达岭长城,那么选第一个来,弟兄们。搞到这搞定,那么020024067,那这些我相信你肯定不会要求我去写对吧,我也不知道,那么所以说呢,在这块map有了,记有了,那么来吧,返回给前台的,那么就是我们一个map.to子君搞定一个方法过没问题吧,那么同学们请看第一个方法是不是添加地理,那么就是把我们的天安门,故宫,长城三个坐标的经纬度添加进去,那么直接点进来,那么下面这个程序写完整,OK好了,这个是呢,第一个命令结束,第二个position是不是叫返回经纬度啊,就是我告诉你天安门故高,你告诉我,我给你输了一个地址啊,你给我告诉我存进这个K里面的经纬度,好,那么下面这个就是什么根据member啊获取经纬度好来吧,那么这个呢,应该又怎么写呢?
08:37
一样,我们前面是不是。好,那么OS for go第二怎么东东,你看很简单吧,Position,那么你要往哪个key里面拿,我当然是往C这个key里面拿了,你拿哪一个,我们拿门板,我们这我们就返回一个了,这么说能跟上同学们那么下面呢一样,那么只要是你返回天安门,你的经纬度坐标,那么这是个list。
09:09
OK,这是一个position,或者这就是一个list吧,啊,因为它可以写多个,我这呢,为了演示方便,我只写了一个啊,请看它的这个是一个什么数组类型的,OK,好,那么自然而然我输入一个地址,你给我返回在这个K里面已经拥有的。经纬度,那比如说我输入天安门给我返回天安门的经纬度,输入故宫给我返回故宫的经纬度,所以在这有且仅有一个,那么所以我们这list get0 OK,好,这是我们的第二个方法,那么第三个基哈希算法生成贝斯32的编码值,那么这个呢,也不难,那么同学们和前面的一样,那么ready.OPS啊,其实都是什么?调用一下我们对应的。API能跟上,那么还是我们的CTT这名字啊,还是我们的这个number,那么来吧,搁到这,那么同学们请看,那么你这个由于是一个贝斯32位以后,这个编码值那么100%,按照泛行的说法,那么弟兄们这个货是不是应该是个string类型,好,由于还是只有一个,那么这个list我弄过来,那么我这个list弄过来以后还是返回list get0 OK,那么当然啊,如果你写的你看啊,老规矩,呃,这块如果是多个,那么你这个list该返回多就返回一个list过去就行啊,由于我这做教学DEMO的话呢,我们就返回一个,所以我就这么一个写法了,OK,好,那么这是我们的前三个,说白了,前三个是不是就是a position哈希这三个命令的调用和Java代码的编写呀,那么接下来是不是距离半径和这么一个半径by number一样的写,只不过调AP3啰嗦一些。那么下面。
10:55
Member是只有一个,以前现在是不是MEMBER1跟二啊,那么获取两个给定位置之间距离,比如说我在MEMBER1,你给我扫出来,我现在要去哪高德地球上的有多远,那么或者。
11:08
我附近十公里以内离我最近的有些什么好?那么同学们这个呢,该怎么玩呢?来也一样,那么template点二。Four go。第二。距离这么说弟兄们没问题吧,那么来吧,也同理,还是CT,然后MEMBER1参数MEMBER2哪跟哪嘛,对吧,但是请看下面这个这个。Kilometer类似于什么距离范围的一个新的参数和公理,换句话说,在这块的话还不是那么简单,你需要指定一个什么单位,那么在red geo模板类型里面,这个指定单位就比较写的呢,恶心一点啊,那么来吧,Red go,诶。
12:03
出来,那么commands,这是一个参数配置类,弟兄们这块OK,然后点二这么一个告诉你,兄弟你是什么呢?多少米呀,还是多少公里,那么这呢,我们呢就搞了一个公里数,这么说弟兄们能跟上,哎,相当于啊,在这块就是我们这个命令指定的这些什么米,千米,英尺和英里,OK,好,那么固定写法拿下来,它呢,就是这么一个距离,那这个距离我们获得了以后,直接将它返回就OK了。弟兄们,没问题吧,好了,那么接下来这个呢,玩会,然后这个呢,就是按照我们的经纬度半径以内多少,比如说就像刚才我说的,现在杨哥我人在北京王府井,是这么一个坐标,然后给我找附近的,那也就是要把这个命令。
13:04
这一条,然后呢,用Java代码拼出来啊,这个呢该怎么做呢,那么同学们走也比较啰嗦啊,首先template。点o for go,那么这个go radious。那么。基本上就是这个T加这个。要within伴随着这么一个条件,那么这个呢,就是city,然后这就需要稍等啊,那么在这块我们呢,就需要有这么一个东道,大家请看go。RA的这个command X带参数的这个啊,因为我们在这个命令上面的话,这个是city,我们的T,这个是我人在王府井的经纬度坐标,大家请看我这是要带一大堆参数,所以我们呢,改吧改吧,咱们下面呢就用它好K是这个,那么这就应该有一个这么一个东东,待会我们来说啊,然后完了以后,这再应该有一个参数完成,OK,那么好了,接下来我们就来拼拼这两个是什么东西了,来吧。
14:28
第一种,那么同学们回到这儿就是我们的。这么一个条件起好。来六这么一个东东搁到这,也就是我们的王府井的第一步精度,那么王府井的纬度,然后呢,和之前的差不多,你给我指定是多少公里范围以内的东道,OK,那么kilometers.get这么一个东道,OK,好,来这个呢,是我们一个条件。
15:09
那么第二个啊,比如说我们呢,就是返回50条没问题吧,啥意思呢,这我们是不是有什么,呃,这个。探讨十这样的一个动作,OK,好,你不指定默认是十,指定了是多少就是多少,那接下来弟兄们,咱们最难的是不是要拼这个参数,注意这个参数就是你人拿手机的这个主人,你现在站在哪?那么好,美团APP上选附近多少多少公里以内的,有多少家酒店,有多少个自行车,高德地图上有多少个核酸站点,给我通通显示出来好啦,那么。搁到这,弟兄们,我们呢,Red go command,这个就是拼参数的一个东东,OK,那么第二记半径的command,看到没有二。
16:01
来,这直接过来啊,尿记半径的这么一个参数,来吧,我们include,大家请看这是不是就叫我们的距离,然后在include,大家请看这是不是就叫我们的coordinate OK,然后你告诉我,我们的sort排序是降序还是升序,随便你选OK,那么假设我们这选了个降学,然后来吧。Limit,我们返回多少条记录啊,50条,好,那么弟兄们拿过来搞定,OK,那么所以说在这块也就是我们获得的。Go它对应的参数,那么我们这个参数就是go command这。得到这这个也就是我们的二完成,OK,其实说到最后啊,那么来吧,我们ready template结合我们的go类型半径范围以内,在这个K里面,现在我就站在王府井,给我按照这些参数给我找出来我附近有些啥,那么这个就是我们最最最最最重要的相关的内容,OK,好,那么同学们在这块,那么它有一些泛型啊,我这儿呢,就不再写了,OK,来。
17:29
搁到这儿老长了,在这块,那么来吧。你不写也可以啊,那么大家请看,那么就是go result,那么就告诉你是这个类型下面的这么一个string OK好了,那么弟兄们在这块太长了啊好,那么我们把go result拿过来还火OK,好那么同学们到这基本上我的代码编写完成,那么最后一个请同学们参考我的脑图,要求同学们自行完成,没问题吧,好,那接下来我们呢就来验验货,那这个啊,稍等啊,那这个呢是作为家庭作业,我有六个命令,我写了五个,麻烦你呢写最后一个,好吧,参考着过来不难,就是把G的命令换成我们的微服加法代码就行了。好那么各位同学,那么接下来呢,我们呢,就把我们这个呢启动一下来完成我们对应的访问。
18:31
OK,好,那么各位同学我先暂停一下录屏,等我们后台把微服务启动,我们来测试一下同学们,我们成功启动,嗯,之前做那个案例哈,就是点首页这个,这个不用管,那么回到我们的地址栏,那么苏瓦哥打开lo眼美团地图附近相关的geo这样的一些东东,那么你应该是在你的S哥里面看到这些来吧,那么首先啊,我们这delete c,我们之前用命令敲的已经全部作废,下面程序是否能够正确的生成呢?走,同学们请看200成功,那么天安门搁到这儿,这么说没问题吧,妥了好了,那么同学们,这完了以后我们呢,直接在S瓦格里面全部测试通过啊,那么这已经有三个了,那么获取两个给定,哎,还是按照我们的这个代码程序来吧,我们怎么写的,咱们就来啊,咱们下面获取经纬度GE position好,那么获记position获取经纬度好,那么同学们。
19:31
你要获取谁的呀?我们就获取天安门的可以吧,我们的请求上就带着这么一个,同学们请看天安门的是不是获得了X和Y精度和纬度,就得到这么一个第二个过第三个获取经纬度生成了被32的go哈希来,同学们找到我们的哈希。你要获得谁的呀?那么我们是不是还是天安门的?那么来吧,同学们。搁到这,大家请看是不是跟之前所获得的是一模一样啊,OK,好,这是我们的第三个,第四一个记这个距离一跟二好了,那么同学们取消这个是距离,在这来吧,我们要输入两个,那么请问一下天安门,那么第二个我们是不是到故宫好执行一下,那么同学们请看多少天安门和故宫基本上都在一块,大概kilometer的这个。
20:26
单位也就是什么一公里左右啊,他们两个离得非常近,好,那么最后一个弟兄们是不是按照我们的经纬度查找北京王府井附近的,那么现在主人你在王府井附近有些啥?那么按照我们的半径给我查出来。哦了,来吧,找找我们最后一个,这是家庭作业哈,那么就是这个来,我们现在呢,已经写死了这个北京王府井的坐标对吧,那么就模拟我们在高德地图上已经收到了,那么大家请看给你反馈过来的,那么你周围十公里以内的有故高有天安门,那么大家看和我们当初用命令做的是不是一模一样,那么就告诉你内容,比如说我现在在王府井天安门它的。
21:10
经纬度是这样的一个,那么离我的距离是多少多少米?OK,那么也就是1.2公里左右,OK,好,那么同学们最后一个,那么请大家呢,按照我们的脑图笔记自己琢磨着写一下,不难,都是调用一些命令操作,那么搁到这儿了以后,我们在实时的存取以后,就可以把这个作为计算串来进行展现,推送给前台,让H5来调用。好那么各位同学对于附近的叉叉叉用G这样的类型来进行的开发,我们就给大家介绍到这。
我来说两句