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

Linux中常见开发工具简单介绍

目录

apt/yum

介绍

常用命令

install

remove

list

vim

介绍

常用模式

命令模式

插入模式

批量操作

底行模式

模式替换图

vim的配置文件 

gcc/g++

介绍

处理过程

预处理

编译

汇编

链接

静态库

动态库(共享库)

make/Makefile

介绍

Makefile

Git

介绍

Git使用

git clone 

git status

git log

git add

git commit

git push

git pull

gdb/cgdb

介绍

使用


 

apt/yum

介绍

    apt和yum都是软件包管理器,apt是Ubuntu的,yum是CentOs的。它可以主动帮我们解决包的依赖问题。它是通过内置链接来实现下载软件包的。

    软件包管理器就相当于是手机上的应用商店,而软件包就类似于App。

常用命令

install

    安装软件包,yum/apt install 软件包名,在软件包名前加 -y 会不在询问我们是否执行该操作,而是直接执行(下面也一样)。注意:普通用户要下软件要用sudo。

    sl是一个有趣的命令,它会生成一个小火车:

remove

    删除软件包,yum/apt remove 软件包名。

    当删除后可以用--version来查看是否存在。

list

    查找软件包,yum/apt list 软件包名,软件包有很多如果直接找的话,工作量会很大,可以利用grep来查找。

 

vim

介绍

    vim是一个文本编辑器,vim是多模式的编辑器,其中常用的有命令模式,插入模式,底行模式。当我们打开vim时默认是命令模式。

    进入vim只需要vim 普通文件名即可。在打开vim时可以用:vim 文件名 +n,即可直接让光标在第n行。如果没有普通文件名会先创建一个然后在进入。

常用模式

命令模式

    该模式可以使用各种命令来对文本进行操作。

    下面是命令模式中光标移动的常用命令:

  1. gg:定位到开头
  2. G:定位到结尾
  3. nG:定位到第n行
  4. ^:定位到行头
  5. $:定位到行尾
  6. h:向左移动,相当于←
  7. j: 向下移动,相当于↓
  8. k:向上移动,相当于↑
  9. l: 向右移动,相当于→
  10. w:以单词为单位向后移动
  11. b:以单词为单位向前移动

    补充:6,7,8,9,10前均可加n,表示一次移动n行。

10、11演示:

现在光标在p处按一次w会到,如果这时按b回到p处,如果是2w就是移动两个单词,所以会到h处

    下面是命令模式中其它的常用命令:

  1. yy:复制当前行
  2. p:光标所在位置进行粘贴
  3. dd:剪切或删除当前行
  4. x:删除光标右边的内容
  5. X:删除光标左边的内容
  6. r:替换光标所在位置字符
  7. R:批量化替换
  8. ~:光标所在位置字母的大小写替换
  9. u:撤销历史操作
  10. ctrl + r:反撤销

    补充:1,2,3,4,5,6前均可加n,前三个表示一次操作n行,后面的表示一次操作n个长度。7会直接进入替换模式,替换模式简单来说就是你在键盘上按的键都会替换光标所在位置字符,替换一个光标默认向后移动。Esc即可退出返回到命令模式。

 

    下面是命令模式中查找的常用命令:

  1. #:自动选择光标所在位置单词
  2. n:从下向上找

    比如说现在有三个printf函数,

当你输入#后如下:

输入n会向上查找

 

插入模式

    该模式是用于输入和修改文本内容的模式。输入i进入该模式,Esc退出该模式并返回到命令模式。

 

批量操作

    在命令模式中用Ctrl + v进入V-BLOCK模式,然后用h、j、k、l选取范围,然后输入I进入插入模式,然后把范围的第一行写入要操作的内容,最后点Esc返回命令模式即可实现批量操作。

    先用Ctrl + v进入V-BLOCK模式,在左下角会有模式名字

    然后用h、j、k、l选取范围

    然后输入I进入插入模式 

   然后输入要批量操作的内容

    最后Esc返回命令模式,即可将剩余的选取范围都给操作掉 

    批量删除就和上面差不多,只是到选完区域后,按d键即可,并且会回到命令模式。

