精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

炫酷,SpringBoot+Echarts實現用戶訪問地圖可視化(附源碼)

開發 后端
在常見的電商、新聞、社交網站等,合理運用運營成本才能最大化輸出自己的產品,其中最常見的功能就有針對不同訪問熱度的城市制定不同的運營手段,因此我們掌握用戶城市分布情況至關重要。

SpringBoot+Echarts用戶訪問地圖可視化

意義

  •  在常見的電商、新聞、社交網站等,合理運用運營成本才能最大化輸出自己的產品,其中最常見的功能就有針對不同訪問熱度的城市制定不同的運營手段,因此我們掌握用戶城市分布情況至關重要。
  •  pc端與移動端不同,無法依托手機自帶的gps定位到用戶所在城市,只能通過ip來進行判斷所在地理位置。

根據ip獲取城市的方式

  •  淘寶、新浪等常年提供根據ip獲取城市的接口,但是隔一段時間會出現接口地址更改的情況,也有一定的限流
  •  開源純真ip庫:不斷迭代更新ip庫內容,一般場景下足以使用,自主可控。(下載qqwry.dat庫)

思路

首先需要獲取用戶請求的ip地址,我們對該方法進行簡單封裝: 

  1. public class IPUtil {  
  2.     public static String getIpAddress(HttpServletRequest request) {  
  3.         String ip = request.getHeader("x-forwarded-for");  
  4.         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
  5.             ip = request.getHeader("Proxy-Client-IP");  
  6.         }  
  7.         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
  8.             ip = request.getHeader("WL-Proxy-Client-IP");  
  9.         }  
  10.         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
  11.             ip = request.getHeader("HTTP_CLIENT_IP");  
  12.         }  
  13.         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
  14.             ip = request.getHeader("HTTP_X_FORWARDED_FOR");  
  15.         }  
  16.         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
  17.             ip = request.getRemoteAddr();  
  18.         }  
  19.         return ip;  
  20.     }  

