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

Linux的开发工具(三)

条件编译

预处理本质:对代码进行裁剪

像网易云音乐有vip和普通用户,可以通过条件编译来,这样只用写一份代码,也只用维护一份代码,是vip就走vip代码,不是就普通用户代码,条件编译来动态裁剪。

1 #include<stdio.h>2 #define M3 4 int main()5 {6 #ifndef M7         printf("free");8 #else9         printf("advance");10 #endif11 12 }
~                                                                                                                                                                                                              
~                                                                                                                                                                                                              
~                                                                                                                                                                                                              
~                                                                                                                                                                                                              
~                

为什么C/C++编译,要先变成汇编

因为刚开始电脑都是用按键来控制的,高低电平对应1和0,所以是二进制来命令电脑,但是二进制麻烦,所以有了汇编语言,但也要有编译器,汇编语言也是文本所以要翻译成二进制

C语言直接变成二进制or翻译成汇编再翻译成二进制,减少成本,C语言到汇编是文本到文本相对简单,再汇编到二进制可以站在巨人的肩膀上不用自己写。

汇编语言的编译器,用二进制版汇编编译器编译汇编语言,在用汇编语言写汇编编译器,然后用二进制汇编编译器编译汇编语言编译器,这样汇编编译器就可以用了,来编译汇编语言,这个行为叫编译器的自举过程

为什么要链接

预处理展开的是声明,没有实现

站在巨人肩膀上,把其它顶级大佬写的代码封装好,基本功能就不用自己写,直接写函数名,在链接时找到对应的实现方法

动态链接和静态链接

实际开发中,会出现多个源文件,而且多个源文件之间不是独立的,会存在多种依赖关系,如源文件可能要调用另一个源文件中定义的函数,但是每个源文件都是独立编译的,既每个.c文件都会形成一个.o文件,为了满足前面说的依赖关系,则需要将这些源文件产生的目标文件进行链接,形成一个可执行的程序。这个链接过程就行静态链接。

缺点:

浪费空间:每个可执行程序中对所有需要的目标文件都有一份拷贝,如果多个程序对同一个目标文件都有依赖,如调用printf函数,则多个程序都含有printf.o,所以同一个目标文件都在内存中有多个副本

更新困难:每当库函数的代码修改了,这个时候就需要重新进行编译链接形成可执行程序。

动态链接的出现解决了静态链接的问题,基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时将它们链接在一起形成了一个完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件。

root@iZbp1be068ksa92vuf0kbdZ:~/zym# gcc code.o -o code11
root@iZbp1be068ksa92vuf0kbdZ:~/zym# ls
code11  code.cpp  code.o
root@iZbp1be068ksa92vuf0kbdZ:~/zym# ldd code11linux-vdso.so.1 (0x00007ffec23cb000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f45a0257000)/lib64/ld-linux-x86-64.so.2 (0x00007f45a048e000)
root@iZbp1be068ksa92vuf0kbdZ:~/zym# ./code11
hello worldroot@iZbp1be068ksa92vuf0kbdZ:~/zym# 

概念:库

系统把这些函数实现都被做到名为libc.so.6的库文件中去了,没有特别指定,gcc会收到系统的默认搜索路径,“/use/lib”下查找,也就是链接到libc.so.6库函数,这样实现函数printf,这就是链接的作用。

静态库和动态库

静态库是指编译链接时,把库函数的代码全加到可执行文件中,因此生成的文件比较大,但在运行时就不在需要库文件了,后缀名一般为“.a”

动态库在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,可以节省系统开销,动态库后缀为“.so”,libc.so.6就是动态库,完成链接后就可以生成可执行文件

gcc hello.o -o hello

gcc默认生成的二进制程序,是动态链接,可以通过file命令验证

hello worldroot@iZbp1be068ksa92vuf0kbdZ:~/zym# file code11
code11: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=eedbea476e4b714e5d707af0c59df9609b1fd209, for GNU/Linux 3.2.0, not stripped

 (静态库和动态库名字都是.c加前面和后面组成的,动态库是前面+lib后面+.so.6)

举例:

小明考上了高中,但是他很喜欢打游戏,这个高中比较严格禁止电子产品,小明找到学长得知校外有网吧,小明从学长那里得到了网吧的地址,准备下午去上网,但是得先上课,小明的计划就是程序代码,到了1点小明要执行上网的程序,所以要去网吧上网,他要从学校跳到网吧,上网后又跳回到学校。小明是程序角色,学长是动态链接,高中是内存,网吧就是动态库,链接时得到了网吧地址,程序加载到内存中,程序开始时就知道了网吧的地址,所以执行上网就可以根据地址在动态库找到对应的函数。

