
??????教程全知識(shí)點(diǎn)簡(jiǎn)介:1、Dubbo的前世今生 1、項(xiàng)目介紹 1.1、項(xiàng)目背景 1.2、市場(chǎng)分析 1.3、目標(biāo)用戶群體 1.4、使用場(chǎng)景 1.5、競(jìng)爭(zhēng)對(duì)手分析 1.7、技術(shù)方案 2、前后端分離開(kāi)發(fā)思想 3、開(kāi)發(fā)工具與環(huán)境搭建 3.1、開(kāi)發(fā)工具 3.2、環(huán)境搭建 4、sms_code驗(yàn)證瑪 4.1 阿里云短信 4.2 自動(dòng)裝配 1. 完善用戶信息 1.2 百度人臉識(shí)別 1.2.1 概述 1.2.2 賬號(hào)申請(qǐng) 1.2.4 抽取模板工具 2.2 更新用戶資料 2.2.1 接口文檔 2.2.2 代碼實(shí)現(xiàn) 3. 統(tǒng)一token處理 3.1.需求分析 3.2 解決方案 攔截器(Interceptor) ThreadLocal MongoDB入門(mén) 數(shù)據(jù)庫(kù)以及表的操作 新增數(shù)據(jù) 更新數(shù)據(jù) 刪除數(shù)據(jù) 查詢數(shù)據(jù) 1.3 設(shè)置陌生人問(wèn)題 1.4 通知設(shè)置 1.5 黑名單管理 4. SpringData-Mongo 4.2 完成基本操作 5. 今日佳人 5.1 表結(jié)構(gòu)設(shè)計(jì) 5.2 服務(wù)提供者 5.2.0 導(dǎo)入依賴 5.2.2 RecommendUserApi接口 分片集群 原理介紹 集群搭建 2、圈子功能 2.1、功能說(shuō)明 3、圈子實(shí)現(xiàn) 3.2、發(fā)布動(dòng)態(tài) 1. 動(dòng)態(tài)查詢 1.1 查詢好友動(dòng)態(tài) 2. 圈子互動(dòng) 2.3 動(dòng)態(tài)點(diǎn)贊 2.4.3 喜歡標(biāo)識(shí) 安裝 準(zhǔn)備 使用 1. 即時(shí)通信 2. 環(huán)信 2.1 開(kāi)發(fā)簡(jiǎn)介 2.2 環(huán)信Console 2.3 環(huán)信API介紹 初始化 基礎(chǔ)API 3. 抽取環(huán)信組件 3.1 編寫(xiě)Properties對(duì)象 3.2 編寫(xiě)HuanXinTemplate 3.3 編寫(xiě)自動(dòng)配置類 2. MongoDB地理位置檢索 2.1 地理位置索引 Point LineString Polygon 2.2 案例 3. 上報(bào)地理位置 4. 搜附近 1. 我的訪客 1.2 記錄訪客數(shù)據(jù) tanhua-model tanhua-app-server tanhua-dubbo-interface 1.3 首頁(yè)誰(shuí)看過(guò)我 需求分析 3. FastDFS 3.2. 工作原理 3.2.1. 文件的上傳 分布式文件系統(tǒng)FDFS配置 4. 發(fā)布小視頻 1、用戶凍結(jié)解凍 1.1 用戶凍結(jié) 1.3 查詢數(shù)據(jù)列表 1.4 明日系統(tǒng)修改 2.2 定時(shí)任務(wù) 3、內(nèi)容審核 1、了解推薦系統(tǒng) 1.1、什么是推薦系統(tǒng)? 1.3、推薦系統(tǒng)業(yè)務(wù)流程 1.4、協(xié)同過(guò)濾推薦算法 1.5、ALS算法 2、好友推薦 2.1、流程 2.2、部署好友推薦服務(wù)

