ubuntu16.04 VSCode下cmake+clang+lldb调试c++

news2025/1/27 2:22:26

VSCode下cmake+clang+lldb调试c++

Ubuntu16.04 安装OpenCV4.5.4

文章目录

  • VSCode下cmake+clang+lldb调试c++
  • 1.安装clang+clangd+cmake
  • 2、打开VSCode,安装扩展插件
  • 3、编译
  • 4、Debug
    • 4.1 创建launch.json。
    • 4.2 配置setting.json
  • 5. vscode安装配置clang-format插件
    • 5.1 Linux系统安装clang-format
    • 5.2 vscode安装clang-format插件
    • 5.3 确认clang-format可执行程序路径
    • 5.4 settings.json添加配置
    • 5.5 使用clang-format命令
    • 5.6 自定义的格式化配置
  • 6.参考


1.安装clang+clangd+cmake

sudo apt install clang clangd cmake

2、打开VSCode,安装扩展插件

Chinese(Simplified)(简体中文)、Clangd、CMake、CMake Tools、CodeLLB、OutputColorizer

注意:C/C++ 、Code Runner若安装,需要禁用。因为会和Clang有冲突

3、编译

左下角在这里插入图片描述选择“生成”,跳出选项选择"Clang 3.8.0 x86_64-pc-linux-gnu"

4、Debug

点击左方Debug在这里插入图片描述

4.1 创建launch.json。

修改 "program"的路径–可执行文件的路径

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug",
            "program":"${workspaceFolder}/build/test1",
            "args":[],
            "cwd":"${workspaceFolder}"
        }

    ]
}

4.2 配置setting.json

{
"cmake.showOptionsMovedNotification": false,
 "clangd.path": "/home/xxx/.config/Code/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/bin/clangd",
"clangd.arguments": [
        "--background-index",
        "--compile-commands-dir=${workspaceFolder}/build",
        "--clang-tidy",
        "--completion-style=detailed",
        "--header-insertion=iwyu",
        "--query-driver=/usr/bin/clang"
    ],
    }

5. vscode安装配置clang-format插件

5.1 Linux系统安装clang-format

sudo apt install clang-format

5.2 vscode安装clang-format插件

在vscode扩展里搜索clang-format,安装排名第一的xaver.clang-format

5.3 确认clang-format可执行程序路径

Linux命令which clang-format查询clang-format的安装路径,如:/usr/bin/clang-format

which clang-format

5.4 settings.json添加配置

{
    // clang-format 扩展的配置
    "clang-format.style" : "file",
    // format 配置路径
    "clang-format.assumeFilename": "${workspaceFolder}/.vscode/format/.clang-format",
    "clang-format.executable": "/usr/bin/clang-format",
    "clang-format.fallbackStyle": "Google",
    "editor.defaultFormatter": "xaver.clang-format"
}

5.5 使用clang-format命令

//格式名可选:LLVM, Google, Chromium, Mozilla, WebKit, microsoft
 // 以google中的代码风格格式化main.cpp, 结果直接写到main.cpp
 clang-format -style=google -i main.cpp
 // 当然也支持对指定行格式化,格式化main.cpp的第1,2行
 clang-format -lines=1:2 main.cpp

5.6 自定义的格式化配置

1)生成.clang-format 配置文件并修改自定义

clang-format -style=Google  -dump-config > ./.clang-format

运行上述命令,就能生成.clang-format文件。

2)使用命令格式化

clang-format -style=file -i main.cpp 

或者

clang-format -i main.cpp 

或者

clang-format --assume-filename=.clang-format -i main.cpp

基于google的风格进行定制