例子二:

网吧被学校举办后只能关掉,但是小明没有网吧后成绩下滑,于是家长要求学校同意带电脑上学,但是下面一定要他上网吧的100号电脑,于是父亲找到老板要了100号机的配置信息配了一台一模一样的电脑放在了小明的宿舍,这时小明不用执行上网就要跳到校外去了,在学校里面就可以上网,这里把库的执行方法直接拷贝了一份到内存里,所以在执行程序时就直接有了实现方法,不用跳到别的地方。

 

执行静态链接代码:

gcc code .o  -o code -static

 

程序加载到内存时,还需要把库也加载进来,如果其它程序也用到了这个库,那么只要第一次加载,后面的就不需要加载动态库了,直接在内存跳到实现方法,保证公共的代码只出现一份。

命令大部分由C写,指令依赖动态库,会加载动态库,其它程序就不用加载。 

库的本质:被打包起来的.o文件

链接本质:把.o文件合在一起

粘滞位

在Linux系统中,`tmp`目录中的`t`权限代表的是“粘滞位”(Sticky Bit)。粘滞位是一种特殊的权限,它只适用于目录,而不适用于文件。当一个目录设置了粘滞位权限时,该目录中的文件只能由其所有者或者root用户删除或重命名,即使其他用户对该文件拥有写权限也无法删除或重命名这些文件。

例如,`/tmp`目录通常被设置为`drwxrwxrwt`,这意味着所有用户都可以读取、写入和执行该目录,但是由于设置了粘滞位,只有文件的所有者和root用户可以删除或重命名该目录下的文件。这样的设置可以防止一个用户删除或修改另一个用户在`/tmp`目录中创建的临时文件,从而增强了系统的安全性。

 自动化构建工具

先创建Makefile文件,code:code.c表示的是源文件是code.c(code:是源文件为什么),gcc -o code code.c是依赖方法要生成一个可执行文件,然后用make指令,这时目录下就有code可执行文件了。

代码示例

root@iZbp1be068ksa92vuf0kbdZ:~/zym# mkdir mk
root@iZbp1be068ksa92vuf0kbdZ:~/zym# cd mk
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# touch Makefile
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# ll
total 8
drwxr-xr-x 2 root root 4096 Nov 24 11:18 ./
drwxr-xr-x 3 root root 4096 Nov 24 11:17 ../
-rw-r--r-- 1 root root    0 Nov 24 11:18 Makefile
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# vim Makefile
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# cat Makefile
code:code.cgcc -o code code.c
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# ll
total 12
drwxr-xr-x 2 root root 4096 Nov 24 11:19 ./
drwxr-xr-x 3 root root 4096 Nov 24 11:17 ../
-rw-r--r-- 1 root root   32 Nov 24 11:19 Makefile
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# vim code.c
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# ll
total 16
drwxr-xr-x 2 root root 4096 Nov 24 11:20 ./
drwxr-xr-x 3 root root 4096 Nov 24 11:17 ../
-rw-r--r-- 1 root root   70 Nov 24 11:20 code.c
-rw-r--r-- 1 root root   32 Nov 24 11:19 Makefile
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# make
gcc -o code code.c
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# ll
total 32
drwxr-xr-x 2 root root  4096 Nov 24 11:20 ./
drwxr-xr-x 3 root root  4096 Nov 24 11:17 ../
-rwxr-xr-x 1 root root 15960 Nov 24 11:20 code*
-rw-r--r-- 1 root root    70 Nov 24 11:20 code.c
-rw-r--r-- 1 root root    32 Nov 24 11:19 Makefile
root@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# ./code
hello worldroot@iZbp1be068ksa92vuf0kbdZ:~/zym/mk# vim Makefile

 

相关文章:

Linux的开发工具(三)

条件编译 预处理本质&#xff1a;对代码进行裁剪 像网易云音乐有vip和普通用户&#xff0c;可以通过条件编译来&#xff0c;这样只用写一份代码&#xff0c;也只用维护一份代码&#xff0c;是vip就走vip代码&#xff0c;不是就普通用户代码&#xff0c;条件编译来动态裁剪。 …...

飞书会话消息左右排列

飞书会话消息左右排列 1. 飞书登录后&#xff0c;点击头像&#xff0c;弹出菜单有个按钮设置 2. 3....

