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

怎么做淘客专属网站/定制企业网站建设制作

怎么做淘客专属网站,定制企业网站建设制作,app如何制作(怎么自己做app),旅游网站开发毕业设计摘要 本研究提供了一个用于分析脑纤维束数据的Python库(Phybers)。纤维束数据集包含由表示主要白质通路的3D点组成的流线(也称为纤维束)。目前已经提出了一些算法来分析这些数据,包括聚类、分割和可视化方法。由于流线的几何复杂性、文件格式和数据集的大小(可能包…

摘要

本研究提供了一个用于分析脑纤维束数据的Python库(Phybers)。纤维束数据集包含由表示主要白质通路的3D点组成的流线(也称为纤维束)。目前已经提出了一些算法来分析这些数据,包括聚类、分割和可视化方法。由于流线的几何复杂性、文件格式和数据集的大小(可能包含数百万条纤维束),对纤维束数据的处理并不简单。因此,本研究收集和整理了最新的脑纤维束分析方法,并将其集成到Python库中,以整合和共享脑纤维束示踪分析工具。由于计算要求较高,最具挑战性的模块需要用C/c++实现。可用的功能包括纤维束分割(FiberSeg)、分层纤维聚类(HClust)、快速纤维聚类(FFClust)、归一化到参考坐标系、纤维采样、计算大脑纤维集合之间的交点、聚类过滤工具、从聚类中计算测量值以及纤维束可视化。该库分为四个主要模块:分割(Segmentation)、聚类(Clustering)、实用工具(Utils)和可视化(Fibervis)。Phybers可以在GitHub上免费获得,并提供了样本数据和大量文档。此外,该库可以通过pip库轻松地在Windows和Ubuntu操作系统上安装。

引言

大脑结构连通性可以通过扩散磁共振成像(dMRI)进行研究。这是一种无创的在体技术,通过测量脑组织中水分子的运动,提供关于脑白质(WM)的微观尺度信息。利用dMRI数据上的扩散局部模型重建和纤维束示踪算法,可以计算出3D WM束的主要轨迹。为了简便起见,这些流线也被称为“纤维束”,尽管它们并不代表单个轴突。

多年来,随着MRI设备和重建以及纤维束成像算法的改进,用于分析纤维束成像数据集的工具也在不断发展。如今,大脑纤维束数据相当复杂,包含长短不一的纤维,以及噪声和复杂的几何结构。此外,这些数据集可能包含数百万条纤维用于概率性纤维追踪,从而产生额外的计算需求,尤其是在执行多被试分析时。这就是为什么有许多示踪数据分析算法旨在对这些数据进行聚类、识别模式、分割、过滤、可视化和计算测量值的原因。由于示踪数据具有复杂性,这些算法通常难以使用,并且需要对文件格式、输入参数和结果有深入的了解。因此,为了简化和推广dMRI的使用,一些研究小组创建了用于处理dMRI图像的软件包。这些工具提供了dMRI数据处理各步骤所需的算法,从图像失真校正到示踪分析。最终目标是开发出一套处理纤维束示踪数据的方法,以更好地描述基于高质量数据的WM纤维,并研究健康被试和病理性大脑的WM微结构。

可用于处理dMRI数据的工具有许多。表1、2总结了影像学研究社区常用的软件包。表中列出了这些工具的主要特性和功能,如编程语言、操作系统(OS)、软件许可证、dMRI格式、纤维追踪格式、扩散加权(DW)模型重建、纤维追踪、纤维聚类、纤维束分割、可视化以及纤维测量计算等。主要软件包括:BrainSUITE、Camino、Diffusion toolkit、ExploreDTI、FSL、MRtrix、Freesurfer、DSI Studio、Dipy、DiffusionKit和SlicerDMRI。

表1.dMRIs研究使用的主要软件。

图片

表2.dMRIs研究使用的主要软件。

图片

如表1、2所示,这些工具包具有不同的功能。其中一些更侧重于dMRI预处理、模型重建和纤维束成像,而其他一些则包括示踪分析方法。用户通常会使用多个软件来实现其处理流程,但需要注意文件格式、参考坐标系和三维空间。尽管有一些较为全面的工具包,但没有一个工具包涵盖所有现有的算法。

目前很少有专门用于分析示踪数据的软件包,例如纤维聚类和分割,以及纤维束过滤。因此,本研究提出了一种用于分析大脑纤维示踪数据的工具包。该工具包结合了多种纤维示踪分析工具(由本研究小组开发),其中包括使用脑纤维图谱优化的纤维束分割算法,基于K-Means的分层纤维聚类和快速纤维聚类(FFClust)算法。由于缺乏统一的代码、编程语言的多样性、多个库依赖以及缺乏示例代码/数据和文档,这些工具对外部用户而言难以应用。为此,本研究开发了一个名为Phybers的开源库,它集成了所有这些算法以及其他纤维聚类分析和可视化工具。

Phybers

Phybers包含四个模块,其中包括用于不同预处理阶段的算法。Utils套件包含用于纤维分割或聚类之前对纤维示踪数据进行预处理的工具,例如使用变形场(NIfTI格式)将纤维(bundles格式)转换到另一个空间。分析模块包括基于脑纤维束图谱的纤维束分割算法,以及快速纤维聚类(FFClust)和分层聚类(HClust)两种聚类算法。此外,还提供了一套用于分析纤维束分割和纤维聚类算法结果(bundles格式)的后处理工具。可视化模块支持不同类型的数据,例如体积(NIfTI)、网格(mesh和GIfTI格式)、纤维束(TRK、TCK和bundles)。此外,它集成了一个交互式图形用户界面(GUI),允许用户实时操纵3D对象。例如,可以通过定位两个或多个3D区域来执行脑纤维束的手动分割。

Phybers是基于Python开发的,以便在PyPI存储库中发布和更新。本研究使用C/C++和Python 3.9实现了这些算法,其中使用了numpy、nibabel、pandas和subprocess等Python依赖项。然而,所有依赖项都会随着软件包的安装而自动安装。可以使用命令$ pip install phybers来执行库安装,并且该软件发行版包含所有支持功能的示例数据和代码示例。Phybers兼容Python 3.9以上的版本,并支持Jupyter Notebook和Spyder等Python平台,为满足每个用户的特定需求提供了强大的灵活性。此外,它可以在Ubuntu和Windows系统上无缝运行,也可以通过虚拟机在macOS上使用。最后,使用Sphinx生成库文档。Phybers库包含四个模块(图1),分别定义为Segmentation、Clustering、Utils和Visualization。

图片

图1.四个模块:(A)分割,(B)聚类,(C)实用工具和(D)可视化。

Phybers层次结构

分割模块

该模块包括基于多被试图谱的白质纤维束分割算法(图2)。该方法使用相应点之间的最大欧氏距离(dME)作为纤维对之间相似性的度量,定义为:

图片

图片

图2.分割模块图示。

其中ai和bi分别表示纤维A和B中点的三维坐标,两者具有相等数量的点(Np),按直接顺序列出。这里纤维A的点依次遍历为ai=[a1,a2,…,aNp],而纤维B的点同样定义为bi=[b1,b2,…,bNp]。因此,纤维B的逆序表示为bNp−i=[bNp,bNp−1,…,b1]。

Phybers分割模块中的FiberSeg具有以下输入(图2):

1.file_in:被试的全脑纤维束成像数据集文件。这些纤维束必须与所使用的纤维束图谱位于同一参考系中,并以bundles格式表示。

2.subj_name:被试名称,用于标记结果。

3.atlas_dir:bundle图谱文件夹,其中每个bundle都存放在单独的文件中,并以21个等距点进行采样。

4.atlas_info:与所用图谱相关联的文本文件,其中存储了应用分割算法所需的信息,即图谱束的列表,包含名称、分割阈值(mm)和每个束的大小。请注意,分割阈值可以根据要使用的数据库进行调整。

5.dir_out:存储算法生成的所有结果的目录名。

FiberSeg的输出是:

1.final_bundles:存储分割后纤维束的目录,即从被试纤维束数据集中提取的图谱束,这些束被标记并以bundles式保存在单独的文件中。

2.centroids:包含每个分割束质心的目录,以bundles格式保存在单个文件中。

3.bundles_id:一个文本文件,该文件记录了每个分割束的索引。

图3显示了使用DWM束图谱对来自HCP数据库中的一名被试进行纤维束分割的结果。显示的分割束包括丘脑辐射(B)、胼胝体节段(C)、弓状束(D)、扣带束(E)、下纵束、下额枕束、钩状束、皮质脊髓束和穹窿束(F)。图4显示了使用SWM束图谱的分割结果。该图谱包括93个束,根据从Desikan-Killiany图谱中提取的解剖ROIs进行标记。四组短联合纤维束为:尾侧额中束(B)、喙侧额中束(C)、枕外侧束(D)和缘上束(E)。

图片

图3.使用DWM束图谱进行分割的结果。

图片

图4.使用SWM束图谱进行分割的结果。

聚类模块

①HClust子模块

HClust是一种分层聚类算法,它基于成对纤维之间的距离测量来创建束。该算法通过使用纤维点之间的最大欧氏距离(公式1)计算了纤维束数据集中所有纤维对之间的距离矩阵(dij)。然后,对于欧式距离小于最大距离阈值(fiber_thr)(mm)的纤维对,在dij矩阵上计算亲和图。亲和度由公式(2)计算得到。

图片

其中dij是元素i和j之间的距离,σ是定义相似度的参数(单位为mm)。

HClust的输入如下(图5B1):

1.file_in:输入的示踪数据文件。

2.dir_out:存储算法生成的所有结果的目录。

3.fiber_thr:最大距离阈值(单位:mm),默认为30mm。

4.partition_thr:自适应分割阈值(单位:mm),默认为40mm。

5.variance:相似度(mm),默认60mm。

图片

图5.聚类模块图示。

HClust输出为:

1.final_bundles:将所有生成的带有簇编号标签的纤维聚类存储在目录中,并以bundle格式保存在单独的文件中。

2.centroids:包含每个已创建聚类的质心的目录,以bundle格式保存在单个文件中。

3.bundles_id:一个文本文件,存储了被试纤维示踪数据集中每个聚类纤维的索引。

4.outputs:临时目录。

图6展示了将HClust算法应用于包含4000条纤维的示踪数据集的结果。左图显示了在聚类之前以蓝色呈现的4000条纤维的示踪情况,右图显示了手动选择并使用随机颜色调色板的八个纤维簇。本研究建议将HClust算法应用于最多包含40000条纤维的示踪数据集。如果希望将其应用于整个大脑并使用更大的数据集,则可以考虑首先利用FFClust的被试内聚类,然后将HClust应用于FFClust质心的策略。

图片

图6.使用HClust计算中央后区域纤维示踪的结果。

②FFClust子模块

FFClust(快速纤维聚类)是一种被试内聚类算法,旨在识别大型纤维示踪数据集上紧凑且均匀的纤维簇。该算法包括四个阶段。首先,它在五个特定的纤维点上应用小批量K-Means聚类(阶段1),并合并共享相同点簇的纤维(阶段2)。然后,将小簇重新分配给较大的簇(阶段3),依次考虑纤维的正反序距离。最后,该算法将共享中心点的簇分组并合并由其质心表示的相近簇(阶段4)。纤维之间的距离被定义为对应纤维点之间的最大欧氏距离。该算法支持使用OpenMP进行顺序和并行执行。图5B2显示了模块的层次结构。其输入包括:

1.file_in:输入示踪数据集文件。

2.dir_out:存储算法生成的所有结果的目录。

3.points:点聚类(阶段1)中使用的点的索引,默认值:0、3、10、17、20。

4.ks:使用K-Means(阶段1)计算每个点的聚类数,默认值:300、200、200、200、300。

5.assing_thr:簇重新分配的最大距离阈值(单位:mm)(阶段3),默认值:6.0mm。

6.join_tht:簇合并的最大距离阈值(单位:mm)(阶段4),默认值:6.0mm。

FFClust的输出结构类似于HClust模块。

图7显示了将FFClust应用于全脑示踪数据集的结果(包含150万条流线)。使用Utils模块的PostProcessing子模块对检测到的簇进行筛选,以简化结果可视化。左图显示了尺寸大于150且长度在50-60mm之间的簇,而右图显示了尺寸大于100且长度大于150mm的簇。

图片

图7.使用FFClust算法获得的结果。

Utils模块

Utils模块是一组用于示踪数据集预处理以及大脑纤维聚类和分割结果分析的工具。该模块包括用于读写大脑纤维文件(以bundles格式)、将纤维转换到基于变形场的参考坐标系中、在一定数量的等距点上对纤维进行采样、计算脑纤维集之间的交点,以及提取测量值和过滤纤维簇或分割束的工具。本研究考虑了每个簇(或束)的大小、平均长度(mm)以及纤维之间的距离(mm)等指标。

①Deform子模块

Deform子模块(图8C1)使用非线性变换文件将示踪数据集文件转换到另一个空间。这些图必须以NIfTI格式存储,其中包含要应用于每个体素3D空间位置的变换信息。Deform子模块将变换应用于纤维点的3D坐标。Deform模块需要的输入数据包括形变图、待变换纤维的文件路径以及变换后的输出文件路径。

图片

图8.Utils模块图示。

图9显示了在示踪数据集上应用变换函数的结果,使用解剖图像作为可视化参考。左图显示了在应用变换之前的结果,而右图显示了将示踪数据集变换到MNI空间后的结果。在左图中可以看到明显的错位,而右图则是进行校正后的结果。

图片

图9.使用Deform子模块进行纤维变换的示例。

②Sampling子模块

示踪数据集通常由大量具有可变数量点的三维折线组成。Sampling子模块(图8C2)对纤维进行采样,使用一定数量的等距点重新计算它们的点。该算法的输入数据包括待采样的示踪数据集文件路径,具有n个点的纤维束输出文件,以及点数(npoints)。Sampling子模块用于分割和聚类算法的预处理阶段。

③Intersection子模块

Intersection子模块(图8C3)计算两组脑纤维之间的相似度,它使用最大距离阈值(mm)来判断两种纤维是否相似。两组纤维必须处于同一空间。首先,计算两组纤维之间的欧氏距离矩阵。然后计算一组纤维与另一组纤维相似的纤维数量。相似性度量值的取值范围为0-100%,即输出的是相似性百分比。

④PostProcessing子模块

PostProcessing子模块(图8C4)包含一组可用于对聚类和分割算法生成的结果进行进一步处理和分析的工具。该工具构建了一个Pandas库对象(Dataframe),其中每个键对应于纤维集的名称(簇或分割束),其次是在纤维集上定义的度量指标,如纤维数量(大小)、纤维束内距离(mm)和平均长度(mm)。它可用于对聚类或分割结果执行单个或多个特征筛选。

可视化模块

可视化模块能够呈现多种类型的3D对象,包括纤维示踪数据集、网格和MRI扫描层或体积。对于每个对象,都定义了一组可以通过图形用户界面(GUI)访问的功能。GUI支持同时可视化多个对象,并对脑纤维示踪数据集应用线性变换等。图10说明了可视化模块的流程图。

图片

图10.可视化模块图示。

①可视化算法

纤维示踪数据集文件可以用线条或圆柱形式呈现。在线条情况下,软件加载流线,并为每个顶点定义一个固定的法线,该法线对应于流线特定段的归一化方向。此外,顶点着色器中的Phong光照算法用于计算流线的颜色。MRI数据使用特定的着色器进行层可视化和体绘制。网格可以使用点、线框或阴影三角形来显示。

②基于ROI的交互式3D纤维束分割

该功能允许用户使用球形感兴趣区域(ROI)交互式地提取纤维束。在内部,它创建了一个基于点的数据结构(Octree)用于快速查询。当一个节点被填满并且添加了一个新点时,该节点将其边界框细分为八个新的非重叠节点,并将点移动到新节点中。

在查询过程中,不同的3D对象会检查节点是否与边界框发生冲突或位于边界框内。在第一种情况下,算法会递归地遍历分支节点,直到到达叶节点,在该叶节点中,会测试点并将其添加到验证器缓冲区中。在后一种情况下,所有包含在子节点中的点都会被转换为相应的纤维,并在纤维验证器缓冲区中标记为已选。每个对象的所选纤维可以用于逻辑数学运算(AND、OR、XOR、NOT)。这样可以使用多个ROI来寻找连接特定区域的纤维,同时排除其他区域的纤维。图11展示了选择与两个ROI(绿色和紫色)相交的纤维,同时排除了与蓝色ROI相交的纤维。

图片

图11.使用可视化模块进行基于ROI的交互式3D纤维分割。

结论

本研究提出了一个名为Phybers的软件库,其中包含用于分析脑纤维束的最先进工具,旨在为科学界提供便利。Phybers集成了诸如纤维束分割、纤维聚类和可视化算法等工具。此外,还集成了用于对纤维示踪数据集进行采样和转换的实用工具,以及用于计算纤维束之间交集并对纤维集进行后处理的工具。该库提供了示例数据和详尽的文档,并且在开发时考虑到了可扩展性,因此可以集成其他现有的最先进算法。总的来说,Phybers有助于促进这些算法的运用,并实现最先进工具的更好共享。

参考文献:González Rodríguez LL, Osorio I, Cofre G. A, Hernandez Larzabal H, Román C, Poupon C, Mangin J-F, Hernández C and Guevara P (2024) Phybers: a package for brain tractography analysis. Front. Neurosci. 18:1333243. doi: 10.3389/fnins.2024.1333243

小伙伴们关注茗创科技,将第一时间收到精彩内容推送哦~

相关文章:

Phybers:脑纤维束分析软件包

摘要 本研究提供了一个用于分析脑纤维束数据的Python库(Phybers)。纤维束数据集包含由表示主要白质通路的3D点组成的流线(也称为纤维束)。目前已经提出了一些算法来分析这些数据,包括聚类、分割和可视化方法。由于流线的几何复杂性、文件格式和数据集的大小(可能包…...

手机丢失不惊慌,华为手机已升级至楼层级设备查找!

出门总是丢三落四,手机丢了怎么办?不要怕,只要你的华为手机升级至云空间新版本,就可以进行楼层级设备查找,现在可以查看到具体的楼层了! 之前有手机丢失过的朋友,肯定有相似的经历&#xff0c…...

SpringBoot 的多配置文件

文章目录 SpringBoot 的多配置文件spring.profiles.active 配置Profile 和 ActiveProfiles 注解 SpringBoot 的多配置文件 spring.profiles.active 配置 默认情况下,当你启动 SpringBoot 项目时,会在日志中看到如下一条 INFO 信息: No act…...

[Java基础揉碎]网络相关概念

目录 网络通信 网络 ip地址 ​编辑 域名 ​编辑 网络协议 TCP和UDP 网络编程比较重要的的InetAddress类 Socket ​编辑 tcp字节流编程 案例一 案例二​编辑 案例三 网络上传文件 ​编辑​编辑 ​编辑 netstat tcp网络通信客户端也是通过端口和服务端进行通讯的…...

UE5 Sequencer 使用指导 - 学习笔记

https://www.bilibili.com/video/BV1jG411L7r7/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 Sequencer 01 1.1 调整视口 调整窗口数量 调整视口类型为Cinematic视口 视口显示网格,或者条件参考线 1.2 关卡动画与…...

Web前端项目源码:深入解析与未来探索

Web前端项目源码:深入解析与未来探索 Web前端项目源码,如同隐藏在数字世界中的宝藏,蕴含着丰富的技术与智慧。它是构建现代网页应用的核心,也是实现用户交互和界面呈现的关键所在。本文将从四个方面、五个方面、六个方面和七个方…...

MyBatis的配置文件,即:src->main->resources的配置

目录 1、properties 标签 1.1 mybatis-config.xml 1.2 db.properties 1.3 在SqlMapConfig.xml 中 引入数据库配置信息 2、typeAliases 标签 2.1 定义别名 2.2 使用别名 3、Mappers标签 作用:用来在核心配置文件中引入映射文件 引入方式,有以下…...

completefuture造成的rpc重试事故

前言 最近经历了一个由于 completefuture 的使用,导致RPC重试机制触发而引起的重复写入异常的生产bug。复盘下来,并非是错误的使用了completefuture,而是一些开发时很难意识到的坑。 背景 用户反馈通过应用A使用ota批量升级设备时存在概率…...

6月11号作业

思维导图 #include <iostream> using namespace std; class Animal { private:string name; public:Animal(){}Animal(string name):name(name){//cout << "Animal&#xff1b;有参" << endl;}virtual void perform(){cout << "讲解员的…...

探究Vue源码:深入理解diff算法

前言 在Vue中 组件初次渲染时&#xff0c;会调用 render 函数生成初始的虚拟 DOM 树。 当组件的状态发生变化时&#xff0c;Vue 会重新调用 render 函数生成新的虚拟 DOM 树。 而Diff 算法是用来比较新旧虚拟 DOM 树的差异&#xff0c;并且只对差异部分进行更新的算法,从而尽量…...

qt自适应图片

在 Qt 中&#xff0c;通过重写 paintEvent 方法来添加自适应背景图片的过程如下&#xff1a; 创建一个自定义的 QWidget 子类。重写 paintEvent 方法&#xff0c;在该方法中使用 QPainter 绘制背景图片。使用 QPixmap 加载图片&#xff0c;并调整图片的大小以适应窗口的大小。…...

【区块链】解码拜占庭将军问题:区块链共识机制的哲学基石

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 解码拜占庭将军问题&#xff1a;区块链共识机制的哲学基石引言一、拜占庭将军问…...

MCK主机加固:智能科技,构筑网络安全的铜墙铁壁

在数字化转型的浪潮中&#xff0c;企业服务器的安全已成为维护业务连续性和保护数据资产的关键。MCK主机加固产品&#xff0c;以其创新技术&#xff0c;为企业提供了一个全面、智能、高效的安全解决方案。 一、智能安全监测 MCK主机加固产品采用深度学习算法&#xff0c;能够…...

OpenCV 双目相机标定

文章目录 一、简介1.1单目相机标定1.2双目相机标定二、实现代码三、实现效果参考资料一、简介 1.1单目相机标定 与单目相机标定类似,双目标定的目的也是要找到从世界坐标转换为图像坐标所用到的投影P矩阵各个系数(即相机的内参与外参)。具体过程如下所述: 1、首先我们需要…...

WPF/C#:异常处理

什么是异常&#xff1f; 在C#中&#xff0c;异常是在程序执行过程中发生的特殊情况&#xff0c;例如尝试除以零、访问不存在的文件、网络连接中断等。这些情况会中断程序的正常流程。 当C#程序中发生这种特殊情况时&#xff0c;会创建一个异常对象并将其抛出。这个异常对象包…...

2024年跨平台应用解决方法

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 很久没有写这类high-level的文章了,本身这类框架就一直层出不穷,但是其中历久弥坚,坚韧不拔的框架又有多少呢? 首先考虑到学习成本以及掌握一些编程语言在工作、学习生态上的价值,给这些东西适用生态划分一下. Reac…...

人工智能ChatGPT的多种应用:提示词工程

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中&#xff0c;沟通本来就是很重要的一门课程&#xff0c;沟通的过程中表达的越清晰&#xff0c;给到的信息越多&#xff0c;那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理&#xff0c;如果想要 …...

OceanBase v4.2 解读:tenant=all 语义优化,提升易用性

1 背景 1.1 租户类型及特点 OceanBase中有三种类型的租户&#xff1a; sys租户&#xff1a;集群默认创建&#xff0c;生命周期与集群相一致&#xff0c;管理集群和其他租户&#xff0c;具有较高的地位。用户租户&#xff1a;用户创建的业务租户或普通租户&#xff0c;用于运…...

理论和实验

一、理论和实验的关系 (一)理论可以指导实验 理论家提出理论和猜想&#xff0c;实验家就可以做个实验来验证是否适用。 (二)实验可以提升理论认识 实验家通过做实验&#xff0c;观察实验过程和结果后&#xff0c;如果发现和理论预测有误差&#xff0c;那么理论家就能根据新发现…...

Linux 常用命令 - userdel 【删除用户】

简介 userdel 这个命令源自于 “user delete”,即用户删除。这个命令主要用于在 Linux 系统中删除用户账户及其相关文件。当管理员需要移除一个用户及其在系统中的所有踪迹时,会用到这个命令。 使用方式 userdel [选项] 用户名常用参数 -f:强制删除用户,即使用户当前已登…...

等保测评和安全运维

# 等保测评与安全运维&#xff1a;构建企业网络安全的双重保障 引言 在数字化时代&#xff0c;企业面临着日益复杂的网络安全威胁。为了应对这些挑战&#xff0c;企业不仅要实施有效的安全运维措施&#xff0c;还需要通过等保测评确保其信息系统符合国家的安全标准。本文将探讨…...

Java课程设计:基于Java+Swing+MySQL的图书管理系统(内附源码)

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 图书管理系统是一个常见的软件项目,广泛应用于图书馆、学校、企业等需要管理图书资源的场景。该系统通常涵盖图书信息录入、查询、借阅、归还等核心功能,是实现图书资源高效管理的重要工具。 随着信…...

WireGuard网络架构及配置详解

WireGuard网络架构及配置详解 一.点对点二.中心网关,实现nat穿透弊端:流量全部经过中心网关,带宽上限受限于中心网关 三.借助registry实现双向nat穿透需要借助registry实现 udp打洞, 待二开 一.点对点 yum install epel-release elrepo-release -y yum install yum-plugin-elr…...

VB.NET实现上位机自动识别可用串口

在实际应用中有时会牵扯到挑选可用串口&#xff0c;比如上位机和从站设备使用Modbus RTU协议进行通讯时需要选择COM串口&#xff0c;每次启动连接前都在设备管理器查看较为麻烦&#xff0c;可以设置一个串口自动识别功能&#xff0c;如果选择了错误的串口还可以提示串口选择错误…...

Node.js版本管理工具-NVM

在开发 Node.js 项目时&#xff0c;经常会遇到需要切换不同版本的 Node.js 的情况。为了方便管理和切换各个版本&#xff0c;我们可以使用一些 Node.js 版本管理工具。 Node Version Manager&#xff1a;简称NVM&#xff0c;最流行的 Node.js 版本管理工具之一。它允许我们在同…...

【react】useEffect 快速上手

useEffect 快速上手 useEffect(setup, dependencies?) 可以接收两个参数&#xff0c;分别是回调函数与依赖数组. useEffect 用什么姿势来调用&#xff0c;本质上取决于你想用它来达成什么样的效果。下面我们来简单介绍 useEffect 的调用规则。 每一次渲染后都执行的副作用&a…...

docker容器部署jenkins

提前安装好jdk和maven&#xff0c;jdk最好使用11版本&#xff0c;jdk-11.0.10 docker run -u root -d \ -p 100:8080 \ -v /var/jenkins_home/workspace/:/var/jenkins_home/workspace/ \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker…...

第十四章 享元模式

目录 1 享元模式介绍 2 享元模式原理 3 享元模式实现 4 享元模式应用实例 5 享元模式总结 1 享元模式介绍 享元模式 (flyweight pattern) 的原始定义是&#xff1a;摒弃了在每个对象中保存所有数据的方式&#xff0c;通过共享多个对象所共有的相同状态&#xff0c;从而让我…...

ThinkBook 16 2024 Ubuntu 触控板问题解决

sudo insmod goodix-gt7868q.ko sudo cp local-overrides.quirks /etc/libinput/local-overrides.quirks sudo systemctl restart gdm 有偿解决&#xff0c;无效退款...

qt qDebug兼容LOGE

目录 普通qDebug用法 qt qDebug兼容LOGE 模板参数2实现 qDebug 实现LOGE一样的用法,这样Android和qt同时支持LOGE打印日志 普通qDebug用法 #include <QApplication> #include <QDebug>int main(int argc, char *argv[]) {QApplication app(argc, argv);int ret…...