吳國娟,何明昌,王 鵬,吳漢魏,廖海玲
(溫州大學數電學院,浙江 溫州 325035)
教育部網站上數據顯示,2016年在華留學生生源國家和地區總數已達205個[1],隨著我國經濟的快速發展與綜合實力的不斷提升,越來越多的海外學子到我國留學。據統計,2017年來華留學人數已達150多萬人,且每年呈大幅增長趨勢,據英國教育機構預測,到2027年中國將超過美國將會成為世界上第一大海外留學目的國家[2]。語言是用來進行文化診釋與交流的最重要的工具。留學生在中國學習的過程中面臨的最大的問題是語言溝通和異域文化風俗問題。在中國文化輸出過程中,對外漢語教學是關鍵性的第一步[3-4]。
留學生迫切需要一款專門為他們在中國學習及生活的手機軟件APP。而目前市場上只有一些翻譯軟件供留學生使用,而這些翻譯軟件只能滿足最基本的語言需要,對來華留學生來說,他們希望有一款集翻譯、學習及生活幫助的手機軟件。針對在華留學生這些需求,研發了一款在華留學生學習生活助手軟件。通過這款手機APP,幫助來華留學生解決學習、生活上碰到的許多問題。該平臺作為社區交流平臺,能增加中外學生之間接觸的機會,拉近中外學生之間的關系,豐富他們的課余生活。
通過對大量在華留學生學習生活碰到的問題及需求調查,基于整個業務流程,把系統業務分為兩大板塊:學習和生活。包括用戶注冊、社區交流、學習、生活助手如快遞導航查找、匯率轉換、翻譯等多種功能。系統架構圖如圖1所示。分為展示層、業務層、數據層。系統有四個模塊:①社區交流模塊;②生活應用模塊;③文化學習模塊;④個人中心模塊。

圖1 系統架構設計圖
考慮到系統集成以及實現各子系統的管理,以達到信息最大程度的共享,也便于今后系統的擴充及增容,系統預留未來的功能擴展接口。在速度方面,外網前臺系統要求能響應4000用戶的并發訪問,內網后臺管理要求能響應2000用戶的并發訪問。
在安全方面,系統中所選用的各個功能子系統設備都具有開放的通訊接口,后臺管理系統搭建在內部局域網中以保安全,同時對一些重要數據進行MD5加密存儲,同時系統數據庫有一套完善的保護方案。另外設計了一套嚴格的權限認證機制,保證當用戶訪問站點時系統的安全性。
Android是現在最受歡迎的移動平臺操作系統之一,也是用戶使用最多的手機操作系統,它最大的特點就是代碼開源,因此吸引了包括通信運營商、設備制造商、芯片制造商等各類企業[5]。采用安卓系統開發,APP前端技術采用MVP(Model-View-Presenter)三層體系架構,將整個業務應用劃分為:模型(Model)、視圖(View)、表示器(Presenter)。MVP模式會解除View與Model的耦合,有效的降低View的復雜性,同時又帶來了良好的可擴展性、可測試性,保證系統的整潔性和靈活性[6]。MVP模式可以實現同一份邏輯代碼搭配不同的顯示界面,它們之間并不依賴與具體,而是依賴于抽象。這使得Presenter可以運用于任何實現了View邏輯接口的UI,使之具有更廣泛的適用性,保證了靈活,使系統易于維護、易于測試、松耦合度、復用性高、健壯穩定,系統技術體系結構圖如圖2所示。

圖2 系統技術體系結構圖
目前流行的服務端技術有Java、PHP、.NET、Python,由于PHP語言開源性好、跨平臺性強、運行效率高[7],我們選擇PHP作為服務端開發語言。MySQL是一個免費的關系型數據庫系統軟件,非常適用于Apache+PHP+MySQL組成的網站建構[8],因此后臺數據庫采用MySQL。為了提高數據庫訪問性能和后期大數據分析,引入Redis非關系型數據庫。為了提高數據讀的性能,在云服務器和數據庫之間用緩存,并為數據庫主從備份、讀寫分離。為了應對可能面臨的并發問題,云服務器要考慮負載均衡。因為項目中可能存在大量的需要上傳和下載照片和視頻,所以系統選擇騰訊的開放云存儲服務,同時為了提升各個地區的下載體驗,系統引入CDN。客戶端通過API Service和服務端交換數據,圖片和視頻的下載直接通過CDN。
隨著業務不斷增加,后臺系統將由單一應用擴展成為多元應用系統,系統中逐漸聚合大量的應用和服務,各個模塊之間有很多功能重復實現,這會給開發、運維、部署帶來麻煩,為此,數據庫服務器采用分布式結構,以方便實現業務復用,如圖3所示。