---
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
BasedOnStyle:   LLVM
Language:        Cpp
# this style configuration is based on google style configuration.
# The following configuration is different from the basic configuration.
# 缩进宽度
IndentWidth:     4
# 访问权限说明符(public/private等)的偏移
AccessModifierOffset: -4
# # 开括号(开圆括号、尖括号、方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行)
# AlignAfterOpenBracket: Align
# # 连续赋值时,对齐所有等号
# AlignConsecutiveAssignments: false
# # 连续声明时,对齐所有声明的变量名
# AlignConsecutiveDeclarations: false
# 反斜杆换行的对齐方式
# -- DontAlign - 不进行对齐
# -- Left - 反斜杠靠左对齐
# -- Right - 反斜杠靠右对齐
# AlignEscapedNewlines: Right
# 二元、三元表达式的对齐方式(当表达式需要占用多行时)
# -- DontAlign - 不进行对齐
# -- Align - 从操作符开始对齐
# -- AlignAfterOperator - 从操作数开始对齐
AlignOperands:   true
# # 是否对齐行尾注释
# AlignTrailingComments: true
# # 函数声明的所有参数在放在下一行
# AllowAllParametersOfDeclarationOnNextLine: false
# # 是否允许短的代码块放在同一行
# AllowShortBlocksOnASingleLine: false
# # 短的case标签和语句放在同一行
# AllowShortCaseLabelsOnASingleLine: true
# # 短的函数放在同一行
# -- None - 不把短的函数放在同一行
# -- InlineOnly - 只把类内的内联函数放在同一行,全局的空函数不放在同一行
# -- Empty - 只把空的函数放在同一行
# -- Inline - 把类内的内联函数放在同一行,全局的空函数不放在同一行
# -- All - 都允许放在同一行
AllowShortFunctionsOnASingleLine: InlineOnly
# # 短的if语句保持在同一行
# AllowShortIfStatementsOnASingleLine: true
# # 短的循环保持在同一行
# AllowShortLoopsOnASingleLine: true
# # 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数), 
# # AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义)
# AlwaysBreakAfterReturnType: None
# # 总是在多行string字面量前换行
# AlwaysBreakBeforeMultilineStrings: true
# # 总是在template声明后换行
AlwaysBreakTemplateDeclarations: true
# # 函数调用时,参数的放置规则
# -- false - 参数要么放在同一行,要么每个参数占用一行
# -- true - 不做强制要求
# BinPackArguments: true
# 函数声明、定义时,参数的放置规则
# -- false - 参数要么放在同一行,要么每个参数占用一行
# -- true - 不做强制要求
# BinPackParameters: true
# 大括号放置风格
# -- Attach - 大括号紧随前方内容,放在同一行
# -- Linux - 与 Attach 类似,除了 函数、命名空间、类定义 的大括号放在下一行
# -- Mozilla - 与 Attach 类似,除了枚举、函数、结构(class\struct\union)的大括号放在下一行
# -- Stroustrup - 与 Attach 类似,但函数定义前、catch前方、else前方的"{}"放在单独一行
# -- Allman - 总是换行
# -- Whitesmiths - 类似 Allman,但"{}"和内部的语句对齐到同样位置
# -- GNU - 总是换行,但在控制语句后的"{}"总是对齐到下一个位置
# -- WebKit - 与 Attach 类似,但在函数定义前换行 
# -- Custom - 依赖 BraceWrapping
#   注:这里认为语句块也属于函数
BreakBeforeBraces: Custom
# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效
BraceWrapping:
  # class定义后面
  AfterClass: true
  # 控制语句后面
  AfterControlStatement: false
  # enum定义后面
  AfterEnum: false
  # 函数定义后面
  AfterFunction: true
  # 命名空间定义后面
  AfterNamespace: true
  # ObjC定义后面
  AfterObjCDeclaration: false
  # struct定义后面
  AfterStruct: false
  # union定义后面
  AfterUnion: false
  # extern之后
  AfterExternBlock: true
  # catch之前
  BeforeCatch: false
  # else之前
  BeforeElse: false
  # 继续缩进大括号
  IndentBraces: false
  # 分离空函数
  # # 当空白函数的"{}"和函数名称不需要放在同一行时,是否拆分函数体
  SplitEmptyFunction: true
  # 分离空语句
  # # 当空白结构(class\struct\union)的"{}"需要放在单独的行时,是否拆分"{}"
  SplitEmptyRecord: true
  # 分离空命名空间
  # # 当空白的命名空间的"{}"需要放在单独的行时,是否拆分"{}"
  SplitEmptyNamespace: true