【数据结构-表达式解析】力扣227. 基本计算器 II

给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意&#xff1a;不允许使用任何将字符串作为数学表达式计算的内置函数&#…...

vue2面试题10|[2024-11-24]

问题1&#xff1a;vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上&#xff0c;你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...

列表和字典索引的区别

对于 列表&#xff1a; 索引是自动生成的&#xff0c;由 Python 内部管理。你不能直接为列表中的某个元素设置“自定义索引”。 对于 字典&#xff1a; 键是完全由用户定义的。你可以通过 字典【键】 值 的方式主动创建或更新键值对。 lst [a, b, c] lst[0] x # 修改已…...

【源码】Sharding-JDBC源码分析之SQL中分片键路由ShardingSQLRouter的原理

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…...

JavaFX 实现 Loading 效果的组件与案例详解

JavaFX 中的 Loading 组件概述 JavaFX 提供了两个用于显示任务进度的核心组件&#xff1a; ProgressIndicator&#xff1a;以圆形动画的形式展示任务进度&#xff0c;适用于未定义进度的任务。ProgressBar&#xff1a;以水平条的形式展示任务进度&#xff0c;适用于可以量化进…...

Elasticsearch:如何部署文本嵌入模型并将其用于语义搜索

你可以按照这些说明在 Elasticsearch 中部署文本嵌入模型&#xff0c;测试模型并将其添加到推理提取管道。它使你能够生成文本的向量表示并对生成的向量执行向量相似性搜索。示例中使用的模型在 HuggingFace上公开可用。 该示例使用来自 MS MARCO Passage Ranking Task 的公共…...

李继刚:提示词(Prompt)的本质是表达的艺术

看了李继刚在 AI 创新者大会的演讲《提示词的道与术》&#xff0c;收获很大&#xff0c;我分享一下学习笔记。  李继刚&#xff1a;提示词&#xff08;Prompt&#xff09;的本质是表达的艺术 一、提示词的本质是表达 本意、文意和解意的概念&#xff1a; 本意&#xff1a;指…...

10 —— Webpack打包模式

开发模式&#xff1a;development &#xff1b;场景&#xff1a;本地开发 生产模式&#xff1a;production &#xff1b; 场景&#xff1a;打包上线 这两种模式如何设置给webpack&#xff1a; 方式1.webpack.config.js 配置文件设置mode选项 module.exports { mode:produc…...

OpenSSH 安装

OpenSSH windows安装 启用可选功能安装 OpenSSH&#xff08;推荐方法&#xff09; 步骤一&#xff1a;打开 “设置” 应用 点击 “开始” 菜单&#xff0c;选择 “设置” 图标&#xff08;看起来像一个齿轮&#xff09;。 步骤二&#xff1a;进入 “应用” 部分 在设置窗口中&…...

国标GB28181设备管理软件EasyGBS国标GB28181视频平台:RTMP和GB28181两种视频上云协议的区别

在当今信息化高速发展的社会中&#xff0c;视频监控技术已经成为各行各业不可或缺的一部分。无论是城市安全、交通管理&#xff0c;还是企业安全、智能家居&#xff0c;视频监控都发挥着至关重要的作用。然而&#xff0c;随着监控点数量的急剧增加&#xff0c;海量视频数据的存…...

Image fusion meets deep learning: A survey and perspective译文

摘要 图像融合是指从不同的源图像中提取和组合最有意义的信息&#xff0c;旨在生成一个更有信息量和有利于后续应用的单图像。深度学习的发展极大地推动了图像融合的发展&#xff0c;而神经网络强大的特征提取和重建能力使融合结果充满希望。最近&#xff0c;几种最新的深度学…...

多维高斯分布的信息熵和KL散度计算

多维高斯分布是一种特殊的多维随机分布&#xff0c;应用非常广泛&#xff0c;很多现实问题的原始特征分布都可以看作多维高斯分布。本文以数据特征服从多维高斯分布的多分类任务这一理想场景为例&#xff0c;从理论层面分析数据特征和分类问题难度的关系注意&#xff0c;本文分…...

物体网格弹性变形---Unity中实现

在游戏引擎场景中的3D物体是由一定数量的点、面组成的&#xff0c;如下图&#xff1a; 要使这些物体变形就是改变3D物体每个顶点状态。 1.首先在Unity场景中增加一个球体&#xff0c;如下图 3D组件默认拥有MeshFilter、meshRenderer、Collider组件&#xff0c;分别用来获取Mes…...

什么是Sass,有什么特点

