当前位置: 首页 > news >正文

决策树的生成与剪枝

决策树的生成与剪枝

  • 决策树的生成
    • 生成决策树的过程
    • 决策树的生成算法
  • 决策树的剪枝
    • 决策树的损失函数
    • 决策树的剪枝算法
  • 代码

决策树的生成

生成决策树的过程

为了方便分析描述,我们对上节课中的训练样本进行编号,每个样本加一个ID值,如图所示:
在这里插入图片描述
从根结点开始生成决策树,先将上述训练样本(1-9)全部放在根节点中。

然后选择信息增益或信息增益比最大的特征向下分裂,按照所选特征取值的不同将训练样本分发到不同的子结点中。

例如所选特征有3个取值,则分裂出3个子结点,然后在子结点中重复上述过程,直到所有特征的信息增益(比)很小或者没有特征可选为止,完成决策树的构建,如下图所示:
在这里插入图片描述
图中的决策树共有2个内部结点和3个叶子结点,每个结点旁边的编号代表训练样本的 ID 值。内部结点代表样本的特征,叶子结点代表样本的预测类别,我们将叶子节点中训练样本占比最大的类作为决策树的预测标记。

在使用构建好的决策树在测试数据上分类时,只需要从根节点开始依次测试内部结点代表的特征即可得到测试样本的预测分类。

决策树的生成算法

下面我们先来总结一下 ID3分类决策树的生成算法:

输入:训练数据集 D 、特征集合 A 的信息增益阈值 ;输出:决策树 T

  1. 若 D 中的训练样本属于同一类,则 T 为单结点树,返回 D 中任意样本的类别。

  2. 若 A 中的特征为空,则 T 为单结点树,返回 D 中数量最多的类别。

  3. 使用信息增益在 A 中进行特征选择,若所选特征 A_i 的信息增益小于设定的阈值,则 T 为单结点树,返回 D 中数量最多的类别。

  4. 否则根据 A_i 的每一个取值,将 D 分成若干子集 D_i,将 D_i 中数量最多的类作为标记值,构建子结点,返回 T。

  5. 以 D_i 为训练集,{A - A_i} 为特征集,递归地调用上述步骤,得到子树 T_i,返回 T。

使用 C4.5 算法进行决策树的生成只需要将信息增益改成信息增益比即可。

决策树的剪枝

决策树的损失函数

决策树的叶子节点越多,模型越复杂。决策树的损失函数考虑了模型复杂度,我们可以通过优化其损失函数来对决策树进行剪枝。决策树的损失函数计算过程如下:

  1. 计算叶子结点 t 的样本类别经验熵
    在这里插入图片描述
    对于叶子结点 t 来说,其样本类别的经验熵越小, t 中训练样本的分类误差就越小。当叶子结点 t 中的训练样本为同一类别时,经验熵为零,分类误差为零。

  2. 计算决策树 T 在所有训练样本上的损失之和 C(T)
    在这里插入图片描述
    对于叶子结点 t 中的每一个训练样本,其类别标记都是随机变量 Y 的一个取值,这个取值的不确定性用信息熵来衡量,且可以用经验熵来估计。由上文可知,经验熵在一定程度上可以反映决策树在该样本上的预测损失,累加所有叶子结点上的训练样本损失即上图中的计算公式。

  3. 计算考虑模型复杂度的的决策树损失函数

在这里插入图片描述
决策树的叶子结点个数表示模型的复杂度,通过最小化上面的损失函数,一方面可以减少模型在训练样本上的预测误差,另一方面可以控制模型的复杂度,保证模型的泛化能力。

决策树的剪枝算法

  1. 计算决策树中每个结点的样本类别经验熵:
    在这里插入图片描述
    如上图所示,对于本课示例中的决策树,需要计算 5 个结点的经验熵。

  2. 遍历非叶子结点,剪枝相当于去除其子结点,自身变为叶子结点:

在这里插入图片描述
对于图中的非叶子结点(有工作?),剪枝后变为叶子结点,并通过多数表决的方法确定其类别标记。

以上就是这节课的所有内容了,实际上还有一种决策树算法:分类与回归树(classification and regression tree,简称 CART),它既可以用于分类也可以用于回归,同样包含了特征选择、决策树的生成与剪枝算法。

关于 CART 算法的内容,我们将在最后一章 XGBoost 中进行学习,下面请你来做一道关于信息增益比的题目,顺便回顾一下前面所学的知识

代码

## 1. 创建数据集import pandas as pd
data = [['yes', 'no', '青年', '同意贷款'],['yes', 'no', '青年', '同意贷款'],['yes', 'yes', '中年', '同意贷款'],['no', 'no', '中年', '不同意贷款'],['no', 'no', '青年', '不同意贷款'],['no', 'no', '青年', '不同意贷款'],['no', 'no', '中年', '不同意贷款'],['no', 'no', '中年', '不同意贷款'],['no', 'yes', '中年', '同意贷款']]# 转为 dataframe 格式
df = pd.DataFrame(data)
# 设置列名
df.columns = ['有房?', '有工作?', '年龄', '类别']## 2. 经验熵的实现from math import log2
from collections import Counter
def H(y):'''y: 随机变量 y 的一组观测值,例如:[1,1,0,0,0]'''# 随机变量 y 取值的概率估计值probs = [n/len(y) for n in Counter(y).values()]# 经验熵:根据概率值计算信息量的数学期望return sum([-p*log2(p) for p in probs])## 3. 经验条件熵的实现def cond_H(a):'''a: 根据某个特征的取值分组后的 y 的观测值,例如:[[1,1,1,0],[0,0,1,1]]每一行表示特征 A=a_i 对应的样本子集'''# 计算样本总数sample_num = sum([len(y) for y in a])# 返回条件概率分布的熵对特征的数学期望return sum([(len(y)/sample_num)*H(y) for y in a])## 4. 特征选择函数
def feature_select(df,feats,label):'''df:训练集数据,dataframe 类型feats:候选特征集label:df 中的样本标记名,字符串类型'''# 最佳的特征与对应的信息增益比best_feat,gainR_max = None,-1# 遍历每个特征for feat in feats:# 按照特征的取值对样本进行分组,并取分组后的样本标记数组group = df.groupby(feat)[label].apply(lambda x:x.tolist()).tolist()# 计算该特征的信息增益:经验熵-经验条件熵gain = H(df[label].values) - cond_H(group)# 计算该特征的信息增益比gainR = gain / H(df[feat].values)# 更新最大信息增益比和对应的特征if gainR > gainR_max:best_feat,gainR_max = feat,gainRreturn best_feat,gainR_max ## 5. 决策树的生成函数
import pickle
def creat_tree(df,feats,label):'''df:训练集数据,dataframe 类型feats:候选特征集,字符串列表label:df 中的样本标记名,字符串类型'''# 当前候选的特征列表feat_list = feats.copy()# 若当前训练数据的样本标记值只有一种if df[label].nunique()==1:# 将数据中的任意样本标记返回,这里取第一个样本的标记值return df[label].values[0]# 若候选的特征列表为空时if len(feat_list)==0:# 返回当前数据样本标记中的众数,各类样本标记持平时取第一个return df[label].mode()[0]# 在候选特征集中进行特征选择feat,gain = feature_select(df,feat_list,label)# 若选择的特征信息增益太小,小于阈值 0.1if gain<0.1:# 返回当前数据样本标记中的众数return df[label].mode()[0]# 根据所选特征构建决策树,使用字典存储tree = {feat:{}}# 根据特征取值对训练样本进行分组g = df.groupby(feat)# 用过的特征要移除feat_list.remove(feat)# 遍历特征的每个取值 ifor i in g.groups:# 获取分组数据,使用剩下的候选特征集创建子树tree[feat][i] = creat_tree(g.get_group(i),feat_list,label)# 存储决策树pickle.dump(tree,open('tree.model','wb'))return tree# 6. 决策树的预测函数
def predict(tree,feats,x):'''tree:决策树,字典结构feats:特征集合,字符串列表x:测试样本特征向量,与 feats 对应'''# 获取决策树的根结点:对应样本特征root = next(iter(tree))# 获取该特征在测试样本 x 中的索引i = feats.index(root)# 遍历根结点分裂出的每条边:对应特征取值for edge in tree[root]:# 若测试样本的特征取值=当前边代表的特征取值if x[i]==edge:# 获取当前边指向的子结点child = tree[root][edge]# 若子结点是字典结构,说明是一颗子树if type(child)==dict:# 将测试样本划分到子树中,继续预测return predict(child,feats,x)# 否则子结点就是叶子节点else:# 返回叶子节点代表的样本预测值return child## 7. 在样例数据上测试# 获取特征名列表
feats = list(df.columns[:-1])
# 获取标记名
label = df.columns[-1]
# 创建决策树(此处使用信息增益比进行特征选择)
T = creat_tree(df,feats,label)
# 计算训练集上的预测结果
preds = [predict(T,feats,x) for x in df[feats].values]
# 计算准确率
acc = sum([int(i) for i in (df[label].values==preds)])/len(preds)
# 输出决策树和准确率
print(T,acc)

