[免費]【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts)【論文+源碼+SQL腳本】

大家好,我是python222_小鋒老師,看到一個不錯的【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts),分享下哈。

項目視頻演示

【免費】【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts+爬蟲) Python畢業設計_嗶哩嗶哩_bilibili

項目介紹

隨著社交媒體的快速發展,微博作為一種重要的公共信息平臺,承載著大量的社會輿論和民眾情感。如何有效地從微博平臺獲取并分析海量的輿情數據,成為了當前信息社會中的重要課題。本論文基于自然語言處理(NLP)技術,結合Flask、Pandas、ECharts和爬蟲技術,設計并實現了一套微博輿情分析可視化系統。

該系統首先利用Python中的爬蟲技術從微博平臺實時抓取相關輿情數據,包括微博內容、評論、轉發等信息。通過對抓取數據的清洗和預處理,使用Pandas進行數據分析,提取關鍵詞、情感傾向和輿情熱度等信息。接著,通過NLP技術對微博內容進行情感分析,識別出用戶的情感態度(如正面、負面、中立)。最后,系統使用ECharts進行數據的可視化展示,為用戶提供直觀、動態的輿情分析圖表,幫助決策者實時掌握輿情走向。

系統不僅能夠有效地獲取和分析微博上的實時輿情信息,還提供了良好的交互性和可操作性,用戶可以根據需要進行輿情趨勢分析、情感分布展示及關鍵詞云等操作。通過對實際案例的分析驗證,系統具有較高的準確性和實用性,能夠幫助相關部門及時識別網絡輿論的動態變化,并做出相應的應對措施。

本論文的研究成果為基于Python的輿情分析系統提供了一種新的實現思路,具有廣泛的應用前景,尤其在公共事務管理、品牌輿情監控以及社會熱點事件的監測中具有重要的實際意義。

系統展示

部分代碼