Sass 概述 什么是 Sass&#xff1f; Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种 CSS 预处理器&#xff0c;它扩展了 CSS 的功能&#xff0c;使其更加强大和灵活。Sass 允许开发者使用变量、嵌套规则、混合宏、继承等高级特性&#xff0c;从而编写…...

Spring注入Map学习

Spring注入Map学习 在Spring中 在策略模式中, 会经常用到 根据Bean名称获取Bean的实例 有2个方法很好用 1. 使用Autowired注入 2. 使用构造方法注入 但是奇怪的一点是: 日志打印并没有看到结果, 第一行的 Autowired的结果 是个null 那是因为 注入时机 的问题 注入时机&…...

Java 基础知识 (集合框架 + 并发编程 + JVM 原理 + 数据结构与算法)

文章目录 一.集合框架1. 常见集合接口及其特点List 接口Set 接口Map 接口 2. ArrayList 和 LinkedList 的区别和适用场景ArrayListLinkedList 3. HashSet 和 TreeSet 的特点和用法HashSetTreeSet 4. HashMap 和 TreeMap 的实现原理和使用注意事项HashMapTreeMap 5. 集合遍历方式…...

数据脱敏工具:基于 FFmpeg 的视频批量裁剪

在数据处理和隐私保护领域&#xff0c;数据脱敏是一项重要的任务&#xff0c;尤其是在处理包含敏感信息的视频数据时。本文介绍了一种使用 Python 和 FFmpeg 实现的视频批量裁剪工具&#xff0c;该工具可以将视频中的敏感区域裁剪掉&#xff0c;从而实现数据脱敏。通过使用 PyI…...

从零开始:使用 Spring Boot 开发图书管理系统

如何利用是springboot搭建一个简单的图书管理系统&#xff0c;下面让我们一起来看看吧 文章目录 项目结构1. 主类 LibraryApplication.java功能与注意事项&#xff1a; 2. 模型类 Book.java功能与注意事项&#xff1a; 3. 数据仓库接口 BookRepository.java功能与注意事项&…...

深入浅出:大数据架构中的流处理与实时分析

1. 引言 随着数据产生速度的不断加快,传统的批处理架构已经无法满足实时数据处理和快速响应的需求。流处理成为解决这一问题的关键技术之一,广泛应用于金融、互联网、物联网等领域。流处理技术能够处理不断到来的数据流,实时分析和反馈,使得系统能够迅速做出反应,提供实时…...

基于Multisim的汽车尾灯控制电路设计与仿真

1、电路由四个按键控制&#xff0c;分别对应左转、右转、刹车和检查。 2、当左转或右转键按下时,左侧或右侧的 3个汽车尾灯按照左循环或右循环的顺!2/3 点亮&#xff0c;点亮时间为 1秒。 3、当刹车时&#xff0c;所有的尾灯同时闪烁&#xff0c;闪烁时间为1秒。 4、当检查时…...

WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理

WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理 1. 标题识别elementUI组件爆红 这个原因是&#xff1a; 在官网说明里&#xff0c;才版本2024.1开始&#xff0c;默认启用的 Vue Language Server&#xff0c;但是在 Vue 2 项目…...

【大数据学习 | Spark-Core】详解分区个数

RDD默认带有分区的&#xff0c;那么创建完毕rdd以后他的分区数量是多少&#xff1f; 从hdfs读取文件的方式是最正规的方式&#xff0c;我们通过计算原理可以推出blk的个数和分区数量是一致的&#xff0c;本地化计算。 我们可以发现数据的读取使用的是textInputFormat&#xff…...

(二)Sping Boot学习——Sping Boot注意事项

1.springboot默认是扫描的类是在启动类的当前包或者下级包。 2.运行报错 ERROR&#xff1a;An incompatible version [1.2.33] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.34] 网上试了很多方法&#xff0c;直接重新安装更新版…...

深入浅出,快速安装并了解汇编语言

1.什么是汇编语言 了解汇编语言需要先从了解机器语言开始&#xff0c;在计算机发展的初期阶段&#xff0c;机器语言是计算机直接理解和执行的二进制代码语言&#xff0c;其核心特点包括直接执行性、资源高效性、学习难度大以及平台依赖性。它主要由指令码构成&#xff0c;这些…...

LLM的原理理解6-10:6、前馈步骤7、使用向量运算进行前馈网络的推理8、注意力层和前馈层有不同的功能9、语言模型的训练方式10、GPT-3的惊人性能