相关文章:

决策树的生成与剪枝

决策树的生成与剪枝 决策树的生成生成决策树的过程决策树的生成算法 决策树的剪枝决策树的损失函数决策树的剪枝算法 代码 决策树的生成 生成决策树的过程 为了方便分析描述&#xff0c;我们对上节课中的训练样本进行编号&#xff0c;每个样本加一个ID值&#xff0c;如图所示…...

对象克隆与单例模式的实现

一、引言 在 C 编程中&#xff0c;对象克隆和单例模式是两个非常重要的概念。对象克隆可以帮助我们快速创建具有相同状态的对象副本&#xff0c;而单例模式则可以确保一个类只有一个实例&#xff0c;并提供全局访问点。本文将详细介绍 C 中如何实现对象的克隆以及单例模式。 …...

在 Linux 系统中,让 apt 使用 HTTP 代理

在 Linux 系统中&#xff0c;要让 apt 使用 HTTP 代理&#xff0c;有几种方法可以实现&#xff1a; ### 1. 临时设置代理 你可以通过设置环境变量来临时为 apt 命令设置代理。这种方法不需要修改任何配置文件&#xff0c;只需在命令行中设置环境变量即可。例如&#xff1a; …...

中国气象局:2024年第二批“气象数据要素×”典型案例(附下载)

11月25日&#xff0c;中国气象局通报2024年第二批“气象数据要素”典型案例。此次遴选充分结合首届“数据要素”大赛获奖案例&#xff0c;旨在进一步号召各级气象部门充分学习借鉴先进经验和做法&#xff0c;持续推动高价值气象数据产品开发利用&#xff0c;挖掘气象数据要素应…...

Android绘图Path基于LinearGradient线性渐变,Kotlin(1)

Android绘图Path基于LinearGradient线性渐变&#xff0c;Kotlin&#xff08;1&#xff09; import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.LinearGradient import android.graphics.Paint import and…...

基础入门-APP应用微信小程序原生态开发H5+Vue技术WEB封装打包反编译抓包点

知识点&#xff1a; 1、基础入门-APP应用-开发架构安全问题 2、基础入门-小程序应用-开发架构安全问题 通用&#xff1a; 1、反编译-得到源码-源码提取资产&#xff08;泄漏的配置信息&#xff09;-安全测试 2、抓包-资产-安全测试 一、演示案例-移动App-开发架构-原生&H…...

vue+ts提交数据时不提交(剔除)某项数据

