Linux - 工具
一、 代码编译(g++/gcc)
1) 预处理
g++ –E hello.c –o hello.i
-
宏替换
-
条件编译
-
头文件展开
-
去注释
2) 编译
g++ –S hello.i –o hello.s
- 检查语法
- 将代码转为汇编
3) 汇编
g++ –c hello.s –o hello.o
- 将汇编转为二进制代码
4) 链接
g++ hello.o –o hello
ldd hello #ldd [可执行程序] -> 显示用到的链接库
- 链接库(静态链接,动态链接)
5) 静态链接与动态链接
-
动态链接:在运行时由链接文件加载库(节省系统开销, 可移植性差,一旦缺失,各个程序都无法运行,g++默认动态链接)
-
静态链接:把库文件的代码全部加入到可执行文件中(生成文件较大,但是运行时不在需要库文件,可移植性好,很少使用)
g++ hello.c -o hello -static # -static 静态链接选项
注:1.如果没有静态库,不能进行-static选项
2.没有动态库只有静态库,g++仍然能完成链接,-static的本质是改变链接优先级
3.不一定全部库都是静态链接或动态链接,但是用-static就会全部静态链接
6. Debug 与 Release
- Debug
g++ hello.o –o hello -g # -g 以debug方式生成可执行程序
readlf -S hello | grep -i debug # 显示debug信息
- Release(默认)
g++ hello.o –o hello
- 可执行程序形成的时候,不是无序的二进制构成的,有自己的格式(ELF)
readelf
是 Linux 下的一个工具,用来显示 ELF(Executable and Linkable Format,可执行与可链接格式)文件的信息。ELF 文件是一种广泛用于 Linux 和 Unix 系统的可执行文件格式,包含了程序的可执行代码、数据、符号表和其他信息。readelf
工具可以用于分析和调试 ELF 文件,特别是在编译和链接阶段对程序进行检查时非常有用。
二、Linux自动化构建工具(Makefile/makefile)
# 依赖关系
test:test.cpp# 依赖方法g++ test.cpp -o test# .PHONY:clean关键字修饰
.PHONY:clean
# clean依赖关系为空
clean:# 依赖方法rm test
在一个工程中,源文件数量庞大,通常根据类型、功能、模块划分到不同的目录中。通过 makefile
,可以定义一系列规则,明确哪些文件需要优先编译,哪些文件需要重新编译,甚至进行更复杂的操作。makefile
的核心优势在于实现了自动化编译,一旦编写好,只需一个 make
命令即可自动完成整个项目的编译,大幅提升了软件开发的效率。make
是一个解释 makefile
中指令的工具,两者搭配使用,能够实现项目的自动化构建。大多数集成开发环境(IDE)都支持类似的功能,比如 Delphi 的 make
,Visual C++ 的 nmake
,以及 Linux 下的 GNU make
,因此 makefile
已成为工程编译中的重要方法之一。
1) 依赖关系(Dependencies)
依赖关系是指一个模块、文件或库在编译、运行时,依赖于另一个模块、文件或库的功能。例如,程序中的一个源文件可能需要引用另一个库中的函数或类。在项目构建中,正确处理依赖关系至关重要,尤其是当一个文件的改变会影响其他文件的编译时。
2) 依赖方法(Dependency Management)
依赖方法是指处理这些依赖关系的策略或机制,常见的依赖管理方法包括:
-
显式依赖:开发者手动指定依赖文件或模块。例如在
makefile
中,明确列出每个文件的依赖项,并定义编译规则。 -
自动化依赖检测:借助工具自动检测项目中的依赖关系。比如现代构建工具(如 CMake 或 Maven)可以自动分析文件间的依赖并更新编译顺序。
-
分层管理:依赖项按功能或模块划分,降低不同模块之间的耦合度,使得项目结构更清晰且易于维护。
-
执行顺序:make在执行时,优先根据依赖关系所需文件,是否存在,如果不存在则继续查找并执行所需文件的依赖关系,最后逐渐完成make执行生成最终文件,因此makefile的依赖关系先后顺序不影响。
正确处理依赖关系和依赖方法可以避免重复编译、减少构建时间,同时确保项目按正确的顺序进行构建并运行。
3) 依赖关系和依赖方法不写清楚仍然能make成功
-
依赖关系只有test:
# 依赖关系不写清楚仍然能make成功 test:g++ -E test.cpp -o test.ig++ -S test.i -o test.sg++ -c test.s -o test.og++ test.o -o test
-
甚至不需要依赖方法
# 这样仍然能完成test.cpp->test的make过程 test:
- 隐式规则:
make
具有一套内置的隐式规则(也称为 “默认规则”),这些规则告诉make
如何处理常见文件类型,例如.cpp
文件。比如,当make
看到你试图生成一个名为test
的目标文件,它会自动查找同名的源文件test.cpp
并根据标准的编译命令进行处理。默认情况下,make
认为.cpp
文件可以通过编译生成可执行文件,这就是为什么即使你没有明确指定依赖关系test: test.cpp
,make
仍然可以找到并编译test.cpp
的原因。 - 时间戳机制:
make
还依赖文件的时间戳来决定是否需要重新构建目标。即使没有明确指定test: test.cpp
,make
会检查test
文件是否已经存在以及它的时间戳是否比test.cpp
旧。如果test.cpp
被修改过,make
会知道需要重新生成test
,并使用内置的规则来完成这个任务。
4) .PHONY
为什么make只有在源文件修改后才能再次执行?
-
没有必要对没修改的源文件多次执行。
-
make通过比较源文件和目标文件的修改时间判断是否需要重新执行依赖关系进行编译执行。
-
若想总是执行依赖关系,用
.PHONY
关键字修饰(一般不修饰目标文件,而是修饰clean)。
.PHONY:test
# 依赖关系
test:test.cpp# 依赖方法g++ test.cpp -o test# .PHONY:clean关键字修饰
.PHONY:clean
# clean依赖关系为空
clean:# 依赖方法rm test
5) 特殊符号
test:test.cpp@g++ $@ -o $^
-
$@
:代表依赖关系的左边(':'的左边) -
$^
:代表依赖关系的右边(‘:’的右边) -
@[依赖方法]
:make的时候不在bash中回显依赖方法
三、 代码管理工具(git)
1) 初始化与配置
-
初始化新仓库:
git init
-
配置用户信息(全局):
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
-
配置用户信息(针对当前仓库):
git config user.name "Your Name" git config user.email "your.email@example.com"
2) 基本操作
-
克隆仓库:
git clone <repository_url>
-
检查状态:
git status
git add <file_name>
-
提交更改:
git commit -m "Commit message"
-
推送到远程仓库:
git push
-
从远程仓库拉取更改:
git pull
-
删除操作
rm <filename> //删除工作区保留暂存区 git rm <filename> //删除工作区和暂存区 git rm --cached <filename> //删除暂存区保留工作区 git rm -r* //递归删除某个目录下的所有目录和文件
3) 分支管理
-
创建新分支:
git branch <branch_name>
-
切换分支:
git checkout <branch_name>
-
创建并切换到新分支:
git checkout -b <branch_name>
-
合并分支:
git merge <branch_name>
-
删除分支:
git branch -d <branch_name>
4) 远程仓库
-
添加远程仓库:
git remote add <remote_name> <repository_url>
-
查看远程仓库:
git remote -v
-
从远程仓库拉取更改:
git pull <remote_name> <branch_name>
-
推送到远程仓库:
git push <remote_name> <branch_name>
-
删除远程分支:
git push <remote_name> --delete <branch_name>
5) 撤销更改
-
恢复工作区到上一次提交:
git checkout -- <file_name>
-
撤销暂存区的更改:
git reset HEAD <file_name>
-
恢复到特定提交:
git reset --hard <commit_hash>
6) 查看历史
-
查看提交历史:
git log
-
查看文件的更改历史:
git log -p <file_name>
-
查看最近一次提交的更改:
git show
-
查看远程分支情况:
git remote show <remote_name>
-
查看更改
git diff //工作区和暂存区的更改 git diff HEAD/--cached //暂存区和HEAD的更改 git diff <vision1> <vision2> //两个版本的更改 git diff -- <filename> //某个文件版本之间的更改
7) 其他
-
忽略文件(创建
.gitignore
文件):touch .gitignore
-
查看帮助文档:
git <command> --help
四、调试工具(gdb)
1) 启动 GDB
-
gdb [可执行文件]
启动 GDB 并加载指定的可执行文件。使用gdb调试,必须在源代码生成二进制程序时加上
-g
选项gdb ./my_program
2) 显示代码
-
list [行号/函数名]
或l [行号/函数名]
列出当前文件中的源代码。但是如果代码过长会显示不完整list # 只输入list会默认从中间部分显示代码 list 10 # 从第10行开始显示代码 list main # 显示main函数
-
list [文件名:行号]
或l [文件名:行号]
显示指定文件的对应行
-
不输入直接按下
Enter
键可以重复执行直到显示完所有代码
3) 运行程序
-
run
或r
开始运行程序。如果程序需要参数,可以在命令后附上。
run arg1 arg2 # 运行代码,arg可以不输入
-
until [行号]
运行到指定行
-
continue
或c
继续执行程序直到下一个断点或程序结束。 -
step
或s
单步执行,进入函数内部。 -
next
或n
单步执行,不进入函数内部。 -
finish
执行当前函数直到结束,并返回调用处。
4) 断点
-
break [行号/函数名]
或b [行号/函数名]
在指定的行或函数处设置断点。break 10 # 在第10行设置断点 break main # 在main函数入口处设置断点
-
break [文件名:行号]
在指定的文件和行号设置断点。break myfile.cpp:20
-
info breakpoints
或i b
列出所有断点及其状态。 -
delete [断点编号]
或d [断点编号]
删除指定编号的断点。如果不指定编号,则删除所有断点。
delete 1 # 删除编号为1的断点 delete # 删除所有断点
-
enable [断点编号]
开启断点
-
disable [断点编号]
关闭断点
8) 检查变量
-
print [变量名]
或p [变量名]
打印变量的值。print my_var # 打印my_var的值
-
ptype [变量名]
显示变量的类型。ptype my_var
-
display [变量名]
长显示变量
display i #长i的值
-
undisplay [编号]
取消长显示
undiplay 5 # 取消display编号为5的长显示
9) 修改变量
-
set var [变量名]=[新值]
修改变量的值。
set var my_var=10
10) 堆栈信息
-
backtrace
或bt
显示当前的函数调用栈。 -
frame [帧编号]
或f [帧编号]
切换到指定的栈帧。 -
info locals
查看当前栈帧中所有局部变量的值。
11) 退出 GDB
quit
或q
退出 GDB。- 推出后之前的调试信息都会被清除,再次进入不会保留。
相关文章:
Linux - 工具
一、 代码编译(g/gcc) 1) 预处理 g –E hello.c –o hello.i宏替换 条件编译 头文件展开 去注释 2) 编译 g –S hello.i –o hello.s检查语法将代码转为汇编 3) 汇编 g –c hello.s –o hello.o将汇编转为二进制代码 4) 链接 g hello.o –o …...
ASP.NET Core 6 MVC 文件上传
概述 应用程序中的文件上传是一项功能,用户可以使用该功能将用户本地系统或网络上的文件上传到 Web 应用程序。Web 应用程序将处理该文件,然后根据需要对文件进行一些验证,最后根据要求将该文件存储在系统中配置的用于保存文件的存储中&#…...
大模型LoRA微调训练原理是什么?
环境: LoRA 问题描述: 大模型LoRA微调训练原理是什么? 解决方案: LoRA(Low-Rank Adaptation)微调是一种高效的参数优化技术,专门用于大型语言模型的微调,旨在减少计算和内存需求…...
Ubuntu系统上部署Node.js项目的完整流程
以下是在Ubuntu系统上部署Node.js项目的完整流程,分为系统初始化、环境配置、项目部署三个部分: 一、系统初始化 & 环境准备 bash # 1. 更新系统软件包 sudo apt update && sudo apt upgrade -y# 2. 安装基础工具 sudo apt install -y buil…...
vue3:七、拦截器实现
一、前言 拦截器可以很好的统一处理请求和响应 请求拦截器:可以在请求发送之前对请求进行统一处理,比如添加认证信息(如 token)、设置请求头、添加公共参数等。响应拦截器:可以在响应返回之后对响应数据进行统一…...
K8S高可用集群-小白学习之二进制部署(ansible+shell)
一.K8S高可用集群配置概述 序言:本文从一个小白的视角进行K8S的研究和部署,采用二进制的方式是为了更清楚了分解部署流程及了解这个集群是怎么运作的,加上ansible+shell是方便在这个过程中,遇到了问题,我们可以不断的快速重复部署来测试和研究问题的所在点,本文的架构图…...
学生管理信息系统的需求分析与设计
伴随教育的迅猛演进以及学生规模的不断扩增,学生管理信息系统已然成为学校管理的关键利器。此系统能够助力学校管控学生的课程成绩、考勤记载、个人资讯等诸多数据,提升学校的管理效能与服务品质。 一.需求分析 1.1 学生信息管理 学生信息在学校管理体…...
010---基于Verilog HDL的分频器设计
文章目录 摘要一、时序图二、程序设计2.1 rtl2.2 tb 三、仿真分析四、实用性 摘要 文章为学习记录。绘制时序图,编码。通过修改分频值参数,实现一定范围分频值内的任意分频器设计。 一、时序图 二、程序设计 2.1 rtl module divider #(parameter D…...
Pytorch使用手册—雅可比矩阵、海森矩阵、hvp、vhp 等:组合函数变换(专题四十四)
计算雅可比矩阵或海森矩阵在许多非传统深度学习模型中是非常有用的。使用 PyTorch 的常规自动微分 API(Tensor.backward(),torch.autograd.grad)计算这些量是困难的(或者很麻烦)。PyTorch 的受 JAX 启发的函数变换 API 提供了高效计算各种高阶自动微分量的方法。 注意: 本…...
OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 对选定区域内的梯度场应用适当的非线性变换,然后通过泊松求解器重新积分,可以局部修改图像的表观照明。 cv::illuminati…...
WPF框架---MvvmLight介绍
目录 1. MvvmLight 框架准备 2. MvvmLight 中的相关基类 3. MvvmLight 中的数据绑定与通知 a. 核心功能 b. 关键方法与属性 c. 完整示例 d. 高级用法 4. MvvmLight 中的命令对象 a. 命令对象的作用 b. 核心接口:ICommand c. MvvmLight 中的 RelayCommand…...
C语言基础之【指针】(下)
C语言基础之【指针】(下) 指针和字符串字符指针字符指针做函数参数const修饰的指针变量指针数组做为main函数的形参项目开发常用字符串应用模型while和do-while模型两头堵模型字符串反转模型 字符串处理函数strchr()strrchr()strstr()strtok()strcpy()st…...
Deepseek中的MoE架构的改造:动态可变参数激活的MoE混合专家架构(DVPA-MoE)的考虑
大家好,我是微学AI,今天给大家介绍一下动态可变参数激活MoE架构(Dynamic Variable Parameter-Activated MoE, DVPA-MoE)的架构与实际应用,本架构支持从7B到32B的等多档参数动态激活。该架构通过细粒度难度评估和分层专家路由,实现“小问题用小参数,大问题用大参数”的精…...
【0012】Python函数详解
如果你觉得我的文章写的不错,请关注我哟,请点赞、评论,收藏此文章,谢谢! 本文内容体系结构如下: 编写代码往往是为了实现特定的功能,如果需要使用功能多次,也要写同样的代码多次吗…...
Stable Diffusion教程|快速入门SD绘画原理与安装
什么是Stable Diffusion,什么是炼丹师?根据市场研究机构预测,到2025年全球AI绘画市场规模将达到100亿美元,其中Stable Diffusion(简称SD)作为一种先进的图像生成技术之一,市场份额也在不断增长&…...
鸿蒙应用开发深度解析:API 14核心特性与实战指南
文章目录 一、HarmonyOS API 14架构升级解析1.1 系统架构演进1.2 核心能力对比 二、ArkUI 3.0开发实战2.1 声明式UI完整示例2.2 自定义组件开发 三、分布式能力深度开发3.1 跨设备数据同步流程3.2 分布式数据库操作 四、系统能力扩展开发4.1 后台任务管理4.2 硬件服务调用 五、…...
docker中kibana启动后,通过浏览器访问,出现server is not ready yet
问题:当我在浏览器访问kibana时,浏览器给我报了server is not ready yet. 在网上试了很多方法,都未能解决,下面是我的方法: 查看kibana日志: docker logs -f kibana从控制台打印的日志可以发现ÿ…...
2025年天梯赛第1场选拔赛
目录 A:徐老师的积木山峰 B:徐老师的最长上升子序列 C:徐老师的机器命令 D:徐老师的地下堡 E:徐老师的新鲜羊腿 F:徐老师的黄金矿工 G:徐老师的成绩统计 H:春节糖果 I:幸运函数 J:好坏钥匙 A:徐老师的积木山峰 徐老师有 n 块积木排成一排,从左往右数编号依次为 1∼…...
28-文本左右对齐
给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可…...
SpringBoot校园管理系统设计与实现
在现代校园管理中,一个高效、灵活的管理系统是不可或缺的。本文将详细介绍基于SpringBoot的校园管理系统的设计与实现,涵盖管理员、用户和院校管理员三大功能模块,以及系统的部署步骤和数据库配置。 管理员功能模块 管理员是系统的核心管理…...
thunder bird 配置邮箱
1.配 outlook https://cn.windows-office.net/?p22940 2.配 qq 邮箱 https://blog.csdn.net/lx_ros/article/details/124831850 3.QQ邮箱的授权码在 账号与安全 4.qq 邮箱 更换 foxmail 邮箱名 https://www.yigujin.cn/blog/p10094.html 结语 感觉网上搜到的都不咋好&…...
机器学习中的线性代数:奇异值分解 SVD
线性代数 奇异值分解(SVD) 参考资料: 超详细!彻底搞懂矩阵奇异值分解(SVD)本质计算应用!_哔哩哔哩_bilibili 非常好的视频,本文内容主要来自于该视频,在此表示感谢&#…...
机器学习深度学习基本概念:logistic regression和softmax
逻辑回归用来处理二分类问题 softmax用来处理多分类问题:比如llm在generate的时候,每个batch里面的一个样本的一个一次generate就是softmax生成一个大小为vocab_size的向量的概率分布,然后再采样 逻辑回归(logistic regression&…...
机器学习(六)
一,决策树: 简介: 决策树是一种通过构建类似树状的结构(颠倒的树),从根节点开始逐步对数据进行划分,最终在叶子节点做出预测结果的模型。 结构组成: 根节点:初始的数据集…...
在 Maven 中使用 <scope> 元素:全面指南
目录 前言 在 Maven 中, 元素用于定义依赖项的作用范围,即依赖项在项目生命周期中的使用方式。正确使用 可以帮助我们优化项目的构建过程,减少不必要的依赖冲突,并提高构建效率。本文将详细介绍 的使用步骤、常见作用范围、代码…...
Manus邀请码如何申请,有哪些办法
Manus是由Monica团队推出的一款通用型AI智能体产品,旨在通过自主任务规划与执行能力,将用户的想法转化为实际成果。它不仅能够理解复杂指令,还能通过调用虚拟环境中的工具(如浏览器、代码编辑器、文件处理器等)&#x…...
大型WLAN组网部署(Large scale WLAN network deployment)
大型WLAN组网部署 大型WLAN网络关键技术 技术 作用 VLAN Pool 通过VLAN Pool把接入的用户分配到不同的VLAN,可以减少广播域,减少网络中的广播报文,提升网络性能。 DHCP Option 43 & 52 当AC和AP间是三层组网时,AP通过…...
MQ保证消息的顺序性
在消息队列(MQ)中保证消息的顺序性是一个常见的需求,尤其是在需要严格按顺序处理业务逻辑的场景(例如:订单创建 → 支付 → 发货)。 一、消息顺序性被破坏的原因 生产者异步/并行发送:消息可能…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(9)
7.3. 查询计划相关操作符 78)Repartition Streams:该操作符消费多个输入流并产生多个输出流。期间,记录内容与格式保持不变。如果查询优化器使用一个位图过滤(bitmap filter),则输出流中的数据行数将会减少。一个输入流的每行记录被放入一个输出流。如果该操作符保留顺序…...
杨校老师课堂之零基础入门C++备战信息学奥赛-基础篇
零基础快速入门C C学习路线一、基础语法1. C基础框架2. C语言输出3. C 语言输入4. C 数据类型5. C 赋值6. 运算符与表达式7. 控制结构语句7.1 if分支结构语句7.1.1 单分支结构语句7.1.2 双分支结构语句7.1.3 多分支结构语句 7.2 switch开关语句 8. 循环结构语句8.1 for循环8.2 …...
wxWidgets GUI 跨平台 入门学习笔记
准备 参考 https://wiki.wxwidgets.org/Microsoft_Visual_C_NuGethttps://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Buildershttps://docs.wxwidgets.org/3.2/https://docs.wxwidgets.org/latest/overview_helloworld.htmlhttps://wizardforcel.gitb…...
Aws batch task 无法拉取ECR 镜像unable to pull secrets or registry auth 问题排查
AWS batch task使用了自定义镜像,在提作业后出现错误 具体错误是ResourceInitializationError: unable to pull secrets or registry auth: The task cannot pull registry auth from Amazon ECR: There is a connection issue between the task and Amazon ECR. C…...
亚信安全发布2024威胁年报和2025威胁预测
在当今数字化时代,网络空间已成为全球经济、社会和国家安全的核心基础设施。随着信息技术的飞速发展,网络连接了全球数十亿用户,推动了数字经济的蓬勃发展,同时也带来了前所未有的安全挑战。2024年,网络安全形势愈发复…...
verb words
纠正correct remedy 修正modify 协商 confer 磋商/谈判 negotiate 通知notice notify *宣布announce 声明declare 宣告 declare *颁布 promulgate /introduce 协调coordinate 评估evaluate assess 撤离evacuate *规定stipulate 参与participate, 涉及refer…...
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<12>
大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 目录 一、回调函数二、qsort2.1 使用qsort函数排序整型数据2.2 使用qsort排序结构数据2.3 qsort函数的模…...
视频录像机视频通道是指什么
视频录像机的视频通道是指摄像机在监控矩阵或硬盘录像机设备上的视频输入的物理位置。 与摄像头数量关系:在视频监控系统中,有多少个摄像头就需要多少路视频通道,通道数量决定了视频录像机可接入摄像头的数量,一般硬盘录像机有4路…...
MySQL 实战 4 种将数据同步到ES方案
文章目录 1. 前言2. 数据同步方案 2.1 同步双写2.2 异步双写2.3 定时更新2.4 基于 Binlog 实时同步 3. 数据迁移工具选型 3.1 Canal3.2 阿里云 DTS3.3 Databus3.4 Databus和Canal对比3.4 其它 4. 后记 上周听到公司新同事分享 MySQL 同步数据到 ES 的方案,发现很有…...
sqlserver中的锁模式 | SQL SERVER如何开启MVCC(使用row-versioning)【启用行版本控制减少锁争用】
文章目录 引言锁和隔离级别的关系锁模式之间兼容性I 隔离级别SQLServer默认的隔离级别为:“read commited” (已提交读)在SQLServer2005引入了基于行版本控制的隔离级别。SQL SERVER如何开启MVCC(使用row-versioning)sqlserver开启MVCC后的锁II sqlserver中的锁模式**1、共享…...
拥抱健康养生,开启活力生活
在快节奏的现代生活中,健康养生已成为人们关注的焦点,它不仅是对身体的呵护,更是一种积极的生活态度。 合理饮食是健康养生的基石。我们应秉持均衡膳食的理念,谷物、蔬菜、水果、蛋白质类食物一个都不能少。每天保证足够的蔬菜摄入…...
江科大51单片机笔记【9】DS1302时钟可调时钟(下)
在写代码前,记得把上一节的跳线帽给插回去,不然LCD无法显示 一.DS1302时钟 1.编写DS1302.c文件 (1)重新对端口定义名字 sbit DS1302_SCLKP3^6; sbit DS1302_IOP3^4; sbit DS1302_CEP3^5;(2)初始化 因为…...
Python可视化——地理空间型图表(自用)
地图信息可视化的实现就是将不可展开的曲面上的地理坐标信息转化为二维平面进行显示,这个过程也叫地图投影(空间三维投影到平面二维) 地图投影的要求:等面积、等角度、等距离。总的来说就是映射到二维平面中的任何点通过比例尺放大…...
Python 网络爬虫教程与案例详解
Python 网络爬虫教程与案例详解 在当今数字化时代,数据的价值愈发凸显。Python 作为一门强大的编程语言,在数据获取领域有着广泛的应用,其中网络爬虫便是一项重要的技术。网络爬虫能够自动从网页中提取所需数据,极大地提高了数据…...
最新的前端场景面试题
1、如何实现一个Vue3的弹框组件,你会如何设计? 如果要实现一个 Vue3 的弹框组件,我会从以下几个关键点进行设计: 组件结构:定义组件的基础结构,包括模块(template)、脚本(script)和样式(style);显示和隐藏逻辑:设计和实现弹框的显示和隐藏机制,通常通过传递 pro…...
冲刺高分!挑战7天一篇孟德尔联合meta分析 DAY1-7
Day1 此前我们完成了若干篇关于meta的挑战,这一次挑战想在meta分析基础上进一步创新一些,这一次想要挑战孟德尔联合meta分析的文章,有想学习的师弟师妹跟我们一起完成这波挑战吧~ Day1任务收集信息明确选题明确目标期刊精读范文…...
win32汇编环境,对话框中使用树形视图示例二
;运行效果 ;win32汇编环境,对话框中使用树形视图示例二 ;得到树形视图控件Treeview的全路径字符串,这里的方法是由子项向父项挨个找的算法找齐路径 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>&g…...
前端开发10大框架深度解析
摘要 在现代前端开发中,框架的选择对项目的成功至关重要。本文旨在为开发者提供一份全面的前端框架指南,涵盖 React、Vue.js、Angular、Svelte、Ember.js、Preact、Backbone.js、Next.js、Nuxt.js 和 Gatsby。我们将从 简介、优缺点、适用场景 以及 实际…...
tomcat的web管理
进入到conf cd /usr/local/tomcat/conf/备份tomcat-users.xml cp tomcat-users.xml{.,bak}编辑tomcat-users.xml vim tomcat-users.xml增加以下内容 配置tomcat-users.xml <role rolename"manager-gui"/><role rolename"admin-gui"/><use…...
类和对象(上)
1.面向过程与面向对象的初步认识 面向过程:以步骤为中心,适合简单逻辑,但复杂系统易混乱。 面向对象:以对象职责为中心,通过抽象和模块化应对复杂需求。 C语言:面向过程,关注的是过程࿰…...
springcloud智慧工地物联网云管理系统源码
智慧工地以物联网云平台为核心,基于智慧工地物联网云平台与现场多个子系统的互联,实现现场各类工况数据采集,存储、分析与应用。通过接入智慧工地物联网云平台的多个子系统板块,根据现场管理实际需求灵活组合,实现一体…...
SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决
介绍一下我的是ubuntu20.04.机载电脑是orinnx,通过源码烧写的系统。 首先打开终端,输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容, ONNX(Open Neural Network E…...