Vue2+Element 封裝評論+表情功能

有需要的小伙伴直接拿代碼即可,不需要下載依賴,目前是初始版本,后期會進行代碼的優化。

評論組件如下:

創建?comment.vue 文件。

表情組件?VueEmoji.vue 在評論組件中使用。

<template><div class="comment"><div class="flex_box"><h2>評論 3508</h2><p>文明上網理性發言</p></div><div class="comment-header"><div class="header_children"><el-tooltip class="item" effect="dark" content="點我更換頭像" placement="top-start"><div @click="handleClick"><input type="file" style="display: none" @change="dealWithdAvatar" ref="avatar" /><el-avatar:src="avatarUrl? avatarUrl: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png'":size="40"></el-avatar></div></el-tooltip><el-input:placeholder="placeholderText"v-model="context"class="input"type="textarea"resize="none"size="mini"clearable:maxlength="contentLength"@focus="isShowSecReply(undefined)"></el-input></div><div class="header_btn"><!-- 表情 --><vue-emoji @chooseEmoji="chooseEmoji" :keyId="'context'"></vue-emoji><el-buttontype="primary"style="height: 40px"@click="addComment(articleId, undefined)">{{ buttonText }}</el-button></div></div><div class="comment-body" v-for="(item, index) in comments" :key="item._id + '' + index"><!-- 一級評論 --><div class="first-comment" v-if="index < morelist.index"><el-avatar :size="40" :src="item.avatarUrl"></el-avatar><div class="content"><!-- 一級評論用戶昵稱 --><h3>{{ item.username }}</h3><!-- 一級評論發布時間 --><span>{{ item.date }}</span><!-- 一級評論評論內容 --><p>{{ item.content }}</p><!-- 一級評論評論點贊 --><div class="comment-right"><!-- <iclass="el-icon-trophy"@click="giveALike(item, item._id)":class="item.favour.includes(userId) ? 'active' : ''"></i>{{ item.favour.length || 0 }} --><iclass="el-icon-chat-dot-round"@click="isShowSecReply(item._id)">回復</i><iclass="el-icon-delete"@click="deleteComment(item._id, undefined)"v-if="userId === item.userId">刪除</i></div><!-- 回復一級評論 --><div class="reply-comment" v-show="isShowSec === item._id"><el-input:placeholder="placeholderText"class="input"v-model.trim="replyContext":maxlength="contentLength"clearable></el-input><div class="flex_one_box"><!-- 表情 --><vue-emoji @chooseEmoji="chooseEmoji" :keyId="item._id" :layer="comments"></vue-emoji><el-buttontype="primary"size="mini"class="reply-button"@click="addComment(item._id, item.username)">回復</el-button></div></div><!-- 次級查看更多 --><div class="li_top" @click="changeChildrenMore" v-if="item.replyInfo?.length > childrenMorelist.clickIndex"><span style="color: rgb(21 66 231);">共100條評論</span><i class="el-icon-caret-bottom" v-show="!childrenMorelist.value"></i> <i class="el-icon-caret-top" v-show="childrenMorelist.value"></i></div><!-- 次級評論 --><ul v-infinite-scroll="load(item.replyInfo)" infinite-scroll-delay="200" style="overflow:auto" class="infinite_list"> <!-- === --><li class="second-comment" v-for="(reply, index) in item.replyInfo" :key="reply._id + '' + index"><!-- 次級評論頭像,該用戶沒有頭像則顯示默認頭像 --><template v-if="index < childrenMorelist.index"><el-avatar :size="40" :src="reply.avatarUrl"></el-avatar><div class="content"><!-- 次級評論用戶昵稱 --><h3>{{ reply.username }}</h3><!-- 次級評論評論時間 --><span>{{ reply.date }}</span><span class="to_reply">{{ reply.username }}</span>回復<span class="to_reply">{{ reply.replyName }}</span>:<p>{{ reply.content }}</p><!-- 次級評論評論點贊 --><div class="comment-right"><!-- <iclass="el-icon-trophy"@click="giveALike(reply, item._id)":class="reply.favour.includes(userId) ? 'active' : ''"></i>{{ reply.favour ? reply.favour.length : 0 }} --><iclass="el-icon-chat-dot-round"@click="isShowSecReply(reply._id)">回復</i><iclass="el-icon-delete"@click="deleteComment(item._id, reply._id)"v-if="userId === reply.userId">刪除</i></div><div class="reply-comment" v-show="isShowSec === reply._id"><el-input:placeholder="placeholderText"class="input"v-model.trim="replyContext":maxlength="contentLength"clearable></el-input><div class="flex_one_box"><!-- 表情 --><vue-emoji @chooseEmoji="chooseEmoji" :keyId="reply._id" :layer="item.replyInfo"></vue-emoji><el-buttontype="primary"size="mini"class="reply-button"@click="addComment(item._id, reply.username)">回復</el-button></div></div></div></template></li></ul></div></div></div><!-- 一級查看更多 --><el-button type="info" class="moreBtn" @click="changeMore" v-show="comments?.length > morelist.clickIndex">查看更多評論<i class="el-icon-caret-bottom" v-show="!morelist.value"></i> <i class="el-icon-caret-top" v-show="morelist.value"></i></el-button><!-- 暫無評論的空狀態 --><el-empty :description="emptyText" v-show="comments.length === 0"></el-empty></div>
</template>
<script>
export default {props: {articleId: {//評論所屬文章 idtype: String},emptyText: {// 評論為空的時候顯示的文字type: String,default: "期待你的評論!"},buttonText: {// 按鈕文字type: String,default: "評論"},contentLength: {// 評論長度type: Number,default: 150},placeholderText: {// 默認顯示文字type: String,default: "請輸入最多150字的評論..."}},data() {return {comments: [{_id: "first0", // 評論iddate: "2022.09.01", //創建日期username: "孤城浪人", //評論人userId: "1",avatarUrl:"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png", //頭像地址favour: ["1", "2", "3"], //點贊的用戶idcontent: "666", //評論內容replyInfo: [//回復的內容{_id: "sec0", // 當前此條回復的iddate: "2022.09.01", //創建日期replyName: "孤城浪人", //回復的對象username: "孤城浪人", //評論人userId: "1",favour: ["2", "3", "4"],avatarUrl:"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",content: "博主厲害了" //回復的內容}]},], // 獲取得到的評論context: "", // 評論內容replyContext: "", //一級評論回復isShowSec: "", //是否顯示次級回復框isClickId: "", //記錄點擊回復的評論iduserId: "1", // 瀏覽器指紋username: "孤城浪人", //你的用戶名firstIdx: 1,secIdx: 1,avatarUrl:"https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png",morelist: {index: '2',value: false,clickIndex: '2',},childrenMorelist: {index: '2',value: false,clickIndex: '2',},};},created() {// 獲取評論數據// this.getCommentList();},methods: {chooseEmoji(keyId,layer,val) {if(layer) {this.replyContext += val;return;}this.context += val;},changeMore() {this.morelist.value = !this.morelist.value;if(this.morelist.value) {this.morelist.index = '99999999';}else {this.morelist.index = '2';}},changeChildrenMore() {this.childrenMorelist.value = !this.childrenMorelist.value;if(this.childrenMorelist.value) {this.childrenMorelist.index = '99999999';}else {this.childrenMorelist.index = '2';}},load(list) {list += 2},// 喚起文件選擇handleClick() {this.$refs.avatar.click();},dealWithdAvatar(e) {const maxSize = 2 * 1024 * 1024;const file = Array.prototype.slice.call(e.target.files)[0];console.log(file);},// 獲取本篇文章所有評論async getCommentList() {try {this.comments = [];let id = "";if (this.articleId == "messageBoard") {id = "messageBoard";} else {id = this.articleId;}// 獲取某篇文章下的所有評論const res = await this.$api.getCommentsOfArticle({ id });this.comments = res.data.comments; //評論列表this.username = res.data.user?.username;this.avatarUrl = res.data.user?.avatarUrl;} catch (err) {this.$message.error(err);}},// 評論點贊giveALike(item, _id) {try {// 不允許同一個人重復點贊if (item.favour?.includes(this.userId)) {this.$message.info("您已經點過贊啦!");return;}//判斷是給一級評論點贊還是二級評論,只有二級評論會有replyNameif (item.replyName) {// 給二級評論點贊,向后臺提交數據} else {// 一級評論點贊,向后臺提交數據}item.favour.push(this.userId);} catch (err) {this.$message.error(err);}},isShowSecReply(id) {console.log("一級input獲取焦點");if (id) {this.isShowSec = id;if (this.isClickId === this.isShowSec) {this.isShowSec = "";} else {this.isShowSec = id;}this.isClickId = this.isShowSec;} else {this.isShowSec = this.isClickId = "";}},deleteComment(_id, replyId) {if (replyId) {// 刪除二級評論,提交請求到后端// 成功后從本地記錄中刪除該評論const temp = this.comments.find(item => item._id == _id).replyInfo;for (let i = 0; i < temp.length; i++) {if (temp[i]._id == replyId) {temp.splice(i, 1);break;}}} else {// 刪除一級評論,提交請求到后端// 成功后從本地記錄中刪除該評論for (let i = 0; i < this.comments.length; i++) {if (this.comments[i]._id == _id) {this.comments.splice(i, 1);}}}},async addComment(id, replyName) {let res = {};// 評論添加成功,返回的數據//本地更新評論列表if (replyName) {// 添加二級評論if (!this.replyContext) {this.$message.warning("評論或留言不能為空哦!");return;}// 模擬數據提交成功后返回數據res.data = {username: this.username,userId: this.userId,avatarUrl: this.avatarUrl,_id: "sec" + this.secIdx++, // 評論idreplyName,date: "2022.09.01", //創建日期favour: [], //點贊的用戶idcontent: this.replyContext //評論內容};const comment = this.comments.find(item => item._id == id);if (!comment.replyInfo) {comment.replyInfo = [];}comment.replyInfo.push(res.data);this.replyContext = "";} else {// 添加一級評論,提交數據到后端if (!this.context) {this.$message.warning("評論或留言不能為空哦!");return;}// 模擬數據提交成功后返回數據res.data = {username: this.username,avatarUrl: this.avatarUrl,userId: this.userId,_id: "first" + this.firstIdx++, // 評論iddate: "2022.09.01", //創建日期articleId: this.articleId, // 評論的文章idfavour: [], //點贊的用戶idcontent: this.context //評論內容};this.comments.push(res.data);this.context = "";}this.isShowSec = this.isClickId = "";console.log("this.comments",this.comments);}}
};
</script><style lang="scss" scoped>
.comment {min-height: 26vh;border-radius: 5px;margin-top: 2px;overflow: hidden;h3 {margin: 5px 0;}p {margin: 3px 0;}ul {list-style-type: none;}.flex_box {display: flex;align-items: center;margin-bottom: 30px;h2 {margin: 0;}p {font-size: 16px;color: #666;margin: 0 0 0 20px;}}.active {color: rgb(202, 4, 4);}.comment-header {position: relative;// height: 50px;padding: 10px 5px;// display: flex;// align-items: center;.header_children {display: flex;align-items: center;}.header_btn {display: flex;align-items: center;justify-content: space-between;padding: 0 20px 0 51px;margin-top: 10px;}.input {margin-left: 10px;margin-right: 20px;flex: 1;font-size: 14px;::v-deep .el-input__inner:focus {border-color: #dcdfe6;}}}.comment-body {font-size: 14px;.first-comment {display: flex;padding: 10px 20px;.input {::v-deep.el-input__inner:focus {border-color: #dcdfe6;}}i {margin-right: 5px;margin-left: 1vw;cursor: pointer;&:nth-child(3) {color: rgb(202, 4, 4);}}.content {margin-left: 10px;position: relative;flex: 1;& > span {font-size: 12px;color: rgb(130, 129, 129);}.comment-right {position: absolute;right: 0;top: 0;}.reply-comment {// height: 60px;// display: flex;// align-items: center;.flex_one_box {display: flex;justify-content: space-between;align-items: center;margin-top: 10px;}.reply-button {margin-left: 20px;height: 35px;}}.li_top {width: 200px;cursor: pointer;padding-left: 50px;}.infinite_list {max-height: 333px;}.second-comment {display: flex;padding: 10px 0 10px 5px;border-radius: 20px;background: #ffffff;.to_reply {color: rgb(126, 127, 128);}}}}}.moreBtn {width: 100%;i {font-size: 16px;}}::-webkit-scrollbar{width: 5px;height: 5px;background-color: #F5F5F5;}/*定義滾動條軌道 內陰影+圓角*/::-webkit-scrollbar-track{-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);border-radius: 10px;background-color: #F5F5F5;}/*定義滑塊 內陰影+圓角*/::-webkit-scrollbar-thumb{border-radius: 10px;-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);background-color: #555;}
}
</style>

表情組件如下:

1. 創建?VueEmoji.vue 文件。

<template><div class="emoji"><ul class="emoji-default" v-show="isShowEmoji"><li v-for="(item, index) in emojiJson" :key="index"@click.stop="chooseEmojiDefault(item)">{{item}}</li></ul><div class="emoji-tabs"><div :class="!isShowEmoji ? 'emoji-tab' : 'new_tab'" @click="isShowEmoji = !isShowEmoji">{{ isShowEmoji ? '收起' : emojiJson[4]}}</div></div></div>
</template><script>const emojiJson = require("../utils/emoji.json");export default {props: {keyId: {type: String,required: false},layer: {type: Array || Object,required: false}},data() {return {emojiJson: emojiJson.data.split(','),isShowEmoji: false,}},methods: {chooseEmojiDefault(item) {console.log("item",item);this.$emit("chooseEmoji",this.keyId,this.layer,item);this.isShowEmoji = false;}}
}</script><style lang="scss" scoped>
// 縱向滾動條
@mixin scroll-bar($width: 10px) {&::-webkit-scrollbar-track {border-radius: 10px;background-color: #ffffff;}&::-webkit-scrollbar {width: $width;height: 10px;background-color: #ffffff;}&::-webkit-scrollbar-thumb {border-radius: 10px;background-color: rgba(0, 0, 0, 0.2);}
}.emoji {text-align: left;// width: 100%;// height: 100%;background: #fff;// border: 1px solid #dcdfe6;box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);.emoji-tabs {// border-top: 1px solid #DCDFE6;background: #f8f8f8;.emoji-tab {cursor: pointer;background: #ffffff;/* height: 100%; *//* padding: 5px 5px; *//* overflow: hidden; */text-align: center;/* line-height: 15px; */font-size: 25px}.new_tab {cursor: pointer;font-size: 14px;color: #1c33e5;text-align: center;padding: 5px 0;}}.emoji-default {width: calc(100% - 40px);height: 202px;overflow-y: auto;@include scroll-bar();padding: 0px 20px;li {display: inline-block;padding: 5px;font-size: 24px;width: 29px;height: 29px;overflow: hidden;cursor: pointer;}li:hover {background-color: #d5d5d5;}}
}</style>

2. 在寫公共方法的地方創建?emoji.json 文件,里面是表情的數據,內容如下:

{"data": "😀,😁,😂,😃,😄,😅,😆,😉,😊,😋,😎,😍,😘,😗,😙,😚,😇,😐,😑,😶,😏,😣,😥,😮,😯,😪,😫,😴,😌,😛,😜,😝,😒,😓,😔,😕,😲,😷,😖,😞,😟,😤,😢,😭,😦,😧,😨,😬,😰,😱,😳,😵,😡,😠,💘,?,💓,💔,💕,💖,💗,💙,💚,💛,💜,💝,💞,💟,?,💪,👈,👉,?,👆,👇,?,?,👌,👍,👎,?,👊,👋,👏,👐,?,🍇,🍈,🍉,🍊,🍋,🍌,🍍,🍎,🍏,🍐,🍑,🍒,🍓,🍅,🍆,🌽,🍄,🌰,🍞,🍖,🍗,🍔,🍟,🍕,🍳,🍲,🍱,🍘,🍙,🍚,🍛,🍜,🍝,🍠,🍢,🍣,🍤,🍥,🍡,🍦,🍧,🍨,🍩,🍪,🎂,🍰,🍫,🍬,🍭,🍮,🍯,🍼,?,🍵,🍶,🍷,🍸,🍹,🍺,🍻,🍴,🌹,🍀,🍎,💰,📱,🌙,🍁,🍂,🍃,🌷,💎,🔪,🔫,🏀,?,?,👄,👍,🔥,🙈,🙉,🙊,🐵,🐒,🐶,🐕,🐩,🐺,🐱,😺,😸,😹,😻,😼,😽,🙀,😿,😾,🐈,🐯,🐅,🐆,🐴,🐎,🐮,🐂,🐃,🐄,🐷,🐖,🐗,🐽,🐏,🐑,🐐,🐪,🐫,🐘,🐭,🐁,🐀,🐹,🐰,🐇,🐻,🐨,🐼,🐾,🐔,🐓,🐣,🐤,🐥,🐦,🐧,🐸,🐊,🐢,🐍,🐲,🐉,🐳,🐋,🐬,🐟,🐠,🐡,🐙,🐚,🐌,🐛,🐜,🐝,🐞,🦋,😈,👿,👹,👺,💀,?,👻,👽,👾,💣"
}

在 Vue 文件中使用,如下:

<template><div><comment :buttonText="'發表評論'"/></div>
</template>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14363.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《主對角線求和》

描述 有一個n行n列的二維數組&#xff0c;請你求出二維數組的主對角線上的所有數字的和是多少。 輸入描述 第一行一個整數n&#xff0c;代表下面輸入的是n行n列(2≤n≤10)的二維數組&#xff1b; 接下來n行&#xff0c;每行n列&#xff0c;表示二維數組的每個元素各是多少。 …

數字孿生技術在管理中有哪些實際應用?

隨著科學技術的不斷提高&#xff0c;數字孿生技術也在不斷的從理論應用至現實&#xff0c;并且涉及領域較為廣泛。 在生產運營管理層面&#xff0c;通過構建數字孿生模型&#xff0c;企業可以精準模擬和優化生產線&#xff0c;實現生產流程的智能化和高效化。比如&#xff0c;…

TypeScript-搭建編譯環境

搭建編譯環境 TypeScript 編寫的代碼是無法直接在js引擎( 瀏覽器 / Nodejs )中運行的&#xff0c;最終還需要經過編譯成js代碼才可以正常運行 搭建手動編譯環境 1?? 全局安裝 typescript 包&#xff08;編譯引擎&#xff09; -> 注冊 tsc 命令 npm i -g typescript 2…

下拉框操作/鍵鼠操作/文件上傳

在我們做UI自動化測試的時候&#xff0c;會有一些元素需要特殊操作&#xff0c;比如下拉框操作/鍵鼠操作/文件上傳。 下拉框操作 在我們很多頁面里有下拉框的選擇&#xff0c;這種元素怎么定位呢&#xff1f;下拉框分為兩種類型&#xff1a;我們分別針對這兩種元素進行定位和…

2024最新 Jenkins + Docker 實戰教程(五)- 配置Gitee Webhooks實現自動構建部署

&#x1f604; 19年之后由于某些原因斷更了三年&#xff0c;23年重新揚帆起航&#xff0c;推出更多優質博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有堅忍不拔之志 &#x1f390; 個人CSND主頁——Mi…

Packet Tracer-HSRP+DHCPv4+VLAN間路由+以太通道綜合實驗

實驗拓撲&#xff1a; 實驗內容&#xff1a; VLAN及VLAN間路由的配置&#xff0c;以太通道的配置&#xff0c;STP的根調整&#xff0c;DHCPv4的配置&#xff0c;首跳冗余HSRP的配置。 實驗最終結果&#xff1a; PC可以自動獲取到DHCP-Server分配的IP地址&#xff0c;實現首跳…

【Sentinel】Sentinel配置zk持久化

代碼 import cn.hutool.core.util.StrUtil; import com.alibaba.csp.sentinel.datasource.ReadableDataSource; import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource; import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule; import com.a…

信息系統工程師--八大績效域-交付績效域

信息系統工程師的八大績效域包括&#xff1a;干系人、團隊、開發方法和生命周期、項目工作、規劃、交付、度量、不確定性。 預期目標 1、項目有助于實現業務目標和戰略 2、項目實現了預期成果 3、在預定時間內實現了項目收益 4、項目團隊對需求有清晰的理解 5、干系人接受…

GitLab的原理及應用詳解(五)

本系列文章簡介: 隨著軟件開發的不斷進步和發展,版本控制系統成為了現代軟件開發過程中不可或缺的一部分。而GitLab作為其中一種流行的版本控制工具,在軟件開發領域享有廣泛的應用。GitLab不僅提供了強大的版本控制功能,還集成了項目管理、持續集成和部署、代碼審查等多個功…

web學習筆記(五十七)

目錄 1. 面試題總結 1.1 public和assets區別 1.2 vite的作用 1.3 vue單頁面應用 1.4 組件分為兩種類型&#xff1a; 1.5 App.vue文件 1.6 main.js 1.7 vue2中為什么不能直接監聽到數組的改變&#xff1f; 2. .vue頁面的組成 3. ref 響應式數據 1. 面試題總結 1.1…

Web3革命:探索科技與物聯網的無限可能

引言 Web3時代正在悄然而至&#xff0c;帶來了對互聯網的徹底顛覆和改變。作為互聯網的下一代&#xff0c;Web3不僅是技術革新的延續&#xff0c;更是對傳統互聯網模式的重新構想。在這個新時代&#xff0c;科技與物聯網的結合將迎來無限的可能性&#xff0c;將探索到一片全新…

iOS系統故障怎么辦?這三種蘋果手機系統修復方法你一定要知道

隨著蘋果手機使用時間越長&#xff0c;蘋果手機有時也會出現系統問題&#xff0c;如卡頓、崩潰、無法啟動等。這些問題不僅影響用戶的使用體驗&#xff0c;還可能導致數據丟失。因此&#xff0c;掌握蘋果手機系統修復方法顯得尤為重要。本文將詳細介紹蘋果手機系統修復的常見方…

Leetcode 3153. Sum of Digit Differences of All Pairs

Leetcode 3153. Sum of Digit Differences of All Pairs 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3153. Sum of Digit Differences of All Pairs 1. 解題思路 這一題的話只需要統計一下每一個位上0-9各自出現了多少次即可。 然后&#xff0c;對于每一位&#xff0c;答…

數倉領域,Serving 是什么概念?

在數據倉庫&#xff08;Data Warehouse&#xff09;和更廣泛的數據工程領域中&#xff0c;“Serving”通常指的是將處理和優化后的數據提供給最終用戶或應用程序的過程。這包括數據的查詢、檢索、展示等操作&#xff0c;使得數據能夠在決策支持、報告、分析、或機器學習等應用中…

大模型之Ollama:在本地機器上釋放大型語言模型的強大功能

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

實戰Java虛擬機-實戰篇

一、內存調優 1.內存溢出和內存泄漏 內存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一個對象&#xff0c;但是該對象依然在GC ROOT的引用鏈上&#xff0c;這個對象就不會被垃圾回收器回收&#xff0c;這種情況就稱之為內存泄漏。內存泄漏絕大…

一番賞小程序開發,為玩家帶來線上抽賞魅力

隨著人們對娛樂消費的增加&#xff0c;以及二次元文化的快速發展&#xff0c;以動漫IP為主的一番賞受到了越來越多的年輕人關注&#xff0c;一番賞市場迎來了黃金發展期&#xff01; 一番賞的運營模式是以“限量”為主&#xff0c;不管什么商品數量都是有限的&#xff0c;因此…

微軟剛發布的Copilot+PC為什么讓Intel和AMD尷尬?2024 AI PC元年——產業布局及前景展望

美國東部時間5月20日在微軟位于華盛頓的新園區舉行的發布會上&#xff0c;宣布將旗下AI助手Copilot全面融入Windows系統&#xff0c;能夠在不調用云數據中心的情況下處理更多人工智能任務。 “將世界作為一個提示詞就從Windows系統開始”。微軟的新PC將是“CopilotPC”&#xf…

[Algorithm][回溯][記憶化搜索][最長遞增子序列][猜數字大小Ⅱ][矩陣中的最長遞增路徑]詳細講解

目錄 1.最長遞增子序列1.題目鏈接2.算法原理詳解3.代碼實現 2.猜數字大小 II1.題目鏈接2.算法原理詳解3.代碼實現 3.矩陣中的最長遞增路徑1.題目鏈接2.算法原理詳解3.代碼實現 1.最長遞增子序列 1.題目鏈接 最長遞增子序列 2.算法原理詳解 題目解析&#xff1a;從每個位置&am…

內部類知識點

什么是內部類&#xff1f; 內部類何時出現&#xff1f;B類是A類的一部分&#xff0c;且B單獨存在無意義 內部類分類 成員內部類&#xff1a; 當內部類被private修飾后&#xff0c;不能用方法2 調用外部類成員變量 內部類里面有隱藏的outer this來記錄 靜態內部類 創建對象&…