獨立開發 乙個社交 APP 的架構分享 已實現

2022-02-11 05:18:17 字數 2368 閱讀 7868

(本部落格為原創:

前言:

一 、功能架構

二 、移動端架構概述

三、服務端架構概述

一、功能架構

公共部分

使用者管理

登入 登入方式

帖子模組

瀏覽:

按編輯

按型別(內容布局各不相同)

我的作品,**混排,瀑布流顯示

操作:

文章模組

發布:

相容:

許可權 我的模組(使用者資訊)

我的訊息模組

資料管理模組

帖子管理

我的設定模組

搜尋模組

型別

說實話,這個專案的資料夾已達1.5g,安裝包混淆編譯後27m,我在寫之前,就在想要怎麼把它攤開來講,想想真的很複雜,腦子東西東西太多。

二、移動端架構概述

1,框架層

網頁2,執行緒層

由於我網路請求這塊沒使用框架,所以執行緒的選用時thread + handler組合或asynctask,需要明確一點,asynctask 比 thread + handler 更耗資源,不過使用起來比較方便。

3,快取層

android 的資料儲存方式有5種,分別是 sharedprefrences、file、sqlite、contentprovider、network。我採用的是 sharedprefrences 和 file即是檔案儲存,其中

4,網路層

5,實現層

1) 註冊與登入

密碼 簡訊驗證

手機登入

第三方登入

2) 發表帖子功能的實現

部分顯示

在發帖頁面顯示縮圖,提供有點選看大圖和移除的功能

1,具備縮放功能,方便生成、載入縮圖

2,可以自定義新增水印

3,鑑黃圖,這是最重要的

上傳先上傳,在上傳成功後,再開始上傳文字內容,如果出錯,可以直接覆蓋,文字成功,失敗時,帖子避免資料混亂

採用執行緒池上傳,一來方便控制併發數,二來方便**記憶體

3) 帖子列表的顯示

選用了安卓5.0 的 swiperefreshlayout + recyclerview,原因是 swiperefreshlayout 自身帶有下拉重新整理,最早的時候使用的是 pulltorefresh 開源專案。recyclerview 重寫onscroll() 就可以搞定載入更多,還有乙個原因,recyclerview 自帶有瀑布流布局屬性。

早之前我使用的是 linearlayout 實現的,不斷地 addview 再 remove,致命的缺點是記憶體消耗不合理。

4) 帖子詳情頁的顯示

邏輯點讚

布局5) 訊息提醒

訊息提醒採用了極光推送的sdk實現

6) 表情模組

顯示7) 其他部分

收藏、刪除、舉報,這些操作進行一次get操作,傳遞帖子的id給伺服器,伺服器處理完畢後,就做對應操作

其他功能能的實現基本同上述。

8) 優化

記憶體9) 使用的庫

第三方自己派生

三、服務端架構概述

第二部分結束得有點匆忙,我真的很想把所有的東西都寫下來,如果加上我一路遇到過的 bug 及其解決方法,估計還要寫兩天。主要原因是,有很多我記得已經不是太清楚了。

1,伺服器

mysql 資料庫,myisam 與 innodb 引擎

php 語言開發介面

2,資料庫引擎

3,資料庫設計

對於資料庫設計,不應該過多依賴正規化,適度的冗餘可以加快搜尋速度,在伺服器的配置還可以的情況下,可以採用冗餘來解決查詢慢的問題。

常被update的字段,不應該出現在多張表,應該使用一張表,例如使用者的名稱,username 這個肯定是會被經常改變的。否則在update資料的時候你要多張表更新!

使用者資訊兩張表

4,介面

未完待續……

APP開發 教你從零開始製作乙個APP

二 相關平台的開發者賬號申請 2.蘋果平台的申請花的時間相對時間長點一般在15 30之間。1.分析 了解客戶的需要開發平台,對產品的功能 設計需求 專案的完成時間以及開發的預算等。2.評估 評估需求技術難度 設計需求可行性 專案預期完成時間及開發費用。1 上線到安卓各大市場,所有安卓市場都是免費的,...

我開發的乙個基於地理位置的社交應用

drift 飄 是乙個基於地理位置的社交平台,該軟體的開發旨在給人們一種很隨意 輕鬆 有趣的方式交友聊天。開啟軟體後,它會把使用者周圍使用該軟體的人顯示在地圖上,然後你可以建立或加入他人建立的房間進行聊天,聊天分兩種模式 一種是傳統模式,就是一左一右彈出氣泡 另一種是地圖模式,每個聊天的人都在地圖上...

我的第乙個App開發過程

產品 功能定義 1.設定 計算預產期,提示懷孕天數,可檢視每週狀態。2.孕婦日曆,包括農曆 孕周標記。4.寶寶 可計算血型,星座,屬相等。美工 工具 安裝了photoshop,但很難駕馭,使用網頁版美圖秀秀做了幾張圖,但做一些精緻的圖的時候比如圖示就無能為力了,最後還是使用photoshop完成了後...