# # 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行)
BreakBeforeBinaryOperators: NonAssignment
# BreakBeforeInheritanceComma: false
# # 在三元运算符前换行
# 当三元表达式不能放在同一行时,是否在三元操作符前方换行
# -- true - 操作符位于新行的首部
# -- false - 操作符位于上一行的尾部
BreakBeforeTernaryOperators: true
# BreakConstructorInitializersBeforeComma: false
# # 构造函数初始化列表分割方式
# -- BeforeColon - 在冒号 ':' 前方分割,冒号位于行首,逗号','位于行尾
# -- BeforeComma - 在冒号和逗号前方分割,冒号和逗号都位于行首,并且对齐 
# -- AfterColon - 在冒号和逗号后方分割,冒号和逗号位于行尾
BreakConstructorInitializers: BeforeColon
# # 是否在每个java注解后方换行
# BreakAfterJavaFieldAnnotations: false
# # 是否分割过长的字符串
# BreakStringLiterals: false
# # 每行字符长度的限制,0表示没有限制
ColumnLimit:     100
# # 用于匹配注释信息的正则表达式,被匹配的行不会做任何修改
# CommentPragmas:  '^ IWYU pragma:'
# 是否压缩紧接的命名空间
# -- true - 将紧跟的命名空间放在同一行
# -- false - 每个命名空间位于新的一行
CompactNamespaces: false
# # 构造函数的初始化列表要么都在同一行,要么都各自一行
# -- true - 如果可能,初始化列表放在同一行;如果不满足长度选择,则每个单独放一行
# -- false - 初始化列表可以随意放置
# ConstructorInitializerAllOnOneLineOrOnePerLine: false
# # 构造函数的初始化列表和基类集成列表的对齐宽度
ConstructorInitializerIndentWidth: 4
# # 延续语句的对齐宽度
ContinuationIndentWidth: 4
# # 去除C++11的列表初始化的大括号{后和}前的空格
Cpp11BracedListStyle: true
# 是否自动分析指针的对齐方式
# -- true - 自动分析并使用指针的对齐方式,若无法分析,则使用 PointerAlignment
# -- false - 不自动分析
# DerivePointerAlignment: true
# 是否禁用格式化
DisableFormat:   false
# ExperimentalAutoDetectBinPacking: false
# 是否自动修正命名空间的结束注释
# -- true - 在短的命名空间尾部,自动添加或修改错误的命名空间结束注释
# -- false - 不自动修正
FixNamespaceComments: true
# foreach 循环
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
# 多个 include 块(有空行分隔的include)排序时的分组规则
# -- Preserve - 保留原有的块分隔,各自排序
# -- Merge - 将所有的块视为同一个,然后进行排序
# -- Regroup - 将所有的块视为同一个进行排序,然后按照 IncludeCategories 的规则进行分组
IncludeBlocks:   Preserve
# IncludeCategories: 
#   - Regex:           '^<ext/.*\.h>'
#     Priority:        2
#   - Regex:           '^<.*\.h>'
#     Priority:        1
#   - Regex:           '^<.*'
#     Priority:        2
#   - Regex:           '.*'
#     Priority:        3
# IncludeIsMainRegex: '([-_](test|unittest))?$'
# # 缩进case标签
# -- true - case 不与 switch 对齐
# -- false - case 和 switch 对齐
IndentCaseLabels: true
# 预处理命令(#if\#ifdef\#endif等)的缩进规则
# -- None - 不进行缩进
# -- AfterHash - 在前导'#'后缩进,'#'放在最左侧,之后的语句参与缩进
# -- BeforeHash - 在前导'#'前进行缩进
IndentPPDirectives: AfterHash
# # 函数返回类型换行时,缩进函数声明或函数定义的函数名
# IndentWrappedFunctionNames: false
# JavaScript 中的字符串引号规则
# -- Leave - 保持原样
# -- Single - 全部使用单引号
# -- Double - 全部使用双引号 
JavaScriptQuotes: Leave
# 是否在 JavaScript 的 import/export 语句后换行
# JavaScriptWrapImports: true
# # 保留在块开始处的空行
# -- true - 保留块起始的空行
# -- false - 删除块起始的空行
KeepEmptyLinesAtTheStartOfBlocks: true
# 用于识别宏定义型块起始的正则表达式
# MacroBlockBegin: ''
# 用于识别宏定义型块结束的正则表达式
# MacroBlockEnd:   ''
# # 连续空行的最大数量
MaxEmptyLinesToKeep: 1
# # 命名空间内部的缩进规则
# -- None - 都不缩进
# -- Inner - 只缩进嵌套的命名空间内容
# -- All - 缩进所有命名空间内容
NamespaceIndentation: Inner
# Objective-C 相关配置
# ObjCBlockIndentWidth: 2
# ObjCSpaceAfterProperty: false
# ObjCSpaceBeforeProtocolList: false
# PenaltyBreakAssignment: 2
# PenaltyBreakBeforeFirstCallParameter: 1
# PenaltyBreakComment: 300
# PenaltyBreakFirstLessLess: 120
# PenaltyBreakString: 1000
# PenaltyExcessCharacter: 1000000
# PenaltyReturnTypeOnItsOwnLine: 200
# # 指针和引用(*和&)的对齐规则
# -- Left - * 靠近左侧
# -- Right - * 靠近右侧
# -- Middle - * 放在中间
# NOTE : 在 SpaceAroundPointerQualifiers 为 Default,
# 	 且 DerivePointerAlignment 失效后启用
PointerAlignment: Right
# RawStringFormats: 
#   - Delimiter:       pb
#     Language:        TextProto
#     BasedOnStyle:    google
# # 重新排版注释
ReflowComments:  false
# # 重新排序#include
# -- Never - 不进行排序
# -- CaseSensitive - 排序时大小写敏感
# -- CaseInsensitive - 排序时大小写不敏感
SortIncludes:    false
# java 中静态 import 的排序规则
# -- Before - 静态放在非静态前方
# -- After - 静态放在非静态后方
# SortJavaStaticImport: Before
# # 重新排序using声明
SortUsingDeclarations: false
# # 在C风格类型转换后添加空格
SpaceAfterCStyleCast: false
# # 在Template关键字后面添加空格
SpaceAfterTemplateKeyword: true
# # 在赋值运算符之前添加空格
SpaceBeforeAssignmentOperators: true
# # 在 C++11 的初始化列表前加空格
# SpaceBeforeCpp11BracedList: true
# 在构造函数的初始化冒号":"前加空格
# SpaceBeforeCtorInitializerColon: true
# 在构造函数的继承冒号":"前加空格
# SpaceBeforeInheritanceColon: true
# 小括号"()"前加空格的规则
# -- Never - 从不加空格
# -- ControlStatements - 只在控制语句(for/if/while...)时加空格
# -- ControlStatementsExceptForEachMacros - 类型 ControlStatements,只是不再 ForEach 后加空格
# -- Always - 总是添加空格
# -- NonEmptyParentheses - 类似 Always,只是不再空白括号前加空格  
SpaceBeforeParens: ControlStatements
# 在 for 循环的冒号":"前加空格
# SpaceBeforeRangeBasedForLoopColon: true
# # 在空白的小括号"()"中添加空格
SpaceInEmptyParentheses: false
# # 在行尾的注释前添加的空格数(只适用于//)
SpacesBeforeTrailingComments: 1
# # 在尖括号的"<"后,和">"前添加空格
SpacesInAngles:  false
# # 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格
SpacesInContainerLiterals: true
# # 在C风格类型转换的括号中添加空格
SpacesInCStyleCastParentheses: false
# # 在圆括号的"("后,和")"前添加空格
SpacesInParentheses: false
# 在中括号中加空格
# 当中括号内没有数据时,不受本规则影响(如空白的lambda 捕获表、不定长度的数组声明)
SpacesInSquareBrackets: false
# 语言标准: Cpp03, Cpp11, Auto
Standard: Auto
# # tab宽度
TabWidth: 4
# # 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always
UseTab: Never
---

