亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于React Native框架的換宿系統(tǒng)實現(xiàn)方法

        2019-01-19 08:26:20瞿文政許志明王嘉茵倪偉傳萬智萍
        計算機技術(shù)與發(fā)展 2019年1期
        關(guān)鍵詞:用戶功能

        瞿文政,許志明,王嘉茵,倪偉傳,萬智萍

        (中山大學新華學院,廣東 東莞 512133)

        0 引 言

        打工換宿模式在國外深受追捧,但是在國內(nèi)還鮮為人知。究其原因,一是打工換宿這一符合年輕人個性化旅游發(fā)展趨勢的風口尚未完全到來;二是國內(nèi)類似軟件平臺暫未出現(xiàn),用戶無法快速、準確獲取打工換宿信息。換宿平臺就是在這樣的背景下產(chǎn)生的。

        換宿平臺是一款服務(wù)于國內(nèi)“年輕”人的打工換宿交易平臺。目的主要是為大學生提供一個集信息發(fā)布、過程監(jiān)督及旅行分享功能的規(guī)范化的換宿交易平臺。產(chǎn)品定位為國內(nèi)文藝旅行分享社區(qū),以“打工換宿”為核心主打發(fā)現(xiàn)和分享優(yōu)質(zhì)旅行及旅行過程中發(fā)生的故事并強化用戶UGC社交屬性。除此之外,換宿平臺通過高端定制服務(wù)實現(xiàn)B端和C端的交互,打破了傳統(tǒng)打工換宿的模式。

        換宿平臺技術(shù)上采用React Native開發(fā)框架,以Flexbox彈性盒子來進行布局與Koa框架下的MongoDB數(shù)據(jù)庫結(jié)合,使用ES5語法,用React基礎(chǔ)語法來搭建頁面,組合多種第三方組件如TabBarIOS導航欄組件等實現(xiàn)原生iOS應(yīng)用開發(fā)。

        文中主要介紹換宿平臺的關(guān)鍵技術(shù),包括React Native框架、Koa框架下Mongo DB在iOS上的實現(xiàn)及Geohash算法和LatentFactor算法的實際應(yīng)用,該平臺使用戶可以快速、準確地獲取打工換宿的信息。

        1 React Native框架

        React Native是移動端的跨平臺框架,可以滿足在Android和iOS平臺下的移動應(yīng)用的開發(fā)工作,提供了基本的跨平臺組件[1]。RN可以看作是基于React之上的一種針對特定平臺的技術(shù)開發(fā)方案,既能進行網(wǎng)頁開發(fā)也能完成iOS和Android跨平臺APP開發(fā)。

        RN使用的是Javascript開發(fā)語言,組件形態(tài)的生命周期機制和狀態(tài)與屬性的數(shù)據(jù)交互機制讓應(yīng)用開發(fā)變得更加靈活而又富有章法,不再是過去的Html/Css/Javascript雜糅一起,事件、行為、展現(xiàn),強行分離和抽象的狀態(tài)[2]。同時,性能上盡管RN使用Javascript語言進行APP開發(fā),但是編譯后卻是原生應(yīng)用,并非Hybrid的混合應(yīng)用,也非Codava將網(wǎng)頁內(nèi)容內(nèi)嵌到WebView里面的黏合應(yīng)用[3]。最后,使用RN使團隊之間合作的門檻也得到降低,僅需要JS基礎(chǔ)即可。

        綜上所述,React Native作為iOS、Android的開發(fā)平臺,具有開發(fā)效率高及協(xié)作門檻低等特點。所以,選擇在RN框架的基礎(chǔ)上進行換宿平臺的設(shè)計與實現(xiàn)。

        在語法技術(shù)層面上,RN的優(yōu)勢也非常明顯。首先,RN是單純的Javascript組件化,沒有摻和不同的語言形態(tài);其次,RN的技術(shù)框架,允許使用者很方便地介入和調(diào)用到各個平臺下的API,僅僅借助JS就可以實現(xiàn)只有原生語言才可以實現(xiàn)的效果,這也是RN框架的核心競爭力;最后,RN的布局用到的是Flex布局,不用去深究iOS底層UIview的算法及布局,能更快地構(gòu)建APP原型。RN框架中JS調(diào)用OC模塊方法的流程見圖1。

        圖1 RN框架中JS調(diào)用OC模塊方法的流程

        2 功能需求分析

        根據(jù)2 000余份針對大學生(18~25歲)的調(diào)查問卷結(jié)果顯示,大學生打工換宿平臺需要滿足的8個基本功能分別是:查詢打工換宿信息/收藏、申請/取消換宿、即時通信、UGC旅行分享、登錄/注冊、高端定制服務(wù)、實名認證及一鍵切換房東,功能之間的相互關(guān)系框架見圖2。

        圖2 平臺流程結(jié)構(gòu)

        每個功能的具體需求如下:

        (1)查詢打工換宿信息/收藏:可以按照民宿關(guān)鍵字、目的地及換宿時間等搜索具體的打工換宿信息,包括換宿概要、費用、評論等,也可以將搜索到的換宿信息收藏至個人界面。

        (2)申請/取消換宿:提供了一鍵申請/取消功能,通過預先設(shè)置的簡歷模板對心儀的打工換宿項目進行快速申請。

        (3)即時通信:傳統(tǒng)的換宿申請過程中B端與C端以郵件交流為主,通信效率較低。現(xiàn)在通過線上即時通信來增強信息的交流效率及時效性。

        (4)UGC旅行分享:UGC旅行分享社區(qū)為用戶提供了發(fā)布、瀏覽、點贊及評論原創(chuàng)游記的功能,一方面可以增強用戶黏性,另一方面也符合目標人群的行為標準。同時,社區(qū)也實現(xiàn)了附近的人、附近的美食及同城攻略等信息的個性化推送功能。

        (5)登錄/注冊:用戶采用手機驗證碼進行快速登錄及注冊[4]。

        (6)高端定制服務(wù):在申請打工換宿的同時,也可以通過付費選擇定制服務(wù),以滿足用戶個性化旅行的需求。

        (7)實名認證:不僅在換宿過程中為年輕人提供安全保障,而且在某種程度上也對C端利益保障及行為規(guī)范起到一定作用。

        (8)一鍵切換房東:在設(shè)置界面提供B端和C端用戶的一鍵切換功能,有效解決傳統(tǒng)過程中多個APP繁瑣切換造成用戶體驗感下降等問題。

        3 平臺實現(xiàn)

        平臺是基于React Native開發(fā)框架在Macbook OS X系統(tǒng)下,使用Sublime、Xcode模擬器工具、Homebrew包管理工具結(jié)合Facebook開源項目Watchman和Flow及Nodejs等進行開發(fā)的。后臺使用Mongodb數(shù)據(jù)庫和Koa框架相結(jié)合進行上層服務(wù)的開發(fā)。主要技術(shù)關(guān)鍵點是在RN框架下調(diào)用第三方組件、RN中獲取異步數(shù)據(jù)請求、RN中AsyncStorage的異步儲存、Koa架構(gòu)的搭建、Geohash算法及LatentFactor算法的應(yīng)用等。

        3.1 RN中調(diào)用第三方組件

        RN框架常借助第三方組件實現(xiàn)軟件的各種功能,從而達到快速、高效的開發(fā)。換宿平臺的登錄及注冊功能是通過借助第三方平臺-螺絲帽發(fā)送一個4位手機驗證碼的方式實現(xiàn)的。螺絲帽官方是使用Https傳輸協(xié)議,通過Https Request發(fā)起一個Options請求,是一個回調(diào)方式。但是,對于Koa數(shù)據(jù)庫框架,需要通過封裝把它轉(zhuǎn)化成一個Promise,這樣可以更方便地通過Yield調(diào)用這個異步過程。Speakeasy方法是在生成驗證碼的過程中采用加密功能,避免被模擬生成驗證碼的這套算法。短信API接口關(guān)鍵代碼為:

        var https=require('https')//

        //通過Https的Require發(fā)起一個Post請求

        var querystring=require('querystring')//

        var Promise=require('bluebird')

        //引入Promise對代碼進行封裝

        var speakeasy=require('speakeasy')

        //生成驗證碼

        exports.getCode=function() {//

        //對外暴露生成驗證碼的接口

        var code=speakeasy.totp({//

        //對totp方法傳入一個對象

        secret:'Yisuisnice',

        //對生成驗證碼的過程進行加密

        digits:4})

        //短信字符數(shù)為4位

        return code

        //返回

        }

        3.2 RN中獲取異步數(shù)據(jù)請求

        iOS應(yīng)用中數(shù)據(jù)請求總共有四種,分別是同步請求、異步請求、Get請求、Post請求。異步請求解決了同步請求中線程阻塞的問題,當發(fā)生異步請求之后,程序會建立新的線程進行操作,用戶交互絲毫不會受到影響[5]。

        RN里常用的獲取異步數(shù)據(jù)的網(wǎng)絡(luò)請求有Fetch、WebSocket和XMLHttpRequest。該換宿平臺中異步數(shù)據(jù)請求是通過在componentDidMoun中調(diào)用fetchData的方式進行異步數(shù)據(jù)的獲取。

        3.3 RN中AsyncStorage的異步儲存

        在Android的開發(fā)中,大多數(shù)開發(fā)者會使用SharedPreferences以鍵值對的形式對用戶的賬號密碼進行存儲。而在本次RN開發(fā)中,選擇了同樣采用鍵值對存儲方式的AsyncStorage(異步持久化的方案)輕量存儲系統(tǒng)來進行數(shù)據(jù)及用戶操作路徑的存儲。AsyncStorage跟瀏覽器的Localatorage本地存儲有相似之處。因為AsyncStorage是全局操作的,所以文中對AsyncStorage抽象封裝后才進行使用。

        ··圖3 平臺展示圖

        3.4 Koa(Koajs)架構(gòu)的搭建

        Koa是使用ES5規(guī)范的Generator和異步編程的輕量級Web開發(fā)框架[6]。Koa不在內(nèi)核方法中綁定任何中間件,僅僅提供了一個輕量優(yōu)雅的函數(shù)庫,使得編寫Web應(yīng)用變得得心應(yīng)手,大大提高了軟件的開發(fā)效率。

        在Koa架構(gòu)的搭建過程中,首先安裝Koa模塊,然后在應(yīng)用的最開始部分放入Koa-logger開發(fā)環(huán)境下的日志中間件,統(tǒng)計整個請求所花費的時間及記錄狀態(tài)等。同時,為了保持用戶會話狀態(tài),安裝了基于cookie的會話中間件Koa-session;表單數(shù)據(jù)的解析上是使用Koa-bodyparser來生成對象結(jié)構(gòu)數(shù)據(jù);路由中間件使用Koa-router為不同的Url地址分配不同的規(guī)則,從而調(diào)用不同的函數(shù);使用針對Mongodb數(shù)據(jù)庫的對象建模工具Mongoose實現(xiàn)與數(shù)據(jù)庫Mongodb進行通信;數(shù)據(jù)加密上采用的是哈希算法庫Sha1及基于安全算法生成隨機數(shù)字的工具庫的Speakeasy生成短信驗證碼[7];使用Uuid生成不會重復的ID;同時,為避免XSS惡意攻擊選擇使用XSS模塊;最后,使用Promise規(guī)范(標準)實現(xiàn)對封裝后的Promise庫Bluebird提供優(yōu)雅的API設(shè)計和更好的性能。

        3.5 Geohash算法實現(xiàn)“附近”功能

        Geohash是一種地理編碼格式,它沿著經(jīng)度和緯度的方向交替二分地球表面,并使用一個二進制數(shù)(Geohash編碼)表示所形成的互不重疊網(wǎng)格。

        Geohash編碼的優(yōu)點在于既能表明用戶的大概位置,又不至于暴露自己的精確坐標,有助于隱私保護;而且只需使用一維索引即可表示一個矩形區(qū)域;另外,編碼的前綴可以表示更大的區(qū)域,更方便查詢附近的區(qū)域。

        文中采用Geohash算法對用戶的位置坐標進行多次編碼,每次形成一個由n個編碼組成的長度為n的Geohash編碼。達到位置從粗劃分到細劃分的變化,從而進行精確計算,獲取附近(距離小于10 km)的物理信息,并進行地理位置移動距離計算,實現(xiàn)UGC社區(qū)中的“附近”功能。

        Geohash算法實際就是將一個經(jīng)緯度信息,轉(zhuǎn)換成一個可以排序,可以比較的字符串編碼。具體實現(xiàn)方法是先根據(jù)用戶當前坐標計算Geohash,然后取其前綴進行查詢,即可查詢附近的所有地點[8-9]。

        3.6 Latent Factor算法的個性推薦

        Latent Factor Models是基于潛在因子模型將用戶和資源的特征同時映射到相同的潛在因子空間(Latent Factor Space),以使得它們可以直接比較的一種算法[10]。

        在換宿平臺UGC社區(qū)中通過使用Latent Factor(潛在因子)算法,對用戶進行精準的地點及游記等個性化推薦。原理就是通過對每個用戶的偏好進行分類,比如A喜歡清凈的、理想、民族風等元素,如果有一個地點帶有這些元素,那么就將這個地點或游記推薦給該用戶,也就是用元素將用戶和地點或游記連接起來。但是,每個人對不同的元素偏好不同,同時每個地點或每篇游記包含的元素也不一樣,所以采用以下的矩陣進行簡單分析。

        3.6.1 用戶-潛在因子矩陣Q

        用戶-潛在因子矩陣Q表示不同的用戶對于不用元素的偏好程度,從0到1依次表示偏好的強弱,1為非常偏好,0為無偏好,如表1所示。

        表1 潛在因子矩陣Q

        3.6.2 潛在因子-地點矩陣P

        潛在因子-地點矩陣P表示每個地點或分享所含有的各種元素。比如表2,麗江是一個偏民族風和理想孤獨的地方,含有民族風這個元素的成分是0.9,理想的成分是0.8,孤獨的成分是0.8……如表2所示。

        表2 潛在因子矩陣P

        利用這兩個矩陣,可以計算出張三對麗江的喜歡程度是:張三對民族風的偏好*麗江含有民族風的成分+對理想的偏好*麗江含有理想的成分+對孤獨的偏好*麗江含有孤獨的成分+……。

        表3 可推薦數(shù)值

        因此對張三推薦四個地點中得分最高的麗江,對李四推薦得分最高的麗江。矩陣可表示為:

        (1)

        由于實際應(yīng)用中所獲得的數(shù)據(jù)是異常巨大的,而且只能通過用戶行為數(shù)據(jù)來進行分析,無法使用戶自己進行分類并返回自己的偏好系數(shù)。所以,在實際分析時獲得的是實際評分矩陣R,這是一個非常稀松的矩陣。所以需要對矩陣的UV進行分解。也就是將實際的評分矩陣分解為兩個低維度的矩陣,再利用Q和P兩個矩陣的乘積對實際矩陣中的未知評分進行預測,實際上就是求解下面的目標函數(shù)的過程[12]。

        (2)

        4 應(yīng)用測試

        從全面的角度出發(fā),平臺應(yīng)用測試階段進行了功能測試、兼容性測試、穩(wěn)定性測試、安全性測試、分發(fā)測試及BUG遍歷測試[3]等。目前平臺已經(jīng)完成了在百度MTC測試上通過獲取UDID進行的100份的分發(fā)內(nèi)測及BUG遍歷測試。測試結(jié)果證明,換宿平臺已完成基本功能的開發(fā)和運行。主要功能測試結(jié)果如表4所示。

        表4 平臺主要功能BUG遍歷測試結(jié)果

        5 結(jié)束語

        文中提出了一種基于React Native框架集合了Geohash算法和Latent Factor算法的iOS換宿平臺開發(fā)方法,該平臺不僅解決了用戶無法快速、準確獲取打工換宿信息的痛點,還通過高端定制服務(wù)實現(xiàn)了B端和C端的交互,同時一定程度上強化了用戶UGC原創(chuàng)屬性。在后期的研究中考慮繼續(xù)加入AI客服系統(tǒng)及VR虛擬場景預覽等功能。最后,文中闡述的開發(fā)思路與關(guān)鍵技術(shù),打破了傳統(tǒng)APP開發(fā)的模式,以更加快速、高效、低門檻的方式進行APP原生開發(fā),對基于iOS及Android或React Native框架的相關(guān)研究有重大的借鑒意義。

        猜你喜歡
        用戶功能
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        關(guān)于非首都功能疏解的幾點思考
        懷孕了,凝血功能怎么變?
        媽媽寶寶(2017年2期)2017-02-21 01:21:24
        “簡直”和“幾乎”的表達功能
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        Camera360:拍出5億用戶
        100萬用戶
        如何獲取一億海外用戶
        亚洲精品无amm毛片| 精品国产一区二区三区av新片| 国产精品三区四区亚洲av| 无码国产色欲xxxx视频| 又粗又大又黄又爽的免费视频| 国产午夜激无码AV毛片不卡| 精品日韩在线观看视频| 精品亚洲国产成人蜜臀av| 乌克兰粉嫩xxx极品hd| 中文字幕在线久热精品| 国产一区二区三区在线观看免费版 | 成 人色 网 站 欧美大片在线观看 | 国产一区视频在线免费观看| 日本一区二区三本视频在线观看| 亚洲日本一区二区三区四区| 大胸少妇午夜三级| 国产一级特黄无码免费视频| 国产黄色污一区二区三区| 少妇高潮在线精品观看| 亚洲国产精品综合久久网各| 亚洲欧美日韩综合中文字幕| 亚洲av色香蕉第一区二区三区| 亚洲综合av一区二区三区蜜桃| 日本xxxx色视频在线播放| 一区二区在线亚洲av蜜桃| 婷婷开心五月亚洲综合| 国产精品无码一区二区三区| 亚洲另类激情综合偷自拍图| 亚洲美女av一区二区| 日韩精品免费一区二区三区观看| 亚洲综合原千岁中文字幕| 资源在线观看视频一区二区| 国产在视频线精品视频二代| 亚洲av色香蕉一区二区三区潮| 午夜免费福利小电影| 国产尤物精品自在拍视频首页| 自拍视频在线观看成人| 午夜天堂一区人妻| 精品无码中文视频在线观看| 高潮社区51视频在线观看| 国产一区亚洲二区三区极品|