关键代码 // 假设这是原始要提交的数据数组 const dataArray [{areaConfId: ,areaName: ,cityInfo: [],provinceList: [],cityList: []} ];// 使用map方法遍历数组中的每个对象&#xff0c;通过解构赋值和对象展开运算符去除cityInfo字段 const newDataArray dataArray.map…...

乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级

我国油田地域广阔&#xff0c;分布着大量各种油井&#xff0c;油井开采设备的连续稳定运行是保证石油开采的首要条件。然而&#xff0c;由于油田多位于特殊地理环境中&#xff0c;因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制&#xff0c;传统通信系统的建设…...

Jenkins搭建并与Harbor集成上传镜像

Jenkins介绍 Jenkins 是一个开源的自动化服务器&#xff0c;广泛用于持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;的实践中。它帮助开发人员自动化构建、测试和部署过程&#xff0c;从而提高开发效率、代码质量和项目交付速度。通过丰富的插件支持…...

FutureCompletableFuture实战

1. Callable&Future&FutureTask介绍 直接继承Thread或者实现Runnable接口都可以创建线程&#xff0c;但是这两种方法都有一个问题就是&#xff1a;没有返回值&#xff0c;也就是不能获取执行完的结果。因此java1.5就提供了Callable接口来实现这一场景&#xff0c;而Fu…...

Amazon与Shopee平台对比:跨境卖家如何选对平台打开市场?

在跨境电商领域&#xff0c;选择合适的平台对卖家能否成功打开市场至关重要。如今&#xff0c;Amazon和Shopee成为了众多卖家的热门选择。一个以全球化布局和高端市场著称&#xff0c;一个则专注东南亚新兴市场的潜力。两者各有优势&#xff0c;但也需要根据卖家的业务模式、目…...

【项目实战】redis实现websocket分布式消息推送服务

由于redis并非专业的MQ中间件&#xff0c;消息的防丢失策略并不完整&#xff0c;存在丢失消息的可能。该方案为在再pc web管理平台的右下角弹出&#xff0c;显示新接收到的消息数&#xff0c;哪怕没有收到这个通知&#xff0c;也可以自己在消息中心看看。所以对可靠性要求不高。…...

(自用)配置文件优先级、SpringBoot原理、Maven私服

配置优先级 之前介绍过SpringBoot中支持三类配置文件.properties、.yml和.yaml&#xff0c;他们三者之间也是有着优先级顺序的&#xff0c;为.properties➡.yml➡.yaml。 同时SpringBoot为了增强程序的拓展性&#xff0c;除了支持配置文件属性配置&#xff0c;还支持Java系统属…...

在windows系统中使用labelimg对图片进行标注之工具安装及简单使用

一.背景 还是之前的主题&#xff0c;使用开源软件为公司搭建安全管理平台&#xff0c;从视觉模型识别安全帽开始。我是从运行、训练、标注倒过来学习的。本次主要是学习标注工具labelimg的安装及简单使用。 二.下载 LabelImg是一款广受欢迎的开源图像标注工具&#xff0c;为计…...

数字图像处理技术期末复习

1. 已知图像的分辨率和深度&#xff0c;怎么求图像的存储空间&#xff08;位&#xff0c;字节&#xff0c;KB&#xff09;&#xff1f; 题目&#xff1a; 已知图像的分辨率和深度&#xff0c;怎么求图像的存储空间&#xff08;位&#xff0c;字节&#xff0c;KB&#xff09;&a…...

点云空洞的边界识别提取 pso-bp 神经网络的模型来修复点云空洞 附python代码

代码是一个Python程序,用于处理3D点云数据,特别是检测和修复点云中的孔洞区域。 1. **导入库**: - `numpy`:用于数学运算。 - `open3d`:用于处理3D数据和可视化。 - `torch`:PyTorch库,用于深度学习。 - `torch.nn`和`torch.optim`:PyTorch的神经网络和优…...

【AutoDL】通过【SSH远程连接】【vscode】