底行模式

    该模式用于执行一些需要输入命令或参数的操作。输入 : 进入该模式,Esc退出该模式并返回到命令模式。

    下面是底行模式的常用命令:

  1. wq!:强制保存退出(w保存,q退出,!强制)
  2. ! 命令:执行外部命令(在shell外壳中,!加指令的首字母将会自动执行最近的一次以该字母开头的指令)
  3. %s/old/new:把文件里的old都给替换成new
  4. / 单词:在文件里正向查找该单词
  5. ? 单词:在文件里反向查找该单词
  6. vs 文件名:新建或打开该文件,用Ctrl + ww切换不同文件

2演示: 

    在vim中:

     在shell外壳中:

3演示:

6演示:

    因为我的目录里没有tt.c所以会新建一个tt.c,光标默认在tt.c里。

    如果想把光标给移到test.c里就要用到ctrl + ww

    可以看到光标确实到了test.c里了。 

 

模式替换图

vim的配置文件 

    vim的配置需要有.vimrc,如果没有就需要我们自己提供一个,他是给vim提供各种配件的例如:设置行号、自动补全等。大家可以自己去网上查查。

gcc/g++

介绍

    gcc/g++是编译器,gcc用于编译C语言,g++用于编译C++。

 

处理过程

预处理

    本质上是修改我们的代码比如:删注释,宏替换,头文件展开等。

    可以用下面的指令来实现生成预处理之后的文件:

    gcc -E test.c -o test.i。其中-E是告诉编译器预处理完之后停下来,-o 选项用于指定输出文件的名称。如果没有-o test.i它会默认生成一个与源文件名字相同后缀不同的文件。

编译

    经过编译之后会将代码变成汇编代码,之所以变汇编代码是因为语言发展的历史原因决定的,是先有汇编再有其他的高级语言。

    gcc -S test.i -o test.s。-S是告诉编译器编译完之后停下来。

汇编

    经过汇编之后会生成目标文件里面的内容是二进制,但是这时的二进制文件还不能直接执行。

    gcc -c test.s -o test.o。-c是告诉编译器汇编完之后停下来。Linux中的目标文件后缀是.o,Windows是.obj。

链接

    把.o文件给链接起来,并让程序在库中找到对应方法的地址,最终生成可执行文件。

    最后./code即可运行程序。

    大多数情况下不会像上面一样而是首先生成目标文件,然后再统一链接,这么做可以提高编译效率并且提高文件复用。

    库里面的文件一般也都是目标文件,库分为静态库和动态库。

静态库

    后缀在Linux下是.a,Windows下是.lib。直接在库里拷贝一份到你的程序里,但体积大,浪费资源。

动态库(共享库)

    后缀在Linux下是.so,Windows下是.dll。需要跳转到库里去执行(通过在链接中找到的地址),库一旦缺失就会使程序无法运行,体积小,库里面的函数只会在内存中出现一次。

 

make/Makefile

介绍

    make是自动化构建工具。它通过读取特定的配置文件(Makefile,M/m均可),根据其中定义的规则来自动执行相应命令,从而实现对软件项目的自动化构建。

    Makefile是一个文本文件,用于告知make工具如何构建项目。它包含一系列规则,明确了目标文件、这些目标文件依赖文件以及生成目标文件所依赖的命令。