目录 LLM的原理理解6-10: 6、前馈步骤 7、使用向量运算进行前馈网络的推理 8、注意力层和前馈层有不同的功能 注意力:特征提取 前馈层:数据库 9、语言模型的训练方式 10、GPT-3的惊人性能 一个原因是规模 大模型GPT-1。它使用了768维的词向量,共有12层,总共有1.…...

JavaScript中的箭头函数以及编写优化

箭头函数 1.1.1 箭头函数的概念 箭头函数时ES 6之后增加一种编写函数的方法&#xff0c;并且它比函数的表达式要更加简洁 箭头函数不会绑定this,arguments属性箭头函数不能作为构造函数来使用&#xff08;不能和new一起来使用&#xff0c;会出现错误&#xff09; //1.之前的方…...

Thymeleaf模板引擎生成的html字符串转换成pdf

依赖引入implementation("org.springframework.boot:spring-boot-starter-thymeleaf")implementation("org.xhtmlrenderer:flying-saucer-pdf")将ITemplateEngine注入到spring管理的类中&#xff0c; Context context new Context(); context.setVariable…...

Android 实现双列图片瀑布流式布局

Android 实现双列图片瀑布流式布局 实现双列图片瀑布流布局&#xff0c;关键在于 RecyclerView 的 StaggeredGridLayoutManager 和图片的动态加载。以下是实现步骤&#xff1a; 1. 添加必要依赖 使用 Glide 加载图片。确保在 build.gradle 中添加依赖&#xff1a; implement…...

运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Docker与Kubernetes集群拉取Harbor私有容器镜像仓库配置 描述:在现在微服务、云原生的环境下,通常我们会在企业中部署Docker和Kubernetes集群,并且会在企业内部搭建Harbor私有镜像仓库以保证开发源码安全,以及加快…...

显示类控件

文章目录 1 QLabel1.1 常用属性1.2 例子1&#xff0c;设置文本 (textFormat)1.3 例子2&#xff0c;设置widget背景图片 (pixmap和scaledContents)1.4 例子3&#xff0c;设置对齐方式 (alignment)1.5 例子4&#xff0c;设置自动换行&#xff0c;缩进和边距1.5.1 设置换行 (wordW…...

AOC显示器915Sw按键失灵维修记

大家好&#xff0c;我是 程序员码递夫 今天给大家分享的是自己维修老古董AOC液晶显示器按键失灵的的过程&#xff0c;实属DIY记录。 1、引子 家里有台老古董的19寸AOC液晶显示器&#xff08;型号915Sw&#xff09;, 一直作为我的副显示器陪伴着左右&#xff0c;显示还正常&a…...

PyQt学习笔记

一.PyQt5的安装 当我们安装好开发环境后&#xff0c;打开pycharm在其设置里面点击按钮自动安装即可。 安装完成后我们会在这里面看到这几个东西说明安装成功了。 二.PyQt5 GUI程序框架 1.一个简单的PyQt5应用程序 首先我们用pycharm创建一个demo.py的文件。 我们创建文件为s…...

LLMops产品介绍

文章目录 字节跳动的扣子优点低代码开发丰富的插件与能力扩展强大的记忆与数据交互能力应用场景广泛 不足模型选择相对受限定制化程度受限输出效果有待提高应用部署范围有限市场认知度和用户基础不足 开悟大模型运营管理系统&#xff08;LLMOPS&#xff09;优点全生命周期管理降…...

【GPTs】Front-end Expert:助力前端开发的智能工具

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af; Front-end Expert主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; 使用Dalle生成用户…...

一篇保姆式centos/ubuntu安装docker

前言&#xff1a; 本章节分别演示centos虚拟机&#xff0c;ubuntu虚拟机进行安装docker。 上一篇介绍&#xff1a;docker一键部署springboot项目 一&#xff1a;centos 1.卸载旧版本 yum remove docker docker-client docker-client-latest docker-common docker-latest doc…...

人工智能大趋势下软件开发的未来

随着人工智能&#xff08;AI&#xff09;技术的不断演进&#xff0c;软件开发领域正经历着深刻的变革。中国电信推出的星辰大模型软件工厂&#xff0c;作为国内首款破局性AI开发工具&#xff0c;其全自动流水线的特性——自动生成前后端代码、自主测试和纠错等&#xff0c;为软…...

string的模拟实现

string的模拟实现 一.string的模拟实现1.1构造函数和析构函数&#xff0c;以及一些简单函数1.2迭代器1.3增删查改 二.运算符重载三.流插入和流提取 一.string的模拟实现 string本质上是是一种char类型的顺序表&#xff0c;结构上和顺序表相似。 namespace Mystring {class st…...

