分别用 语言模型雏形N-Gram 和 文本表示BoW词袋 来实现文本情绪分类
语言模型的雏形 N-Gram 和简单文本表示 Bag-of-Words
语言表示模型简介
(1) Bag-of-Words (BoW)
是什么?
- *定义:将文本表示为词频向量,忽略词序和语法,仅记录每个词的出现次数。
**示例:- 句子1:I love cats and cats love me.
- 句子2:Dogs love me too.
- 词表:[“I”, “love”, “cats”, “and”, “me”, “dogs”, “too”]`
- BoW向量:
句子1 :[1, 2, 2, 1, 1, 0, 0]
句子2 :[0, 1, 0, 0, 1, 1, 1]
为什么需要?
- 简单高效:适合早期文本分类(如垃圾邮件识别、情感分析)。
- 可解释性强:词频直接反映文本主题。
- 局限性:
- 忽略词序 “猫吃鱼” “鱼吃猫" 向量表示在词袋表示中相同
- 高维稀疏(词表大时向量维度爆炸)。
(2) N-Gram
是什么?
- 定义:将文本分割为连续的N个词(或字符)组成的片段,捕捉局部上下文。
示例(N=2):- 句子:“I love cats”
- Bigrams(2-grams):[“I love”, “love cats”]`
- Trigrams(3-grams):[“I love cats”]`
为什么需要?
- 捕捉局部词序:比BoW更细致,能表达短语(如)。
- 建模上下文:通过统计N-Gram概率预测下一个词(语言模型)。
- 局限性:
- 数据稀疏性(长N-Gram在训练集中可能未出现)。
- 无法建模远距离依赖(如段落级关系)。
2. 项目实战:BoW与N-Gram的文本分类
任务目标
用BoW和Bigram特征对电影评论进行情感分类(正/负面),并比较效果。
代码实现
环境准备
pip install numpy scikit-learn nltk
数据集
使用简单的自定义数据集(实际项目可用IMDB数据集):
# 自定义数据:0为负面,1为正面
texts = ["I hate this movie", # 0"This film is terrible", # 0"I love this wonderful film",# 1"What a great movie", # 1
]
labels = [0, 0, 1, 1]
步骤1:Bag-of-Words特征提取
from sklearn.feature_extraction.text import CountVectorizer# 创建BoW向量器
bow_vectorizer = CountVectorizer()
bow_features = bow_vectorizer.fit_transform(texts)print("BoW特征词表:", bow_vectorizer.get_feature_names_out())
print("BoW特征矩阵:\n", bow_features.toarray())
输出:
BoW特征词表: ['film' 'great' 'hate' 'is' 'love' 'movie' 'terrible' 'this' 'what' 'wonderful']
BoW特征矩阵:
[[0 0 1 0 0 1 0 1 0 0][1 0 0 1 0 0 1 1 0 0][1 0 0 0 1 0 0 1 0 1][0 1 0 0 0 1 0 0 1 0]]
步骤2:Bigram特征提取
from sklearn.feature_extraction.text import CountVectorizer# 创建Bigram向量器(N=2)
bigram_vectorizer = CountVectorizer(ngram_range=(2, 2))
bigram_features = bigram_vectorizer.fit_transform(texts)print("Bigram特征词表:", bigram_vectorizer.get_feature_names_out())
print("Bigram特征矩阵:\n", bigram_features.toarray())
输出:
Bigram特征词表: ['film is' 'hate this' 'is terrible' 'love this' 'terrible this'
'this movie' 'this wonderful' 'what great' 'wonderful film']
Bigram特征矩阵:
[[0 1 0 0 0 1 0 0 0][1 0 1 0 0 0 0 0 0][0 0 0 1 0 0 1 0 1][0 0 0 0 0 0 0 1 0]]
步骤3:训练分类模型
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split# 划分训练集和测试集(此处仅演示,数据量小直接训练)
X_train_bow, X_test_bow = bow_features, bow_features # 实际需划分
X_train_bigram, X_test_bigram = bigram_features, bigram_features
y_train, y_test = labels, labels# 训练BoW模型
model_bow = MultinomialNB()
model_bow.fit(X_train_bow, y_train)
print("BoW模型准确率:", model_bow.score(X_test_bow, y_test))# 训练Bigram模型
model_bigram = MultinomialNB()
model_bigram.fit(X_train_bigram, y_train)
print("Bigram模型准确率:", model_bigram.score(X_test_bigram, y_test))
输出:
BoW模型准确率: 1.0
Bigram模型准确率: 1.0
# 自定义数据:0为负面,1为正面
texts = ["I hate this movie", # 0"This film is terrible", # 0"I love this wonderful film",# 1"What a great movie", # 1"I dislike this film", # 0"This movie is amazing", # 1"I enjoy this film", # 1"This film is awful", # 0 "I adore this movie", # 1"This film is fantastic", # 1"I loathe this movie", # 0"This movie is boring", # 0"I appreciate this film", # 1"This film is dreadful", # 0"I cherish this movie", # 1"This film is mediocre", # 0"I detest this movie", # 0"This film is superb", # 1"I value this film", # 1"This movie is subpar", # 0"I respect this film", # 1"This film is excellent", # 1"I abhor this movie", # 0"This film is lackluster", # 0"I admire this film", # 1"This movie is unsatisfactory", # 0"I relish this film", # 1"This film is remarkable", # 1"I scorn this movie", # 0"This film is outstanding", # 1"I disapprove of this film", # 0"This movie is unremarkable", # 0"I treasure this film", # 1"This film is commendable", # 1"I find this movie distasteful", # 0"This film is praiseworthy", # 1"I think this movie is substandard", # 0"This film is noteworthy", # 1"I consider this movie to be poor", # 0"This film is exceptional", # 1"I feel this movie is inadequate", # 0"This film is extraordinary", # 1"I regard this movie as unsatisfactory", # 0"This film is phenomenal", # 1"I perceive this movie as disappointing", # 0"This film is stellar", # 1"I think this movie is mediocre" # 0
]
labels = [0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1,0, 0, 1,1, 0,1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0,1, 0, 1,0,1,0,1,0,1,0,1,0]
print("文本数据:", len(texts), "条")
print("label:", len(labels), "条")
# 导入所需库
from sklearn.feature_extraction.text import CountVectorizer
# 创建BoW向量器
bow_vectorizer = CountVectorizer()
bow_features = bow_vectorizer.fit_transform(texts)print("BoW特征词表:", bow_vectorizer.get_feature_names_out())
print("BoW特征矩阵:\n", bow_features.toarray())# 创建Bigram向量器(N=2)
bigram_vectorizer = CountVectorizer(ngram_range=(2, 2))
bigram_features = bigram_vectorizer.fit_transform(texts)print("Bigram特征词表:", bigram_vectorizer.get_feature_names_out())
print("Bigram特征矩阵:\n", bigram_features.toarray())from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split# 划分训练集和测试集(此处仅演示,数据量小直接训练)
train_test_split = 0.8
train_len = int(len(texts) * train_test_split)X_train_bow, X_test_bow = bow_features[:train_len], bow_features[train_len:] # 实际需划分
X_train_bigram, X_test_bigram = bigram_features[:train_len], bigram_features[train_len:]
y_train, y_test = labels[:train_len], labels[train_len:]# 训练BoW模型
model_bow = MultinomialNB()
model_bow.fit(X_train_bow, y_train)
print("BoW模型准确率:", model_bow.score(X_test_bow, y_test))# 训练Bigram模型
model_bigram = MultinomialNB()
model_bigram.fit(X_train_bigram, y_train)
print("Bigram模型准确率:", model_bigram.score(X_test_bigram, y_test))
3. 项目扩展与思考
(1) 分析结果
- BoW:通过单个词区分情感(如
<font style="color:rgba(0, 0, 0, 0.9);">"hate"</font>
表示负面,<font style="color:rgba(0, 0, 0, 0.9);">"love"</font>
表示正面)。 - Bigram:捕捉短语(如
<font style="color:rgba(0, 0, 0, 0.9);">"terrible this"</font>
可能加强负面判断)。
(2) 改进方向
- 尝试更大的N(如Trigrams),观察是否过拟合。
- 使用TF-IDF代替词频,降低常见词的权重。
- 在真实数据集(如IMDB) 上测试效果。
4. 关键总结
- BoW:简单高效,适合基线模型,但忽略上下文。
- N-Gram:捕捉局部词序,但需权衡N的大小和稀疏性问题。
- 现代应用:两者仍用于轻量级任务(如快速原型),但深度模型(如RNN、Transformer)在复杂任务中更优。
相关文章:
分别用 语言模型雏形N-Gram 和 文本表示BoW词袋 来实现文本情绪分类
语言模型的雏形 N-Gram 和简单文本表示 Bag-of-Words 语言表示模型简介 (1) Bag-of-Words (BoW) 是什么? *定义:将文本表示为词频向量,忽略词序和语法,仅记录每个词的出现次数。 **示例: 句子1:I love …...
2_Spring【IOC容器中获取组件Bean】
Spring中IOC容器中获取组件Bean 实体类 //接口 public interface TestDemo {public void doSomething(); } // 实现类 public class HappyComponent implements TestDemo {public void doSomething() {System.out.println("HappyComponent is doing something...")…...
一次页面假死分析
现象:系统的几个功能若干次切换,页面假死,无反应 上图,不是每次切换都假死,但非常容易重现,每次页面假死都在getValidatorJSONInfo这个调用后 getValidatorJSONInfo调用已返回,但返回内容页面挂…...
WPS多级标题编号以及样式控制
WPS多级标题编号以及样式控制 上一篇:WPS自动生成图表目录以及样式控制 阅读提示:请先阅读完本篇内容再操作,避免出现其他错误。 初始样式: 1.1 步骤演示 说明:以3级目录为例 标题1样式:黑体,…...
方差是什么?
一、方差是什么? 方差(Variance)是概率论和统计学中衡量数据离散程度(即数据与平均值的偏离程度)的核心指标。 通俗理解:方差越大,数据越“分散”“波动大”;方差越小,数据越“集中”“稳定”。 二、方差的公式(以样本数据为例) 计算步骤: 第一步:求平均值 ( …...
Java核心API实战:从字符串到多线程全解析
Java常用API详解与代码实践 一、字符串处理类 1. String类 // 字符串基础操作 String str "Hello,Java!"; System.out.println(str.substring(7)); // 输出"Java!" System.out.println(str.indexOf("Java")); // 输出7// 正则表达式匹配 Str…...
低代码AI开发新趋势:Dify平台化开发实战
在人工智能快速发展的今天,AI应用的开发方式也在不断演变。从传统的手写代码到如今的低代码甚至零代码开发,技术的进步让更多的非专业开发者也能轻松上手。本文将带你走进Dify平台化开发的世界,探索如何通过这一强大的低代码AI开发平台&#…...
基于First Order Motion与TTS的AI虚拟主播系统全流程实现教程
前言:多模态虚拟主播的技术革命 在AI内容生成领域,虚拟主播技术正经历从2D到3D、从固定模板到个性化定制的跨越式发展。本文将深入解析如何通过Python技术栈构建支持形象定制与声音克隆的AI虚拟主播系统,涵盖从人脸建模到多模态融合的全流程…...
中科院自动化研究所通用空中任务无人机!基于大模型的通用任务执行与自主飞行
作者: Ji Zhao and Xiao Lin 单位:中科院自动化研究所 论文标题:General-Purpose Aerial Intelligent Agents Empowered by Large Language Models 论文链接:https://arxiv.org/pdf/2503.08302 主要贡献 硬件-软件协同设计框…...
DOM知识点
DOM(Document Object Model)即文档对象模型,是用于表示和操作HTML、XML文档的编程接口。以下是关于DOM的一些知识点总结: 基本概念 • DOM将文档解析为一个由节点(Node)组成的树形结构,每个节…...
设备预测性维护的停机时间革命:中讯烛龙如何用AI重构工业设备管理范式
在工业4.0的智能化浪潮中,非计划停机每年吞噬企业3%-8%的产值。中讯烛龙预测性维护系统通过多模态感知矩阵分布式智能体的创新架构,实现设备健康管理的范式跃迁,帮助制造企业将停机时间压缩70%以上。本文将深度解析技术实现路径与行业级实践方…...
JMeter 教程:使用 HTTP 请求的参数列表发送 POST 请求(form 表单格式)
目录 ✅ 教程目的 🛠️ 准备工作 📄 操作步骤 第一步:新建测试计划 第二步:添加 HTTP 请求 第三步:添加参数列表(表单参数) 第四步:添加结果查看器 第五步:运行测…...
**HTTP/HTTPS基础** - URL结构(协议、域名、端口、路径、参数、锚点) - 请求方法(GET、POST) - 请求头/响应头 - 状态码含义
# HTTP/HTTPS基础知识点详解 ## 1. URL结构 ### 协议部分 - http:// - 超文本传输协议,明文传输 - https:// - 安全的超文本传输协议,使用SSL/TLS加密 - 爬虫注意点:HTTPS网站有TLS指纹(JA3指纹),可被用于检测爬虫 ### 域名部分…...
2025抓包工具Reqable手机抓包HTTPS亲测简单好用-快速跑通
前言 自安卓7.0高版本系统不在信任用户证书,https抓包方式市面查找方法太过复杂手机要root等,前置条件要求太高太复杂,看的头痛,今天一台电脑按步骤操作完即可抓包https,给大家搞定抓包https问题。支持直接编辑修改请求参…...
大模型在胫骨平台骨折预测及治疗方案制定中的应用研究
目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法和创新点 二、大模型预测胫骨平台骨折的原理和方法 2.1 相关大模型介绍 2.2 数据收集与预处理 2.3 模型训练与优化 2.4 模型评估指标 三、术前预测与手术方案制定 3.1 骨折类型和严重程度预测 3.…...
AI图像处理之ComfyUI节点(二)
一、Load Checkpoint节点 功能:用于加载预训练的大模型,如Stable Diffusion等 参数: chechkpoint:选择加载的模型文件(.ckpt或.satetensors格式) MODEL:输出用于图像扩散预测的UNet模型 CLIP&…...
异常日志规范
目录 一、错误码 二、异常处理 三、日志规约 一、错误码 强制: 1、错误码的制订原则:快速溯源、沟通标准化。 1)错误码必须能够快速知晓错误来源,可快速判断是谁的问题。 2)错误码必须能够清晰地比对(…...
pycharm连接github(详细步骤)
【前提:菜鸟学习的记录过程,如果有不足之处,还请各位大佬大神们指教(感谢)】 1.先安装git 没有安装git的小伙伴,看上一篇安装git的文章。 安装git,2.49.0版本-CSDN博客 打开cmd(…...
UESplineThicken节点
SplineThicken 函数用来使非常薄的多边形在渲染时显示为略厚。对于线缆、头发、草和其他此类对象,这种效果非常理想。 SplineThicken节点 该节点始终朝向摄像机 可以控制模型前后宽度 可以连接到wpo上制作特效效果 参考链接 https://dev.epicgames.com/document…...
【C++】map和set的使用
📌 个人主页: 孙同学_ 🔧 文章专栏:C 💡 关注我,分享经验,助你少走弯路 文章目录 1. 序列式容器和关联式容器1.1 序列式容器1.2 关联式容器 2. set系列的使用2.1 set和multiset的参考文档2.2 se…...
MCP实战:在扣子空间用扣子工作流MCP,一句话生成儿童故事rap视频
扣子最近迎来重要更新,支持将扣子工作流一键发布成MCP,在扣子空间里使用。 这个功能非常有用,因为我有很多业务工作流是在扣子平台上做的,两者打通之后,就可以在扣子空间里直接通过对话方式调用扣子工作流了࿰…...
c/c++的opencv直方图初识
C/C OpenCV中的图像直方图:零基础入门指南 📊 大家好!今天我们来聊聊图像处理中一个非常基础且重要的概念——直方图(Histogram)。如果你是OpenCV新手,或者对直方图感觉有点迷糊,别担心,这篇文章会用最简单…...
Spring Boot 与 RabbitMQ 的深度集成实践(一)
引言 ** 在当今的分布式系统架构中,随着业务复杂度的不断提升以及系统规模的持续扩张,如何实现系统组件之间高效、可靠的通信成为了关键问题。消息队列作为一种重要的中间件技术,应运而生并发挥着举足轻重的作用。 消息队列的核心价值在于其…...
Android动态音频柱状图可视化解析:从原理到实现
Android动态音频柱状图可视化解析:从原理到实现 一、整体架构设计二、核心组件设计三、核心代码实现四、交互设计与用户体验五、性能优化与问题解决一、整体架构设计 Android动态音频柱状图可视化解析 在移动应用开发中,音频可视化是增强用户体验的重要手段。无论是音乐播放器…...
vue3大事件项目
这周写完了vue3的大事件项目,从中学到了很多东西,并且解決了一部分bug,現在就和大家分享一下我遇到的问题并且是如何解決的 1. QuillEditor 的 v-model 用法错误 先讲一下quilleditor富文本的基本使用方法: 1.安裝quill依賴&am…...
MapReduce-WordCount实现按照value降序排序、字符小写、识别不同标点
要求: 输入文件的按照空格、逗号、点号、双引号等分词 输入文件的大写字母全部换成小写 文件输出要求按照value值降序排序 Hadoop给的wordcount示例代码以及代码理解 基于map reduce的word count个人理解:输入的文件经过map reduce框架处理后&#…...
c++线段树之单点修改区间最大子段和-----P4513 小白逛公园
题目大意 单点修改查询区间最大字段和 解题思路 如果线段树节点存储的是‘区间最大子段和’,如何合并? 简单的加法或求极值都不行,仔细分析可得,父节点最大字段和可能为: 左子树最大子段和右子树最大子段和左子树最…...
[Java实战]Spring Boot整合Elasticsearch(二十六)
[Java实战]Spring Boot整合Elasticsearch(二十六) 摘要:本文通过完整的实战演示,详细讲解如何在Spring Boot项目中整合Elasticsearch,实现数据的存储、检索和复杂查询功能。包含版本适配方案、Spring Data Elasticsea…...
【深度学习新浪潮】大模型在哪些垂域已经有比较好的落地?
AI大模型在多个垂直领域已实现显著落地,以下结合可验证案例与行业数据展开说明: 一、医疗健康:精准诊断与个性化治疗 呼吸系统疾病诊断 国家呼吸医学中心研发的LungDiag模型,基于公开临床数据集训练,在预印本研究中对肺炎、肺癌等10种疾病的辅助诊断准确率达92%。医联Med…...
软件测试全攻略:从概念到实践
目录 测试指南针--概念篇 1. 什么是软件测试? 2. 软件测试和软件开发的关系是什么? 3. 测试需要哪些能力? 4. 测试流程是什么样的? 5. 什么是单元测试和集成测试? 6. 软件的生命周期是什么样的? 需求…...
linux hungtask detect机制分析
1,机制概述 hungtask detect 是 Linux 内核用于检测长时间阻塞("hung")任务的机制,主要针对因死锁、死循环或资源竞争导致无法调度的任务 触发条件:任务在 TASK_UNINTERRUPTIBLE 状态持续超过预设阈值…...
影刀处理 Excel:智能工具带来的高效变革
1. 高效的数据处理能力 1.1 快速读取与写入数据 影刀在处理 Excel 数据时展现出显著的读取与写入速度优势。传统方法处理大型 Excel 文件时,读取速度可能仅为每秒 100 行左右,而影刀通过优化底层代码和采用高效的文件解析算法,读取速度可达…...
2021ICPC四川省赛个人补题ABDHKLM
Dashboard - The 2021 Sichuan Provincial Collegiate Programming Contest - Codeforces 过题难度: A K D M H B L 铜奖 5 594 银奖 6 368 金奖 8 755 codeforces.com/gym/103117/problem/A 模拟出牌的过程,打表即可 // Code Start Here int t…...
HarmonyOS 影视应用APP开发--配套的后台服务go-imovie项目介绍及使用
网上有小伙伴对影视应用感兴趣,也想搞个自己的免费观影APP玩玩儿。前期博主开源的有uniapp版本和harmonyOS原生版本影视客户端,但是对博主开源的这个影视后台接口服务不太了解,不知道怎么用起来。这里总结介绍下该go-imove后台接口服务项目介…...
JAVA SE 多线程(上)
文章目录 📕1. Thread类及常见方法✏️1.1 创建线程✏️1.2 Thread 的常见构造方法✏️1.3 Thread 的几个常见属性✏️1.4 启动一个线程---start()✏️1.5 中断一个线程---interrupt()✏️1.6 等待一个线程---join()✏️1.7 获取当前线程引用✏️1.8 休眠当前线程 &…...
基于Bootstrap 的网页html css 登录页制作成品
目录 前言 一、网页制作概述 二、登录页面 2.1 HTML内容 2.2 CSS样式 三、技术说明书 四、页面效果图 前言 Bootstrap是一个用于快速开发Web应用程序和网站的前端框架,由Twitter的设计师Mark Otto和Jacob Thornton合作开发。 它基于HTML、CSS和JavaScri…...
AUTOSAR图解==>AUTOSAR_SRS_Transformer
AUTOSAR Transformer 详解 基于AUTOSAR标准的Transformer组件技术解析 目录 1. AUTOSAR Transformer 概述 1.1 Transformer的作用1.2 Transformer在AUTOSAR中的位置2. Transformer架构设计 2.1 整体架构2.2 类结构设计2.3 交互流程3. Transformer类型与实现 3.1 SOME/IP Transf…...
iOS APP启动页及广告页的实现
iOS APP启动页及广告页的实现涉及UI布局、数据加载、倒计时控制、广告跳转等多个关键环节。以下是我的一些使用心得: 1. UI实现方案 双Window方案 原理:同时创建两个Window,主Window位于底层,广告Window覆盖在其上。通过切换mak…...
图绘Linux:基础指令脉络阁
目录 Linux命令行介绍 目录操作 ls 目录所含文件信息 ls 常用选项 pwd 在那个目录下 cd 进入目录 mkdir 创建目录 文件操作 touch 创建普通文件 echo向文件写入 cat 输出文件内容 cp 拷贝文件/目录 mv剪切重命名 rm 删除文件/目录 查找 * 匹配符 man 查找指令 …...
数字格式化库 accounting.js的使用说明
accounting.js 是一个用于格式化数字、货币和金额的轻量级库,特别适合财务和会计应用。以下是其详细使用说明: 安装与引入 通过 npm 安装: bash 复制 下载 npm install accounting 引入: javascript 复制 下载 const accounting …...
ngx_http_proxy_protocol_vendor_module 模块
一、前置要求 启用 PROXY 协议 在 listen 指令中添加 proxy_protocol 参数,例如: server {listen 80 proxy_protocol;listen 443 ssl proxy_protocol;… }商业订阅 本模块仅在 Nginx 商业版中提供。 二、示例配置 http {# 将 GCP 的 PSC 连接 ID 添…...
C++11-(2)
文章目录 (一)C11新增功能1.1 引用折叠1.1.1 在模板中使用引用折叠的场景1.1.2 引用折叠是如何实现的 1.2 完美转发1.3 lambda表达式语法1.3.1 定义1.3.2 lambda的使用场景1.3.3 捕捉列表1.3.4 mutable语法1.3.5 lambda的原理 (一)…...
LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项
LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项 第 一 题 - - - 移 除 元 素方 法 一 - - - 双 重 循 环方 法 二 - - - 双 指 针方 法 三 - - - 相 向 双 指 针(面 对 面 移 动) 第 二 题 - - -…...
QT6 源(106):阅读与注释重要的基类控件 QWidget,这是其精简版,完整注释版为篇 37
(1)原篇幅 37 为最开始整理,整理的不是太完善。重点不突出。故重新整理,但删除了大量的注释,重在突出本 QWidget类的内部逻辑,更易观察其包含了哪些内容。至于不理解的成员函数与属性,内容已不太…...
【Bluedroid】蓝牙HID DEVICE错误报告处理全流程源码解析
本文基于Android蓝牙协议栈代码,深入解析HID设备在接收非法指令(如无效的SET_REPORT)时的错误处理全流程,涵盖错误映射、协议封装、传输控制三大核心模块。重点剖析以下机制: HID协议规范错误码的动态转换策略 控制通…...
Day29 类的装饰器
类也有修饰器,他的逻辑类似:接收一个类,返回一个修改后的类。例如 添加新的方法或属性(如示例中的 log 方法)。修改原有方法(如替换 init 方法,添加日志)。甚至可以返回一个全新的类…...
学习黑客Active Directory 入门指南(二)
Active Directory 入门指南(二):深入逻辑结构与物理组件 🌳🏢 大家好!欢迎回到 “Active Directory 入门指南” 系列的第二篇。在上一篇中,我们初步认识了Active Directory,了解了其…...
为什么el-select组件在下拉选择后无法赋值
为什么el-select组件在下拉选择后无法赋值 https://blog.csdn.net/ZHENGCHUNJUN/article/details/127325558 这个链接解决了大模型无法解决的问题 大模型能够写基础且高级一些的代码,但是遇到再深入一些的问题,还是得问百度。对于我这种小白来说问题原因…...
FreeRTOS的学习记录(临界区保护,调度器挂起与恢复)
临界区 在 FreeRTOS 中,临界区(Critical Section) 是指程序中一段必须以原子方式执行的代码区域,在此区域内不允许发生任务切换或中断干扰,以保护共享资源或执行关键操作。FreeRTOS 提供了多种机制来实现临界区&#…...
给个人程序加上MCP翅膀
背景 最近MCP这个词真是到处都是,看起来特别高大上。我平时没事的时候也一直在关注这方面的技术,知道它是怎么一回事,也懂该怎么去实现。但可惜一直抽不出时间来自己动手搞一个MCP服务。网上关于MCP的教程一搜一大把,但基本上都是…...