精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲中文字幕无码av| 日韩伦理一区二区三区av在线| 青青草免费av| 伦理一区二区| 欧美三级在线播放| 国产91视频一区| 国产精品无码毛片| 中文字幕av一区二区三区佐山爱| 国产精品美女久久久久aⅴ | 不卡av免费在线观看| 国产成人精品电影| 超碰caoprom| 成人国产在线| 婷婷开心激情综合| 艳母动漫在线免费观看| 免费在线黄色网址| 国产999精品久久久久久绿帽| 日本亚洲欧洲色| 久久精品国产亚洲av无码娇色| 国产精品久久久久久久久免费高清 | 另类av一区二区| 久久久国产精品视频| 波多野结衣先锋影音| 欧美一区在线观看视频| 欧美吻胸吃奶大尺度电影| 国产精品久久中文字幕| 毛片在线不卡| 国产亚洲精品精华液| 国产久一道中文一区| 欧美精品成人久久| 日韩大片在线观看| 亚洲人午夜精品免费| 亚洲啪av永久无码精品放毛片| 青青久久精品| 亚洲欧美在线aaa| 欧美综合77777色婷婷| 黄色av网站免费在线观看| 狠狠色狠狠色合久久伊人| 国产精品99久久久久久www| 亚欧视频在线观看| 亚洲午夜久久久久久尤物| 日韩视频精品在线| 国产一二三av| 欧美激情理论| 日日狠狠久久偷偷四色综合免费 | 黄色av电影网站| 欧美经典影片视频网站| 欧美女孩性生活视频| 在线综合视频网站| a√资源在线| 国产欧美精品一区aⅴ影院| 免费精品视频一区| 青青操视频在线| 久久久久久久久久久久久女国产乱| 国产日韩一区欧美| 无套内谢的新婚少妇国语播放| 成人黄色av网站在线| 成人免费观看网站| 黄片毛片在线看| 26uuu亚洲婷婷狠狠天堂| 久久偷看各类wc女厕嘘嘘偷窃 | 欧美精品久久久久久久自慰 | 亚洲成av人片在线| 日本三级免费网站| 日韩精品影片| 欧美日韩国产大片| √天堂资源在线| 国产成人一二片| 日韩二区三区在线| 亚洲性猛交xxxx乱大交| 999成人精品视频线3| 欧美精品在线第一页| 免费一级特黄特色大片| 中日韩视频在线观看| 国产精品成人品| 国产探花在线免费观看| 午夜国产精品视频| 91国自产精品中文字幕亚洲| 无码人妻久久一区二区三区| 美洲天堂一区二卡三卡四卡视频| 成人黄色影片在线| 欧美 日韩 人妻 高清 中文| 久久一夜天堂av一区二区三区 | 无码人妻aⅴ一区二区三区| 久久爱www成人| 日韩有码片在线观看| 久草视频免费在线播放| 久久亚洲综合| 亚洲qvod图片区电影| 三级网站免费观看| 中文字幕+乱码+中文字幕一区| 欧美日韩在线免费观看视频| av午夜在线观看| 国产精品免费视频一区| av一区二区三区免费观看| 亚洲欧洲自拍| 日韩一区国产二区欧美三区| 黄色国产在线观看| 欧美在线高清| 日韩av电影国产| www.天堂在线| 国产一区视频导航| 精品国产一区二区三区日日嗨| 北岛玲一区二区三区| 亚洲一区二区欧美日韩| 黄大色黄女片18第一次| 青草久久视频| 久久999免费视频| 成人黄色免费网| av在线播放成人| 99re99热| 成人黄色毛片| 亚洲欧美第一页| 国产污片在线观看| 久久91精品久久久久久秒播| 麻豆91av| 国产丝袜在线观看视频| 欧美另类变人与禽xxxxx| 成人乱码一区二区三区av| 欧美亚韩一区| 成人性生交大片免费看小说| www.亚洲免费| 色综合久久久网| 免费黄色特级片| 99精品国产一区二区三区2021 | 久久黄色级2电影| 蜜桃视频在线观看成人| 国产精品蜜臀| 日韩女优视频免费观看| 国产麻豆视频在线观看| 奇米一区二区三区| 欧美一区视久久| 345成人影院| 亚洲国产精品推荐| 久久一区二区三| 国产成人福利片| 中文字幕在线乱| 国产日韩中文在线中文字幕| 欧美一二三在线| 亚洲精品久久久久久国| 久久99热这里只有精品| 伊人天天久久大香线蕉av色| 国产麻豆久久| 中文字幕少妇一区二区三区| 波多野结衣一二区| 精品一区二区综合| 日韩中文字幕一区| 日韩免费va| 一本色道久久综合狠狠躁篇怎么玩| 国产精品自拍99| 日韩精品91亚洲二区在线观看| 国产精品久久一区主播| 成年在线电影| 欧美日韩和欧美的一区二区| 中文字幕第69页| 精品一区二区综合| 青青青在线观看视频| 久久久久观看| 国产成人精品久久二区二区| av在线第一页| 青青青国产在线| 国产三级一区二区三区| 日本 片 成人 在线| 国产精品成久久久久| 91精品国产高清久久久久久91裸体 | sdde在线播放一区二区| 久久精品国产免费观看| 99久久免费国产精精品| 一级女性全黄久久生活片免费| 稀缺小u女呦精品呦| 欧美一区=区| 亚洲精品一区二| 日韩精品一区国产| 69视频在线免费观看| 国产精品一区二区三区四区色| 欧美日韩免费不卡视频一区二区三区| 老熟妇高潮一区二区三区| 成人亚洲一区二区一| 国产无套内射久久久国产| 日韩88av| 国产一区精品在线| 激情久久一区二区| 国模视频一区二区三区| 成人在线播放视频| 日韩免费视频线观看| 亚洲欧美自拍视频| 亚洲人精品午夜| 鲁大师私人影院在线观看| 精品亚洲国内自在自线福利| 国产高清av在线播放| 成人网18免费网站| 国产精品福利视频| 国产激情欧美| 69视频在线播放| av片在线观看免费| 在线成人激情视频| 日韩在线视频第一页| 欧美日韩小视频| 日韩毛片一区二区三区| 亚洲精品中文在线观看| 一区二区黄色片| 丁香啪啪综合成人亚洲小说| 五月天婷婷激情视频| 在线视频观看日韩| 女同性恋一区二区| japanese国产精品| 精品国产电影| 日韩三级av高清片| 国产在线精品一区免费香蕉 | 国产日韩欧美夫妻视频在线观看| 不卡专区在线| 欧美精品日韩www.p站| av网站在线免费播放| 亚洲伦理中文字幕| 农村少妇久久久久久久| 日韩精品中文字幕在线一区| 亚洲综合精品国产一区二区三区| 午夜久久久影院| 九九视频在线免费观看| 国产精品传媒入口麻豆| 日本一级免费视频| 久久久影视传媒| 免费成人深夜夜行p站| 成人永久免费视频| 熟妇无码乱子成人精品| 久久精品国产精品青草| 午夜免费高清视频| 日韩av网站在线观看| 干日本少妇首页| 国产亚洲网站| 91九色在线观看视频| 亚洲国内自拍| 亚洲精品无码国产| 一区在线免费观看| a级免费在线观看| 欧美日韩视频| 成人区一区二区| 狠狠入ady亚洲精品| 久久天天东北熟女毛茸茸| 香港欧美日韩三级黄色一级电影网站| 亚洲欧洲久久| 香蕉视频国产精品| 日韩精品第1页| 欧美二区不卡| 四虎4hu永久免费入口| 欧美精品成人| 人体内射精一区二区三区| 在线欧美一区| 日本www在线视频| 国产精品日本| 99热成人精品热久久66| 日韩和欧美一区二区三区| 97公开免费视频| 美日韩一区二区三区| 男生操女生视频在线观看| 狠狠色丁香婷婷综合| 永久免费看片在线观看| 成人免费视频app| 最近日本中文字幕| 91蜜桃在线观看| 欧美激情aaa| 中文字幕亚洲不卡| 久久久久亚洲av无码专区体验| 亚洲一二三专区| 五月天激情国产综合婷婷婷| 欧美日韩亚洲综合一区| 99在线观看免费| 亚洲国产精品福利| 国产一二三区在线视频| 日韩亚洲欧美成人| 懂色av一区| 国产xxx69麻豆国语对白| 日韩毛片免费视频一级特黄| 99r国产精品视频| 天堂99x99es久久精品免费| 亚洲 日韩 国产第一区| 欧美+亚洲+精品+三区| 9久久9毛片又大又硬又粗| 日本大胆欧美人术艺术动态| 日日夜夜精品视频免费观看| 99久久国产免费看| 黄色裸体一级片| 亚洲一区电影777| 亚洲 日本 欧美 中文幕| 91精品国产色综合久久ai换脸| 五月天婷婷在线播放| 日韩中文字幕免费| 国内精彩免费自拍视频在线观看网址| 国产精品久久久久久久9999| 日韩中文字幕| 日韩欧美亚洲在线| 很黄很黄激情成人| 亚洲三级在线观看视频| 91香蕉视频mp4| 国产一区二区三区在线视频观看| 欧美三级xxx| www久久久com| 自拍偷拍亚洲在线| 日产福利视频在线观看| 亚洲永久免费观看| 成人嘿咻视频免费看| 搞av.com| 国产精品一级在线| 亚洲一级黄色录像| 欧美日韩综合视频| 午夜精品小视频| www.欧美精品| 欧美日韩精品一区二区三区视频| 精品不卡在线| 18成人免费观看视频| 初高中福利视频网站| 日本一区二区不卡视频| 99精品视频99| 精品久久久久久久一区二区蜜臀| 91精品专区| 国产精品第1页| 亚洲精品亚洲人成在线| 青青草国产免费| 国产精品一区二区黑丝| 免费精品在线视频| 欧美在线播放高清精品| 欧美孕妇性xxxⅹ精品hd| 午夜精品国产精品大乳美女| 免费观看亚洲天堂| 黄色一级片网址| 精品一区二区日韩| 欧美性生给视频| 欧美日本韩国一区二区三区视频 | 欧美极品少妇xxxxⅹ免费视频| 日韩一级特黄| 在线一区日本视频| 精品影视av免费| 成人免费视频国产免费观看| 欧美区视频在线观看| 91精彩视频在线观看| 日韩免费精品视频| 教室别恋欧美无删减版| 亚洲精品自在在线观看| 快she精品国产999| 性高潮久久久久久久| 色久优优欧美色久优优| 免费毛片在线| 国产精品极品美女在线观看免费| 国产一区二区三区91| 麻豆传传媒久久久爱| 国产天堂亚洲国产碰碰| 精品乱码一区内射人妻无码| 国产一区二区黑人欧美xxxx| 成人日韩精品| 一区国产精品| 国产一区亚洲一区| 国产在线观看免费av| 亚洲激情电影中文字幕| 中文日产幕无线码一区二区| 欧美日韩综合网| 免费视频一区二区| 手机在线免费看片| 欧美zozozo| 中文字幕乱码在线播放| 日韩欧美一区二区三区四区| 久久99久久久欧美国产| 久久国产精品二区| 日韩精品视频中文在线观看 | 色狠狠综合天天综合综合| 成人性生交大片免费看午夜 | 久9re热视频这里只有精品| 欧美三级一级片| 国产三级欧美三级| 国产乱淫a∨片免费视频| 久久久久久国产| 免费av一区二区三区四区| xxx国产在线观看| 亚洲一区二区三区爽爽爽爽爽| 天堂在线中文资源| 欧美伦理91i| 欧美做受69| 高潮一区二区三区| 亚洲福利一二三区| 二区在线观看| 成人欧美一区二区三区视频 | 亚洲一区二区中文| 亚洲永久免费精品| 久久噜噜色综合一区二区| 亚洲精品一区二区三区福利| 三级成人黄色影院| 蜜桃网站在线观看| 国产校园另类小说区| www.天堂av.com| 国产精品三级美女白浆呻吟 | 三级av免费观看| 亚洲国产日韩综合久久精品| 大地资源中文在线观看免费版| 99精品国产高清一区二区| 天堂av在线一区| 久久免费小视频| 精品国产一区二区三区久久狼黑人| 国产乱论精品| 日本黄色一级网站| 在线视频国产一区| aaa在线播放视频|