import pandas as pd
from flask import Blueprint, render_template, jsonify, request
from snownlp import SnowNLPfrom dao import articleDao, commentDao
from util import wordcloudUtil, mapUtilpb = Blueprint('page', __name__, url_prefix='/page', template_folder='templates')@pb.route('/home')
def home():"""進入主頁面,獲取相應的數據,帶到頁面去:return:"""articleData = articleDao.get7DayArticle()xAxis7ArticleData = []yAxis7ArticleData = []for article in articleData:xAxis7ArticleData.append(article[0])yAxis7ArticleData.append(article[1])# 獲取帖子類別數量arcTypeData = []articleTypeAmountList = articleDao.getArticleTypeAmount()for arcType in articleTypeAmountList:arcTypeData.append({'value': arcType[1], 'name': arcType[0]})# 獲取top50評論用戶名top50CommentUserList = commentDao.getTopCommentUser()top50CommentUserNameList = [cu[0] for cu in top50CommentUserList]str = ' '.join(top50CommentUserNameList)wordcloudUtil.genWordCloudPic(str, 'comment_mask.jpg', 'comment_user_cloud.jpg')# 獲取7天評論數量commentData = []commentAmountList = commentDao.getCommentAmount()for comment in commentAmountList:commentData.append({'value': comment[1], 'name': comment[0]})return render_template('index.html',xAxis7ArticleData=xAxis7ArticleData,yAxis7ArticleData=yAxis7ArticleData,arcTypeData=arcTypeData,commentData=commentData)@pb.route('homePageData')
def getHomePageData():"""獲取主頁數據 ajax異步交互 前端每隔5分鐘請求一次 實時數據:return:"""totalArticle = articleDao.getTotalArticle()topAuthor = articleDao.getTopAuthor()topRegion = articleDao.getTopRegion()topArticles = articleDao.getArticleTopZan()return jsonify(totalArticle=totalArticle, topAuthor=topAuthor, topRegion=topRegion, topArticles=topArticles)@pb.route('hotWord')
def hotWord():"""熱詞分析統計:return:"""hotwordList = []# 只讀取前100條df = pd.read_csv('./fenci/comment_fre.csv', nrows=100)for value in df.values:hotwordList.append(value[0])# 獲取請求參數,如果沒有獲取到,給個默認值 第一個列表數據defaultHotWord = request.args.get('word', default=hotwordList[0])hotwordNum = 0  # 出現次數for value in df.values:if defaultHotWord == value[0]:hotwordNum = value[1]# 情感分析sentiments = ''stc = SnowNLP(defaultHotWord).sentimentsif stc > 0.6:sentiments = '正面'elif stc < 0.2:sentiments = '負面'else:sentiments = '中性'commentHotWordData = commentDao.getCommentHotWordAmount(defaultHotWord)xAxisHotWordData = []yAxisHotWordData = []for comment in commentHotWordData:xAxisHotWordData.append(comment[0])yAxisHotWordData.append(comment[1])commentList = commentDao.getCommentByHotWord(defaultHotWord)return render_template('hotWord.html',hotwordList=hotwordList,defaultHotWord=defaultHotWord,hotwordNum=hotwordNum,sentiments=sentiments,xAxisHotWordData=xAxisHotWordData,yAxisHotWordData=yAxisHotWordData,commentList=commentList)@pb.route('articleData')
def articleData():"""微博輿情分析:return:"""articleOldList = articleDao.getAllArticle()articleNewList = []for article in articleOldList:article = list(article)# 情感分析sentiments = ''stc = SnowNLP(article[1]).sentimentsif stc > 0.6:sentiments = '正面'elif stc < 0.2:sentiments = '負面'else:sentiments = '中性'article.append(sentiments)articleNewList.append(article)return render_template('articleData.html', articleList=articleNewList)@pb.route('articleDataAnalysis')
def articleDataAnalysis():"""微博數據分析:return:"""arcTypeList = []df = pd.read_csv('./spider/arcType_data.csv')for value in df.values:arcTypeList.append(value[0])# 獲取請求參數,如果沒有獲取到,給個默認值 第一個列表數據defaultArcType = request.args.get('arcType', default=arcTypeList[0])articleList = articleDao.getArticleByArcType(defaultArcType)xDzData = []  # 點贊x軸數據xPlData = []  # 評論x軸數據xZfData = []  # 轉發x軸數據rangeNum = 1000rangeNum2 = 100for item in range(0, 10):xDzData.append(str(rangeNum * item) + '-' + str(rangeNum * (item + 1)))xPlData.append(str(rangeNum * item) + '-' + str(rangeNum * (item + 1)))for item in range(0, 20):xZfData.append(str(rangeNum2 * item) + '-' + str(rangeNum2 * (item + 1)))xDzData.append('1萬+')xPlData.append('1萬+')xZfData.append('2千+')yDzData = [0 for x in range(len(xDzData))]  # 點贊y軸數據yPlData = [0 for x in range(len(xPlData))]  # 評論y軸數據yZfData = [0 for x in range(len(xZfData))]  # 轉發y軸數據for article in articleList:for item in range(len(xDzData)):if int(article[4]) < rangeNum * (item + 1):yDzData[item] += 1breakelif int(article[4]) > 10000:yDzData[len(xDzData) - 1] += 1breakif int(article[3]) < rangeNum * (item + 1):yPlData[item] += 1breakelif int(article[3]) > 10000:yPlData[len(xDzData) - 1] += 1breakfor article in articleList:for item in range(len(xZfData)):if int(article[2]) < rangeNum2 * (item + 1):yZfData[item] += 1breakelif int(article[2]) > 2000:yZfData[len(xZfData) - 1] += 1breakreturn render_template('articleDataAnalysis.html',arcTypeList=arcTypeList,defaultArcType=defaultArcType,xDzData=xDzData,yDzData=yDzData,xPlData=xPlData,yPlData=yPlData,xZfData=xZfData,yZfData=yZfData)@pb.route('commentDataAnalysis')
def commentDataAnalysis():"""微博評論數據分析:return:"""commentList = commentDao.getAllComment()xDzData = []  # 點贊X軸數據rangeNum = 5for item in range(0, 20):xDzData.append(str(rangeNum * item) + '-' + str(rangeNum * (item + 1)))xDzData.append('1百+')yDzData = [0 for x in range(len(xDzData))]  # 點贊y軸數據genderDic = {'男': 0, '女': 0}for comment in commentList:for item in range(len(xDzData)):if int(comment[4]) < rangeNum * (item + 1):yDzData[item] += 1breakelif int(comment[4]) > 100:yDzData[len(xDzData) - 1] += 1breakif genderDic.get(comment[8], -1) != -1:genderDic[comment[8]] += 1genderData = [{'name': x[0], 'value': x[1]} for x in genderDic.items()]# 只讀取前50條數據df = pd.read_csv('./fenci/comment_fre.csv', nrows=50)hotCommentwordList = [x[0] for x in df.values]str2 = ' '.join(hotCommentwordList)wordcloudUtil.genWordCloudPic(str2, 'comment_mask.jpg', 'comment_cloud.jpg')return render_template('commentDataAnalysis.html',xDzData=xDzData,yDzData=yDzData,genderData=genderData)@pb.route('articleCloud')
def articleCloud():"""微博內容詞云圖:return:"""# 只讀取前50條數據df = pd.read_csv('./fenci/article_fre.csv', nrows=50)hotArticlewordList = [x[0] for x in df.values]str2 = ' '.join(hotArticlewordList)wordcloudUtil.genWordCloudPic(str2, 'article_mask.jpg', 'article_cloud.jpg')return render_template('articleCloud.html')@pb.route('commentCloud')
def commentCloud():"""微博評論詞云圖:return:"""# 只讀取前50條數據df = pd.read_csv('./fenci/comment_fre.csv', nrows=50)hotCommentwordList = [x[0] for x in df.values]str2 = ' '.join(hotCommentwordList)wordcloudUtil.genWordCloudPic(str2, 'comment_mask.jpg', 'comment_cloud.jpg')return render_template('commentCloud.html')@pb.route('commentUserCloud')
def commentUserCloud():"""微博評論用戶詞云圖:return:"""# 獲取top50評論用戶名top50CommentUserList = commentDao.getTopCommentUser()top50CommentUserNameList = [cu[0] for cu in top50CommentUserList]str = ' '.join(top50CommentUserNameList)wordcloudUtil.genWordCloudPic(str, 'comment_mask.jpg', 'comment_user_cloud.jpg')return render_template('commentUserCloud.html')@pb.route('ipDataAnalysis')
def ipDataAnalysis():"""IP地址數據分析:return:"""cityDic = {}  # 微博文章作者IPcityList = mapUtil.cityListarticleList = articleDao.getAllArticle()for article in articleList:if article[5]:for city in cityList:if city['province'].find(article[5]) != -1:if cityDic.get(city['province'], -1) == -1:cityDic[city['province']] = 1else:cityDic[city['province']] += 1articleCityDicList = [{'name': x[0], 'value': x[1]} for x in cityDic.items()]cityDic2 = {}  # 微博評論作者IPcommentList = commentDao.getAllComment()for comment in commentList:if comment[3]:for city in cityList:if city['province'].find(comment[3]) != -1:if cityDic2.get(city['province'], -1) == -1:cityDic2[city['province']] = 1else:cityDic2[city['province']] += 1commentCityDicList = [{'name': x[0], 'value': x[1]} for x in cityDic2.items()]return render_template('ipDataAnalysis.html',articleCityDicList=articleCityDicList,commentCityDicList=commentCityDicList)@pb.route('sentimentAnalysis')
def sentimentAnalysis():"""輿情數據分析:return:"""xHotBarData = ['正面', '中性', '負面']yHotBarData = [0, 0, 0]# 只讀取前100條df = pd.read_csv('./fenci/comment_fre.csv', nrows=100)for value in df.values:# 情感分析stc = SnowNLP(value[0]).sentimentsif stc > 0.6:yHotBarData[0] += 1elif stc < 0.2:yHotBarData[2] += 1else:yHotBarData[1] += 1hotTreeMapData = [{'name': xHotBarData[0],'value': yHotBarData[0]}, {'name': xHotBarData[1],'value': yHotBarData[1]}, {'name': xHotBarData[2],'value': yHotBarData[2]}]commentPieData = [{'name': '正面','value': 0}, {'name': '中性','value': 0}, {'name': '負面','value': 0}]articlePieData = [{'name': '正面','value': 0}, {'name': '中性','value': 0}, {'name': '負面','value': 0}]commentList = commentDao.getAllComment()for comment in commentList:# 情感分析stc = SnowNLP(comment[1]).sentimentsif stc > 0.6:commentPieData[0]['value'] += 1elif stc < 0.2:commentPieData[2]['value'] += 1else:commentPieData[1]['value'] += 1articleList = articleDao.getAllArticle()for article in articleList:# 情感分析stc = SnowNLP(article[1]).sentimentsif stc > 0.6:articlePieData[0]['value'] += 1elif stc < 0.2:articlePieData[2]['value'] += 1else:articlePieData[1]['value'] += 1df2 = pd.read_csv('./fenci/comment_fre.csv', nrows=15)xhotData15 = [x[0] for x in df2.values][::-1]yhotData15 = [x[1] for x in df2.values][::-1]return render_template('sentimentAnalysis.html',xHotBarData=xHotBarData,yHotBarData=yHotBarData,hotTreeMapData=hotTreeMapData,commentPieData=commentPieData,articlePieData=articlePieData,xhotData15=xhotData15,yhotData15=yhotData15)
<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>用戶登錄</title><link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon"><link rel="stylesheet" href="/static/css/backend-plugin.min.css"><link rel="stylesheet" href="/static/css/backend.css">
</head>
<body class=" ">
<!-- loader Start -->
<div id="loading"><div id="loading-center"></div>
</div>
<!-- loader END --><div class="wrapper"><section class="login-content"><div class="container h-100"><div class="row align-items-center justify-content-center h-100"><div class="col-md-5"><div class="card p-3"><div class="card-body"><div class="auth-logo"><img src="/static/picture/logo.png" class="img-fluid  rounded-normal  darkmode-logo"alt="logo"><img src="/static/picture/logo-dark.png" class="img-fluid rounded-normal light-logo"alt="logo"></div><h3 class="mb-3 font-weight-bold text-center">用戶登錄</h3><div class="mb-5"><p class="line-around text-secondary mb-0"><spanclass="line-around-1">微博輿情分析管理系統</span></p></div><form><div class="row"><div class="col-lg-12"><div class="form-group"><label class="text-secondary">用戶名:</label><input class="form-control" id="username" name="username" type="text"placeholder="請輸入用戶名..."></div></div><div class="col-lg-12 mt-2"><div class="form-group"><div class="d-flex justify-content-between align-items-center"><label class="text-secondary">密碼:</label></div><input class="form-control" id="password" name="password" type="password"placeholder="請輸入密碼..."></div></div></div><button type="button" class="btn btn-primary btn-block mt-2" onclick="submitForm()">登錄</button><div class=" col-lg-12 mt-3"><p class="mb-0 text-center"><font id="info" color="red"></font>&nbsp;&nbsp;還沒有賬號?<ahref="/user/register">用戶注冊</a></p>  </div></form></div></div></div></div></div></section>
</div>
<script>function submitForm() {let username = $("#username").val()let password = $("#password").val()if (username == "") {$("#info").text("用戶名不能為空!")return false;}if (password == "") {$("#info").text("密碼不能為空!")return false;}$.post('/user/login', {'username': username,'password': password}, function (result) {if (result.error) {$("#info").text(result.info)} else {window.location.href = '/page/home';}})}
</script>
<!-- Backend Bundle JavaScript -->
<script src="/static/js/backend-bundle.min.js"></script>
<!-- Chart Custom JavaScript -->
<script src="/static/js/customizer.js"></script><script src="/static/js/sidebar.js"></script><!-- Flextree Javascript-->
<script src="/static/js/flex-tree.min.js"></script>
<script src="/static/js/tree.js"></script><!-- Table Treeview JavaScript -->
<script src="/static/js/table-treeview.js"></script><!-- SweetAlert JavaScript -->
<script src="/static/js/sweetalert.js"></script><!-- Vectoe Map JavaScript -->
<script src="/static/js/vector-map-custom.js"></script><!-- Chart Custom JavaScript -->
<script src="/static/js/chart-custom.js"></script>
<script src="/static/js/01.js"></script>
<script src="/static/js/02.js"></script><!-- slider JavaScript -->
<script src="/static/js/slider.js"></script><!-- Emoji picker -->
<script src="/static/js/index.js" type="module"></script><!-- app JavaScript -->
<script src="/static/js/app.js"></script>
</body>
</html>