封裝純真ip的解析工具,根據ip獲取請求地址所在城市,github有大量實現版本,我們這里不做贅述,具體代碼見文末源碼 

  1. //篇幅較長,截取的主要方法,詳細在源碼地址查看      
  2. public IPZone findIP(final String ip) {  
  3.         final long ipNum = toNumericIP(ip);  
  4.         final QIndex idx = searchIndex(ipNum);  
  5.         if (idx == null) {  
  6.             return new IPZone(ip); 
  7.          }  
  8.         return readIP(ip, idx);  

自定義攔截器,對用戶的登錄請求進行攔截,在此處判斷請求ip所在城市,并進行計數。我們這里只是簡單邏輯的說明,在生產上時應該用redis來存放計數,并且專門提供一個rest接口來推送當前各城市訪問數量情況,再由前端配合,隔一段時間發起一次請求,例如隔一小時請求一次該rest接口,從而進行前端數據的展示。 

  1. /**  
  2.  * 登錄攔截器  
  3.  */  
  4. @Slf4j  
  5. public class MyLoginInterceptor implements HandlerInterceptor {  
  6.     private static final String LOGIN_PATH = "/user/login" 
  7.     private static Map<String, AtomicInteger> visitCount;  
  8.     private static final QQWry qqWry;  
  9.     static {  
  10.         visitCount = new HashMap<>(31);  
  11.         qqWry = new QQWry();  
  12.     } 
  13.     //展示訪問數量不是精確指標,如果要做到完全正確需要使用鎖,防止計數存在并發問題  
  14.     @Override  
  15.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  16.         log.info("【MyLoginInterceptor】調用了:{}", request.getRequestURI());  
  17.         if (request.getRequestURI().equals(LOGIN_PATH)) {  
  18.             String ipAddress = IPUtil.getIpAddress(request);  
  19.             String province = qqWry.findIP(ipAddress).getMainInfo();  
  20.             if (visitCount.containsKey(province)) {  
  21.                 visitCount.put(province,new AtomicInteger(visitCount.get(province).incrementAndGet()));  
  22.             } else {  
  23.                 visitCount.put(province,new AtomicInteger());  
  24.             }  
  25.         }  
  26.         return true;  
  27.     }  
  28.     @Override  
  29.     public void postHandle(HttpServletRequest request, HttpServletResponse response,  
  30.                            Object handler, ModelAndView modelAndView) throws Exception {}  
  31.     @Override  
  32.     public void afterCompletion(HttpServletRequest request, HttpServletResponse response,  
  33.                                 Object handler, Exception ex){}  

注冊自定義的攔截器 

  1. @Configuration  
  2. public class WebMvcConfig implements WebMvcConfigurer {  
  3.     @Override  
  4.     public void addInterceptors(InterceptorRegistry registry) {  
  5.         registry.addInterceptor(new MyLoginInterceptor());  
  6.     }  

登錄controller模擬邏輯,注意:如果想看效果圖需要自己寫線程用不同的虛擬ip進行訪問url,從而達到在不同城市訪問接口的效果。 

  1. @RestController("user") 
  2. public class LoginController { 
  3.     @GetMapping("login")  
  4.     public String login() {  
  5.         //登錄邏輯  
  6.         return "success";  
  7.     }  

最終效果

前后端源碼

  1. https://github.com/Motianshi/distribute-tool  

 

責任編輯:龐桂玉 來源: Java知音
相關推薦

2022-09-29 11:16:21

Python數據可視化

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2022-04-13 09:01:53

Echart5繪制地圖

2018-03-21 12:13:47

工具數據開發

2013-10-22 10:37:47

谷歌數據可視化

2021-12-30 12:02:52

Python可視化代碼

2014-01-17 10:36:39

2019-07-26 09:19:32

數據可視化架構

2022-08-17 09:01:16

數據可視化大數據

2020-03-01 14:01:22

Echarts數據可視化圖表

2022-03-01 10:29:44

Kubernetes容器

2019-05-20 08:20:40

數據集數據可視化數據

2017-10-14 13:54:26

數據可視化數據信息可視化

2017-10-11 18:17:06

大數據數據可視化前后端

2025-11-10 07:05:00

Python數據可視化數據

2021-04-19 09:00:54

Python批量下載視頻下載器

2010-08-04 10:48:17

路由器

2021-03-17 08:07:56

Python可視化工具

2017-09-05 08:35:09

Python可視化地圖

2017-09-01 19:49:50

Python工具地圖
點贊
收藏

51CTO技術棧公眾號

夜间精品视频| 亚洲狼人在线| 中文字幕免费一区| 亚洲一区二区三区在线免费观看| 九九热国产精品视频| 婷婷激情久久| 欧美一区二区三区啪啪| 成人一区二区免费视频| 第一福利在线| 国产成人精品免费在线| 国产成人精品久久二区二区| 69xx绿帽三人行| 精品美女久久久| 日韩欧美国产1| 欧美成人免费高清视频| 肉肉视频在线观看| 中文在线一区二区| 久久国产精品一区二区三区四区| 手机在线成人免费视频| 好了av在线| 久久精品亚洲精品国产欧美 | 波多野结衣中文一区| 国产激情999| 日本黄色片视频| 国产国产精品| 亚洲图中文字幕| 亚洲天堂av网站| 国产一区二区三区免费观看在线| 色香蕉久久蜜桃| 国产96在线 | 亚洲| 超碰porn在线| 18成人在线观看| 日本中文不卡| 国产一二在线观看| 久久久影视传媒| 久久精品ww人人做人人爽| www夜片内射视频日韩精品成人| 免费在线观看精品| 日产日韩在线亚洲欧美| 国产手机在线视频| 欧美特黄视频| 不卡av日日日| 午夜爽爽爽男女免费观看| 日韩欧美三级| 日韩中文字幕av| 国产主播自拍av| 成人免费看片| 一区二区三区欧美激情| 大桥未久一区二区| 久久综合网导航| 亚洲欧洲色图综合| 中文字幕日韩一区二区三区 | 26uuu久久综合| 久久99精品久久久久子伦| 欧美视频一二区| www.亚洲国产| 欧美亚洲午夜视频在线观看| 久久网中文字幕| 欧美三级在线| 欧美精品激情在线观看| 亚洲一区 视频| 中文一区二区| 国产经典一区二区| 一级黄色短视频| 国精产品一区一区三区mba视频 | 女人18毛片水真多18精品| 成人午夜av电影| 国产一区二区免费在线观看| 天堂中文资源在线观看| 久久精品人人爽人人爽| 亚洲永久激情精品| 影音先锋中文在线视频| 白白色 亚洲乱淫| 国产伦精品一区二区三区四区免费| 亚洲精品成人电影| 99久久免费视频.com| 久久人人97超碰人人澡爱香蕉| 你懂的视频在线免费| 国产精品美女一区二区在线观看| 欧美a级黄色大片| 国产www视频在线观看| 日韩欧美国产骚| 91小视频网站| 91麻豆精品激情在线观看最新| 亚洲激情视频在线播放| 欧美另类z0zx974| 久久精品亚洲人成影院| 91国内免费在线视频| 中文字幕在线天堂| 国产综合色在线视频区| 国产在线视频欧美一区二区三区| 福利片在线观看| 亚洲最新视频在线播放| 国产精品亚洲二区在线观看| 9999精品| 亚洲人成欧美中文字幕| 成人观看免费视频| 性xx色xx综合久久久xx| 国产色视频一区| 天天摸天天碰天天爽天天弄| 一区在线中文字幕| 粗暴91大变态调教| 亚洲网址在线观看| 日韩在线视频中文字幕| 免费在线不卡视频| 美女精品一区二区| 国产精品我不卡| 黄色在线论坛| 色综合视频在线观看| 亚洲三级在线视频| 国内亚洲精品| 18一19gay欧美视频网站| 国产精品污视频| 久久伊99综合婷婷久久伊| 国产又粗又爽又黄的视频| 性欧美hd调教| 日韩av网址在线| 91精品国产闺蜜国产在线闺蜜| 性欧美xxxx大乳国产app| 亚洲最大av网站| avtt亚洲| 欧洲精品中文字幕| 国产精品1000部啪视频| 一区免费视频| 5566av亚洲| 免费在线观看av片| 欧美亚洲综合色| brazzers精品成人一区| 亚洲日产国产精品| av一区二区三区四区电影| 2021av在线| 日本二三区不卡| 成人免费看aa片| 国产日韩一区二区三区在线播放| 国产91免费视频| av在线官网| 欧美一区二区美女| 日韩va亚洲va欧美va清高| 麻豆精品国产传媒mv男同| 日本精品一区二区三区不卡无字幕| 成人无遮挡免费网站视频在线观看| 91一区二区三区四区| 欧美一级片一区| 日韩一区二区三区不卡| 亚洲精品免费电影| 亚洲成人av免费观看| 欧美一区91| 91情侣偷在线精品国产| 3d玉蒲团在线观看| 91精品国产乱码久久蜜臀| 麻豆明星ai换脸视频| 国产真实乱偷精品视频免| 在线综合视频网站| www.欧美| 欧美高清电影在线看| 精品久久国产视频| 亚洲一区中文在线| 国产十八熟妇av成人一区| 亚洲激情欧美| 欧美日韩精品一区| 欧美日韩在线精品一区二区三区激情综合| 国产亚洲一级高清| 136福利视频导航| 亚洲色图一区二区| 中文字幕人妻熟女在线| 日韩亚洲精品在线| 日韩欧美一区二区在线观看| 欧美成人三级| 美女少妇精品视频| 日韩一级免费视频| 在线观看免费视频综合| 欧美第一页在线观看| 成人性生交大片免费看视频在线| 91视频 -- 69xx| 欧美老女人另类| 91色视频在线导航| 操人在线观看| 国产一区二区三区精品久久久| 91好色先生tv| 亚洲成av人片www| 性欧美精品中出| 激情五月播播久久久精品| 国产精品一线二线三线| 国产调教一区二区三区| 91精品视频专区| 三妻四妾的电影电视剧在线观看| 伊人伊成久久人综合网小说| jlzzjlzzjlzz亚洲人| 欧美色播在线播放| 亚洲xxxx3d动漫| 久久女同精品一区二区| 奇米777在线视频| 美女视频一区免费观看| 黄瓜视频免费观看在线观看www| 66精品视频在线观看| 国产精品 欧美在线| 日本资源在线| 一区二区三区视频观看| 噜噜噜久久,亚洲精品国产品| 色天使色偷偷av一区二区| 印度午夜性春猛xxx交| 久久久精品人体av艺术| 九色91porny| 日韩精品五月天| 777av视频| 中文精品久久| 婷婷四房综合激情五月| 超碰一区二区三区| 成人性生交大片免费看视频直播| 在线手机中文字幕| 欧美高清自拍一区| av电影在线观看| 国产手机视频精品| 蜜臀久久99精品久久久| 91麻豆精品国产91| 国产三级理论片| 五月天亚洲精品| 欧美日韩精品一区二区三区视频播放| 国产三级一区二区| 国产精品久久久久久久无码| 国产麻豆成人传媒免费观看| 香蕉视频禁止18| 六月丁香综合| 欧美色图另类小说| 亚洲福利专区| 国产爆乳无码一区二区麻豆| 91成人观看| 一级日韩一区在线观看| 欧美日韩一区二区三区视频播放| 精品无人区一区二区三区| gogo人体一区| 91亚色免费| 亚洲1区在线| 91久色国产| 91综合久久爱com| www日韩av| 2021年精品国产福利在线| 91亚洲精品在线观看| 国产午夜精品一区在线观看 | 中文字幕一区二区三区5566| 狠狠做六月爱婷婷综合aⅴ| 开心色怡人综合网站| 欧美美女在线直播| 九九九九精品九九九九| 8x国产一区二区三区精品推荐| 2019国产精品视频| 99精品国产高清一区二区麻豆| 国产精品美女久久久久av福利| 91精品国产乱码久久久竹菊| 国产成人成网站在线播放青青| 日韩精品一区二区三区中文在线| 99蜜桃在线观看免费视频网站| 视频精品二区| 国产三区二区一区久久| 日韩高清电影免费| 欧美一区二区三区成人久久片| 欧美日韩国产传媒| 一本一本a久久| 综合激情网站| 免费看国产曰批40分钟| 日韩一级免费| 欧美自拍小视频| 麻豆精品视频在线观看视频| 中文字幕线观看| 国产盗摄一区二区三区| 在线观看成人动漫| 久久久久久久综合| 日本美女黄色一级片| 亚洲精品欧美二区三区中文字幕| 日本天堂中文字幕| 黄色成人在线播放| 五月天中文字幕| 欧美一区二区播放| 婷婷av一区二区三区| 国产亚洲在线播放| 亚洲精品白浆| 欧美在线视频一区| 日韩有码欧美| 国产99视频精品免费视频36| 伊人久久综合影院| 综合视频在线观看| 99日韩精品| 国产三级精品三级在线| av中文字幕亚洲| 久久久久亚洲AV成人无在| 亚洲精品中文在线观看| youjizz在线视频| 欧美精品在欧美一区二区少妇 | 亚洲欧洲视频在线| 黄色动漫在线观看| 91福利视频网| 欧美午夜在线播放| 日韩wuma| 一本久道久久综合婷婷鲸鱼| 在线观看岛国av| 91婷婷韩国欧美一区二区| 一区二区三区影视| 欧美性xxxxx极品娇小| av片免费播放| 亚洲欧美综合精品久久成人| 在线观看h网| 国产日韩欧美电影在线观看| 另类ts人妖一区二区三区| 正在播放一区| 久久电影一区| www.啪啪.com| 亚洲欧美国产高清| 中文字幕第三页| 亚洲乱码国产乱码精品精天堂| av网站在线免费| 国产精品永久免费在线| 日韩高清一级| 国产3p露脸普通话对白| 国内成人免费视频| 粉嫩精品久久99综合一区| 精品久久久久久久中文字幕| av一级黄色片| 日韩中文字幕在线观看| 日韩影片中文字幕| 国产一区二区自拍| 午夜久久影院| 日韩精品aaa| 国产精品乱人伦一区二区| 中文字幕高清在线免费播放| 亚洲国产精品人久久电影| 秋霞在线午夜| 亚洲mm色国产网站| 婷婷激情综合| 99中文字幕在线| 亚洲欧洲精品天堂一级| 伊人亚洲综合网| 中文一区二区视频| jizz久久久久久| 视频一区视频二区视频三区视频四区国产| 一区二区91| 朝桐光av一区二区三区| 天天亚洲美女在线视频| 亚洲欧美另类视频| 久久久爽爽爽美女图片| av成人资源| 九九爱精品视频| 不卡一区在线观看| 日韩字幕在线观看| 日韩av综合中文字幕| 免费高潮视频95在线观看网站| 国产偷国产偷亚洲高清97cao| 一区二区自拍| 特级西西人体4444xxxx| 粉嫩老牛aⅴ一区二区三区 | 久久人人97超碰com| av毛片在线免费观看| 一区二区福利视频| 国产精品久久久久久妇女| 一本一本久久a久久精品综合妖精| 久久精品国产久精国产| 亚洲精品久久久久久国| 欧美一区二区三区免费大片 | 久久久久美女| 极品白嫩少妇无套内谢| 亚洲va中文字幕| 男人的天堂在线| 国产免费一区二区三区在线观看| 五月天综合网站| 美女黄色一级视频| 日本韩国视频一区二区| 日本电影在线观看网站| 91探花福利精品国产自产在线| 亚洲天堂久久| 亚洲 小说 欧美 激情 另类| 欧美日韩一区中文字幕| 91麻豆免费在线视频| 韩日午夜在线资源一区二区| 老司机精品视频网站| 久久国产波多野结衣| 亚洲成人精品久久久| 日韩电影大全网站| 黄黄视频在线观看| 91免费版在线看| 国产毛片毛片毛片毛片毛片| 隔壁老王国产在线精品| 蜜臀av免费一区二区三区| 亚洲一区二区三区观看| 五月天亚洲精品| 欧美日韩在线看片| 黄色99视频| 韩国一区二区三区| 亚洲免费在线观看av| 日韩在线观看免费高清| 欧美人成在线观看ccc36| 手机在线成人免费视频| 亚洲www啪成人一区二区麻豆| 国产三级电影在线观看| 波多野结衣久草一区| 日韩av在线播放中文字幕| 久久久久人妻一区精品色欧美| 一区二区在线免费视频| 福利在线一区| 久国产精品视频| 色婷婷久久久久swag精品| 日本在线视频www鲁啊鲁|