Linux中常用的工具

软件安装 yum

软件包

在Linux中,软件包是一种预编译的程序集合,通常包含了用户需要的应用程序、库、文档和其他依赖项。

软件包管理工具是用于安装、更新和删除这些软件包的软件。常见的Linux软件包管理工具包括APT(Advanced Packaging Tool)和YUM(Yellowdog Updater, Modified)等。

软件包通常由软件开发商或发行版团队创建和维护,以确保它们与操作系统的兼容性和稳定性。通过使用软件包管理工具,用户可以轻松地安装、更新和删除软件包,而无需手动下载和编译源代码。

安装软件的方式 rpm yum

源代码安装

从软件开发商的网站上下载源代码,并按照文档进行编译和安装。

rpm安装

RPM(Red Hat Package Manager)是Red Hat系列Linux发行版使用的包管理系统,常见于基于Red Hat的发行版,如Fedora、CentOS等。使用rpm命令可以直接安装、卸载、升级软件包,但是软件之间的依赖关系很麻烦。

yum/apt安装

YUM( Yellowdog Updater Modified)是Fedora和CentOS等Linux发行版使用的包管理系统,而APT(Advanced Packaging Tool)是Debian和Ubuntu等基于Debian的发行版使用的包管理系统。

软件安装的来源

yum源在这里类似官方的软件库 可以找到大量的软件 在虚拟机我们要配置国内的镜像源

有时候要去准官方 或者 非官方的位置下载软件

指令介绍

rpm

RPM(Red Hat Package Manager)RPM可以管理软件包的安装、更新和卸载,通过它可以让用户方便地安装、升级和删除软件。

参数:

  • -i:安装软件包。

  • -U:升级软件包。

  • -d:显示详细信息。

  • -f:强制执行。

使用例子:

  1. 安装软件包:

sudo rpm -i package_name.rpm
  1. 升级软件包:

sudo rpm -U package_name.rpm
  1. 显示详细信息:

sudo rpm -ql package_name
  1. 强制执行:

RPM有时可能需要管理员权限才能执行某些操作,可以使用-f参数强制执行。例如,如果用户没有管理员权限但仍然需要安装软件包,可以使用以下命令:

sudo rpm -fi package_name.rpm --force

yum

YUM(Yellowdog Updater Modified)YUM使用RPM包管理系统,它可以自动处理软件包的依赖关系,并从本地或远程仓库下载和安装软件包。

参数:

  • -y:自动回答所有提示为“是”。

  • --skip-broken:跳过有问题的软件包并继续安装。

  • --disablerepo=<repository>--enablerepo=<repository>:禁用或启用特定的软件仓库。

  • --exactmatch:仅匹配完全匹配的软件包名称。

  • --groupinstall:同时安装与所选软件包相关的所有软件组。

  • --noguess:禁用软件包猜测功能。

选项:

  • install

  • update

  • remove

  • makecache 创建元数据缓存

  • list 列出一个或一组软件包

  • groups 显示或使用、组信息

  • help 显示用法提示

  • history 显示或使用事务历史

  • info 显示关于软件包或组的详细信息

使用例子:

  1. 安装软件包:

sudo yum install <package_name>
  1. 更新软件包:

sudo yum update
  1. 显示软件包的详细信息:

sudo yum info <package_name>
  1. 自动回答所有提示为“是”:

sudo yum update -y
  1. 跳过有问题的软件包: 有时,某些软件包可能存在依赖关系问题,导致无法安装。可以使用--skip-broken参数来跳过有问题的软件包并继续安装。例如:

sudo yum update --skip-broken

xshell传输 文本编辑 GCC G++ git gdb

Xshell传输

rz (在xshell中)

下载:

yum list | grep lrzsz

yum -y install lrzsz

文本编辑

nano

Nano是一个免费的、开源的文本编辑器,它运行在Windows、Linux和Unix系统上。Nano是一个轻量级的编辑器,它被设计为简单易用,同时提供足够的功能来满足大多数用户的需求。