小帅碎碎念 0. 起因1. SSH信息获取2. 给你的vscode安装支持SSH远程连接的插件3. SSH远程连接入口4. 输入密码登陆5. 总结 0. 起因 之前使用AutoDL和Jupyter进行代码编辑和执行确实很方便&#xff0c;尤其是对于交互式数据分析项目。然而&#xff0c;也存在一些限制和不便之处&…...

ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程

本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…...

短链接服务

一 功能描述 1.短链接是将长连接转化为短连接使得链接变得美观清爽&#xff0c;让用户点击率更高&#xff0c;同时规避原始链接中一些关键词、域名屏蔽等问题&#xff0c;最终利用短链每次跳转都需要经过后端的特性&#xff0c;在跳转过程中做异步埋点&#xff0c;用于效果数据…...

【Vue3学习】setup语法糖中的ref,reactive,toRef,toRefs

在 Vue 3 的组合式 API&#xff08;Composition API&#xff09;中&#xff0c;ref、reactive、toRef 和 toRefs 是四个非常重要的工具函数&#xff0c;用于创建和管理响应式数据。 一、ref 用ref()包裹数据,返回的响应式引用对象&#xff0c;包含一个 .value 属性&#xff0…...

Halcon中dots_image(Operator)算子原理及应用详解

在HALCON中&#xff0c;dots_image算子是一个用于增强图像中圆点效果的强大工具&#xff0c;特别适合于点的分割&#xff0c;以及OCR&#xff08;光学字符识别&#xff09;应用程序中增强点状印刷字体。以下是对dots_image (ImageResult, DotImage, 5, ‘dark’, 2)算子原理及应…...

【C语言】库函数常见的陷阱与缺陷(四):内存内容操作函数[5]--memchr

C语言中的memchr函数用于在内存块中搜索一个特定的字符(实际上是unsigned char类型的值),并返回该字符第一次出现的指针。虽然这个函数在内存搜索中非常有用,但它也存在一些陷阱。 一、功能与用法 功能:memchr函数在指定的内存块中搜索第一次出现的特定字符,并返回一个…...

【P2P】【Go】采用go语言实现udp hole punching 打洞 传输速度测试 ping测试

