遠(yuǎn)程辦公”">國務(wù)院聯(lián)防聯(lián)控機(jī)制新聞發(fā)布會(huì),多次肯定“云辦公”、“遠(yuǎn)程辦公”
854
2025-03-31
【辰兮要努力】:hello你好我是辰兮,很高興你能來閱讀,昵稱是希望自己能不斷精進(jìn),向著優(yōu)秀程序員前行!
博客來源于項(xiàng)目以及編程中遇到的問題總結(jié),偶爾會(huì)有讀書分享,我會(huì)陸續(xù)更新Java前端、后臺(tái)、數(shù)據(jù)庫、項(xiàng)目案例等相關(guān)知識(shí)點(diǎn)總結(jié),感謝你的閱讀和關(guān)注,希望我的博客能幫助到更多的人,分享獲取新知,大家一起進(jìn)步!
吾等采石之人,應(yīng)懷大教堂之心,愿你們奔赴在各自的熱愛中…
文章目錄
一、文章序言
二、圈子首頁
三、評(píng)論相關(guān)
一、文章序言
最近真的太忙了,兩個(gè)星期沒有更新了,想了想來整理一下我自己做的最感興趣的一個(gè)項(xiàng)目相關(guān)業(yè)務(wù)吧—社交圈版塊,留給自己,分享給以后涉及這版塊的朋友們。
關(guān)于社交圈版塊是一個(gè)挺有意思的版塊,相對(duì)于傳統(tǒng)的業(yè)務(wù),這就更加接近我們生活!我們生活的APP也常常發(fā)現(xiàn)社交圈版塊的例子:比如CSDN-Bink就是。
在這個(gè)版塊我們可以發(fā)布自己的心情動(dòng)態(tài),也可以看到別人的動(dòng)態(tài),可以評(píng)論、轉(zhuǎn)發(fā)等等,接下來為整理一下相關(guān)業(yè)務(wù)知識(shí)點(diǎn)。
二、圈子首頁
1、關(guān)于帖子顯示的基礎(chǔ)業(yè)務(wù)
作為JAVA后臺(tái)做的第一個(gè)邏輯就是查詢出所有已經(jīng)發(fā)布的動(dòng)態(tài),當(dāng)然可以分為好幾種查詢條件:最新,最熱,最近(距離)等等。
像正常的朋友圈一樣,打開可以看到我們發(fā)布的帖子和帖子下面的評(píng)論
這里簡(jiǎn)單的來說就是做了一個(gè)查詢帖子列表集合
起初就覺得是簡(jiǎn)單的查詢帖子與評(píng)論集合vo返回 其實(shí)后期還要封裝很多 屬性
比如
數(shù),是否(帖子和評(píng)論),帖子評(píng)論總數(shù),用戶是否關(guān)注這個(gè)圈子,用戶頭像,用戶昵稱,職位,學(xué)校
等屬性
弊端:查詢帖子后根據(jù)帖子ID,查詢用戶信息,以及評(píng)論,for循環(huán)封裝用戶信息和評(píng)論,數(shù)據(jù)量過多的時(shí)候會(huì)造成查詢數(shù)據(jù)庫次數(shù)過多,封裝相關(guān)信息會(huì)照常接口速度慢。
優(yōu)化第一版:因?yàn)樘颖碇杏衭seId用戶ID,也有reviewId評(píng)論ID,所以可以使用join on 直接查詢帖子的時(shí)候連接用戶表將用戶等信息(頭像、昵稱)帶出來,不會(huì)多次訪問數(shù)據(jù)庫,
使用collection集合用每次查詢出帖子的ID嵌套查詢出評(píng)論,類比你查詢商品帶出商品的套餐。
優(yōu)化第二版:帖子以及帖子的評(píng)論要人為封裝數(shù),和判斷是否,這就相當(dāng)于封裝了四個(gè)屬性,至少是查詢r(jià)edis或者數(shù)據(jù)庫四次,依然會(huì)造成接口速度下降
解決方案:帖子表中是有一個(gè)總數(shù)的,我們可以后臺(tái)設(shè)置一個(gè)定時(shí)器,比如一小時(shí)將redis的總數(shù)持久化到數(shù)據(jù)庫中,這樣的話就算redis掛掉也可以查詢到總數(shù)。其實(shí)正常查看CSDN的博客 總數(shù)和觀看人數(shù)都是無法做到完全同步化的比如說實(shí)際總數(shù)是100個(gè)但是顯示70個(gè)很正常,這個(gè)是關(guān)于持久化的問題。
相關(guān)我們也可以自行進(jìn)入相關(guān)博客頁面進(jìn)行感受
優(yōu)化第三版:帖子查詢出來相關(guān)的屬性不可避免被封裝,那如何更快的封裝呢?這里我們用到了Java -stream流的相關(guān)用法,相比于傳統(tǒng)的方法進(jìn)入帖子頁面基本上是秒刷新。
2、關(guān)于社交圈版塊的進(jìn)一步優(yōu)化
我們登錄進(jìn)去CSDN-bink的首頁–熱門這個(gè)版塊,關(guān)于熱門我們的評(píng)價(jià)標(biāo)準(zhǔn)是什么?
我們根據(jù) ,評(píng)論,轉(zhuǎn)發(fā),這個(gè)在前端頁面可以通過相關(guān)的公式記錄出相關(guān)的觀看人數(shù)值,當(dāng)然能做到像博客這樣的自行記錄當(dāng)然更好。
熱門版塊:第一次做熱門版塊我們把相關(guān)權(quán)重的值寫死了,當(dāng)然也是根據(jù)評(píng)論轉(zhuǎn)發(fā)算出來的,如果每次熱門排序的權(quán)重被后臺(tái)寫死了,那么我們刷新出來的都是一樣的帖子,ps:因?yàn)椴樵儣l件一樣
熱門版塊優(yōu)化:學(xué)習(xí)一下CSDN-bink,我們發(fā)現(xiàn)在最熱版塊每次刷新都會(huì)出現(xiàn)不一樣的帖子,這樣會(huì)帶給用戶已新鮮感,這個(gè)肯定是在后臺(tái)做出相關(guān)的算法,這樣每次刷新都能帶給用戶不一樣的帖子。
三、評(píng)論相關(guān)
1.評(píng)論要做權(quán)限判定
反思一下平常的項(xiàng)目正常帖子只要我們能夠獲取帖子的接口我們就可以直接訪問查看到相關(guān)的數(shù)據(jù)
首先controller層邏輯,你是否要判斷用戶是否登錄,如果未登錄用戶可以查看帖子,但是如果發(fā)布帖子和評(píng)論帖子要返回失敗。
思路一:在controller層上加上權(quán)限校驗(yàn)的相關(guān)注解;
思路二:在controller層內(nèi)掉登錄獲取userid的方法,判定一下是否登錄;
2.評(píng)論一定要做安全校驗(yàn)
比如說你做微信小程序,你的帖子和評(píng)論都是要是符合國家法律的,這里要調(diào)用微信的評(píng)論圖片安全檢測(cè)接口和圖片檢測(cè)接口,具體的要查看微信小程序相關(guān)的API文檔。
因?yàn)槲易龅氖呛臀⑿判〕绦蛳嚓P(guān)的,所以可以直接參考微信小程序的文檔,訪問微信的一個(gè)自定義接口,當(dāng)數(shù)量較大的時(shí)候會(huì)收費(fèi),當(dāng)然訪問量少就免費(fèi)。
關(guān)于外部提供的共用接口好像用到JSONObject類較多;
3.評(píng)論業(yè)務(wù)
如果沒做個(gè)這個(gè)很容易以為評(píng)論就是傳個(gè)評(píng)論給后臺(tái)就結(jié)束了。
業(yè)務(wù)一:評(píng)論后返回評(píng)論,就好比我們博客,當(dāng)你給某個(gè)人或者某個(gè)帖子評(píng)論完成后,你會(huì)直接看到你的評(píng)論,這就是后臺(tái)做的一系列業(yè)務(wù)
①比如評(píng)論只有帖子ID 和用戶ID 以及評(píng)論內(nèi)容傳入即可,但是你評(píng)論的時(shí)候評(píng)論是否會(huì)顯示出來,這個(gè)顯示是不是帶著你的用戶昵稱和頭像,此時(shí)評(píng)論A如果它的評(píng)論ID是數(shù)據(jù)庫自增的,此時(shí)是不是應(yīng)該數(shù)據(jù)庫做一個(gè)返回自增主鍵的相關(guān)配置,因?yàn)樵u(píng)論A的子評(píng)論再對(duì)這個(gè)評(píng)論,進(jìn)行評(píng)論的時(shí)候需要用到父級(jí)評(píng)論的ID。
在這里學(xué)到了兩種返回自增主鍵的方法。
業(yè)務(wù)二:互動(dòng)互動(dòng)互動(dòng),我們我可以看到我們給別人的評(píng)論和也可以看到別人給我們的,正是因?yàn)槿绱擞腥の覀儾拍芨L久的停留正在這個(gè)版塊,這里就是涉及到信息表
②消息表,關(guān)于社交圈板塊,在朋友圈是否別人給你你會(huì)收到這個(gè)信息,別人回復(fù)你的評(píng)論,你是不是可以查看到這個(gè)信息,這個(gè)就是有一個(gè)中間表,要記錄相關(guān)信息,在個(gè)人中心與我相關(guān)處可以查看到相關(guān)信息。所以一定要記得做這個(gè)業(yè)務(wù)操作。
好了今天就先整理到這里下一期關(guān)于社交圈版塊相關(guān)業(yè)務(wù)邏輯,等我想到了優(yōu)化的方案就再整理一期。
希望自己努力的成為一名熱愛產(chǎn)品的程序員!
The best investment is to invest in yourself.
2020.11.08 愿你們奔赴在自己的熱愛里!
小程序 數(shù)據(jù)庫
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。