下面是nano的一些主要特点:

  • Nano具有简单直观的界面,使您可以轻松地在文本文件中导航。

  • Nano具有丰富的键盘快捷键,使您可以快速执行常见任务,而不必使用鼠标。

  • Nano支持高级编辑功能,例如自动完成、宏、语法突出显示和正则表达式搜索。

  • Nano具有轻量级的内存,因此在处理大型文本文件时性能良好。

  • Nano是一个免费和开源的软件,可以在GPL下使用和修改。

下面是nano的一些常用命令和选项:

命令: nano:启动nano编辑器。

  • nano <file>:打开指定的文件。

  • nano <file> [options]:使用指定的选项打开文件。

选项:

  • -a <file>:在打开文件之前,将<file>的内容作为命令行参数传递给nano。

  • -c:在打开文件之前,清空文件内容。

  • -d:在打开文件之前,将文件内容读入到nano的缓冲区中,以便在编辑时更快地显示。

  • -f:在打开文件之前,将文件内容读入到nano的缓冲区中,以便在编辑时更快地显示,并在保存文件时自动保存。

  • -h:显示帮助消息,

  • -i:开启自动换行。

  • -I:忽略自动换行。

  • -m:开启鼠标支持。

  • -M关闭鼠标支持。

  • -p:开启拼写检查。

  • -P:关闭拼写检查。

  • -s:开启语法高亮支持。

  • -S:关闭语法高亮支持。

  • -v:显示版本信息。

  • -V:显示版本信息并退出。

使用例子:

  1. 打开一个名为example.txt的文件:

sudo nano example.txt
  1. 打开文件并自动保存:

sudo nano -f example.txt
  1. 打开文件并开启语法高亮:

sudo nano -s example.txt
  1. 打开文件并开启自动换行:

sudo nano -i example.txt
  1. 显示nano的版本信息:

sudo nano -v

Nano文本编辑器还支持许多键盘快捷键,如复制、粘贴、删除行、查找等。例如Ctrl+C复制选中内容、C+V粘贴内容、Ctrl+X删除选中内容等。

这是nano下的提示文本:

^G Get H^O Write^R Read ^Y Prev ^K Cut T^C Cur Pos ^X Exit ^J Justi^W Where^V Next ^U UnCut^T To Spell

vi/vi

Vim 是一种流行的文本编辑器,具有丰富的命令模式。在 Vim 的命令模式下,您可以使用各种命令来编辑文本、移动光标、删除文本、复制文本、撤销更改等。

到时候整理可以上网查查

以下是一些常见的 Vim 命令模式命令: 末行模式:

  1. i 或 I:进入插入模式,开始输入文本。

  2. Esc:退出插入模式,返回到命令模式。

  3. :w:保存文件。

  4. :q:退出 Vim。

  5. :q!:强制退出 Vim,不保存任何更改。

  6. :n:跳转到下一个文件。

  7. :N:跳转到上一个文件。

  8. :r <filename>:将指定的文件加载到当前光标位置。

  9. :0:光标移到文件开头。

  10. G:将光标移到文件末尾。

  11. /<pattern>:在文本中搜索指定的模式。

  12. #x: 删除光标所在#个字符。

  13. n dd:剪切n行。

  14. yy:复制当前行。

  15. p:在复制行下方粘贴文本。

  16. vs <filename> : 在vim 中创建空文件filename 光标窗口切换 ctrl+ww

  17. #!:光标移动到第#个位置

  18. ctrl +b 屏幕向后移动一页

  19. ctrl + f屏幕向前移动一页

  20. ctrl + u屏幕向后移动半页

  21. ctrl + d屏幕向前移动半页

  22. gg :进入文本开始

  23. r R:替换

  24. u撤销操作

  25. ctrl + r 撤销恢复

  26. set nu 设置行号

  27. 在/etc/vimrc文件是配置文件

vim的配置