Makefile

    Makefile文件默认是没有的,需要我们在当前目录自己提供一个,下面是规则格式:

    目标文件:依赖文件(依赖关系)

        依赖方法

    依赖方法前面要加一个TAB键!

    要构建项目时只需要make目标文件,如果目标文件是Makefile的第一个目标文件那就可以不写目标文件。

    .PHONY是用于定义伪目标。具体如下:

    被它修饰的目标文件可以多次make,因为make之后如果依赖文件没有修改就不会重新编译。它只会对修改的文件做重新编译并不会全部编译。

    可以看到多次make并没有什么问题,那要是code呢?

    可以看到给出了提醒

    判断是否修改是通过查看文件的Modify的时间(记录内容修改时的时间)来确定的,如果.c的M要新于.exe的M那就会进行重新编译。补充:文件的时间属性还有Access和Change其中Access是记录查看文件的时间(到达一定的次数才会改变),Change是记录文件属性修改的时间(它和Modify几乎是同时改变的,因为内容的修改就会改变大小,时间等)。可以通过stat来查看文件的属性。

    在Makefile里可以定义变量类似于宏,$(变量名)类似于解引用。

    大家可能发现了上面的红框里这是自动打印的依赖方法,可以用@隐藏。 

    $@:表示目标文件,$^:表示依赖文件列表。

    %.o:%.c,它是一种规则模式,它表示所有的.o文件都可以通过.c文件来生成,本质上就是一个一个展开,%类似于通配符。

    $< 是一个自动变量,它代表规则中的第一个依赖文件。例如,在规则 code.o: test.c tt.h中, $<  就代表 test.c 。

    当前目录所有源文件可以用SRC=$(shell ls *.c)或者SRC=$(wildcard *.c)来拿到。定义目标文件可以OBJ=$(SRC:.c=.o)这是一种变量替换语法。它的作用仅仅是生成一个目标文件列表,#是注释。

    总体浏览:

    通过上面的操作我们就可以了很方便的构建项目,虽然现在看不出来但要是等文件多起来的时候就会变得巨方便。

 

Git

介绍

    Git是版本控制器,它用来进行版本控制,简单来说,就是对项目中的文件、代码等内容的变更进行记录、管理和追踪的系统。同时支持多个开发者进行协作开发项目。

    使用Git可以将代码存在本地或远端,Git允许从远端推送到本地,从本地拉取到远端。一般将代码上传到远端仓库,这样可以方便团队协作,仓库其实就是一个文件夹。像gitee和github就是基于git开发的网站或平台(远端)。

    Git还是去中心化,分布式的版本控制,即没有中心控制节点,系统中各节点地位平等,数据、任务或功能分散在多个不同节点上。

 

Git使用

git clone 

    后面接远端仓库链接,用于克隆(复制)远程仓库到本地的,会新增一个文件该文件叫工作区也是本地仓库,进入该工作区用ll会看到.git这就是实际仓库。

    在我的目录里,linux-learning就是我的工作区。

git status

    用于查看Git中用于查看当前工作目录和暂存区状态的命令。

git log

    用于查看提交历史记录。

git add

    后接要上传的文件,这里只是将文件放在了暂存区,这些文件的修改就会被Git跟踪,等待后续使用git commit命令提交到本地仓库的版本历史中。

    注意:Git只会记录修改部分的变化!

git commit

    后接 -m "",双引号里的内容一定要是有意义的。之后暂存区的文件就会被上传到本地仓库里。

git push

    将本地的文件上传到远端仓库。

    可以看到确实在远端仓库确实多了一次提交 

git pull

    当远端仓库的文件跟本地不同步时才要pull的,用于将远端仓库的文件拉取到本地仓库,也就是同步远端仓库。当同步后在add、commit、push。

 

gdb/cgdb

介绍

    gdb是调试工具,主要用于调试C、C++等编程语言编写的程序。cgdb是一款基于gdb的图形化调试工具,为开发者提供了更直观、高效的调试体验。

安装cgdb

    Ubuntu:apt-get install -y cgdb

    Centos:yum install -y cgdb

    在Linux中用gcc/g++编译好的程序,无法直接调试,因为默认的工作模式是release,要在编译时gcc/g++后加-g(相当于是添加调试信息)才是debug模式。gdb/cgdb后要接可执行文件。

 

