整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          Axure高階教程:利用JavaScript制作實時天氣顯示APP

          大家用Axure制作APP原型時,即使高保真效果也只是在視覺層面上實現(xiàn)了原型效果,但頁面中的數(shù)據(jù)內(nèi)容還都只是預(yù)先設(shè)定好的,例如:使用中繼器、表格等,模擬真實作品。那么有沒有一種方法,讓我們制作的原型也能獲取到真實數(shù)據(jù)呢?

          本例通過JavaScript實現(xiàn)實時獲取天氣功能,意在激發(fā)大家興趣,制作更多基于Axure獲取實時信息的案例。廢話不多說,上圖為敬:

          這個原型到底有什么獨特之處嗎?在剛打開的時候,整個頁面呈現(xiàn)的數(shù)據(jù)都是之前設(shè)定好的,當(dāng)點擊左上角的『刷新』的時候,頁面會通過一個天氣查詢api獲取到當(dāng)前真實數(shù)據(jù),然后加載出來。怎么樣,是不是被它吸引到了?

          原理

          這個實例中主要用到了Axure的以下幾個功能:

          (1)中繼器

          由于『昨天』、『今天』、『明天』的天氣概要布局相同,可以使用中繼器更加規(guī)范顯示。

          (2)JavaScript

          在獲取天氣api時,通過Ajax的GET方式從天氣api服務(wù)器中獲取實時數(shù)據(jù)。

          (3)全局變量

          接收并儲存獲取到的實時數(shù)據(jù)。

          (4)字符串函數(shù)

          通過indexOf、replace、slice等字符串函數(shù)對接收到的數(shù)據(jù)進行加工,之后存儲到中繼器中。

          以下為整個實例流程圖:

          功能實現(xiàn)

          1. 獲取api數(shù)據(jù)

          在本例中,我們通過『http://t.weather.sojson.com/api/weather/city/101010100』api獲取到北京天氣的實時數(shù)據(jù),大家可以看到,數(shù)據(jù)是以json格式返回的,此接口可以獲得當(dāng)天的天氣詳情和從昨天到未來15天的天氣數(shù)據(jù)。

          那么Axure是如何實現(xiàn)調(diào)用api的呢?

          我們先設(shè)定一個全局變量『tianqi』,當(dāng)點擊刷新按鈕時,先設(shè)置全局變量值為空,再通過『打開鏈接』功能插入Javascript腳本,參數(shù)選擇「鏈接外部網(wǎng)址」,「打開當(dāng)前窗口」調(diào)用api并賦值給全局變量。

          javascript:

          $.ajax({

          method: ‘GET’,

          url: ‘http://t.weather.sojson.com/api/weather/city/101010100’,

          data: {}

          }).done(function(msg){

          $axure.setGlobalVariable(‘tianqi’, JSON.stringify(msg));

          });

          這段JavaScript代碼的意思就是調(diào)用JavaScript,通過「ajax」對象的「GET」方式,從「http://t.weather.sojson.com/api/weather/city/101010100」地址獲取數(shù)據(jù),因為這個api不需要傳遞參數(shù),所以「data」字段并沒有賦值。之后將獲取到的數(shù)據(jù)通過「JSON.stringify」轉(zhuǎn)為字符串后賦值給全局變量「tianqi」。

          怎么樣?是不是很神奇。

          如果你不明白,去百度下ajax的「GET」方法就能略知一二了。通過這一步,我們的全局變量「tianqi」就已經(jīng)獲取到了實時的天氣數(shù)據(jù)。那么之后怎么加工呢?

          2. 格式化數(shù)據(jù)

          目前的全局變量值如下圖,是沒辦法直接使用的。那我們?nèi)绾胃袷交@些數(shù)據(jù)呢,這時就需要字符串函數(shù)了。

          如圖所示,整個數(shù)據(jù)中包含了2部分,第一部分是當(dāng)天的天氣情況,第二部分是從昨天開始到之后的十五天天氣情況。由于時間關(guān)系,本次實例中只使用到了「第一部分」和「昨天到明天」的天氣情況。

          我們首先創(chuàng)建4個文本框,這4個文本框分別保存「當(dāng)天天氣情況」、「昨天天氣情況」、「今天天氣情況」、「明天天氣情況」。然后通過『設(shè)置文本』功能對文本框賦值,其中「當(dāng)天天氣情況」的賦值函數(shù)為:

          [[tianqi.substring(tianqi.indexOf(‘shidu’),tianqi.indexOf(‘yesterday’))]]

          這句話什么意思呢?就是說截取「tianqi」字符串中從「shidu」字段到「yesterday」字段的字符。

          3. 更新天氣數(shù)據(jù)

          目前我們獲得了4段數(shù)據(jù),分別為「當(dāng)天天氣情況」、「昨天天氣情況」、「今天天氣情況」、「明天天氣情況」。這樣就簡單多了,當(dāng)我們需要當(dāng)天的溫度是,直接從「當(dāng)天天氣情況」數(shù)據(jù)中查找對應(yīng)的「wendu」就可以了。

          目前「當(dāng)天天氣情況」數(shù)據(jù)如下:

          shidu”:”16%”,”pm25″:11.0,”pm10″:23.0,”quality”:”優(yōu)”,”wendu“:”16″,”ganmao”:”各類人群可自由活動”,”yesterday

          我們很容易看到,「wendu」的數(shù)值是「16」。如何截取呢?我們通過以下函數(shù)將「16」賦值給頁面中的『溫度』字段。其中「LVAR1」為「當(dāng)天天氣情況」元件的元件文字。

          [[LVAR1.slice(LVAR1.indexOf(‘wendu’)+8,LVAR1.indexOf(‘wendu’)+10)]]

          4. 更新中繼器數(shù)據(jù)

          如前所述,頁面中的「昨天」、「今天」、「明天」天氣情況我們通過中繼器儲存。更新中繼器數(shù)據(jù)我們通過『更新行』動作實現(xiàn)。

          對應(yīng)的賦值函數(shù)同樣通過字符串函數(shù)實現(xiàn),例如「天氣類型」函數(shù)如下,LVAR1為「昨天天氣情況」元件的元件文字:

          [[LVAR1.slice(LVAR1.indexOf(‘type’)+7,LVAR1.indexOf(‘type’)+8)]]

          至此,大功告成,我們的頁面已經(jīng)加載了實時的天氣信息。

          后記

          這個有用嗎?

          作為一名產(chǎn)品經(jīng)理,如果連自己最常用的軟件都不喜歡琢磨,何談自己要開發(fā)的產(chǎn)品呢?

          通過這種獲取api的方式,我們可以制作更多實時、真實的案例,在網(wǎng)上有無數(shù)的api,例如大小寫轉(zhuǎn)換、MD5加密、歸屬地查詢、車輛限行,如果我們做的案例中能得當(dāng)?shù)氖褂眠@些功能,不是更好嗎?更進一步,如果懂得開發(fā),我們完全可以為了原型演示開發(fā)一個特定的api,實現(xiàn)相應(yīng)功能。

          一些問題

          • JavaScript接口http限制:目前測試后已知的限制是,如果接口不是https協(xié)議,原型在axshare上無法獲取數(shù)據(jù),原因是axshare禁止調(diào)用http接口。
          • JavaScript接口跨域問題:在網(wǎng)上測試了一些接口,發(fā)現(xiàn)使用ajax方法調(diào)用時會產(chǎn)生跨域問題,導(dǎo)致無法接收到數(shù)據(jù),具體解決方法沒有找到,如果有方法歡迎留言。
          • 接口不穩(wěn)定解決辦法:目前通過循環(huán)調(diào)用直到接口返回正常數(shù)據(jù)時結(jié)束。
          • 獲取到的數(shù)據(jù)是object:記得使用『JSON.stringify』轉(zhuǎn)換接收到的數(shù)據(jù),因為數(shù)據(jù)可能是json類型,要轉(zhuǎn)換為字符串才能使用。
          • 案例優(yōu)化:本天氣案例基于小米手機系統(tǒng)天氣app。由于時間關(guān)系只制作了首頁,其他滑動及點擊效果之后有時間可能會更新。

          歡迎留言討論。

          本文由 @escher 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

          題圖來自PEXELS,基于CC0協(xié)議

          TOC

          數(shù)據(jù)實時增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell:https://blog.csdn.net/weixin_42526326/article/details/121148721

          什么是CDC?

          CDC(Change Data Capture)是變更數(shù)據(jù)獲取的簡稱。可以基于增量日志,以極低的侵入性來完成增量數(shù)據(jù)捕獲的工作。核心思想是,監(jiān)測并捕獲數(shù)據(jù)庫的變動(包括數(shù)據(jù)或數(shù)據(jù)表的插入、更新以及刪除等),將這些變更按發(fā)生的順序完整記錄下來,寫入到消息中間件中以供其他服務(wù)進行訂閱及消費。

          簡單來講:CDC是指從源數(shù)據(jù)庫捕獲到數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)(也稱為模式)的增量變更,近乎實時地將這些變更,傳播到其他數(shù)據(jù)庫或應(yīng)用程序之處。 通過這種方式,CDC能夠向數(shù)據(jù)倉庫提供高效、低延遲的數(shù)據(jù)傳輸,以便信息被及時轉(zhuǎn)換并交付給專供分析的應(yīng)用程序。

          與批量復(fù)制相比,變更數(shù)據(jù)的捕獲通常具有如下三項基本優(yōu)勢:

          • CDC通過僅發(fā)送增量的變更,來降低通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的成本。
          • CDC可以幫助用戶根據(jù)最新的數(shù)據(jù)做出更快、更準(zhǔn)確的決策。例如,CDC會將事務(wù)直接傳輸?shù)綄9┓治龅膽?yīng)用上。
          • CDC最大限度地減少了對于生產(chǎn)環(huán)境網(wǎng)絡(luò)流量的干擾。

          CDC工具對比

          特色

          Canal

          mysql_stream

          go-mysql-transfer

          Maxwell

          開發(fā)語言

          Java

          Python

          Golang

          Java

          高可用

          支持

          支持

          支持

          支持

          接收端

          編碼定制

          Kafka等(MQ)

          Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ、HTTP API 等

          Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件等

          全量數(shù)據(jù)初始化

          不支持

          支持

          支持

          支持

          數(shù)據(jù)格式

          編碼定制

          Json(固定格式)

          Json(規(guī)則配置) 模板語法 Lua腳本

          JSON

          性能(4-8TPS)





          實現(xiàn)原理:

          1、go-mysql-transfer將自己偽裝成MySQL的Slave,

          2、向Master發(fā)送dump協(xié)議獲取binlog,解析binlog并生成消息

          3、將生成的消息實時、批量發(fā)送給接收端

          Mysql binlog 講解:

          MySQL的二進制日志可以說MySQL最重要的日志了,它記錄了所有的DDL和DML(除了數(shù)據(jù)查詢語句)語句, 以事件形式記錄,還包含語句所執(zhí)行的消耗的時間,MySQL的二進制日志是事務(wù)安全型的。

          一般來說開啟二進制日志大概會有1%的性能損耗。

          二進制日志兩個最重要的使用場景:

          • MySQL Replication在Master端開啟binlog,Master把它的二進制日志傳遞給slaves來達(dá)到master-slave數(shù)據(jù)一致的目的。
          • 數(shù)據(jù)恢復(fù),通過使用mysqlbinlog工具來使恢復(fù)數(shù)據(jù)。

          二進制日志包括兩類文件:

          • 二進制日志索引文件(文件名后綴為.index)用于記錄所有的二進制文件
          • 二進制日志文件(文件名后綴為.00000*)記錄數(shù)據(jù)庫所有的DDL和DML(除了數(shù)據(jù)查詢語句)語句事件。

          binlog文件的滾動:

          • 達(dá)到了滾動的大小
          • mysql服務(wù)停止

          mysql binlog的三種格式

          在配置文件中可以選擇配置 binlog_format= statement|mixed|row

          • ROW 模式(一般就用它)日志會記錄每一行數(shù)據(jù)被修改的形式,不會記錄執(zhí)行 SQL 語句的上下文相關(guān)信息,只記錄要修改的數(shù)據(jù),哪條數(shù)據(jù)被修改了,修改成了什么樣子,只有 value,不會有 SQL 多表關(guān)聯(lián)的情況。優(yōu)點:它僅僅只需要記錄哪條數(shù)據(jù)被修改了,修改成什么樣子了,所以它的日志內(nèi)容會非常清楚地記錄下每一行數(shù)據(jù)修改的細(xì)節(jié),非常容易理解。缺點:ROW 模式下,特別是數(shù)據(jù)添加的情況下,所有執(zhí)行的語句都會記錄到日志中,都將以每行記錄的修改來記錄,這樣會產(chǎn)生大量的日志內(nèi)容。
          • STATEMENT 模式每條會修改數(shù)據(jù)的 SQL 語句都會被記錄下來。缺點:由于它是記錄的執(zhí)行語句,所以,為了讓這些語句在 slave 端也能正確執(zhí)行,那他還必須記錄每條語句在執(zhí)行過程中的一些相關(guān)信息,也就是上下文信息,以保證所有語句在 slave 端被執(zhí)行的時候能夠得到和在 master 端執(zhí)行時候相同的結(jié)果。但目前例如 step()函數(shù)在有些版本中就不能被正確復(fù)制,在存儲過程中使用了 last-insert-id()函數(shù),可能會使 slave 和 master 上得到不一致的 id,就是會出現(xiàn)數(shù)據(jù)不一致的情況,ROW 模式下就沒有。
          • MIXED 模式以上兩種模式都使用。

          常見的數(shù)據(jù)采集工具(相關(guān)知識):

          DataX、Flume、Canal、Sqoop、LogStash

          DataX (處理離線數(shù)據(jù))

          DataX 是阿里巴巴開源的一個異構(gòu)數(shù)據(jù)源離線同步工具,異構(gòu)數(shù)據(jù)源離線同步指的是將源端數(shù)據(jù)同步到目的端,但是端與端的數(shù)據(jù)源類型種類繁多,在沒有 DataX 之前,端與端的鏈路將組成一個復(fù)雜的網(wǎng)狀結(jié)構(gòu),非常零散無法把同步核心邏輯抽象出來。

          為了解決異構(gòu)數(shù)據(jù)源同步問題,DataX 將復(fù)雜的網(wǎng)狀的同步鏈路變成了星型數(shù)據(jù)鏈路,DataX 作為中間傳輸載體負(fù)責(zé)連接各種數(shù)據(jù)源。

          所以,當(dāng)需要接入一個新的數(shù)據(jù)源的時候,只需要將此數(shù)據(jù)源對接到 DataX,就可以跟已有的數(shù)據(jù)源做到無縫數(shù)據(jù)同步。

          DataX本身作為離線數(shù)據(jù)同步框架,采用Framework+plugin架構(gòu)構(gòu)建。將數(shù)據(jù)源讀取和寫入抽象成為Reader/Writer插件,納入到整個同步框架中。

          1. Reader: 它為數(shù)據(jù)采集模塊,負(fù)責(zé)采集數(shù)據(jù)源的數(shù)據(jù),將數(shù)據(jù)發(fā)送給Framework。
          2. Writer: 它為數(shù)據(jù)寫入模塊,負(fù)責(zé)不斷向Framework取數(shù)據(jù),并將數(shù)據(jù)寫入到目的端。
          3. Framework:它用于連接Reader和Writer,作為兩者的數(shù)據(jù)傳輸通道,并處理緩沖、并發(fā)、數(shù)據(jù)轉(zhuǎn)換等問題。

          核心模塊介紹:

          1. DataX完成單個數(shù)據(jù)同步的作業(yè),我們把它稱之為Job,DataX接收到一個Job之后,將啟動一個進程來完成整個作業(yè)同步過程。
          2. DataX Job啟動后,會根據(jù)不同的源端切分策略,將Job切分成多個小的Task(子任務(wù)),以便于并發(fā)執(zhí)行。
          3. 切分多個Task之后,DataX Job會調(diào)用Scheduler模塊,根據(jù)配置的并發(fā)數(shù)據(jù)量,將拆分成的Task重新組合,組裝成TaskGroup(任務(wù)組)。每一個TaskGroup負(fù)責(zé)以一定的并發(fā)運行完畢分配好的所有Task,默認(rèn)單個任務(wù)組的并發(fā)數(shù)量為5。
          4. 每一個Task都由TaskGroup負(fù)責(zé)啟動,Task啟動后,會固定啟動Reader->Channel->Writer的線程來完成任務(wù)同步工作。
          5. DataX作業(yè)運行完成之后,Job監(jiān)控并等待多個TaskGroup模塊任務(wù)完成,等待所有TaskGroup任務(wù)完成后Job成功退出。否則,異常退出。

          Flume(處理實時數(shù)據(jù))

          Flume主要應(yīng)用的場景是同步日志數(shù)據(jù),主要包含三個組件:Source、Channel、Sink。

          Flume最大的優(yōu)點就是官網(wǎng)提供了豐富的Source、Channel、Sink,根據(jù)不同的業(yè)務(wù)需求,我們可以在官網(wǎng)查找相關(guān)配置。另外,F(xiàn)lume還提供了自定義這些組件的接口。

          Logstash(處理離線數(shù)據(jù))

          Logstash就是一根具備實時數(shù)據(jù)傳輸能力的管道,負(fù)責(zé)將數(shù)據(jù)信息從管道的輸入端傳輸?shù)焦艿赖妮敵龆耍慌c此同時這根管道還可以讓你根據(jù)自己的需求在中間加上過濾網(wǎng),Logstash提供了很多功能強大的過濾網(wǎng)來滿足各種應(yīng)用場景。

          Logstash是由JRuby編寫,使用基于消息的簡單架構(gòu),在JVM上運行。在管道內(nèi)的數(shù)據(jù)流稱之為event,它分為inputs階段、filters階段、outputs階段。

          Sqoop(處理離線數(shù)據(jù))

          Sqoop是Hadoop和關(guān)系型數(shù)據(jù)庫之間傳送數(shù)據(jù)的一種工具,它是用來從關(guān)系型數(shù)據(jù)庫如MySQL到Hadoop的HDFS從Hadoop文件系統(tǒng)導(dǎo)出數(shù)據(jù)到關(guān)系型數(shù)據(jù)庫。Sqoop底層用的還是MapReducer,用的時候一定要注意數(shù)據(jù)傾斜。

          注:sqoop不是CDC工具 sqoop是基于查詢的全量數(shù)據(jù)捕獲.

          參考:

          https://www.cnblogs.com/zzz01/p/15263071.html

          go-mysql-transfer產(chǎn)品手冊

          著昨天分享的大數(shù)據(jù)網(wǎng)站模板,今天再分享五個智慧交通 智慧金融 智慧氣象H5大數(shù)據(jù)大屏幕展示html模板,也是非常的大氣,全部都是寫好的靜態(tài)模板頁面。

          一.大數(shù)據(jù)視頻監(jiān)控模板

          智慧交通大數(shù)據(jù)視頻監(jiān)控 大數(shù)據(jù)展板源文件 ,html+CSS+JS源文件,可通過瀏覽器運行預(yù)覽,可直接使用。

          二.高速交通大數(shù)據(jù)分析平臺模板

          一款藍(lán)色風(fēng)格很具科技感的html5全屏高速交通大數(shù)據(jù)分析平臺頁面模板,交通綜合管理大數(shù)據(jù)可視化圖表統(tǒng)計展示頁面模板。

          三.旅游大數(shù)據(jù)大屏模板

          景區(qū)綜合管理服務(wù)平臺,統(tǒng)計景區(qū)內(nèi)外客流數(shù)據(jù),實時客流數(shù)據(jù),客流總數(shù),區(qū)域客流排名,新老客戶占比,游客停留時長,各時段客流人數(shù),歷史客流等數(shù)據(jù),并以圖表的形式直觀展示。監(jiān)測人員可以實時查看對應(yīng)監(jiān)測點的實時客流數(shù)量,通過對全景區(qū)重點客流監(jiān)測區(qū)域的實時監(jiān)測和預(yù)警處理,提高預(yù)警處置能力。

          四.銀行企業(yè)信用風(fēng)險實時監(jiān)測模板

          銀行企業(yè)信用風(fēng)險系統(tǒng)后臺ECHART圖表實時動態(tài)檢測頁面模板html下載

          五.氣象預(yù)報大數(shù)據(jù)平臺模板

          html5基于echart制作天氣預(yù)報,氣象預(yù)警大數(shù)據(jù)可視化管理界面模板。地理維度、空氣溫度、氣象監(jiān)測等大數(shù)據(jù)顯示功能。包含:登錄頁面和投票主頁面。

          以上五個為云碼素材收藏的智慧交通 智慧金融 智慧氣象H5大數(shù)據(jù),大屏展示模板,如果你喜歡,覺得有幫助,請收藏,轉(zhuǎn)發(fā)。

          獲取下載方法,請關(guān)注云碼素材,私信我。

          歡迎關(guān)注云碼素材,交流分享! 云碼素材原創(chuàng)作品,更多精品資源下載,技術(shù)分享請關(guān)注,私信云碼素材!


          主站蜘蛛池模板: 一区二区三区在线播放视频| 国产无线乱码一区二三区 | 在线视频亚洲一区| 久久久不卡国产精品一区二区| 国产精品一区二区av| 中文字幕一区二区三区精华液| 国产精品av一区二区三区不卡蜜 | 国产免费一区二区三区免费视频 | 精品国产区一区二区三区在线观看| 精品亚洲综合在线第一区| 中文字幕精品无码一区二区| 免费一区二区无码东京热| 国内国外日产一区二区| 无码人妻精品一区二区三区66| 无码精品人妻一区二区三区免费看 | 性色A码一区二区三区天美传媒| 久久国产午夜一区二区福利| 人体内射精一区二区三区| 3d动漫精品啪啪一区二区中| 男插女高潮一区二区| 日本精品一区二区在线播放| 一区二区三区美女视频| 手机看片一区二区| 任你躁国语自产一区在| 久久精品无码一区二区三区不卡 | 国产一区二区三区高清在线观看| 国产无线乱码一区二三区| 精品一区二区三区无码免费视频| 亚洲国产成人久久一区二区三区 | 人妻少妇精品视频一区二区三区 | 国产情侣一区二区| chinese国产一区二区| 无码少妇一区二区性色AV| 亚洲av无码一区二区三区在线播放| 日韩久久精品一区二区三区 | 午夜影院一区二区| 美女福利视频一区二区| 国产午夜精品免费一区二区三区| 伊人久久大香线蕉AV一区二区 | 国产另类ts人妖一区二区三区 | 久99精品视频在线观看婷亚洲片国产一区一级在线 |