使得vim可以有更高级的功能 可以上网查看方法

visudo

安全的配置sudoers文件 和vim功能一样

GCC G++

程序运行的处理:预处理 编译 汇编 链接

gcc

Linux的GCC(GNU Compiler Collection) GCC是GNU项目的一部分,是一个自由软件许可证下的开源编译器,可用于编译C、C++和Objective-C等编程语言的代码。GCC支持多种操作系统和硬件架构,包括x86、x86-64、ARM、MIPS、PowerPC等。

GCC的参数和选项:

  • -o <output>:指定输出文件的名称。

  • -E : 仅作预处理,不进行编译、汇编和链接

  • -S : 编译到汇编语言,不进行汇编和链接

  • -c : 编译、汇编到目标代码,不进行链接,生成可执行文件。

  • -D<macro>[=value]:定义宏。

  • -U<macro>:取消定义宏。

  • -g:生成调试信息。以debug方式发布 从readelf -S 文件名 | grep -i debug查看

  • -static:采用静态编译

  • -I<dir>:添加头文件搜索路径。

  • -L<library>:指定库文件的搜索路径。

  • -l<file>:指定链接库名称

  • -include file:在预处理阶段包含指定的文件。

  • -shared : Create a shared library

  • -std=<标准>:指定输入源文件遵循的标准

  • -f<flag>:启用或禁用特定编译选项。

  • -fPIC:生成位置无关代码(Position Independent Code)。这种代码在内存中的位置不受限制,可以在不同的地址空间执行,特别适用于动态链接和共享库。

  • -wl:用来传递额外的链接器选项的,例如,-Wl,-rpath,/my/library 会将 /my/library 添加到运行时共享库的搜索路径中。

  • -rpath,path:这个选项用于指定运行时共享库的搜索路径。path 应该是包含共享库文件的目录。

  • -Wall:显示所有警告信息。

  • -Werror:将警告视为错误并停止编译。

  • -O<level>:优化编译级别。

使用例子:

gcc -o example example.c
gcc -E mycode.c -o mycode.i 
#条件编译
gcc -E mycode.c -o mycode.i -DDEBUG #定义DEBUG宏

在终端中输入“./example”来运行生成的可执行文件,默认生成的a.out文件

G++

Linux的g++是GNU Compiler Collection(GCC)的一部分,它是一个功能强大的C++编译器,用于编译C++代码。g++支持C++98和C++11及更高版本的标准,并提供了许多高级特性,如自动内存管理、异常处理、模板等。g++支持多种操作系统和硬件架构,包括x86、x86-64、ARM等。

g++使用和gcc 大体相同 g++适配gcc:

使用例子:

g++ -o myprogram main.cpp

在终端中输入“./myprogram”来运行生成的可执行文件。

静态编译 动态编译

1.使用ldd命令查看文件的动态依赖

2.默认下gcc优先动态库编译,通过-static 选项该改变这个优先级

3.c语言的静态库是glibc-static

3.c++的静态扩展库是 libstdc++-static

静态编译文件扩展很严重,编译后不再依赖静态库

优缺点:

1.静态编译独立性好,但是占用空间和内存大

2.动态编译牵一发而动全身,倒是节省空间

debug && release

在软件开发过程中,Debug 和 Release 是两个不同的构建类型,它们在编译选项、功能和大小上有所不同。

Debug 版本通常包含调试信息和其他工具,用于帮助开发人员在开发过程中调试和测试代码。Debug 版本会生成更多的输出,例如源代码级别的跟踪信息,以帮助开发人员定位问题并修复它们。此外,Debug 版本通常会禁用一些优化选项,以减小文件大小和提高调试性能。

Release 版本通常用于向最终用户提供产品。它经过更多的优化和,以提高代码的执行速度和内存使用效率。此外,Release 版本会压缩和精简代码,以减小文件大小。为了提高执行效率,Release 版本会包含更多的优化选项,例如内联汇编、代码缓存和循环展开等。