源碼下載

鏈接:https://pan.baidu.com/s/1piPhytu4YuKRBPHva2RQQg
提取碼:1234

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

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

相關文章

什么是CI/CD?

CI/CD是持續集成&#xff08;Continuous Integration&#xff09;和持續交付/持續部署&#xff08;Continuous Delivery/Continuous Deployment&#xff09;的縮寫&#xff1a;持續集成&#xff08;Continuous Integration, CI&#xff09;&#xff1a;CI是一種開發實踐&#x…

【Linux】重生之從零開始學習運維之Mysql

一主一從主12主機準備工作mkdir -p /data/mysql/logbin chown -R mysql:mysql /data/mysql主節點mysql配置vim /etc/my.cnf.d/mysql-server.cnf server-id177 log_bin/data/mysql/logbin/mysql-bin default_authentication_pluginmysql_native_password查看效果systemctl resta…

Trust Management System (TMS)

Trust Management System &#xff08;TMS&#xff09;信托管理系統學習信托管理系統&#xff08;TMS&#xff09;是一種用于高效管理信托業務的綜合平臺&#xff0c;涵蓋客戶信息、資產配置、風險監控等功能。通過學習TMS&#xff0c;可以掌握信托產品設計、業務流程優化及合規…

Spring Boot中使用Bouncy Castle實現SM2國密算法(與前端JS加密交互)