6.参考

  1. vscode安装配置clang-format插件及使用小结
  2. c语言 clang-format
  3. Clang-format格式化及配置参数
  4. vscode设置C++代码格式化(Clang-Format)
  5. Clang-Format用法详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2283225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十五届蓝桥杯大赛软件赛省赛Java 大学 B 组(1、2题)

1.报数游戏 问题描述 小蓝和朋友们在玩一个报数游戏。由于今年是 2024 年&#xff0c;他们决定要从小到大轮流报出是 20或 24 倍数的正整数。前 10 个被报出的数是&#xff1a;20,24,40,48,60,72,80,96,100,120。请问第 202420242024个被报出的数是多少? 答案提交 这是一道结果…

【opencv】第9章 直方图与匹配

第9章 直方图与匹配 9.1 图像直方图概述 直方图广泛运用于很多计算机视觉运用当中&#xff0c;通过标记帧与帧之间显著的边 缘和颜色的统计变化&#xff0c;来检测视频中场景的变化。在每个兴趣点设置一个有相近 特征的直方图所构成“标签”,用以确定图像中的兴趣点。边缘、色…

多版本并发控制:MVCC的作用和基本原理

多版本并发控制&#xff1a;MVCC的作用和基本原理 1、MVCC简介1.1 快照读与当前读的区别1.1.1 快照读1.1.2 当前读 1.2 数据库的读写问题1.3 MVCC的作用 2、MVCC实现原理之ReadView2.1 什么是ReadView2.2 ReadView的设计思路2.3 MVCC整体操作流程 1、MVCC简介 1.1 快照读与当前…