make 与 Makefile

make是一个自动化构建工具,它可以根据Makefile文件中的规则和指令,自动地编译和链接源代码文件,生成可执行文件或库文件。make使用简单的语法和命令,使得构建过程更加方便和高效。

参数和选项:

  • -j <num>:并行执行make命令,指定同时执行的进程数。

  • -k:如果Makefile中有任何未解决问题,make将一直等待直到所有问题都被解决。

  • -s:静默模式,不显示警告信息。

  • -V:显示make版本信息。

使用例子:

  1. 构建单个文件:

make file.c

这将会编译file.c文件并生成可执行文件。

  1. 构建多个文件:

make file1.o file2.o file3.o

这将会编译file1.c、file2.c和file3.c文件,并将它们链接生成可执行文件。

  1. 使用变量: 在Makefile中可以使用变量来存储依赖关系、目标文件等信息。例如:

CC = gcc
CFLAGS = -Wall -Werror
OBJS = file1.o file2.o file3.o
TARGET = program
​
$(TARGET): $(OBJS)$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)
​
mytest.exe:mycode.cgcc -o mytest.exe mycode.c
.PHONY:clean
clean:rm -f mytest.exe

在这个例子中,TARGET是目标文件名,OBJS是目标文件的列表,CC是编译器名称,CFLAGS是编译器的选项。当make运行时,它会检查目标文件的依赖关系,如果需要,它会自动地编译目标文件的依赖项。当所有依赖项都被正确编译后,它会使用指定的命令来链接这些文件并生成可执行文件。

依赖关系:

  1. make 在检索Makefile时候 是一个递归的栈执行 makefile的自动化推导

例如:

mycode.exe:mycode.ogcc -o mycode.exe mycode.o
mycode.s: mycode.igcc -S mycode.i -o mycode.s
mycode.o:mycode.sgcc -c mycode.s -o mycode.o
mycode.i:mycode.cgcc -E mycode.c -o mycode.i$@表示:左边的内容  $^表示:右边的内容
.PHONY:clean
clean:rm -f mycode.exe,mycode.s,mycode.i,mycode.o

make在执行时候默认执行第一个指令,推导第一个指令的依赖关系

如上 make会执行 mycode.exe的方法 同时会自动化推导依赖关系 依次生成 .o .s .i .exe 文件

make === make mycode.exe

make clean :执行 rm-r....

  1. make在编译过后如果源文件没有被更新 就不会在编译了

如何实现: 比较可执行程序的最近修改时间 与 源文件的最近修改时间 (Modify)

这时候就引出了一个声明.PHONY:修饰的内容 总是被执行

  1. 怎么一次性生成多个可执行程序呢?

.PHONY:all
all:otherExe mycode
​
mycode:mycode.cgcc mycode -o mycode.i -std=c99
otherExe:otherExe.cg++ -o mycode.i otherExe  -std=c++11
.PHONY:clean
clean:rm -f mycode otherExe

  1. makefile格式:

方法:依赖关系 依赖目标

参数选项:

  • 在依赖目标前加@ 表示不在屏幕上输出提示信息

  • 在依赖目标中 : $@表示冒号左边的内容 $^表示冒号右边的内容

  1. $<:代表规则中的第一个依赖文件。

  2. $?:代表所有比目标文件新的依赖文件。

  3. $^:代表所有依赖文件的列表。

  4. $*:代表模式匹配出的所有文件。例如,如果规则中有%.o: %.c,那么$*就会代表所有的.c文件。

  5. $(@D):代表目标文件的目标目录。

  6. $(@F):代表目标文件的文件名。

  7. $(@):代表目标文件的完整路径。

  8. $($VAR)):代表变量$(VAR)的值。

  9. $(VAR):代表变量VAR的值。

  10. $(call [arguments]) 调用函数,例如$(call echo, hello)会输出hello

git Github 简介

Git是一个分布式版本控制系统,主要用于跟踪文件变更和协调多人之间的代码修改。它能够有效地解决代码的版本控制、冲突解决、多人协作等问题。