??????????本站這篇博客:???http://www.itdecent.cn/p/56df5fcdfb68 ???中查看
? 本教程項(xiàng)目亮點(diǎn)
?? 知識(shí)體系完整:覆蓋從基礎(chǔ)原理、核心方法到高階應(yīng)用的全流程內(nèi)容
?? 全技術(shù)鏈覆蓋:完整前后端技術(shù)棧,涵蓋開(kāi)發(fā)必備技能
?? 從零到實(shí)戰(zhàn):適合 0 基礎(chǔ)入門(mén)到提升,循序漸進(jìn)掌握核心能力
?? 豐富文檔與代碼示例:涵蓋多種場(chǎng)景,可運(yùn)行、可復(fù)用
?? 工作與學(xué)習(xí)雙參考:不僅適合系統(tǒng)化學(xué)習(xí),更可作為日常開(kāi)發(fā)中的查閱手冊(cè)
?? 模塊化知識(shí)結(jié)構(gòu):按知識(shí)點(diǎn)分章節(jié),便于快速定位和復(fù)習(xí)
?? 長(zhǎng)期可用的技術(shù)積累:不止一次學(xué)習(xí),而是能伴隨工作與項(xiàng)目長(zhǎng)期參考
??????全教程總章節(jié)
??????本篇主要內(nèi)容
4. SpringData-Mongo
Spring-data對(duì)MongoDB做了支持,使用spring-data-mongodb可以簡(jiǎn)化MongoDB的操作,封裝了底層的mongodb-driver。
地址:https://spring.io/projects/spring-data-mongodb
使用Spring-Data-MongoDB很簡(jiǎn)單,只需要如下幾步即可:
- 導(dǎo)入起步依賴
- 編寫(xiě)配置信息
- 編寫(xiě)實(shí)體類(配置注解 @Document,@Id)
- 操作mongodb
- 注入MongoTemplate對(duì)象,完成CRUD操作
- 編寫(xiě)Repository接口,注入接口完成基本Crud操作
4.1 環(huán)境搭建
第一步,導(dǎo)入依賴:
<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>
第二步,編寫(xiě)application.yml配置文件
spring:
data:
mongodb:
uri: mongo://192.168.136.160:27017/testdb
第三步,編寫(xiě)啟動(dòng)類
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 完成基本操作
第一步,編寫(xiě)實(shí)體類
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;
}
第二步,通過(guò)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 配置實(shí)體類
* 2 實(shí)體類上配置注解(配置集合和對(duì)象間的映射關(guān)系)
* 3 注入MongoTemplate對(duì)象
* 4 調(diào)用對(duì)象方法,完成數(shù)據(jù)庫(kù)操作
*/
@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():獲取一個(gè)唯一主鍵字符串
person.setName("張三"+i);
person.setAddress("北京順義"+i);
person.setAge(18+i);
mongoTemplate.save(perso
# 5. 今日佳人
在用戶登錄成功后,就會(huì)進(jìn)入首頁(yè),首頁(yè)中有今日佳人 推薦好友 明日 搜附近等功能。

> 先不考慮推薦的邏輯,假設(shè)現(xiàn)在已經(jīng)有推薦的結(jié)果, 只需要從結(jié)果中查詢到緣分值最高的用戶就可以了
## 5.1 表結(jié)構(gòu)設(shè)計(jì)
~~~shell
#表結(jié)構(gòu) recommend_user
{
"userId":1001, #推薦的用戶id
"toUserId":1002, #用戶id
"score":90, #推薦得分
"date":"2019/1/1" #日期
}
在MongoDB中只存儲(chǔ)用戶的id數(shù)據(jù),其他的數(shù)據(jù)需要通過(guò)接口查詢。
5.2 服務(wù)提供者
在<font color=red>tanhua-dubbo-mongo</font>模塊編寫(xiě)服務(wù)提供者相應(yīng)代碼
5.2.0 導(dǎo)入依賴
找到<font color=red>tanhua-model</font>模塊的pom.xml添加mongo的依賴
<!--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 實(shí)體類
找到<font color=red>tanhua-model</font>模塊編寫(xiě)實(shí)體類com.tanhua.model.mongo.RecommendUser
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>模塊創(chuàng)建公共接口com.tanhua.dubbo.api.RecommendUserApi
package com.tanhua.dubbo.api;
import com.tanhua.model.mongo.RecommendUser;
import com.tanhua.model.vo.PageResult;
import java.util.List;
public interface RecommendUserApi {
//查詢今日佳人數(shù)據(jù)
RecommendUser queryWithMaxScore(Long toUserId);
}
5.2.3 RecommendUserApiImpl
在<font color=red>tanhua-dubbo-mongo</font>模塊創(chuàng)建接口實(shí)現(xiàn)類com.tanhua.dubbo.api.RecommendUserApiImpl
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