🏆🏆🏆教程全知識點簡介: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/1190000047230435 中查看
📚📚👉👉👉本站這篇博客: https://segmentfault.com/a/1190000047225317 中查看
<!-- end:bj1 -->
✨ 本教程項目亮點
🧠 知識體系完整:覆蓋從基礎原理、核心方法到高階應用的全流程內容
💻 全技術鏈覆蓋:完整前後端技術棧,涵蓋開發必備技能
🚀 從零到實戰:適合 0 基礎入門到提升,循序漸進掌握核心能力
📚 豐富文檔與代碼示例:涵蓋多種場景,可運行、可複用
🛠 工作與學習雙參考:不僅適合系統化學習,更可作為日常開發中的查閲手冊
🧩 模塊化知識結構:按知識點分章節,便於快速定位和複習
📈 長期可用的技術積累:不止一次學習,而是能伴隨工作與項目長期參考
🎯🎯🎯全教程總章節
🚀🚀🚀本篇主要內容
4. SpringData-Mongo
Spring-data對MongoDB做了支持,使用spring-data-mongodb可以簡化MongoDB的操作,封裝了底層的mongodb-driver。
地址:https://spring.io/projects/spring-data-mongodb
使用Spring-Data-MongoDB很簡單,只需要如下幾步即可:
- 導入起步依賴
- 編寫配置信息
- 編寫實體類(配置註解 @Document,@Id)
-
操作mongodb
- 注入MongoTemplate對象,完成CRUD操作
- 編寫Repository接口,注入接口完成基本Crud操作
4.1 環境搭建
第一步,導入依賴:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
第二步,編寫application.yml配置文件
spring:
data:
mongodb:
uri: mongo://192.168.136.160:27017/testdb
第三步,編寫啓動類
package com.tanhua.mongo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MongoApplication {
public static void main(String[] args) {
SpringApplication.run(MongoApplication.class, args);
}
}
4.2 完成基本操作
第一步,編寫實體類
package com.tanhua.mongo.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(value="person")
public class Person {
@Id
private ObjectId id;
@Field("username")
private String name;
private int age;
private String address;
}
第二步,通過MongoTemplate完成CRUD操作
package cn.itcast.mongo.test;
import cn.itcast.mongo.MongoApplication;
import cn.itcast.mongo.domain.Person;
import org.bson.types.ObjectId;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MongoApplication.class)
public class MongoTest {
/**
* SpringData-mongodb操作
* 1 配置實體類
* 2 實體類上配置註解(配置集合和對象間的映射關係)
* 3 注入MongoTemplate對象
* 4 調用對象方法,完成數據庫操作
*/
@Autowired
private MongoTemplate mongoTemplate;
//保存
@Test
public void testSave() {
for (int i = 0; i < 10; i++) {
Person person = new Person();
person.setId(ObjectId.get()); //ObjectId.get():獲取一個唯一主鍵字符串
person.setName("張三"+i);
person.setAddress("北京順義"+i);
person.setAge(18+i);
mongoTemplate.save(perso
# 5. 今日佳人
在用户登錄成功後,就會進入首頁,首頁中有今日佳人 推薦好友 明日 搜附近等功能。

> 先不考慮推薦的邏輯,假設現在已經有推薦的結果, 只需要從結果中查詢到緣分值最高的用户就可以了
## 5.1 表結構設計
表結構 recommend_user
{
"userId":1001, #推薦的用户id
"toUserId":1002, #用户id
"score":90, #推薦得分
"date":"2019/1/1" #日期
}
在MongoDB中只存儲用户的id數據,其他的數據需要通過接口查詢。
## 5.2 服務提供者
在<font color=red>`tanhua-dubbo-mongo`</font>模塊編寫服務提供者相應代碼
### 5.2.0 導入依賴
找到<font color=red>`tanhua-model`</font>模塊的`pom.xml`添加mongo的依賴
```xml
<!--mongoDB依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
</dependency>
```
### 5.2.1 實體類
找到<font color=red>`tanhua-model`</font>模塊編寫實體類`com.tanhua.model.mongo.RecommendUser`
```java
package com.tanhua.model.mongo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.mapping.Document;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Document(collection = "recommend_user")
public class RecommendUser implements java.io.Serializable {
private ObjectId id; //主鍵id
private Long userId; //推薦的用户id
private Long toUserId; //用户id
private Double score =0d; //推薦得分
private String date; //日期
}
```
### 5.2.2 RecommendUserApi接口
在<font color=red>`tanhua-dubbo-interface`</font>模塊創建公共接口`com.tanhua.dubbo.api.RecommendUserApi`
```java
package com.tanhua.dubbo.api;
import com.tanhua.model.mongo.RecommendUser;
import com.tanhua.model.vo.PageResult;
import java.util.List;
public interface RecommendUserApi {
//查詢今日佳人數據
RecommendUser queryWithMaxScore(Long toUserId);
}
```
### 5.2.3 RecommendUserApiImpl
[Spring MVC 文檔](https://docs.spring.io/spring-framework/reference/web/webmvc.html)
在<font color=red>`tanhua-dubbo-mongo`</font>模塊創建接口實現類`com.tanhua.dubbo.api.RecommendUserApiImpl`
```java
package com.tanhua.dubbo.api;
import cn.hutool.core.collection.CollUtil;
import com.tanhua.model.mongo.RecommendUser;
import com.tanhua.model.mongo.UserLike;
import com.tanhua.model.vo.PageResult;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.aggregation.TypedAggregation;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import java.util.List;
@DubboService
public class RecommendUserApiImpl implements RecommendUserApi {
@Autowired
private MongoTemplate mongoTemplate;
//查詢今日佳人