具体来说,Git的主要作用包括:

  1. 版本控制:Git可以记录文件的历史版本,并允许你查看和回滚到之前的版本。这对于多人协作开发非常有用,因为可以避免代码冲突和重复工作。

  2. 多人协作:Git可以轻松地管理多人之间的代码修改,并确保每个人都在最新的版本上工作。它支持分支和合并,使得多个开发人员可以同时开发不同的功能,并在完成后将其合并到一个代码库中。

  3. 数据完整性:Git通过使用SHA-1哈希算法对文件和目录结构进行完整性检查,确保数据的完整性。这有助于防止数据被篡改或损坏。

  4. 可靠备份:Git可以将代码库备份到任何地方,包括远程服务器、本地计算机等。它还支持增量备份,只备份文件变更的部分,从而节省存储空间和传输时间。

  5. 开源社区:Git已经成为许多开源项目的默认版本控制系统,使得可以轻松地参与开源项目,并与其他开发者协作开发。

SVN也可以做到版本控制 git是开源的

最常用的 git 命令有: add 添加文件内容至索引 bisect 通过二分查找定位引入 bug 的变更 branch 列出、创建或删除分支 checkout 检出一个分支或路径到工作区 clone 克隆一个版本库到一个新目录 commit 记录变更到版本库 diff 显示提交之间、提交和工作区之间等的差异 fetch 从另外一个版本库下载对象和引用 grep 输出和模式匹配的行 init 创建一个空的 Git 版本库或重新初始化一个已存在的版本库 log 显示提交日志 merge 合并两个或更多开发历史 mv 移动或重命名一个文件、目录或符号链接 pull 获取并合并另外的版本库或一个本地分支 push 更新远程引用和相关的对象 rebase 本地提交转移至更新后的上游分支中 reset 重置当前HEAD到指定状态 rm 从工作区和索引中删除文件 show 显示各种类型的对象 status 显示工作区状态 tag 创建、列出、删除或校验一个GPG签名的 tag 对象

安装 Git

初始化 Git 仓库

在你的项目文件夹中打开命令行或终端,然后运行:

git init

添加文件

添加当前文件夹中的所有文件到 Git 仓库,运行:

git add .

或者,你可以选择性地添加单个文件:

git add filename.txt

提交更改

提交当前所有添加的文件,并附上说明,运行://必须上传说明

git commit -m "Initial commit"

查看仓库状态

查看当前的 Git 仓库状态,运行:

git status

分支管理

创建一个新分支:

git branch new-branch

切换到新分支:

git checkout new-branch

合并分支:

git merge new-branch

删除分支:

git branch -d new-branch

远程操作

克隆远程仓库:

git clone https://github.com/username/repository.git

推送本地分支到远程仓库:

git push origin new-branch

拉取远程仓库的更改:

git pull origin main

标签管理

为项目打上版本标签:

git tag v1.0

推送标签到远程仓库:

git push --tags

我们上传git项目一般步骤

git clone https://gitee.com/rngsfan/xuexi.git
​
git add .
​
git commit -m "描述"
​
可能需要执行:
​git config --global user.email "3224647525@qq.com"git config --global user.name "RNGsfan"
​
git push  要输入账号和密码

其他知识:

ignore文件存放不会被识别的文件后缀名

在git专题我们会认真讨论git

gdb

GDB是一个强大的源代码调试工具,用于在程序运行时进行单步调试、设置断点、观察变量值等。它提供了丰富的调试功能,包括调试器命令行界面、查看程序内存、调用函数、查看堆栈信息等。

参数和选项

  • -g:包含调试信息,用于进行源代码调试。

  • -l:显示可执行文件依赖的所有共享库。

  • -n:不进行任何操作,仅显示GDB的版本信息。

  • -q:安静模式,不显示任何调试器相关的输出信息。

  • -r:显示可执行文件的关联库信息。

  • -T:显示所有设置的调试器选项。