SPDK vhost介绍

目录 1. vhost技术的背景与动机Virtio 介绍virtio-blk数据路径为例 2. vhost技术的核心原理2.1 vhost-kernel2.2 vhost-user举例 2.3 SPDK vhostvhost的优势IO请求处理数据传输控制链路调整 3. SPDK vhost的实现与配置3.1 环境准备3.2 启动SPDK vhost服务3.3 创建虚拟块设备3.4…

LMI Gocator GO_SDK VS2019引用配置

LMI SDK在VS2019中的引用是真的坑爹,总结一下经验,希望后来的人能少走弯路.大致内容如下: &#xff08;1&#xff09; 环境变量 &#xff08;2&#xff09;C/C 附加包含目录 E:\GWQ\Gocator\GO_SDK\Gocator\GoSdk E:\GWQ\Gocator\GO_SDK\Platform\kApi &#xff08;3&#…

C语言初阶--折半查找算法

目录 练习1&#xff1a;在一个有序数组中查找具体的某个数字n 练习2&#xff1a;编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 练习3&#xff1a;简单编写代码实现&#xff0c;模拟用户登录情景&#xff0c;并且只能登录三次 练习4&#xff1a;猜数字…

网安加·百家讲坛 | 樊山:数据安全之威胁建模

作者简介&#xff1a;樊山&#xff0c;锦联世纪教育能源工业互联网数字安全CSM(新能源运维师)课程特聘培训讲师&#xff0c;哈尔滨工业大学&#xff08;深圳&#xff09;信飞合创数据合规联合实验室特聘专家&#xff0c;武汉赛博网络安全人才研究中心资深专家&#xff1b;近24年…

基于Springboot + vue实现的在线装修管理系统

“前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff1a;人工智能学习网站” &#x1f496;学习知识需费心&#xff0c; &#x1f4d5;整理归纳更费神。 &#x1f389;源码免费人人喜…

利用大型语言模型在量化投资中实现自动化策略

“Automate Strategy Finding with LLM in Quant investment” 论文地址&#xff1a;https://arxiv.org/pdf/2409.06289 摘要 这个新提出的量化股票投资框架&#xff0c;利用大型语言模型&#xff08;LLMs&#xff09;与多智能体系统相结合的方法&#xff0c;通过LLMs从包括数…

vue3+uniapp开发鸿蒙初体验

去年7月20号&#xff0c;uniapp官网就已经开始支持鸿蒙应用开发了&#xff0c;话不多说&#xff0c;按照现有规则进行配置实现一下鸿蒙开发效果&#xff1b; 本文基于macOS Monterey 版本 12.6.5实现 开发鸿蒙的前置准备 这里就直接说我的版本&#xff1a; DevEco Studio 5.…

【C++】详细讲解继承(下)