Spring Boot中使用Bouncy Castle實現SM2國密算法&#xff08;與前端JS加密交互&#xff09;一、環境準備二、核心實現三、前后端交互流程四、關鍵問題解決方案五、常見問題排查六、最佳實踐建議在現代Web應用中&#xff0c;數據安全傳輸至關重要。SM2作為我國自主設計的非對稱加…

機器學習sklearn:隨機森林的決策樹

bg&#xff1a;對比決策樹來說&#xff0c;搞多幾棵樹就是隨機森林了rlf_1 [] rlf_2 [] for i in range(10):rfc RandomForestClassifier(n_estimators25)rfc_s cross_val_score(rfc, wine.data, wine.target, cv10).mean()rlf_1.append(rfc_s)clf DecisionTreeClassifier…

上海月賽kk

1.十六進制#include<bits/stdc.h> using namespace std;int n;int main(){cin>>n;stack<int>re;if(n<16)cout<<0;while(n){re.push(n%16);n/16;}while(!re.empty()){int xre.top();re.pop();if(x<10)cout<<x;else cout<<char(Ax-10)…

暑期算法訓練.12

目錄 52. 力扣1 兩數之和 52.1 題目解析&#xff1a; 52.2 算法思路&#xff1a; 52.3 代碼演示&#xff1a; ?編輯 52.4 總結反思&#xff1a; 53 面試題&#xff1a;判定是否互為字符重排 53.1 題目解析&#xff1a; 53.2 算法思路&#xff1a; 53.3 代碼演示&…

