【Linux】Linux工具(1)
3.Linux工具(1)
文章目录
- 3.Linux工具(1)
- Linux 软件包管理器 yum
- 什么是软件包
- 关于 rzsz
- 查看软件包——yum list命令
- 如何安装软件
- 如何卸载软件
- 补充——yum如何找到要安装软件的下载地址
- Linux开发工具
- Linux编辑器-vim使用
- 1.vim的基本概念
- 2.vim的基本操作
- 3.简单vim配置
- Linux编译器-gcc/g++使用
- 1.背景知识
- 2.gcc如何完成
- 预处理(进行宏替换)
- 编译(生成汇编)
- 汇编(生成机器可识别代码)
- 连接(生成可执行文件或库文件)
- 动态库
- 动态库、动态链接、静态库与静态链接的对比总结
- gcc选项
Linux 软件包管理器 yum
什么是软件包
- 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
- 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
- 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
- yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,Centos等发行版上.
关于 rzsz
这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件,安装完毕之后可以通过拖拽的方式将文件上传过去.
- 注意事项
关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!
可以通过 ping 指令验证
查看软件包——yum list命令
通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:
[root@hcss-ecs-b735 dir2]# yum list | grep gcc-c++
gcc-c++.x86_64 4.8.5-44.el7 @base
avr-gcc-c++.x86_64 4.9.2-1.el7 epel
gcc-c++-aarch64-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-alpha-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-arm-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-avr32-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-bfin-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-c6x-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-cris-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-frv-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-h8300-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-hppa-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-hppa64-linux-gnu.x86_64 4.8.5-16.el7.1 epel
gcc-c++-ia64-linux-gnu.x86_64 4.8.5-16.el7.1 epel
注意:
- 软件包名称: 主版本号、次版本号、源程序发行号、软件包的发行号、主机平台、cpu架构
x86_64
后缀表示64位系统的安装包,i686
后缀表示32位系统安装包. 选择包时要和系统匹配.el7
表示操作系统发行版的版本,el7
表示的是centos7/redhat7
.el6
表示centos6/redhat6
.- 最后一列,
base
表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.
如何安装软件
通过 yum, 我们可以通过很简单的一条命令完成 gcc-c++ 的安装.
[root@hcss-ecs-b735 dir2]# yum install -y gcc-c++ #主要看这里
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package gcc-c++.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: libstdc++-devel = 4.8.5-44.el7 for package: gcc-c++-4.8.5-44.el7.x86_64
--> Running transaction check
---> Package libstdc++-devel.x86_64 0:4.8.5-44.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved=============================================================================================Package Arch Version Repository Size
=============================================================================================
Installing:gcc-c++ x86_64 4.8.5-44.el7 base 7.2 M
Installing for dependencies:libstdc++-devel x86_64 4.8.5-44.el7 base 1.5 MTransaction Summary
=============================================================================================
Install 1 Package (+1 Dependent package)Total download size: 8.7 M
Installed size: 25 M
Downloading packages:
(1/2): libstdc++-devel-4.8.5-44.el7.x86_64.rpm | 1.5 MB 00:00:00
(2/2): gcc-c++-4.8.5-44.el7.x86_64.rpm | 7.2 MB 00:00:00
---------------------------------------------------------------------------------------------
Total 33 MB/s | 8.7 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : libstdc++-devel-4.8.5-44.el7.x86_64 1/2 Installing : gcc-c++-4.8.5-44.el7.x86_64 2/2 Verifying : gcc-c++-4.8.5-44.el7.x86_64 1/2 Verifying : libstdc++-devel-4.8.5-44.el7.x86_64 2/2 Installed:gcc-c++.x86_64 0:4.8.5-44.el7 Dependency Installed:libstdc++-devel.x86_64 0:4.8.5-44.el7 Complete! #主要看这里
yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装.(我这里由于使用了-y选项所以不需要再次确认来继续安装)
出现 “complete” 字样, 说明安装完成.
注意事项:
- 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
- yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
如果 yum 报错, 请自行百度.
如何卸载软件
仍然是一条命令:
yum remove [软件名]
补充——yum如何找到要安装软件的下载地址
当我们在使用yum下载软件的时候我们会发现,我们并不需要向yum提供详细的软件下载地址就可以直接通过软件名下载这个软件。这是因为yum有相应的配置文件,这个配置文件里面会记录yum其他软件有关的下载路径
[root@hcss-ecs-b735 dir2]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo epel.repo.rpmnew
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo epel-testing.repo
CentOS-Debuginfo.repo CentOS-Sources.repo epel.repo
对于如何切换yum源以及如何对虚拟机上的Linux系统配置yum源,可以在网上进行搜索。在网上找到yum源、直接下载在Linux服务器中的yum源配置文件位置
#!/bin/bash
## 备份 /etc/yum.repos.d/CentOS-Base.repo
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
## 更换为阿里源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
## 安装epel
sudo yum install -y epel-release
## 使用阿里提供的epel源
sudo curl -o /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
## 清空yum缓存
sudo yum clean all
## 重建yum缓存
sudo yum makecache
Linux开发工具
Linux编辑器-vim使用
vim是一个多模式的编辑器,不是编译器(不能编译代码)
1.vim的基本概念
vim有很多种模式但这里只简要介绍三种最常用的模式,三种模式分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
-
正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode -
插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。 -
末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入
2.vim的基本操作
vim的操作指令有点多,其实不需要刻意去记忆,用的多了自然就记住了,这里简单列举几个
1. 模式切换
按 Esc
退出其他模式。(进入正常模式)
[正常模式]切换至[插入模式]
-
i
:光标前插入 这个用的最多 -
I
:行首插入 -
a
:光标后插入 -
A
:行尾插入 -
o
:下方新建行插入 -
O
:上方新建行插入 -
v
:字符选择 -
V
:行选择 -
Ctrl+v
:块选择 -
[正常模式]切换至[末行模式]
「shift + ;」, 其实就是输入「:」
2. 光标移动
-
h
← /j
↓ /k
↑ /l
→ 这个基本不用,用键盘上的上下左右键就可以 -
0
:行首 /^
:第一个非空字符 -
$
:行尾 -
gg
:文件开头 -
G
:文件末尾 -
5G
或:5
:跳转到第5行 -
Ctrl+f
:向下翻页 /Ctrl+b
:向上翻页 -
%
:跳转到匹配的括号(如{}
,()
) -
w
光标移动到下一个单词(连续英文字符串) -
b
光标移动到上一个单词(连续英文字符串)
3. 文本编辑
-
shift + r
:进入替换模式,需要用EXC
退回正常模式 -
x
:删除光标指向的字符 -
shift + ~
:大小写切换 -
shift + x
:删除光标之前的字符 -
dw
:删除到单词结尾 -
dd
:删除整行(应该算是一种剪切) -
3dd
:删除3行 -
d$
:删除到行尾 -
yy
:复制当前行 -
3yy
:复制3行 -
p
:粘贴到光标后 /P
:粘贴到光标前 -
u
:撤销 -
Ctrl+r
:重做
4. 搜索与替换
-
/keyword
:向下搜索(注意这个ketword
是你要找的字符) -
?keyword
:向上搜索 -
n
:下一个匹配 /N
:上一个匹配 -
:s/old/new
:替换当前行第一个匹配 -
:s/old/new/g
:替换当前行所有匹配 -
:%s/old/new/g
:替换全文所有匹配 -
:%s/old/new/gc
:替换时逐个确认
5. 保存与退出
:w
:保存:q
:退出:wq
或:x
:保存并退出:q!
:强制退出(不保存):w!
:强制写入wq!
:强制保存并退出ZZ
(Shift+z+z):快速保存退出
6. 分屏与标签页
-
:sp [file]
:水平分屏 -
:vsp [file]
:垂直分屏 -
Ctrl+w + 方向键
:切换分屏 -
:tabnew
:新建标签页 -
gt
:下一个标签 /gT
:上一个标签
7. 其他实用命令
-
>>
:当前行右缩进 /<<
:左缩进 -
gg=G
:自动缩进全文(适合代码) -
:set number
(:set nu
):显示行号 -
:set nowrap
:禁止自动换行 -
:help [command]
:查看帮助(如:help :w
)
8. 可视模式操作
- 选中文本后:
y
:复制选中内容d
:删除选中内容>
:向右缩进 /<
:向左缩进- 块模式下按
I
插入内容,按Esc
应用到所有
9.在vim中编译、执行代码
-
:!gcc
:与之前的gcc 用法是一样的 -
:./[可执行文件名]
:执行当前文件夹中的可执行文件 -
:!
可以执行命令行命令,路径为当前vim打开的文件路径 -
vs + 其他文件名
:打开其他文件支持分屏操作
3.简单vim配置
在网上有许多教我们如何配置vim的教程,我这里就用一个比较简单的方式来进行配置。
- 安装方法
在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 “不推荐” 直接在 root 下执行):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
需要按照提示输入 root 密码. 您的 root 密码不会被上传, 请放心输入.
- 卸载方法
在安装了 VimForCpp 的用户下执行:
bash ~/.VimForCpp/uninstall.sh
Linux编译器-gcc/g++使用
1.背景知识
预处理(进行宏替换)
编译(生成汇编)
汇编(生成机器可识别代码)
连接(生成可执行文件或库文件)
这个内容在C语言学习的时候就已经了解过了,可以去搜索一下
2.gcc如何完成
格式:gcc [选项] 要编译的文件 [选项] [目标文件]
预处理(进行宏替换)
预处理功能主要包括宏定义,文件包含,条件编译,去注释等。预处理指令是以#号开头的代码行。
实例:gcc –E hello.c –o hello.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。
编译(生成汇编)
在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。
用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
实例:gcc –S hello.i –o hello.s
汇编(生成机器可识别代码)
汇编阶段是把编译阶段生成的“.s”文件转成目标文件
可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
实例:gcc -c code.s -o code.o
连接(生成可执行文件或库文件)
在成功编译之后,就进入了链接阶段。
实例:gcc hello.o -o hello
动态库
在这里涉及到一个重要的概念:函数库。我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?
最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用
函数库一般分为静态库和动态库两种
-
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”。在Windows版本中的动态库是
.lib
结尾的文件 -
把码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如
gcc hello.o -o hello
。还有一个可以提一点的是,在Windows版本中的动态库是.dll
结尾的文件 -
gcc默认生成的二进制程序,是动态链接的,这点可以通过 命令验证。
动态库、动态链接、静态库与静态链接的对比总结
1. 定义
概念 | 说明 |
---|---|
动态库 | 运行时加载的共享库(如 .dll 、.so ),不嵌入程序,可被多个进程共享。 |
动态链接 | 在程序运行时将动态库绑定到进程的过程(自动加载或手动 dlopen )。 |
静态库 | 编译时嵌入程序的库(如 .lib 、.a ),代码直接合并到可执行文件中。 |
静态链接 | 在程序编译时将静态库代码复制到可执行文件中,生成独立文件。 |
2. 特点
特性 | 动态库/动态链接 | 静态库/静态链接 |
---|---|---|
文件大小 | 程序体积小(仅自身代码) | 程序体积大(包含所有依赖库代码) |
内存占用 | 低(多个程序共享同一库) | 高(每个程序独立加载库代码) |
更新维护 | 替换库文件即可生效 | 需重新编译程序 |
依赖管理 | 需处理库版本冲突(依赖地狱) | 无外部依赖,独立运行 |
加载时机 | 运行时加载(延迟绑定) | 编译时嵌入 |
适用场景 | 通用软件、系统级程序(如 glibc ) | 嵌入式系统、独立工具(如 busybox ) |
3. 优缺点对比
动态库与动态链接
- 优点:
- 节省内存和磁盘空间(共享性)。
- 支持热更新(无需重新编译程序)。
- 灵活加载(如插件系统)。
- 缺点:
- 依赖外部环境(库缺失或版本冲突会导致程序崩溃)。
- 首次调用函数时可能有解析延迟(PLT/GOT 机制)。
静态库与静态链接
- 优点:
- 程序独立,无需外部依赖。
- 启动速度快(无运行时加载开销)。
- 避免依赖地狱。
- 缺点:
- 文件体积大(代码冗余)。
- 更新需重新编译分发。
- 内存占用高(多进程无法共享库代码)。
6. 总结
- 动态库与动态链接:
通过共享代码和按需加载优化资源利用,适合通用软件和灵活扩展,但需管理依赖和版本。 - 静态库与静态链接:
以空间换独立性,适合对部署环境要求严格的场景(如嵌入式系统),但牺牲了更新便利性。
注意:
- 在操作系统中一般默认使用的是动态链接,但我们在编译的时候可以指定用静态链接,也就是下面gcc的
-static
选项 - 我们可以用
file
命令查看一个程序的详细信息,包括它是静态链接和动态链接 - 云服务器可能没有安装静态库,去搜索安装
gcc选项
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息。
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-O0
-O1
-O2
-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高-w 不生成任何警告信息。
-Wall 生成所有警告信息。
gcc选项记忆
esc,iso例子。我们一般用的时候都是直接将C语言文件通过gcc hello.c -o hello
直接编译成可执行文件。不需要逐步生成各种中间文件。
相关文章:
【Linux】Linux工具(1)
3.Linux工具(1) 文章目录 3.Linux工具(1)Linux 软件包管理器 yum什么是软件包关于 rzsz查看软件包——yum list命令如何安装软件如何卸载软件补充——yum如何找到要安装软件的下载地址 Linux开发工具Linux编辑器-vim使用1.vim的基…...
微信小程序使用腾讯云COS SDK实现用户头像上传
引入与初始化COS SDK (从官网下载cos-wx-sdk-v5.js文件,本地上传) const COS require(../../../static/utils/cos-wx-sdk-v5.js) as any;//实例化一个cos对象 const cos new COS({SecretId: AK***********************VedSJ, //idSecretK…...
什么是HTML、CSS 和 JavaScript?
HTML、CSS 和 JavaScript 是构建网页的三大核心技术,它们分工明确又紧密协作。接下来我将分别介绍三者的定义、功能,并阐述它们如何共同构成网页,最后推荐学习资源。 一、HTML:网页的骨架与内容基础 HTML(HyperText …...
兼具直连存储与分布式存储优势的混合存储方案
兼具直连存储与分布式存储优势的混合存储方案 一、分层存储架构 热数据本地直存 将高频访问的热数据(如数据库事务日志、实时计算中间结果)存储在DAS本地SSD中利用DAS的低延迟特性提升实时性要求高的业务性能 温冷数据分布式存储 低频访问的温…...
App Store支付新政重构跨境电商生态:eBay卖家的突围之道
2024年4月,美国联邦法院对苹果应用商店支付体系的裁决掀起全球电商海啸。这场源自Epic Games诉讼案的制度变革,正在跨境电商领域掀起超预期的蝴蝶效应。本文将深入剖析政策变革对eBay生态的冲击路径,揭示跨境卖家转型升级的核心策略。 一、支…...
Rust 开发环境搭建与插件
生成完整文章 用户请求写一篇完整的CSDN文章,要求根据之前的建议生成。文章要包含结构清晰、标题、代码示例、常见提示、跨平台Rust工具链安装差异等内容。文章需准确,包括插件和使用提示,CLI程序示例等。主要内容包括:介绍、Rus…...
Axios替代品Alova
介绍alova | Alova.JS Multipart 实体请求 | Axios中文文档 | Axios中文网 1. 极致的轻量与性能 Tree-shaking优化:仅打包使用到的功能模块 零依赖:基础包仅 4KB(Axios 12KB) 2. 智能请求管理(开箱即用࿰…...
【C语言】文件操作(续)
目录 复习: 一⽂件的顺序读写 例子: 前言: 在上篇文章中介绍了文件的类型,文件指针,流,操作的函数。 在本篇文章继续为大家带来文件细节分享,如 顺序读写等等。 复习: fopen是…...
Angular 面试常见问题
1. 请阐述 Angular 的工作原理 Angular 的工作流程涉及多个关键环节,从组件交互到浏览器渲染,以下是其核心流程: 组件交互:当用户触发特定事件(如点击按钮)时,组件会响应这些交互,…...
数据库(MySQL)基础
一、登录数据库 在linux系统中登录数据库的指令 mysql -h 127.48.0.236 -P 3306 -u root -p -h:填写IP地址,指明要连接的主机。如果不加该字段表示本地主机-P:填写端口号,指明进程。 如果不加该字段会使用默认的端口号。-u&…...
【Java ee 初阶】文件操作和IO(上)
一、文件 文件在计算机中,是保存到“硬盘”上的。操作系统,把硬盘操作进行了抽象封装,使得编程的时候,是不会直接操作硬盘的,而是通过“文件”的概念来进行间接操作。 文件有哪些操作?——>打开文件&a…...
微信小程序备案的一些记录
小程序如果没有备案是搜索不到小程序的。 小程序备案需要填写主体负责人的信息,需要主体负责人的手机号验证码, 需要填写管理员的信息,同样也需要验证手机号码, 填写完毕之后,提交进行初审,初审之后会打…...
leetcode0279. 完全平方数-medium
1 题目:完全平方数 官方标定难度:中 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1…...
2018机械行业ERP软件发展趋势
随着互联网经济的发展,实体的经济将来很有发展的优势,管理的信息化工具,也要随着市场需求的改变而改变。 以前的ERP管理系统,管理管控的方向。 1、以物料管理为核心,通过ERP管理系统,将企业的物料管理清楚&…...
限制布局大小,实现文本自适应
实现数字部分自适应 适配后 使用页需绑定ref <div class"setting-bind-text" ref"element" :style"{ transform: scale(${scale}) }">{{ coin }}</div> script部分引入使用 import { useTextScale } from /hooks/useTextScale; c…...
涨薪技术|0到1学会性能测试第52课-Tomcat调优技术
前面的推文我们掌握了Tomcat服务器的3种监控技术知识。今天给大家分享Tomcat调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。 在对Tomcat进行调优之前,需要对Tomcat的结构体系有一个清楚的了解,这对调优起到至交重要的作用,Tomcat结构体系图,如图10-20所示…...
Arm核的Ubuntu系统上安装Wireshark
Arm核的Ubuntu系统上安装Wireshark 一、安装wireshark 安装命令: sudo apt-get install wireshark-qt 如下图所示: 安装过程弹出如下界面: 鼠标选择Yes,点回车键确认 安装完成。 二、打开wireshark 输入命令行打开wireshark …...
C++模板【上篇】 —详解模板基础语法
文章目录 前言1. 泛型编程2. 模板的类别2.1 函数模板2.2 类模板 3. 模板的实例化3.1 函数模板的实例化3.1.1 隐式实例化* 编译器实例化原理3.1.2 显示实例化 3.2 类模板的实例化 前言 在这篇文章中,主要介绍一些模板的基础的语法和一些细节,同时了解泛型…...
谈谈Redis缓存和数据库一致性
目录 1、缓存问题 2、更新缓存 3、删除缓存 4、最终方案 5、缓存分类 5.1、缓存穿透 5.2、缓存击穿 5.2、缓存雪崩 6、示例 前言 Redis 作为缓存与数据库之间的通信模式能够显著提升系统性能,减少数据库的压力。 通过合理使用 Redis 进行数据存取ÿ…...
JWT深度解析:现代Web身份验证的通行证-优雅草卓伊凡
# JWT深度解析:现代Web身份验证的通行证 ## 一、JWT的本质与构成 ### 1.1 JWT的定义解析 JWT(JSON Web Token)是一种**开放标准(RFC 7519)**,用于在各方之间安全地传输信息作为JSON对象。这种信息可以被…...
VTK|.obj文件数据处理+Jet/Viridis/CoolToWarm/Grayscale/Rainbow/风格颜色渲染
文章目录 处理OBJ文件Jet渲染风格Viridis渲染风格CoolToWarm渲染风格Grayscale渲染风格Rainbow渲染风格切换风格按钮槽函数(可优化)相关代码github链接 将 .obj 数据进行 Elevation 着色并可视化渲染的完整流程 和.ply文件处理方式一样 处理OBJ文件 vo…...
如何通过服务主体获取 Azure 凭据
本文详细讲解如何通过 Azure 服务主体生成凭据,使应用程序能够安全访问 Azure 资源(如部署 Container Apps)。以下步骤基于 Azure Portal 操作,适用于自动化部署、CI/CD 等场景。 步骤 1:登录 Azure Portal 访问 Azure 门户。使用 Azure 账户(需具备订阅管理员权限)登录…...
Kubernetes探针生产环境实战指南
一、探针的本质:应用健康的智能体检系统 想象你的应用是一个高空走钢丝的演员,Kubernetes探针就像三位安全员: 启动探针:检查演员是否站稳(应用是否完成初始化)就绪探针:确认演员准备好表演&a…...
node.js 实战——express图片保存到本地或服务器(七牛云、腾讯云、阿里云)
本地 ✅ 使用formidable 读取表单内容 npm i formidable ✅ 使用mime-types 获取图片后缀 npm install mime-types✅ js 中提交form表单 document.getElementById(uploadForm).addEventListener(submit, function(e){e.preventDefault();const blob preview._blob;if(!blob)…...
线代第二章矩阵第五、六、七节矩阵的转置、方阵的行列式、方阵的伴随矩阵
文章目录 矩阵的转置转置性质对称矩阵与反对称矩阵 方阵的行列式方阵的伴随矩阵(重要) 矩阵的转置 转置性质 (1) (2) (3) (4)注意这个: 扩展&a…...
经验:从CAN到以太网为主的车载网络架构升级
引言 新能源汽车智能化与网联化的进程中,传统CAN总线已难以满足高带宽、低延迟的通信需求,车载以太网逐步成为新一代电子架构的核心骨干。本文基于工程实践,系统性解析车载以太网的核心技术、协议栈、拓扑设计及工具链升级策略,助…...
基于FPGA婴儿安全监护系统(蓝牙小程序监测)
基于FPGA婴儿安全监护系统 前言一、芯片手册阅读二、代码分析1.温湿度驱动2.转速等级设置模块3.电机转速控制模块 总结视频演示 前言 实时监测车内温湿度数据(DTH11温湿度模块)----实时控制风扇驱动速度(结合温湿度进行控制)----…...
嵌入式 C 语言控制语句
目录 1. 控制语句 2. 分支语句 2.1 if else 2.2 switch 3. 循环语句 3.1 goto 3.2 while 循环 3.3 do while 循环 3.4 for 循环 3.5 例题 3.6 循环控制语句 3.6.1 break 3.6.2 continue 1. 控制语句 控制语句分为:顺序语句,分支语句࿰…...
leaflet-velocity风场粒子效果及数据处理
一,后台给到的数据 {"msg": "success","code": 200,"data": {"startLat": 39.3,"endlat": 41.2,"latdel": 0.099999994,"startLon": 115.3,"endLon": 117.50001,"…...
React 实现 JWT 登录验证的最小可运行示例
下面是一个用 React 实现 JWT 登录验证的最小可运行示例,包含: React 前端:登录、保存 Token、获取用户数据。模拟后端:用 mock API(你也可以接真后端)。 🧱 技术栈 React(使用 Vi…...
MySQL报错解决过程
我在调试datagrip的时候,显示拒绝连接,开始的时候,我以为只是服务没有开启,结果到后来在网上搜索各种解决办法无果后,就选择卸载,卸载之后安装新的MySQL 以下就是我的解决过程。 如果只是在使用外置软件&…...
更多 QVariant 使用案例
以下是 QVariant 的其他典型应用场景及代码示例,涵盖更多实际开发需求: 6. 数据库查询结果处理 处理数据库字段的异构数据类型(如整数、字符串、日期等): QSqlQuery query; query.exec("SELECT name, age, crea…...
WPF中解决数据绑定不匹配的问题
在 WPF 开发中,IValueConverter 和 IMultiValueConverter 接口是非常实用的工具,它们允许你在数据绑定过程中对数据进行转换。 IValueConverter 接口示例 IValueConverter 接口用于单值转换,它包含 Convert 和 ConvertBack 两个方法。Conve…...
学习Cesium Entities
🌐 Cesium中的Entities系统趣味学习 📊 Entities系统架构流程图 #mermaid-svg-Lkue5O3gYOkEVSbD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Lkue5O3gYOkEVSbD .error-icon{fill:#552222;}#mermaid-svg-Lku…...
Spark处理过程-案例数据清洗
(一)需求说明 准备十条符合包含用户信息的文本文件,每行格式为 姓名,年龄,性别,需要清洗掉年龄为空或者非数字的行。 例如: 张三,25,男 李四,,女 王五,30,男 赵六,a,女 孙七,35,男 周八,40,女 吴九,abc,男 郑十,45,女…...
【AI提示词】马斯洛需求分析专家
提示说明 专业的心理学需求分析专家,熟悉马斯洛需求层次理论及其在不同文化背景下的适用性。 提示词 # Role: 马斯洛需求分析专家## Profile - language: 中文 - description: 专业的心理学需求分析专家,熟悉马斯洛需求层次理论及其在不同文化背景下的…...
【WebRTC-13】是在哪,什么时候,创建编解码器?
Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题:编解码器的关键实体类是什么?在哪里&什么时候…...
Kuikly 安装环境篇
1、安装版本号为2024.1.1 的Android studio(如使用高版本的Android studio需要更改JDK版本号为17) 2、JDK版本使用17(如需要修改JDK:Android Studio -> Settings -> Build,Execution,Deployment -> Build Tools -> Gr…...
npm create vite@latest my-vue-app 解读
背景发荧光的样式。 filter属性的学习:filter - CSS:层叠样式表 | MDN 复习一下em 组件的调用: 是msg让“ViteVue”显示出来的!! a标签的targte属性: 组件之间怎么传值的: ,没看懂code标签怎么…...
【本地搭建npm私服】使用Verdaccio
使用Verdaccio搭建本地NPM私服及私有包管理指南 一、Verdaccio安装与基础配置 1. 安装Verdaccio # 全局安装Verdaccio npm install -g verdaccio# 检查版本 verdaccio --version2. 启动服务 verdaccio启动后默认监听4873端口,访问 http://localhost:4873 3. 配…...
Chroma:一个开源的8.9B文生图模型
Chroma 模型讲解 一、模型概述 Chroma 是一个基于 FLUX.1-schnell 的 8.9B 参数模型。它采用了 Apache 2.0 许可证,完全开源,允许任何人使用、修改和在其基础上进行开发,不存在企业限制。该模型目前正在训练中,训练数据集从 20M…...
量子通信技术及其在信息安全中的应用:开启无条件安全通信的新时代
前言 在数字化时代,信息安全是全球关注的焦点。随着传统加密技术面临量子计算等新兴技术的挑战,量子通信作为一种基于量子力学原理的新型通信技术,因其无条件安全的特性而备受关注。量子通信不仅能够有效抵御量子计算的威胁,还能为…...
【杂谈】Godot 2D游戏窗口设置
如切如磋,如琢如磨。 目录 一、引言二、设置(一)基本尺寸(二)拉伸(三)手持设备朝向(四)窗口模式 一、引言 在开发2D游戏时,窗口尺寸的设定是游戏…...
MySQL 8.0 OCP认证考试题库持续更新
MySQL是属于甲骨文Oracle公司的一个世界知名的免费数据库产品,使用的范围广、企业多、人员也多,所以对MySQL认证关注的人也不少,MySQL的证书与Oracle的证书使用的是同一个模板,只是在内部的介绍上稍有不同,MySQL认证考…...
C++GO语言微服务基础技术②
目录 01 protobuf语法回顾 02 protobuf的编译、和其他序列化比较 03 查看protoc编译文件对比自定义封装 04 grpc安装简介 05 grpc服务远程调用作业布置 06 作业-grpc-server端 07 作业-grpc-client端 01 protobuf语法回顾 ## 编译 protobuf> 回顾:C 编译 …...
【使用switch结构输出季节】2021-11-23
缘由用switch语句设计程序一年有12个月-编程语言-CSDN问答 void 使用switch结构输出季节(int y) {//缘由https://ask.csdn.net/questions/7577096?spm1005.2025.3001.5141std::cout << y << "\t";switch (y){case 3: case 4: case 5:std::cout <<…...
【Bootstrap V4系列】学习入门教程之 组件-下拉菜单(Dropdowns)
Bootstrap V4系列 学习入门教程之 组件-下拉菜单(Dropdowns) 下拉菜单(Dropdowns)一、Overview 概述二、Accessibility 可访问性三、Examples3.1 Single button 单按钮3.2 Split button 分割按钮 四、Sizing 尺寸 下拉菜单&#x…...
基础编程题目集 6-8 简单阶乘计算
本题要求实现一个计算非负整数阶乘的简单函数。 函数接口定义: int Factorial( const int N ); 其中N是用户传入的参数,其值不超过12。如果N是非负整数,则该函数必须返回N的阶乘,否则返回0。 裁判测试程序样例: #in…...
解决word里插入公式后打不开的问题
小铃铛最近在写毕业论文了,需要在文档里插入公式,然鹅一插入就卡死了,直接关闭文档后就再也打不开了,报错什么确定磁盘有空间(?总之就是文档损坏的意思) 这个时候不要慌,先把word后缀…...
android studio开发:设置屏幕朝向为竖屏,强制应用的包体始终以竖屏(纵向)展示
在 Android 中,要强制应用的包体始终以竖屏(纵向)展示,可以通过以下几种方式来实现: ✅ 方式一: 在 AndroidManifest.xml 中设置 Activity 的方向,这是最常用的方法。对所有需要强制竖屏的 Ac…...