使用

    下面是常用命令:

  1. l:查看源代码,后面可以接行号,表示要查看第几行的源码
  2. b:打断点,有三种打法:1.b 文件名:行号、2.b 文件名:函数、3.b 行号
  3. info b:查看断点信息
  4. d:删除断点,后面只能接断点编号不能接行号,只要你不退出cgdb,编号会一直向后线性递增
  5. r:从头运行程序或到下个断点,即使程序结束在输入r之后会再次从头开始运行程序至遇到断点或结束程序。
  6. n:逐过程,不进函数里
  7. s:逐语句,进函数里
  8. quit:退出调试器
  9. bt:查看栈帧
  10. finish:直接执行到函数结束(return语句之后)
  11. p:后可以接变量或表达式,用于查看值
  12. disable:后接断点序号,用于忽略断点
  13. enable:后接断点序号,用于启动断点
  14. c:从该断点运行到下个断点
  15. until:后接行号,用于跳过循环到指定行号(并非跳过而是执行完循环)
  16. display:后接变量,用于监视变量
  17. undisplay:后监视变量序号,用于取消监视变量
  18. info locals:查看函数里所有临时变量
  19. watch:后接变量,当该变量改变时会告诉你
  20. set var:后接变量=值,给变量赋值
  21. 条件断点:即满足某一条件时才会被执行。1.新增断点:b 行号 if 判断语句、 2.对已有断点添加条件:condition 编号 判断语句

    使用cgdb时输入Esc到代码处可以上下翻动,输入i回到原来的地方。

10演示:

    当我输入后:

15演示: 

     当我输入后:

    上面我所介绍的开发工具一定要自己上手练习!!!

 

 

 

 

 

 

相关文章:

Linux中常见开发工具简单介绍

目录 apt/yum 介绍 常用命令 install remove list vim 介绍 常用模式 命令模式 插入模式 批量操作 底行模式 模式替换图 vim的配置文件 gcc/g 介绍 处理过程 预处理 编译 汇编 链接 库 静态库 动态库&#xff08;共享库&#xff09; make/Makefile …...

深入理解深度Q网络DQN:基于python从零实现

DQN是什么玩意儿&#xff1f; 深度Q网络&#xff08;DQN&#xff09;是深度强化学习领域里一个超厉害的算法。它把Q学习和深度神经网络巧妙地结合在了一起&#xff0c;专门用来搞定那些状态空间维度特别高、特别复杂的难题。它展示了用函数近似来学习价值函数的超能力&#xf…...

使用lldb看看Rust的HashMap

目录 前言 正文 读取桶的状态 获取键值对 键值对的指针地址 此时&#xff0c;读取数据 读取索引4的键值对 多添加几个键值对 使用i32作为键&#xff0c;&str作为值 使用i32作为键&#xff0c;String作为值 前言 前面使用ldb看了看不同的类型&#xff0c;这篇再使用…...

Vue3简易版购物车的实现。

文章目录 一、话不多说&#xff0c;直接上代码&#xff1f; 一、话不多说&#xff0c;直接上代码&#xff1f; <template><div><input type"text" placeholder"请输入内容" v-model"keywords"><button click"addGood…...

比亚迪全栈自研生态的底层逻辑

比亚迪全栈自研生态的底层逻辑&#xff1a;汽车工程师必须理解的闭环技术革命 引言&#xff1a;当技术壁垒成为护城河 2023年比亚迪销量突破302万辆的震撼数据背后&#xff0c;隐藏着一个更值得工程师深思的事实&#xff1a;其全栈自研体系覆盖了新能源汽车83%的核心零部件。这…...

[Java实战]Spring Boot 快速配置 HTTPS 并实现 HTTP 自动跳转(八)

[Java实战]Spring Boot 快速配置 HTTPS 并实现 HTTP 自动跳转(八) 引言 在当今网络安全威胁日益严峻的背景下&#xff0c;为 Web 应用启用 HTTPS 已成为基本要求。Spring Boot 提供了简单高效的方式集成 HTTPS 支持&#xff0c;无论是开发环境测试还是生产环境部署&#xff0…...

5.1.1 WPF中Command使用介绍

WPF 的命令系统是一种强大的输入处理机制,它比传统的事件处理更加灵活和可重用,特别适合 MVVM (Model, View, ViewModel)模式开发。 一、命令系统核心概念 1.命令系统基本元素: 命令(Command): 即ICommand类,使用最多的是RoutedCommand,也可以自己继承ICommand使用自定…...

设计模式简述(十九)桥梁模式

桥梁模式 描述基本组件使用 描述 桥梁模式是一种相对简单的模式&#xff0c;通常以组合替代继承的方式实现。 从设计原则来讲&#xff0c;可以说是单一职责的一种体现。 将原本在一个类中的功能&#xff0c;按更细的粒度拆分到不同的类中&#xff0c;然后各自独立发展。 基本…...