服务器端 udpserver/main.go package mainimport ("fmt""net""sync""sync/atomic" )var (clientCounter uint64 0 // 客户端连接计数器mu sync.Mutex )func main() {addr, err : net.ResolveUDPAddr("udp", &q…...

【附源码】Electron Windows桌面壁纸开发中的 CommonJS 和 ES Module 引入问题以及 Webpack 如何处理这种兼容

背景 在尝试让 ChatGPT 自动开发一个桌面壁纸更改的功能时&#xff0c;发现引入了一个 wallpaper 库&#xff0c;这个库的入口文件是 index.js&#xff0c;但是 package.json 文件下的 type:"module"&#xff0c;这样造成了无论你使用 import from 还是 require&…...

【SpringBoot 调度任务】

在 Spring Boot 中实现调度任务&#xff08;Scheduled Tasks&#xff09;&#xff0c;通过使用 EnableScheduling 和 Scheduled 注解来完成。 添加依赖启用调度任务支持创建调度任务运行应用程序 添加依赖 pom.xml 文件中有以下依赖项&#xff1a; <dependency><gro…...

Android v4和v7冲突

android.useAndroidXtrue android.enableJetifiertruev4转成AndroidX...

【HarmonyOS之旅】HarmonyOS开发基础知识(一)

目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…...

【排序算法】——插入排序

目录 前言 简介 基本思想 1.直接插入排序 2.希尔排序 代码实现 1.直接插入排序 2.希尔排序 总结 1.时空复杂度 2.稳定性 尾声 前言 排序(Sorting) 是计算机程序设计中的一种重要操作&#xff0c;它的功能是将一个数据元素&#xff08;或记录&#xff09;的任意序列&…...

Vue todoList小项目记录

最初代码 简单搭一个vue2的小项目 App.vue <template><div id"app"><!-- 容器 --><div class"todo-container"><div class"todo-wrap"><!-- 头部 --><MyHeader :addTodo"addTodo"></…...

SQL题目笔记

一、根据需求创建表&#xff08;设计合理的数据类型、长度)...

电脑开机提示error loading operating system怎么修复?

前一天电脑还能正常运行&#xff0c;但今天启动时却显示“Error loading operating system”&#xff08;加载操作系统错误&#xff09;。我已经仔细检查了硬盘、接线、内存、CPU和电源&#xff0c;确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用&#xff0c;说明不是硬…...

Nginx 在不同操作系统下的安装指南

Nginx 在不同操作系统下的安装指南 一、Linux 系统下 Nginx 的安装 &#xff08;一&#xff09;基于 Ubuntu 系统 更新软件包列表 打开终端&#xff0c;首先执行sudo apt-get update命令。这一步是为了确保系统的软件包列表是最新的&#xff0c;能够获取到最新版本的 Nginx 及…...

景联文科技入选中国信通院发布的“人工智能数据标注产业图谱”

近日&#xff0c;由中国信息通信研究院、中国人工智能产业发展联盟牵头&#xff0c;联合中国电信集团、沈阳市数据局、保定高新区等70多家单位编制完成并发布《人工智能数据标注产业图谱》。景联文科技作为人工智能产业关键环节的代表企业&#xff0c;入选图谱中技术服务板块。…...

Nginx - 负载均衡及其配置(Balance)

一、概述 定义&#xff1a;在多个计算机&#xff08;计算机集群&#xff09;、网络连接、CPU、磁盘驱动器或其他资源中分配负载目标&#xff1a;最佳化资源使用、最大化吞吐率、最小化响应时间、避免过载功能&#xff1a;使用多台服务器提供单一服务&#xff08;服务器农场&am…...

MySQL存储引擎-存储结构

Innodb存储结构 Buffer Pool(缓冲池)&#xff1a;BP以Page页为单位&#xff0c;页默认大小16K&#xff0c;BP的底层采用链表数据结构管理Page。在InnoDB访问表记录和索引时会在Page页中缓存&#xff0c;以后使用可以减少磁盘IO操作&#xff0c;提升效率。 ○ Page根据状态可以分…...

数据资产入表 解锁智慧城市新潜力

在21世纪的科技浪潮中&#xff0c;智慧城市以信息技术为核心&#xff0c;以数据为血液&#xff0c;通过智能化、精细化的管理&#xff0c;让城市变得更加智慧、更加宜居。而数据资产入表&#xff0c;正是这一变革中的关键一环&#xff0c;它不仅推动了科技的进步&#xff0c;更…...

按类别调整目标检测标注框的写入顺序以优化人工审核效率

引言 在目标检测数据标注审核过程中&#xff0c;我们常常会遇到以下情况&#xff1a;某些小目标的检测框嵌套在大目标检测框内&#xff0c;而在模型进行预标注后&#xff0c;这些小目标的框可能被写入到了大目标框的下层。在人工审核阶段&#xff0c;标注审核人员需要手动移动…...

深入理解YOLO系列目标检测头的设定方式

目录 YOLOv1的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 YOLOv2的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 YOLOv3的检测头结构 1. 网络结构概述 2. 结构细节 3. 优缺点 总结&#xff1a;YOLO 系列检测头的结构演变 YOLOv1的检测头结构 1. 网络…...

智慧农业物联网解决方案:道品科技水肥一体化

在当今科技飞速发展的时代&#xff0c;农业也迎来了一场深刻的变革。智慧农业物联网解决方案中的水肥一体化技术&#xff0c;正逐渐成为现代农业发展的重要助推器。它不仅提高了农业生产效率&#xff0c;还实现了精准施肥和灌溉&#xff0c;为农业可持续发展带来了新的机遇。 …...

单片机上电后程序不运行怎么排查问题?

1.电源检查。使用电压表测量单片机的电源电压是否正常&#xff0c;确保电压在规定的范围内&#xff0c;如常见的5V。 2.复位检查。检查复位引脚的电压是否正常&#xff0c;在单片机接通电源时&#xff0c;复位引脚通常会有一个高电平&#xff0c;按下复位按钮时&#xff0c;复位…...

OceanBase 数据库分布式与集中式 能力

OceanBase分布式数据库与集中式数据库的差异 分布式数据库能解决金融行业最有挑战的高并发低延迟的核心交易系统的稳定性、扩展性、高性能问题。OB之所以一直强调分布式是说它具备很强的数据处理能力&#xff0c;当然从OB4.0开始也支持集中式了。 在实际业务场景中20%是分布式…...

C#多线程

C#中的多线程编程是开发高效并发应用程序的关键技术之一&#xff0c;它允许程序同时执行多个任务&#xff0c;从而提升应用程序的响应速度和性能。为了更好地理解C#中的多线程使用和定义&#xff0c;我们可以从以下几个方面来探讨&#xff1a;线程的基本概念、创建线程的方法、…...

Apache HTTP 服务器深度性能优化

引言 在前几篇文章中&#xff0c;我们讨论了基础和高级性能优化策略。现在&#xff0c;我们将深入探讨一些具体的优化实践&#xff0c;帮助您实现更精细的控制&#xff0c;并确保Apache服务器在各种复杂环境中都能保持最佳性能。 1. 细粒度的Apache配置调整 1.1 MPM参数微调…...

芯片级IO (Pad) Ring IP Checklist

SoC top顶层数字后端实现都会涉及到IO Ring &#xff08;PAD Ring&#xff09;的设计。这里面包括VDD IO,VDDIO IO, Signal IO, Corner IO&#xff0c;Filler IO&#xff0c;IO power cut cell等等。 数字后端零基础入门系列 | Innovus零基础LAB学习Day2 数字IC后端实现TOP F…...

无界wujie网址

文档网址&#xff1a;微前端是什么 | 无界 demo&#xff1a;https://wujie-micro.github.io/demo-main-vue/react17...

vulnhub靶场【DriftingBlues】之6

前言 靶机&#xff1a;DriftingBlues-6&#xff0c;IP地址192.168.1.63&#xff0c;因为重装靶机后期为192.168.1.64 攻击&#xff1a;kali&#xff0c;IP地址192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1…...

心情追忆- Nginx + OpenResty 构建高可用网关

之前&#xff0c;我独自一人开发了一个名为“心情追忆”的小程序&#xff0c;旨在帮助用户记录日常的心情变化及重要时刻。我从项目的构思、设计、前端&#xff08;小程序&#xff09;开发、后端搭建到最终部署。经过一个月的努力&#xff0c;通过群聊分享等方式&#xff0c;用…...

太速科技-527-基于3U VPX XCZU15EG+TMS320C6678的信号处理板

基于3U VPX XCZU15EGTMS320C6678的信号处理板 一、板卡概述 本板卡系我司自主研发的基于3U VPX风冷、导冷架构的信号处理板&#xff0c;适用于高速图像处理等。芯片采用工业级设计。 板卡采用标准3U VPX架构&#xff0c;板上集成一片Xilinx公司ZynqUltraScale系列F…...

Vue3源码笔记阅读1——Ref响应式原理

本专栏主要用于记录自己的阅读源码的过程,希望能够加深自己学习印象,也欢迎读者可以帮忙完善。接下来每一篇都会从定义、运用两个层面来进行解析 定义 运用 例子:模板中访问ref(1) <template><div>{{str}}</div> </template> <script> impo…...

多音轨视频使用FFmpeg删除不要音轨方法

近期给孩子找宫崎骏动画&#xff0c;但是有很多是多音轨视频但是默认的都是日语&#xff0c;电视上看没办法所以只能下载后删除音轨文件只保留中文。 方法分两步&#xff0c;先安装FFmpeg在转文件即可。 第一步FFmpeg安装 FFmpeg是一个开源项目&#xff0c;包含了处理视频的…...