Qt桌面应用开发 第七天(绘图事件 绘图设备)

目录 1.绘图事件paintEvent 2.高级绘图 3.图片绘制 4.绘图设备 4.1QPixmap 4.2QBitmap 4.3QImage 4.4QPicture 1.绘图事件paintEvent paintEvent——绘图事件 需求&#xff1a;利用QPainter绘制点、线、圆、矩形、文字&#xff1b;设置画笔改为红色&#xff0c;宽度为…...

PDF内容提取,MinerU使用

准备环境 # python 3.10 python3 -m pip install huggingface_hub python3 -m pip install modelscope python3 -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com下载需要的模型 import json import osimport requests from huggingface_hub…...

基于lora的llama2二次预训练

基于lora的llama2二次预训练 一、为什么需要对llama2做基于lora的二次预训练? 加入中文训练语料进行llama2的二次预训练&#xff0c;这样模型就可以增加支持中文输出的能力。 二、基于lora的llama2二次预训练的目标是什么&#xff1f; 在保持预训练模型权重不变的情况下&a…...

机器学习之量子机器学习(Quantum Machine Learning, QML)

量子机器学习(Quantum Machine Learning, QML)是一门结合量子计算与机器学习的新兴交叉领域。它利用量子计算的优势(如并行计算、量子叠加和量子纠缠)来解决传统机器学习中难以处理的问题,或提升算法效率和性能。 QML 的核心要素 量子计算的特性: 量子叠加:允许量子比特…...

【2024 Optimal Control 16-745】【Lecture 3 + Lecture4】minimization.ipynb功能分析

主要功能-最小化问题 目标函数分析: 定义函数 f ( x ) f(x) f(x) 及其一阶、二阶导数。使用绘图工具可视化函数的形状。 实现数值优化: 使用牛顿法寻找函数的极值点&#xff0c;结合一阶和二阶导数加速收敛。使用正则化牛顿法解决二阶导数矩阵可能不正定的问题。 可视化过程…...

一种新的电机冷却方式——热管冷却

在现代工业设备中&#xff0c;电机作为一种核心动力装置&#xff0c;广泛应用于各个领域。例如&#xff0c;家用电器、自动化生产线、交通工具等都离不开电机的运作。然而&#xff0c;随着电机功率的不断提升和负载的增加&#xff0c;电机在运行过程中产生的热量也随之增多&…...

虚拟机上搭建达梦DSC简略步骤

vmware 17 centos 7.6 达梦 dm8_20240920_x86_rh7_64.iso cd /d C:\Program Files (x86)\VMware\VMware Workstation\.\vmware-vdiskmanager.exe -c -s 100MB -a lsilogic -t 2 "F:\vm\dmdsc\sharedisk\share-dcr.vmdk" .\vmware-vdiskmanager.exe -c -s 100MB -a l…...

C++ 矩阵旋转

【问题描述】 编写一个程序&#xff0c;读入一个矩阵&#xff0c;输出该矩阵以第一行第一列数字为中心&#xff0c;顺时针旋转90度后的新矩阵&#xff0c;例如&#xff1a; 输入的矩阵为: 1 2 3 4 5 6 顺时针旋转90度后输出的矩阵为&#xff1a; 4 1 5 2 6 3 【输入…...

mongodb基础操作

创建数据库 use admin授权 db.auth("admin","123456")创建用户 db.createUser({ user: "xxx", pwd: "xxxxxx", roles: [ { role: "readWrite", db: "iot" } ] })查询数据库大小 show dbs;查询结果数量 db.mo…...

以思维链为线索推理隐含情感

❀ 以思维链为线索推理隐含情感 简介摘要引言THORTHOR核心代码实验结果代码运行总结 简介 本文主要对2023ACL论文《Reasoning Implicit Sentiment with Chain-of-Thought Prompting》主要内容进行介绍。 摘要 尽管情绪分析任务常依据文本中的直接意见表达来判定目标的情绪倾向…...

(笔记,自己可见_1)简单了解ZYNQ

1、zynq首先是一个片上操作系统&#xff08;Soc&#xff09;&#xff0c;结合了arm&#xff08;PS&#xff09;和fpga&#xff08;PL&#xff09;两部分组成 Zynq系统主要由两部分组成&#xff1a;PS&#xff08;Processing System&#xff09;和PL&#xff08;Programmable L…...