常用设计模式

一、什么是设计模式 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验总结&#xff0c;旨在解决面向对象设计中反复出现的问题&#xff0c;提升代码的可重用性、可理解性和可靠性。以下从多个维度详细讲解&#xff…...

20242817-李臻-课下作业:Qt和Sqlite

实验内容 阅读附件内容&#xff0c;编译运行附件中第一章&#xff0c;第三章的例子。 实验过程 第一章 t1实践 #include <QApplication> #include <QWidget> #include <QPushButton> #include <QVBoxLayout>int main(int argc, char *argv[]) {QA…...

嵌入式机器学习平台Edge Impulse图像分类 – 快速入门

陈拓 2025/05/08-2025/05/11 1. 简介 官方网址 https://edgeimpulse.com/ 适用于任何边缘设备的人工智能&#xff1a; Gateways - 网关 Sensors & Cameras - 传感器和摄像头 Docker Containers - Docker容器 MCUs, NPUs, CPUs, GPUs 构建数据集、训练模型并优化库以…...

JavaWeb, Spring, Spring Boot

出现时间 JavaWeb - Spring - Spring Boot 一、JavaWeb 的发展历程 Servlet 和 JSP&#xff1a; Servlet&#xff1a;1997 年首次发布&#xff0c;用于处理 HTTP 请求和响应。 JSP&#xff1a;1999 年首次发布&#xff0c;用于动态生成 HTML 页面。 特点&#xff1a;提供了基…...

upload-labs靶场通关详解:第五关