MySQL時間處理完全指南:從存儲到查詢優化

時間是數據庫中最活躍的數據維度之一&#xff0c;正確處理時間數據關系到系統穩定性、數據分析準確性和業務邏輯正確性。本文將深入剖析MySQL時間處理的完整知識體系。一、MySQL時間數據類型詳解1. 核心時間類型對比類型存儲空間范圍特性時區影響DATE3字節1000-01-01~9999-12-3…

Text2SQL 智能問答系統開發-預定義模板(二)

背景 在構建一個支持多輪對話的 Text2SQL 系統過程中&#xff0c;我完成了以下關鍵功能&#xff1a; 已完成 基礎 Text2SQL 功能實現 實現用戶輸入自然語言問題后&#xff0c;系統能夠自動生成 SQL 并執行返回結果。用戶交互優化 支持用戶通過補充信息對查詢進行調整&#xff0…

JavaScript 異步編程:Promise 與 async/await 詳解

一、Promise 1. 什么是 Promise&#xff1f; Promise 是 JavaScript 中用于處理異步操作的對象&#xff0c;它代表一個異步操作的最終完成&#xff08;或失敗&#xff09;及其結果值。 2. Promise 的三種狀態 ??Pending&#xff08;待定&#xff09;??&#xff1a;初始狀態…