使用例子

启动调试会话:使用GDB启动一个可执行文件进行调试,可以在终端输入以下命令:

gdb program_name

查看文件内容:l n:从第n行开始输出

设置断点:break or b 行号or函数: Set breakpoint at specified line or function

b mycode.c:19 在mycode,c文件19行设置断点

删除断点:delete breakpoints

休眠,唤醒:disable / enable

查看断点信息:info break\b

运行程序:run [arguments] 或者 r

单步调试stepnextcontinue until``finish

s:逐语句 step into

n:逐过程

c:运行到下一个断点

until 行号: 快速跳转至某一行

finish: 快速跑完当前所处的函数

查看变量值:print &i or p &i:查看i的地址

display &i :常显示i的地址 取消用

undisplay 编号(编号在display栏目中)

设置变量值:set var

查看堆栈信息:backtrace or bt

保存和退出调试会话:quit

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

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

相关文章

《CSS 简易速速上手小册》第3章:CSS 响应式设计(2024 最新版)

文章目录 3.1 媒体查询基础&#xff1a;网页的智能眼镜3.1.1 基础知识3.1.2 重点案例&#xff1a;适应三种设备的响应式布局3.1.3 拓展案例 1&#xff1a;改变字体大小3.1.4 拓展案例 2&#xff1a;暗模式适配 3.2 响应式图片和视频&#xff1a;让内容自由呼吸3.2.1 基础知识3.…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

猜猜谁是凶手?

目录 一、题目二、思路三、完整代码 一、题目 日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff1a;C在胡说 已知3个人说了…

Linux系统基础 03 IP地址虚拟网络、Linux软件包管理、ssh服务、apache服务和samba服务的简单搭建

文章目录 一、IP地址虚拟网络二、Linux软件包管理1、rpm包管理器2、yum包管理器3、源码安装 三、ssh服务四、apache服务五、samba服务 一、IP地址虚拟网络 1、IP地址格式是点分十进制&#xff0c;例&#xff1a;172.16.45.10。即4段8位二进制 2、IP地址分为网络位和主机位。网…

杨辉三角的变形(数学)

