🏆🏆🏆教程全知識點簡介:1、Dubbo的前世今生 1、項目介紹 1.1、項目背景 1.2、市場分析 1.3、目標用户羣體 1.4、使用場景 1.5、競爭對手分析 1.7、技術方案 2、前後端分離開發思想 3、開發工具與環境搭建 3.1、開發工具 3.2、環境搭建 4、sms_code驗證瑪 4.1 阿里雲短信 4.2 自動裝配 1. 完善用户信息 1.2 百度人臉識別 1.2.1 概述 1.2.2 賬號申請 1.2.4 抽取模板工具 2.2 更新用户資料 2.2.1 接口文檔 2.2.2 代碼實現 3. 統一token處理 3.1.需求分析 3.2 解決方案 攔截器(Interceptor) ThreadLocal MongoDB入門 數據庫以及表的操作 新增數據 更新數據 刪除數據 查詢數據 1.3 設置陌生人問題 1.4 通知設置 1.5 黑名單管理 4. SpringData-Mongo 4.2 完成基本操作 5. 今日佳人 5.1 表結構設計 5.2 服務提供者 5.2.0 導入依賴 5.2.2 RecommendUserApi接口 分片集羣 原理介紹 集羣搭建 2、圈子功能 2.1、功能説明 3、圈子實現 3.2、發佈動態 1. 動態查詢 1.1 查詢好友動態 2. 圈子互動 2.3 動態點贊 2.4.3 喜歡標識 安裝 準備 使用 1. 即時通信 2. 環信 2.1 開發簡介 2.2 環信Console 2.3 環信API介紹 初始化 基礎API 3. 抽取環信組件 3.1 編寫Properties對象 3.2 編寫HuanXinTemplate 3.3 編寫自動配置類 2. MongoDB地理位置檢索 2.1 地理位置索引 Point LineString Polygon 2.2 案例 3. 上報地理位置 4. 搜附近 1. 我的訪客 1.2 記錄訪客數據 tanhua-model tanhua-app-server tanhua-dubbo-interface 1.3 首頁誰看過我 需求分析 3. FastDFS 3.2. 工作原理 3.2.1. 文件的上傳 分佈式文件系統FDFS配置 4. 發佈小視頻 1、用户凍結解凍 1.1 用户凍結 1.3 查詢數據列表 1.4 明日系統修改 2.2 定時任務 3、內容審核 1、瞭解推薦系統 1.1、什麼是推薦系統? 1.3、推薦系統業務流程 1.4、協同過濾推薦算法 1.5、ALS算法 2、好友推薦 2.1、流程 2.2、部署好友推薦服務
<!-- start:bj1 -->
📚📚👉👉👉本站這篇博客: https://segmentfault.com/a/1190000047225317 中查看
📚📚👉👉👉本站這篇博客: https://segmentfault.com/a/1190000047225317 中查看
<!-- end:bj1 -->
✨ 本教程項目亮點
🧠 知識體系完整:覆蓋從基礎原理、核心方法到高階應用的全流程內容
💻 全技術鏈覆蓋:完整前後端技術棧,涵蓋開發必備技能
🚀 從零到實戰:適合 0 基礎入門到提升,循序漸進掌握核心能力
📚 豐富文檔與代碼示例:涵蓋多種場景,可運行、可複用
🛠 工作與學習雙參考:不僅適合系統化學習,更可作為日常開發中的查閲手冊
🧩 模塊化知識結構:按知識點分章節,便於快速定位和複習
📈 長期可用的技術積累:不止一次學習,而是能伴隨工作與項目長期參考
🎯🎯🎯全教程總章節
🚀🚀🚀本篇主要內容
介紹
- 完善用户信息
- 用户信息管理
- 統一token處理
- 統一異常處理
1. 完善用户信息
用户在首次登錄時需要完善個人信息,包括性別暱稱生日城市頭像等。其中,頭像數據需要做圖片上傳,這裏採用阿里雲的OSS服務作為 的圖片服務器,並且對頭像要做人臉識別,非人臉照片不得上傳。
- 首次登錄時(手機號碼不存在),需要創建用户存入數據庫中
-
客户端檢測首次登錄需要完善用户信息
- 填寫用户基本信息
- 上傳用户頭像(需要人臉認證)
1.1 阿里雲OSS
實現圖片上傳服務,需要有存儲的支持,那麼 的解決方案將以下幾種:
-
直接將圖片保存到服務的硬盤(springmvc中的文件上傳)
- 優點:開發便捷,成本低
- 缺點:擴容困難
-
使用分佈式文件系統進行存儲
- 優點:容易實現擴容
- 缺點:開發複雜度稍大(有成熟的產品可以使用,比如:FastDFS,MinIO)
-
使用第三方的存儲服務
- 優點:開發簡單,擁有強大功能,免維護
- 缺點:付費
在本套中選用阿里雲的OSS服務進行圖片存儲。
1.1.1 概述
對象存儲服務(Object Storage Service,OSS)是一種海量安全低成本高可靠的雲存儲服務,適合存放任意類型的文件。容量和處理能力彈性擴展,多種存儲類型供選擇,全面優化存儲成本。
地址:https://www.aliyun.com/product/oss
1.1.2 賬號申請
購買服務
使用第三方服務最大的缺點就是需要付費,下面, 看下如何購買開通服務。
購買下行流量包: (不購買也可以使用,按照流量付費)
説明:OSS的上行流量是免費的,但是下行流量是需要購買的。
創建Bucket
使用OSS,首先需要創建Bucket,Bucket翻譯成中文是水桶的意思,把存儲的圖片資源看做是水,想要盛水必須得有桶,就是這個意思了。
進入控制枱,https://oss.console.aliyun.com/overview
選擇Bucket後,即可看到對應的信息,如:url消耗流量等 :
文件管理:
package com.tanhua.test;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.baomidou.mybatisplus.annotation.TableId;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
public class OssTest {
/**
* 案例:
* 將資料中的1.jpg上傳到阿里雲OSS
* 存放的位置 /yyyy/MM/dd/xxxx.jpg
*/
@Test
public void testOss() throws FileNotFoundException {
//1、配置圖片路徑
String path = "C:\\Users\\lemon\\Desktop\\資源\\02-完善用户信息\\03-資料\\1.jpg";
//2、構造FileInputStream
FileInputStream inputStream = new FileInputStream(new File(path));
//3、拼寫圖片路徑
String filename = new SimpleDateFormat("yyyy/MM/dd").format(new Date())
+"/"+ UUID.randomUUID().toString() + path.substring(path.lastIndexOf("."));
// yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "oss-cn-beijing.aliyuncs.com";
String accessKeyId = "LTAI4GKgob9vZ53k2SZdyAC7";
String accessKeySecret = "LHLBvXmILRoyw0niRSBuXBZewQ30la";
// 創建OSSClient實例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret);
// 填寫Byte數組。
// 填寫Bucket名稱和Object完整路徑。Object完整路徑中不能包含Bucket名稱。
ossClient.putObject("tanhua001", filename, inputStream);
// 關閉OSSClient。
ossClient.shutdown();
String url = "https://tanhua001.oss-cn-beijing.aliyuncs.com/" + filename;
System.out.println(url);
}
}
查看文件:
基於圖像或視頻中的人臉檢測分析和比對技術,提供對您已獲授權前提下的私有數據的人臉檢測與屬性分析人臉對比人臉搜索活體檢測等能力。靈活應用於金融泛安防零售等行業場景,滿足身份核驗人臉考勤閘機通行等業務需求
1.2.1 概述
地址:https://ai.baidu.com/tech/face
1.2.2 賬號申請
賬號登錄註冊
百度雲AI支持百度賬號登錄,也可以支持雲賬號。按需註冊即可
創建應用
按需創建應用
1.2.3 人臉識別測試
package com.tanhua.test;
import com.baidu.aip.face.AipFace;
import org.json.JSONObject;
import java.util.HashMap;
public class AipFaceTest {
//設置APPID/AK/SK
public static final String APP_ID = "24021388";
public static final String API_KEY = "ZnMTwoETXnu4OPIGwGAO2H4G";
public static final String SECRET_KEY = "D4jXShyinv5q26bUS78xRKgNLnB9IfZh";
public static void main(String[] args) {
// 初始化一個AipFace
AipFace client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
// 可選:設置網絡連接參數
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
// 調用接口
String image = "https://tanhua001.oss-cn-beijing.aliyuncs.com/2021/04/19/a3824a45-70e3-4655-8106-a1e1be009a5e.jpg";
String imageType = "URL";
HashMap<String, String> options = new HashMap<String, String>();
options.put("face_field", "age");
options.put("max_face_num", "2");
options.put("face_type", "LIVE");
options.put("liveness_control", "LOW");
// 人臉檢測
JSONObject res = client.detect(image, imageType, options);
System.out.println(res.toString(2));
}
}
1.2.4 抽取模板工具
AipFaceProperties
<font color=red>tanhua-autoconfig</font>中添加配置對象
package com.tanhua.autoconfig.properties;
import com.baidu.aip.face.AipFace;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
@Data
@ConfigurationProperties("tanhua.aip")
public class AipFaceProperties {
private String appId;
private String apiKey;
private String secretKey;
@Bean
public AipFace aipFace() {
AipFace client = new AipFace(appId, apiKey, secretKey);
// 可選:設置網絡連接參數
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
return client;
}
}
AipFaceTemplate
<font color=red>tanhua-autoconfig</font>中創建AipFaceTemplate
package com.tanhua.autoconfig.template;
import com.baidu.aip.face.AipFace;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.HashMap;
public class AipFaceTemplate {
@Autowired
private AipFace client;
/**
* 檢測圖片中是否包含人臉
* true:包含
* false:不包含
*/
public boolean detect(String imageUrl) {
// 調用接口
String imageType = "URL";
HashMap<String, String> options = new HashMap<String, S
🚀✨ (未完待續)項目系列下一章
📚下一篇 將進入更精彩的環節!
🔔 記得收藏 & 關注,第一時間獲取更新!
🍅 一起見證整個系列逐步成型的全過程。