OS架構整理

OS架構整理引導啟動部分bios bootloader區別啟動流程&#xff08;x86 BIOS 啟動&#xff09;&#xff1a;biosboot_loader3.切換進保護模式實模式的限制如何切換進保護模式加載kernel到內存地址1M加載內核映像文件elf一些基礎知識鏈接腳本與代碼數據段創建GDT表段頁式內存管理顯…

【WRF-Chem第二期】WRF-Chem有關 namelist 詳解

目錄namelist 選項&#xff1a;chem_opt 的選擇其他化學相關的 namelist 選項氣溶膠光學屬性與輸出邊界與初始條件配置&#xff08;氣體&#xff09;參考本博客詳細介紹 WRF-Chem有關 namelist 選項。 namelist 選項&#xff1a;chem_opt 的選擇 chem_opt 是什么&#xff1f;…

STM32-USART串口實現接收數據三種方法(1.根據\r\n標志符、2.空閑幀中斷、3.根據定時器輔助接收)

本章概述思維導圖&#xff1a;USART串口初始化配置串口初始化配置在&#xff08;STM32-USART串口初始化章節有詳細教程配置&#xff09;&#xff0c;本章不做講解直接代碼示例&#xff0c;本章重點在于串口實現接收數據三種方法&#xff1b;配置USART1串口接收初始化函數步驟&a…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 微博評論數據可視化分析-點贊區間折線圖實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解微博評論數據可視化分析-點贊區間折線圖實現…

Unity_SRP Batcher

SRP Batcher 全面解析&#xff1a;原理、啟用、優化與調試一、什么是 SRP Batcher&#xff1f;SRP Batcher 是 Unity Scriptable Render Pipeline&#xff08;URP、HDRP 或自定義 SRP&#xff09; 專屬的 CPU 渲染性能優化技術&#xff0c;核心目標是 減少材質切換時的 CPU 開銷…

詳解Vite 配置中的代理功能

在前端開發過程中&#xff0c;你可能經常會遇到一個頭疼的問題&#xff1a;當你在本地啟動的前端項目中調用后端接口時&#xff0c;瀏覽器控制臺會報出類似 “Access to fetch at ‘http://xxx’ from origin ‘http://localhost:3000’ has been blocked by CORS policy” 的錯…

理解梯度在神經網絡中的應用

梯度&#xff08;Gradient&#xff09;是微積分中的一個重要概念&#xff0c;廣泛應用于機器學習和深度學習中&#xff0c;尤其是在神經網絡的訓練過程中。下面將從梯度的基本概念、其在神經網絡中的應用兩個方面進行詳細介紹。一、梯度的基本概念 1.1 什么是梯度&#xff1f; …

WPF,按鈕透明背景實現MouseEnter

在幫手程序&#xff08;assister.exe&#xff09;中&#xff0c;可以點擊錄制按鈕&#xff0c;實現錄制用戶操作直接生成操作列表。而在彈出錄制按鈕的懸浮窗中&#xff0c;需要能夠拖動錄制按鈕放置在任意的位置&#xff0c;以免阻擋正常的窗口。具體功能是&#xff0c;當鼠標…

【抄襲】思科交換機DAI(動態ARP監控)配置測試

一.概述 1.DAI作用 ①.使用DAI&#xff0c;管理員可以指定交換機的端口為信任和非信任端口&#xff1a; 信任端口可以轉發任何ARP信息 非信任端口的ARP消息要進行ARP檢測驗證 ②.交換機執行如下的ARP驗證&#xff1a; 靜態ARP監控&#xff1a;為一個靜態的IP地址配置一個靜態AR…

在嵌入式系統或 STM32 平臺中常見的外設芯片和接口

在嵌入式系統或 STM32 平臺中常見的 外設芯片 或 模塊名稱&#xff0c;包括&#xff1a; &#x1f4fa; 顯示驅動&#xff08;如 ST7735、OTM8009A、NT35510&#xff09;&#x1f4f7; 攝像頭模組&#xff08;如 OV5640、OV9655、S5K5CAG&#xff09;&#x1f4be; Flash 存儲器…