本篇来继续说说继承。上篇可移步至【C】详细讲解继承&#xff08;上&#xff09; 1.继承与友元 友元关系不能继承 &#xff0c;也就是说基类友元不能访问派⽣类私有和保护成员。 class Student;//前置声明class Same //基类 { public:friend void Fun(const Same& p, con…

代码随想录刷题day14(2)|(链表篇)02.07. 链表相交(疑点)

目录 一、链表理论基础 二、链表相交求解思路 三、相关算法题目 四、疑点 一、链表理论基础 代码随想录 二、链表相交求解思路 链表相交时&#xff0c;是结点的位置&#xff0c;也就是指针相同&#xff0c;不是结点的数值相同&#xff1b; 思路&#xff1a;定义两个指针…

【学习笔记】计算机网络(二)

第2章 物理层 文章目录 第2章 物理层2.1物理层的基本概念2.2 数据通信的基础知识2.2.1 数据通信系统的模型2.2.2 有关信道的几个基本概念2.2.3 信道的极限容量 2.3物理层下面的传输媒体2.3.1 导引型传输媒体2.3.2 非导引型传输媒体 2.4 信道复用技术2.4.1 频分复用、时分复用和…

2024年个人成长、工作总结

一、2024年个人成长、工作总结 1.博客文章 在这一年的创作中&#xff0c;共发布95篇文章&#xff0c;其中&#xff1a; Scrum敏捷项目管理&#xff1a; Scrum敏捷项目管理 前端技术vue jquery&#xff1a; jQuery&#xff08;一&#xff09;jQuery基本语法 分布式事务&…

Arduino Uno 和 1.44 英寸 TFT 屏幕(SPI 接口)初体验

在嵌入式项目中&#xff0c;1.44 英寸 TFT 屏幕&#xff08;SPI 接口&#xff09;是一种非常实用的显示设备&#xff0c;适合用于显示文本、图形和简单动画。本文将详细介绍如何使用 Arduino Uno 和 1.44 英寸 TFT 屏幕进行基本的显示操作&#xff0c;包括显示文本、绘制图形和…

在 Windows 系统上,将 Ubuntu 从 C 盘 迁移到 D 盘

在 Windows 系统上&#xff0c;如果你使用的是 WSL&#xff08;Windows Subsystem for Linux&#xff09;并安装了 Ubuntu&#xff0c;你可以将 Ubuntu 从 C 盘 迁移到 D 盘。迁移过程涉及导出当前的 Ubuntu 发行版&#xff0c;然后将其导入到 D 盘的目标目录。以下是详细的步骤…

Kimi 1.5解读:国产AI大模型的创新突破与多模态推理能力(内含论文地址)

文章目录 一、Kimi 1.5的核心技术创新&#xff08;一&#xff09;长上下文扩展&#xff08;Long Context Scaling&#xff09;&#xff08;二&#xff09;改进的策略优化&#xff08;Improved Policy Optimization&#xff09;&#xff08;三&#xff09;简化框架&#xff08;S…

AIGC数智化赋能:创新地方文旅内容生产传播模式

随着人工智能技术的迅猛发展&#xff0c;AI的应用领域日益扩大。当前&#xff0c;如何将AI这一新质生产力转化为新质传播力和影响力&#xff0c;进而为城市文化和旅游产业的内容创造、传播及消费模式带来全面革新&#xff0c;已成为数字化文旅发展的关键议题。 AI宣传——提升…

医学图像分析工具09.1:Brainstorm安装教程

1. 安装前准备 **官方安装包和数据&#xff1a;**https://neuroimage.usc.edu/bst/download.php **官方安装教程&#xff1a;**https://neuroimage.usc.edu/brainstorm/Installation Matlab 版本要求&#xff1a; 有 Matlab&#xff1a; R2009b (7.9) 或更高版本没有 Matlab&…

网络(三) 协议

目录 1. IP协议; 2. 以太网协议; 3. DNS协议, ICMP协议, NAT技术. 1. IP协议: 1.1 介绍: 网际互连协议, 网络层是进行数据真正传输的一层, 进行数据从一个主机传输到另一个主机. 网络层可以将数据主机进行传送, 那么传输层保证数据可靠性, 一起就是TCP/IP协议. 路径选择: 确…