题目 import java.util.Scanner;public class Main {public static void main(String[] args) { // 1 // 1 1 1 // 1 2 3 2 1 // 1 3 6 7 6 3 1 // 1 4 10 16 19 16 10 4 1Scanner sc new Scanner(System.in);int n sc.nextInt();int[][] res new int[n1][2*n];for(i…

【Linux】构建模块

&#x1f525;博客主页&#xff1a;PannLZ &#x1f38b;系列专栏&#xff1a;《Linux系统之路》 &#x1f94a;不要让自己再留有遗憾&#xff0c;加油吧&#xff01; 文章目录 构建第一个模块1模块的makefile2内核树内构建3内核树外构建 构建第一个模块 可以在两个地方构建模…

Spring Boot 笔记 005 环境搭建

1.1 创建数据库和表&#xff08;略&#xff09; 2.1 创建Maven工程 2.2 补齐resource文件夹和application.yml文件 2.3 porn.xml中引入web,mybatis,mysql等依赖 2.3.1 引入springboot parent 2.3.2 删除junit 依赖--不能删&#xff0c;删了会报错 2.3.3 引入spring web依赖…

【十四】【C++】list 的常见用法

list 的初始化和遍历 /*list的初始化和遍历*/ #if 1 #include <list> #include <vector> #include <iostream> #include<algorithm> using namespace std;void TestList1(){list<int> L1;list<int> L2(10, 5);vector<int> v{1,2,3,4…

Linux之umask的使用

一、umask的作用 umask值用于设置用户在创建新文件和目录时的默认权限。umask值一共有4组数字&#xff0c;其中第1组数字用于定义特殊权限&#xff0c;一般不关心&#xff0c;日常工作中大家用的更多的是后面三组数字。以下图为例&#xff0c;输入“umask”命令之后&#xff0c…

音视频/流媒体协议和编码汇总

一、流媒体协议 1. RTMP/RTMPT/RTMPS/RTMPE 等多变种 是应用层协议&#xff0c;使用TCP作为底层传输协议&#xff0c;并提供了低延迟、高带宽利用率和实时性的特点。 (1)RTMP协议是Adobe的私有协议,未完全公开 (2)一般传输的是 flv&#xff0c;f4v 格式流 2. RTP/RTCP/SRTP …

Maven进阶

一、分模块开发与设计 1. 分模块开发的意义 问题导入 分模块开发对工程有什么好处&#xff1f; 模块拆分原则 目的&#xff1a;项目的扩展性变强了&#xff0c;方便其他项目引用相同的功能。 将原始模块按照功能拆分成若干个子模块&#xff0c;方便模块间的相互调用&#…

AI新工具(20240210) Osam - Osam是一个启用本地运行的开源llm;Whishper - Whishper是一个开源的语音工具

Osam - Osam是一个启用本地运行的开源“一切分割”模型工具&#xff0c;支持多种接口和自定义视觉模型。 Osam是一个开源工具&#xff0c;它允许本地运行“可对任何内容进行分割”的模型(Segment-Anything Models)&#xff0c;灵感来源于Ollama。使用Osam&#xff0c;用户可以…

结构体的大小以及内存对齐问题

结构体的大小怎么计算&#xff1f;什么是结构体的对齐&#xff1f; 首先想要直到结构体的大小需要先了解结构体的内存对齐。那么&#xff0c;什么是结构体的内存对齐&#xff1a; 什么是结构体内存对齐 结构体的对齐 就是 结构体类型数据在内存中按照一定的对齐规律储存。结…

【深度学习:MPT-30B】提高开源基础模型的标准

【深度学习&#xff1a;MPT-30B】提高开源基础模型的标准 MPT-30B家族MPT-30B (Base)MPT-30B-InstructMPT-30B-Chat使用 MosaicML Inference 部署 MPT-30B 模型通过 MosaicML 培训定制 MPT-30BLLM Foundry 下一步是什么&#xff1f; 附录致谢数据MPT-30B 8k 上下文窗口微调数据…

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 静态开辟内存 通过前面的学习&#xff0c;我们已经掌握了两种开辟内存的方…

拟合案例1:matlab积分函数拟合详细步骤及源码

本文介绍一下基于matlab实现积分函数拟合的过程。采用的工具是lsqcurvefit和nlinfit两个函数工具。关于包含积分运算的函数,这里可以分为两大类啊。我们用具体的案例来展示:一种是积分运算中不包含这个自变量,如下图的第一个公式,也就是说它这个积分运算只有R和Q这两个待定…

用Python动态展示排序算法

文章目录 选择冒泡插入排序归并排序希尔排序 经常看到这种算法可视化的图片&#xff0c;但往往做不到和画图的人心灵相通&#xff0c;所以想自己画一下&#xff0c;本文主要实现归并排序和希尔排序&#xff0c;如果想实现其他算法可参考这篇 C语言实现各种排序算法[选择&#x…

[C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法

【创建圆形进度条流程】 在C# WinForms应用程序中创建一个圆形进度条&#xff08;通常用作仪表盘的显示&#xff09;可以通过多种方式实现。下面是一个简单的例子&#xff0c;演示如何使用System.Drawing命名空间中的图形绘制功能来绘制一个基本的圆形进度条。 首先&#xff0…

基于springboot超市进销存系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;超市进销存系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而超…

python+django学习交流论坛系统244t6

系统可以提供信息显示和相应服务&#xff0c;其管理员管理用户发布的博客文章以及用户之间的论坛交流信息&#xff0c;管理留言以及文章分类信息。用户在论坛交流模块发布帖子以及评论帖子&#xff0c;在前台查看和评论其他用户发布的博客文章&#xff0c;收藏博客文章&#xf…