一、分析源代码 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(UPLOAD_PATH)) {$deny_ext array(".php",".php5",".php4",".php3",".php2",".html",".htm",".ph…...

【问题】Watt加速github访问速度:好用[特殊字符]

前言 GitHub 是全球知名的代码托管平台&#xff0c;主要用于软件开发&#xff0c;提供 Git 仓库托管、协作工具等功能&#xff0c;经常要用到&#xff0c;但是国内用户常因网络问题难以稳定访问 。 Watt Toolkit&#xff08;原名 Steam&#xff09;是由江苏蒸汽凡星科技有限公…...

GitHub打开缓慢甚至失败的解决办法

在C:\Windows\System32\drivers\etc的hosts中增加如下内容&#xff1a; 20.205.243.166 github.com 199.59.149.236 github.global.ssl.fastly.net185.199.109.153 http://assets-cdn.github.com 185.199.108.153 http://assets-cdn.github.com 185.199.110.153 http://asset…...

【25软考网工】第六章(3)数字签名和数字证书

博客主页&#xff1a;christine-rr-CSDN博客 ​专栏主页&#xff1a;软考中级网络工程师笔记 ​​ 大家好&#xff0c;我是christine-rr !目前《软考中级网络工程师》专栏已经更新二十多篇文章了&#xff0c;每篇笔记都包含详细的知识点&#xff0c;希望能帮助到你&#xff01…...

Android Native 函数 Hook 技术介绍

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 Android Native 函数 Hook 技术是一种在应用运行时拦截或替换系统或自身函数行为的手段&#xff0c;常见实现包括 PLT Hook、Inline Hook。 PLT Hook 和…...

代码随想录算法训练营第60期第三十二天打卡

大家好&#xff0c;今天是我们贪心算法章节的第三阶段&#xff0c;前面我们讲过的几道题不知道大家理解的情况如何&#xff0c;还是那句话&#xff0c;贪心算法没有固定的套路与模板&#xff0c;一道题一个思路&#xff0c;我们要多思考这样慢慢地我就就可以水到渠成。今天我们…...

Problem C: 异常1

1.题目描述 检测年龄&#xff0c;其中若为负数或大于等于200岁皆为异常&#xff0c;请将下列代码补充完整。 // 你的代码将被嵌入这里 class Main{ public static void main(String[] args){ Person p1new Person("John",80); Person p2new Pers…...

Ollama部署使用以及模型微调和本地部署

ollama是一款开源的本地大语言模型管理工具&#xff0c;专注于简化大语言模型&#xff08;LLM&#xff09;的本地部署和使用。以下是关于 Ollama 应用的详细介绍&#xff1a; Ollama 的主要功能 本地化部署&#xff1a; Ollama 支持在本地运行模型&#xff0c;无需依赖外部云…...

汇编学习——iOS开发对arm64汇编的初步了解

汇编学习——iOS开发对arm64汇编的初步了解 文章目录 汇编学习——iOS开发对arm64汇编的初步了解前言栈 指令 寄存器寄存器指令运算指令寻址指令前变基 与 后变基 栈堆&#xff08;Heap&#xff09;内存机制三、栈&#xff08;Stack&#xff09;内存机制 3. 多级调用示例 例子A…...

前端代理问题

在前后端联调的时候&#xff0c;有一次因为前端项目代理配置有问题&#xff0c;导致请求接口对不上&#xff0c; transpileDependencies: true,devServer: {hot: true,port: 8081,proxy: {/api: {target: http://localhost:8080,changeOrigin: true,ws: true,pathRewrite: {^/a…...

E+H流量计通过Profibus DP主站转Modbus TCP网关与上位机轻松通讯

EH流量计通过Profibus DP主站转Modbus TCP网关与上位机轻松通讯 在现代工业自动化的广阔舞台上&#xff0c;Profibus DP与Modbus TCP这两种通信协议各领风骚&#xff0c;它们在不同的应用场景中发挥着举足轻重的作用。但工业生产的复杂性往往要求不同设备、系统之间能够顺畅沟…...

TCP/IP 模型每层的封装格式

TCP/IP 模型是一个四层网络架构&#xff0c;每一层在数据传输时都会对数据进行封装&#xff0c;添加相应的头部&#xff08;和尾部&#xff09;信息。以下是各层的封装格式及关键字段说明&#xff1a; 1. 应用层&#xff08;Application Layer&#xff09; 封装格式&#xff1a…...

openjdk底层汇编指令调用(一)——汇编指令及指令编码基础

汇编指令 计算机在执行过程时只识别代表0或者1的电信号。因此为了让计算机能够执行则须向计算机输入一系列01构成的指令。 例如在x64平台下&#xff0c;0x53&#xff0c;二进制为01010011&#xff0c;表示将rbx寄存器中的值压栈。 但是&#xff0c;对于程序员而言&#xff0c;…...

5G-A来了!5G信号多个A带来哪些改变?

5G-A来了&#xff01;5G信号多个A带来哪些改变&#xff1f; 随着科技不断进步&#xff0c;通信网络的迭代升级也在加速。自4G、5G的推出以来&#xff0c;我们见证了通信技术的飞跃式发展。最近&#xff0c;越来越多的用户发现自己手机屏幕右上角的5G标识已经变成了“5G-A”。那…...

探索虚拟化:云计算时代的资源优化之道

前言 如果您想知道云提供商如何在全球范围内运行无数应用程序&#xff0c;而每个应用程序都没有机架服务器&#xff0c;那么答案就在于虚拟化。 它是为云提供支持的核心技术之一&#xff0c;在幕后悄悄工作&#xff0c;使现代计算高效、可扩展且具有成本效益。 在本文中&#x…...

用户登录构件示例

目录 一、登录构件概述 二、构件内部结构 1. 构件组成元素(表格形式) 2. 组件连接件设计...

【软件测试】基于项目驱动的功能测试报告

目录 一、项目的介绍 1.1 项目背景 二、测试目标 2.1 用户服务模块 2.1.1 用户注册模块 2.1.1.1 测试点 2.1.1.2 边界值分析法(等价类+边界值) 2.1.1.2.1 有效等价类 2.1.1.2.2 无效等价类 2.1.1.2.3 边界值 2.1.1.2.4 测试用例设计 2.2 文章标签模块 2.3 文章模…...

【QT】UDP通讯本地调试

qt已经写好了udp通讯代码&#xff0c;现在要进行测试。 1、终端输入ipconfig查看本机网卡的ipv4地址 2、 用udpBind函数&#xff0c;绑定到此ip和自定义的端口号。 3、 打开网络调试助手&#xff0c;自动检测到本机的ip地址&#xff0c;输入任意一个和程序里不一样的端口号。 …...

web animation API 锋利的css动画控制器 (更新中)

什么是web animation api 以及为什么要使用web animation api&#xff1f; web animation API 是web页面中控制DOM元素动画效果的javascript原生API。 它能够逐个关键帧控制动画效果&#xff0c;具有Timeline 机制‌能通过javascript来实现动画的暂停&#xff0c;播放&#x…...

Nginx的增强与可视化!OpenResty Manager - 现代化UI+高性能反向代理+安全防护

以下是对OpenResty Manager的简要介绍&#xff1a; OpenResty Manager &#xff08;Nginx 增强版&#xff09;&#xff0c;是一款容易使用、功能强大且美观的反向代理工具 &#xff0c;可以作为OpenResty Edge 的开源替代品基于 OpenResty 开发&#xff0c;支持并继承 OpenRes…...

Spring Boot 中的重试机制

Retryable 注解简介 Retryable 注解是 Spring Retry 模块提供的&#xff0c;用于自动重试可能会失败的方法。在微服务架构和分布式系统中&#xff0c;服务之间的调用可能会因为网络问题、服务繁忙等原因失败。使用 Retryable 可以提高应用的稳定性和容错能力 1。 使用步骤 &…...

[Java实战]Spring Boot 整合 Freemarker (十一)

[Java实战]Spring Boot 整合 Freemarker (十一) 引言 Apache FreeMarker 作为一款高性能的模板引擎&#xff0c;凭借其简洁语法、卓越性能和灵活扩展性&#xff0c;在 Java Web 开发中占据重要地位。结合 Spring Boot 的自动化配置能力&#xff0c;开发者能快速构建动态页面、…...

现有预测式外呼系统如何接入AI系统,使用AI辅助,判断出意向客户再转人工

很多用户还在使用老旧的预测式外呼系统&#xff0c;只能外呼接通后播放一个提示音&#xff0c;播放完提示音后在转给人工坐席&#xff0c; 如果重新部署一套AI外呼系统&#xff0c;涉及到业务系统的迁移&#xff0c;非常不方便。 现在我就做一个如何让现有外呼系统&#xff0c…...

实战项目3(04)

​​​​​​目录 ​​​​​​任务场景一 【r1配置】 【sw1配置】 任务场景二 【r1配置】 【sw1配置】 【sw2配置】 任务场景一 某公司网络为了减少广播包对网络的影响&#xff0c;网络管理员对网络进行了VLAN划分&#xff0c;完成VLAN划分后&#xff0c;为了不影响VL…...

[Java实战]Spring Boot 静态资源配置(十三)

[Java实战]Spring Boot 静态资源配置&#xff08;十三&#xff09; 引言 静态资源&#xff08;如 HTML、CSS、JavaScript、图片等&#xff09;是 Web 应用的基石。Spring Boot 通过自动化配置简化了静态资源管理&#xff0c;但面对复杂场景&#xff08;如多模块项目、CDN 集成…...

ESP-ADF wifi_service子模块wifi_ssid_manager凭证管理函数详解

目录 ESP-ADF wifi_service子模块wifi_ssid_manager凭证管理函数详解WiFi凭证管理函数分析wifi_ssid_manager_savewifi_ssid_manager_erase_all 内部实现机制存储策略分析内部数据流向关键辅助函数分析重要的内部辅助函数详解get_stored_id_by_ssidnvs_get_write_idnvs_set_cou…...

数据分析预备篇---NumPy数组

NumPy是数据分析时常用的库,全称为Numerical Python,是很多数据或科学相关Python包的基础,包括pandas,scipy等等,常常被用于科学及工程领域。NumPy最核心的数据结构是ND array,意思是N维数组。 #以下是一个普通列表的操作示例:arr = [5,17,3,26,31]#打印第一个元素 prin…...

解决VirtualBox中虚拟机(ubuntu)与主机(windows)之间互相复制粘贴(文本)

一.开始的设置 1.在VirtualBox中打开设置&#xff0c;常规中修改主机与虚拟机交互设置 2.虚拟机关闭状态下&#xff0c;存储中选中控制器SATA&#xff0c;勾选‘使用主机输入输出’ 3.选中操作系统对应的虚拟文件&#xff0c;.vdi文件&#xff0c;勾选右边的固态驱动器。 4.启…...

单细胞RNA测序数据分析与可视化:从基础原理到高级应用

引言 单细胞RNA测序&#xff08;scRNA-seq&#xff09;技术的出现彻底改变了我们研究复杂生物系统的方式&#xff0c;使科学家能够在前所未有的精细水平上解析细胞异质性。传统的bulk RNA测序只能捕获细胞群体的平均表达特征&#xff0c;而单细胞转录组测序允许我们检测每个细…...

嵌入式硬件篇---UART

文章目录 前言1. UART协议基础1.1 物理层特性两根信号线无时钟信号电平标准TTL UARTRS-232 1.2 数据帧格式1.3 波特率计算波特率 2. STM32F103RCT6的UART配置2.1 硬件连接2.2 CubeMX配置启用USART1引脚分配中断启用&#xff08;可选&#xff09; 3. HAL库代码实现3.1 UART初始化…...

C# 通过ConfigurationManager读写配置文件App.Config

目录 简述代码描述一、构建App.config二、调用代码1、代码步骤说明2、输出结果说明 简述 App.config 是 C#中最常用的配置文件类型。 通常位于项目的根目录中&#xff0c;以 XML 格式存储配置信息。App.config 文件可以包含多个配置节&#xff0c;如 appSettings、connectionS…...

Python3安装HTMLTestRunner

1.下载HTMLTestRunner地址&#xff1a;http://tungwaiyip.info/software/HTMLTestRunner.html 2.下载的HTMLTestRunner.py是针对python2写的&#xff0c;所以需要改成python3适合的内容&#xff1a; 问题1&#xff1a;No module named StringIO&#xff0c; 原因&#xff1a;py…...

图形化编程革命:iVX携手AI 原生开发范式

一、技术核心&#xff1a;图形化编程的底层架构解析 1. 图形化开发的效率优势&#xff1a;代码量减少 72% 的秘密 传统文本编程存在显著的信息密度瓶颈。以 "按钮点击→条件判断→调用接口→弹窗反馈" 流程为例&#xff0c;Python 实现需定义函数、处理缩进并编写 …...

GC垃圾回收

Gc是语言提供的自动的内存管理机制&#xff0c;自动释放不需要的内存对象&#xff0c;让出存储器资源。 Go语言变革&#xff1a; V1.5的三色并发标记法 V1.5的三色并发标记为什么需要STW V1.5的三色标记为什么需要屏障机制(“强-弱”&#xff0c;三色不变式、插入屏障、删除屏障…...

“多端多接口多向传导”空战数据链体系——从异构融合架构到抗毁弹性网络的系统性设计

“多端多接口多向传导”空战数据链体系——从异构融合架构到抗毁弹性网络的系统性设计 文章目录 “多端多接口多向传导”空战数据链体系——从异构融合架构到抗毁弹性网络的系统性设计第一章 引言:空战数据链体系的范式革新1.1 空战数据链的演进逻辑1.2 新架构的核心理论价值1…...

Unity3D仿星露谷物语开发42之粒子系统

1、目标 使用例子系统&#xff0c;实现割草后草掉落的特效。 通过PoolManager获取特效预制体&#xff0c;通过VFXManager来触发特效。 2、配置例子特效 在Hierarchy -> PersistentScene下创建新物体命名为Reaping。 给该物体添加Particle System组件。 配置例子系统参数…...

python打卡训练营打卡记录day22

复习日 仔细回顾一下之前21天的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a; 自行学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码 kaggle泰坦尼克号人员生还预测 导入数据 # 导入所需库 import pandas as pd impor…...

网络编程(一)网络编程入门

本节课学习TCP客户端和服务器端编程架构&#xff0c;其分为分为C/S&#xff08;客户端/服务器模式&#xff09;和B/S&#xff08;浏览器/服务器架构模式&#xff09;两种模式。接下来我们分别了解这两种模式 C/S模式 C/S模式&#xff1a;服务器首先先启动&#xff0c;并根据客…...