交友

Wang's Blog13 小时前
java·bootstrap·交友
Java 项目实战: 交友项目 - 圈子互动章总结与自检清单本文干了两件事:把圈子动态的查询补成三视图(好友动态走 timeLine 收件箱、推荐动态走 Redis pid 列表、单条动态按 _id 直查),再把互动闭环(评论/点赞/喜欢)压进一张 comment 集合,用 commentType 区分类型,最后用 Redis Hash 把「我是否点过赞/喜欢过」这个高频读从 Mongo 里捞出来。这里不重复各篇的实现细节,只做三件事:把全文串成一张地图、沉淀五个可复用套路、给出可勾选的自检项,外加一个工程快照里真实存在的 bug,作为全文最有价值的教学案例。
Wang's Blog18 小时前
java·spring·交友
Java 项目实战:交友项目环信云通信全解——体系集成、执行链路与 REST API 实战项目要具备 IM 能力,前端和后端各要接入环信的哪一部分、一条聊天消息到底流经哪些节点、项目的 userId 和环信账号怎么对应、服务端 REST API 又该怎么鉴权和封装——本文把这一整套从架构到代码的链路一次讲透。环信产品本身的概念(它是什么、免费额度、Console 怎么建应用)见前文环信通信:介绍,此处不再重复。
Wang's Blog2 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 喜欢与取消喜欢圈子的第三种互动「喜欢」是点赞的同构操作:同样的四步流程、同一张 Comment 表,只把 commentType 从 1 换成 3、hashKey 从 LIKE 换成 LOVE。这里讲清这种同构怎么复用,以及复制粘贴时最容易踩的那个坑,常量漏改(工程里真实存在,读侧 hasLiked 就被它坑了)。
Wang's Blog2 天前
java·交友
Java 项目实战: 交友项目 - 查询评论列表动态详情页向下滑动的评论区,靠 GET /comments 这个接口支撑:按动态 ID 分页拉取评论,并把每条评论的评论人昵称、头像从 MySQL 侧批查回来拼进 VO。这里拆完整链路,重点讲两个易错点,publishId 的 ObjectId 手动转换、comment 集合三合一带来的 commentType=2 硬约束。
Wang's Blog2 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 圈子功能实现:总结圈子这一章把「发一条动态」背后的一整套存储设计摊开了:MongoDB 存详情、时间线表做收件箱、Redis 存推荐列表,三套存储各管一段。这里做全章复盘,知识地图、五个可复用的架构套路、十二个实测踩过的坑、自检清单和四个动手练习,最后指向下一章的圈子互动。
Wang's Blog3 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 查询推荐动态好友动态查的是自己的收件箱(movement_timeline),推荐动态查的既不是 movement 全量、也不是 recommend_user 表,而是推荐系统提前写进 Redis 的一份 pid 列表。这里先把这份「推荐结果」的存储结构、查询语义和边界情况理清楚,再把 GET /movements/recommend 从 Controller 一路打到 MongoTemplate 的调用链落地,过程中重点掰扯两个容易忽略的架构问题,推荐排序语义到底在哪一层、为什么分页只能在内存做。
Wang's Blog3 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 圈子互动动态能发、能刷之后,产品还差一口气,用户看到一条动态,除了「看」,还得能「反应」。点赞、评论、喜欢这三个动作就是圈子模块的互动层,这一章把它们的全景摊开:有哪些互动动作、数据落在哪、计数怎么维护、技术选型怎么从业务特点里推导出来、本章要一口气做完哪些接口。
Wang's Blog3 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 查询单条动态:动态详情页的接口与实现在好友动态、推荐动态列表里点开一张卡片,进入的就是动态详情页。这里解决这个页面的数据来源问题:按动态 id 查询单条动态,搞清楚 _id 与 pid 两套 id 各自的使用场景,以及详情页的评论列表是怎么配合查出来的。
Wang's Blog4 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 查询圈子个人动态:查询我的动态需求分析发布动态之后,用户点进「我的」页面看到的那个时间线,数据从哪来、接口长什么样、返回的 VO 要拼哪些字段,这里把「查询我的动态」这个功能的需求与设计一次讲清。链路本身不难,难的是几个容易想当然的细节。
Wang's Blog5 天前
java·数据库·交友
Java 项目实战: 交友项目 - 发布圈子动态:数据库表和接口文档介绍发布动态这个功能要动两样东西:一个 movement 集合、一个 POST /movements 接口。这里把这两样一次讲透,字段为什么这么设计、媒体数据为什么嵌进文档而不是拆表、带文件上传的表单接口和之前见过的纯 JSON 接口差在哪。
Wang's Blog5 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 圈子功能的表设计方案圈子就是交友项目里的朋友圈:发动态、刷好友动态、点赞评论。难点不在接口,在于「刷好友动态」这条查询怎么扛住海量数据,这里拆三种表设计,讲清楚为什么最终选了动态表 + 相册表 + 时间线表这套冗余结构。
Wang's Blog6 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 回顾和今日内容介绍今天要解决两件事:把用户控制面板剩下的功能(通用设置、陌生人问题、通知设置、黑名单)补齐,同时在项目里引入第二个存储引擎 MongoDB,用于「今日佳人」这类关系型数据库不好存的推荐数据。
Wang's Blog6 天前
java·开发语言·交友
Java 项目实战: 交友项目 - SpringData-Mongo 环境搭建和 CRUD前面命令行里敲过的那些 db.collection.find(),到了工程里都要换成 Java 代码。这里解决一个问题:交友项目如何在 Spring Boot 里接入 MongoDB,依赖怎么引、连接怎么配、实体和集合怎么映射,为什么为它单开一个 mf-dubbo-mongo 模块,之后展开用 MongoTemplate 做增删改查,从插入、查询、更新,到删除、批量写入,再到嵌套文档与数组的进阶操作。
Wang's Blog6 天前
java·mongodb·交友
Java 项目实战: 交友项目 - MongoDB集群:概述推荐好友列表上线后,MongoDB 在交友项目里已经扛起了推荐、佳人、访客这类社交数据的存储。但到目前为止,所有数据都压在一台 MongoDB 服务器上,这台机器一旦出问题,或者数据涨到单机装不下,业务就直接受影响。
Wang's Blog6 天前
java·mongodb·交友
Java 项目实战: 交友项目 - MongoDB基础总结与自检清单我们要把项目从「MySQL 单存储」升级成了「MySQL + MongoDB 双存储」:通用设置和黑名单继续走 mf-dubbo-db,今日佳人把缘分值数据首次存进了 Mongo,mf-dubbo-mongo 模块从零搭起来并跑通了第一条 Dubbo 链路。这里不重复细节,只做三件事:把整章串成一张知识地图、沉淀可复用的套路清单、给出可勾选的自检项。
Wang's Blog6 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 今日佳人:需求分析「今日佳人」是交友项目 App 首页的第一个推荐位,这里只解决两件事:推荐数据从哪来、服务端接口怎么设计。CRUD 语法已在前面几篇覆盖,这里不再重复,需要时回看SpringData-Mongo:CRUD操作即可。
Wang's Blog7 天前
java·mongodb·交友
Java 项目实战: 交友项目 - MongoDB 入门:体系结构和命令行操作MongoDB 被称为「最像关系型数据库的非关系型数据库」,这句话的根据就在它的体系结构里。这里把 Database → Collection → Document 三层结构、BSON 数据格式、_id 主键机制一次性讲清,并落到交友项目工程的 @Document 实体与连接配置上。
Wang's Blog8 天前
java·windows·交友
Java 项目实战: 交友项目 - 黑名单:取消黑名单黑名单功能的最后一块拼图:把误拉黑的人从 tb_black_list 里删掉。删除操作本身只有几行代码,但"用 DELETE 方法还是 POST"“删不到记录算不算错”"删完分页页码空洞怎么办"这几个问题值得掰开讲。
Wang's Blog8 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 黑名单:分页查询黑名单黑名单页要展示"我拉黑了谁",但 tb_black_list 表里只有两个用户 id——本篇解决两件事:用 MyBatis-Plus 的分页插件把这份 id 列表分页查出来,再把 id 翻译成带昵称、头像的用户信息返回给前端。
Wang's Blog8 天前
java·开发语言·交友
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑GET /users 解决"看",PUT /users 解决"改"。这条更新链路一共只碰四个类,但里面埋了三个坑:id 必须拿 token 覆写、updateById 只更新非 null 字段、需求篇里那张"字段白名单"在代码里其实没落地。这篇把链路逐层拆开,重点放在实现细节和可复现的验证实验上。