圖3 分布式服務實現業務的復用
JSON是一種輕量級的數據交換格式,采用完全獨立于語言的文本格式[9],易于編寫,也易于機器解析和生成,比XML格式更省流量,這些特性使得JSON成為理想的數據交換語言,所以系統在手機客戶端采用JSON數據交換格式。
一般的Web網站使用Cookie+Session來保持用戶的登錄狀態,App后臺則使用token進行驗證[10],流程如圖4所示。
按照上面的驗證流程App將直接獲取token值,這樣容易被黑客攻擊。為了用戶安全,系統將不在網絡上傳輸token,而采用簽名校驗(使用URL簽名)的方式,API請求加上URL簽名sign以及用戶id,格式如下:
test.com/user/update?uid=2&sign=3f1e736bc4ae-958ae7e8500b45aefdbb&age=22。這樣token就不需要附在URL上,App后臺簽名校驗流程如圖5所示。

圖4 用戶驗證方案

圖5 簽名校檢流程圖
翻譯功能是本系統平臺的核心功能之一,系統的學習模塊、幫助模塊都用到了中英文雙向翻譯,目前國內外很多公司都開放了翻譯平臺,供開發者接入,通過比較,系統選擇了百度翻譯開放平臺[11],目前該平臺提供兩項服務:通用翻譯API、定制化翻譯API。相關字段及描述如表1所示。
通用翻譯API HTTP地址:http://api.fanyi.baidu.com/api/trans/vip/translate。
定制化翻譯API地址為:https://fanyi-api.baidu.com/api/trans/vip/translate。

表1 字段及描述
通過POST或GET方法,發送表2對應的字段來得到相應的服務:

表2 對應的字段來得到相應的服務
將apple從英文翻譯成中文,請求的參數為:
q=apple from=en to=zh appid=2015063000000001 salt=1435660288,平臺分配的密鑰為12345678來生成sign。其中拼接字符串為:appid=2015063000000001+q=apple+salt=1435660288+密鑰=12345678由此得到字符串 1=2015063000000001apple143566028812345678。計算后得到簽名sign(對字符串1做md5加密,計算md5之前,串1必須為UTF-8編碼):
sign=md5
(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
于是的完整請求為:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=
apple&from=en&to=zh&appid=2015063000000001&salt=
1435660288&sign=f89f9594663708c1605f3d736d01d2d4
對于后臺PHP服務器,提供服務的主要算法:
public static String getTranslateURL(String mWord)
{String mUrl=null;
String s1;
String s2;
String s3;
String MD5string;
String salt=String.valueOf(System.currentTimeMillis());
s3=mWord;
try{
MD5 getMD5=new MD5();
s2=URLEncoder.encode(mWord,"utf-8");
s1=ReplaceABC.mReplace(s3,"+","");
MD5string=getMD5.GetMD5Code(StringOfID.
BAIDU_APP_ID+s1+salt+StringOfID.BAIDU_KEY);
mUrl=UrlString.mUrlNOChangeForward+s2+
UrlString.mUrlNOChangeBehind+StringOfID
.BAIDU_APP_ID+"&salt="+salt+"&sign
="+MD5string;
//System.out.println(mUrl);
}catch(UnsupportedEncodingException e){
//TODO Auto-generated catch block
e.printStackTrace();
}
return mUrl;
}
為了更好地服務在華留學生,讓留學生在校園內能很快找到教室、圖書館、指導教師的位置及相應的服務機構,系統平臺提供了地圖定位及導航功能,平臺采用高德地圖開放平臺接口。
高德地圖開放平臺提供2D,3D導航,通過衛星多種地圖形式供開發者選擇。用高德開放平臺提供的API和SDK可以輕松完成地圖的構建工作。高德地圖開放平臺同時還提供強大的地圖再開發能力,全面的地圖數據支持,通過在線、離線兩種使用方式,多種地圖交互模式,滿足各個場景下對地圖的需求[12]。在平臺中Android Studio開發步驟略。
在Android系統中地圖定位SDK是一套簡單的LBS服務定位接口,使用這套定位API可獲取定位結果、逆地理編碼(地址文字描述)、以及地理圍欄功能[13]。主要算法如下:
⑴ 配置好XML布局以及相關權限;
⑵ 聲明Service組件:
<service android:name="com.amap.api.location
.APSService"></service>
⑶ 設置高德Key:
<meta-data android:name="com.amap.api.v2.apikey"
android:value="key"> </meta-data>
⑷ 初始化定位:
//聲明AMapLocationClient類對象
public AMapLocationClient mLocationClient=null;
//聲明定位回調監聽器
public AMapLocationListener mLocationListener
=new AMapLocationListener();
//初始化定位
mLocationClient=new AMapLocationClient
(getApplicationContext());
//設置定位回調監聽
mLocationClient.setLocationListener(mLocationListener);
⑸ 配置參數并啟動定位:
//聲明AMapLocationClientOption對象
public AMapLocationClientOption mLocationOption=null;
//初始化AMapLocationClientOption對象
mLocationOption=new AMapLocationClientOption();
Android導航SDK是一款針對在線導航的產品,產品功能涵蓋路徑規劃、模擬導航、GPS定位、自定義導航界面、獲取導航播報信息等。該產品的導航路徑計算與實時交通信息相結合,力求為用戶提供更加合理、準確、人性化的導航服務[14]。實現算法略。
系統中單詞學習、短文朗讀、智能導航都用到了語音處理功能,平臺采用訊飛語音開放平臺。作為全球首個開放的智能交互技術服務平臺,訊飛致力于為開發者打造一站式智能人機交互解決方案[15]。訊飛開放平臺以“云+端”的形式向開發者提供語音合成、語音識別、語音喚醒、語義理解、人臉識別、個性化彩鈴、移動應用分析等多項服務。用戶可通過互聯網、移動互聯網,使用任何設備、在任何時間、任何地點都能享受訊飛開放平臺提供的“聽、說、讀、寫……”等全方位的人工智能服務。本系統主要接入平臺中的語音識別和語音合成功能。其中語音識別主要算法如下:
⑴ 導入相關SDK、添加獲取相關權限;
⑵ 初始化SDK:
APPID申請地址:http://www.xfyun.cn
SpeechUtility.createUtility(context,SpeechConstant
.APPID+"=APPID");
⑶ 語音識別主要調用模塊:
mAsr.setParameter(SpeechConstant
.CLOUD_GRAMMAR,null);
mAsr.setParameter(SpeechConstant.SUBJECT,null);
mAsr.setParameter(SpeechConstant.ENGINE_TYPE,engineType);
mAsr.startListening(mRecogListener);
⑷ 語音合成主要調用模塊:
mTts.setParameter(SpeechConstant.ENGINE_TYPE,engineType);
mTts.setParameter(SpeechConstant.ENGINE_MODE,engineMode);
國外留學生來華求學,除了在校園接受正規系統學習專業知識外,很多學生通過“抱團”方式在中國學習及生活,他們通過小群體相互幫助傳授經驗來解決日常生活中的一些困難,基于Android平臺的留學生系統,通過手機APP通過幫助留學生解決在華學習、生活中碰到的困難,除提供學習資源、生活知識外,更重要的是讓他們通過平臺來感受中國的文化、習俗,迅速融入中國的學習和生活,這不僅提高了我國的影響力,更重要的體現在一帶一路建設中,讓我國發揮更大的作用。
參考文獻(References):
[1]教育部“.一帶一路”沿線國家來華留學生數據增幅明顯[EB/OL].http://www.moe.edu.cn/jyb_xwfb/xw_fbh/moe_2069/xwfbh_2017n/xwfb_170301/170301_mtbd/201703/t20170302_297943.html,2017-03-12/2017-03-12
[2]鑫鑫.來華留學人數創新高,中國已成最受歡迎的海外留學國家[EB/OL]..https://baijiahao.baidu.com/s?id=15834021 30664478769&wfr=spider&for=pc,2017-11-07.
[3]周可依,周原,劉鈺森.留學生移動輔助漢語學習的需求分析[J].現代教育論叢,2017.5:87-88
[4]蒲瑤,張文濤,彭惠.華留學生的跨文化適應問題調查及建議——以西北工業大學為個案[J].西北工業大學學報(社會科學版),2013.1:112-116
[5]劉彬彬,李永忠,舒俊.Android平臺下的病毒原理分析及其防御技術研究[J].電子設計工程,2013.21(4):40-43
[6]李曉杰.基于JAVA EE的畢業設計管理系統的設計研究[J].電腦知識與技術,2013.19:4420-4428
[7]張晉芳.PHP在網站后臺建設中的優勢[J].電腦開發與應用,2012.25(12):39-40
[8]趙鶴芹.設計動態網站的最佳方案:Apache+PHP+MySQL[J].計算機工程與設計,2007.28(4):933-934
[9]趙鵬,駱德漢,梅領亮.一種基于JSON的Android終端遠程獲取解析數據的方法[J].微型機與應用,2017.21:57-60
[10]黃孌.校園網統一身份認證系統的研究與實現[J].天津大學學報,2013.55:256-257
[11]黃皓.百度翻譯和有道翻譯API的封裝與利用[J].電腦編程技巧與維護,2014.16:90-93
[12]張恒喜,史爭軍.基于SQLite的Android數據庫編程[J].電腦編程技巧與維護,2011.21:30-31
[13]王雨.高德開放平臺發布全新地圖SDK[J].計算機與網絡,2017.43(9):31-31
[14]曹勇.高德開放平臺推出騎行導航SDK[J].計算機與網絡,2016.42(23):37-37
[15]趙歡.我聽,你說——吉利汽車與科大訊飛戰略合作攜手打造領先汽車語音應用[J].時代汽車,2015.8:66-66