10.25学习

1.程序链接库

程序链接库(Library),通常简称为库,是程序设计中一种常用的代码组织方式。它包含了一组预先编写好的代码,这些代码可以被多个不同的程序调用,以实现特定的功能。使用链接库的主要目的包括:

①代码复用:开发者可以重用已有的代码,而不需要每次都重新编写相同的功能。

②模块化:将程序分解成多个模块或库,有助于提高代码的可维护性和可读性。

③简化开发:开发者可以专注于程序的特定部分,而不必从头开始实现所有功能。

④性能优化:库通常经过优化,可以提供比手写代码更高效的性能。

⑤跨平台兼容性:库可以帮助程序在不同的操作系统和硬件平台上运行。

链接库可以是静态的(Static Library)或动态的(Dynamic Library):

静态链接库:在程序编译时被整合到最终的可执行文件中。这意味着库的代码成为了程序的一部分,因此程序的体积会增大,但运行时不需要额外的库文件。

动态链接库(DLL在Windows上,.so在Linux上,.dylib在macOS上):在程序运行时才被加载。这意味着多个程序可以共享同一份库文件,节省存储空间,并且库的更新不需要重新编译程序。

链接库在软件开发中扮演着重要的角色,它们是现代软件开发的基础之一。

 

2.system函数

在编程中,"system" 函数是一个调用操作系统功能的函数,它通常存在于多种编程语言的标准库中。这个函数允许程序执行操作系统命令,就像用户在命令行界面(如终端、命令提示符)中输入命令一样。

功能

 system  函数的主要功能是执行一个由字符串指定的命令,并返回命令执行的结果。这个命令可以是任何在操作系统的命令行中可以执行的命令,比如列出目录内容、运行程序、复制文件等。

使用示例

在不同的编程语言中, system  函数的使用方式略有不同,但基本思想是相似的。以下是一些示例:

C语言

Python

注意事项

虽然  system  函数提供了方便的操作系统命令调用方式,但在使用时需要注意以下几点:

①安全性:使用  system  函数执行用户输入的命令时,可能会受到注入攻击,因为用户可能会输入恶意命令。

②跨平台兼容性:不同操作系统的命令可能不同,使用  system  函数时需要考虑程序的跨平台兼容性。

③性能:频繁使用  system  函数可能会影响程序的性能,因为它涉及到进程的创建和销毁。

④错误处理: system  函数返回的是命令执行的退出状态,而不是命令的输出,这可能使得错误处理变得复杂。

因此,虽然  system  函数在某些情况下非常有用,但在实际开发中,开发者可能会选择更安全、更可控的方法来执行系统命令,比如使用专门的库或API。

 

3.CPU

CPU,全称为中央处理器(Central Processing Unit),是计算机硬件的核心部件之一,负责执行程序中的指令和处理数据。它相当于计算机的“大脑”,是计算机系统中最重要的组成部分之一。

 

CPU的主要功能包括:

①指令执行:CPU从存储器中取出指令,解释指令,并执行指令所要求的操作。

②数据处理:CPU处理各种数据,如算术运算、逻辑运算、数据传输等。

③控制:CPU控制计算机的其他硬件设备,如内存、硬盘、输入输出设备等。

④协调:CPU协调计算机系统中各个部件的工作,确保数据在各个部件之间正确流动。

 

CPU的基本组成部分:

①算术逻辑单元(ALU):负责执行所有的算术和逻辑运算。

②控制单元(CU):负责解释指令并生成控制信号,以控制其他部件的操作。

③寄存器组:包括各种寄存器,用于存储指令、数据和地址等信息。

④缓存:高速存储区,用于临时存储CPU经常访问的数据和指令,以减少对主内存的访问次数。

⑤输入/输出接口:用于CPU与计算机其他部件(如内存、硬盘、输入输出设备)之间的数据交换。

 

CPU的性能指标:

①时钟频率:CPU的时钟频率,通常以GHz(吉赫兹)为单位,表示CPU每秒钟可以执行的时钟周期数。

②核心数:CPU中独立的处理单元的数量,多核心CPU可以同时处理多个任务。

③缓存大小:CPU内部缓存的大小,对CPU的性能有重要影响。

④指令集:CPU支持的指令类型,不同的指令集可以提供不同的功能和性能。

随着技术的发展,CPU的设计和制造技术不断进步,性能也在不断提高,以满足日益增长的计算需求。

 

4.程序编译和执行过程

程序的编译和执行是一个复杂的过程,涉及到多个步骤。以下是程序从源代码到最终执行的一般流程:

①编写源代码:

程序员使用编程语言(如C、C++、Java等)编写源代码。

②预处理(Preprocessing):

预处理器处理源代码文件中的预处理指令,如宏定义的展开( #define )、条件编译指令( #ifdef 、 #ifndef 、 #endif )和包含头文件( #include )等。

③编译(Compilation):

编译器将预处理后的源代码转换成汇编语言。这一步通常包括词法分析、语法分析、语义分析和代码生成等阶段。

④汇编(Assembly):

汇编器将汇编语言转换成机器码,生成目标文件(通常是 .o 或 .obj 文件)。这一步涉及到将汇编指令转换成CPU可以理解的二进制指令。

⑤链接(Linking):

链接器将一个或多个目标文件与库文件和其它资源链接在一起,生成可执行文件(在Windows上通常是 .exe 文件,在Unix-like系统上通常是没有扩展名的文件)。这一步确保所有函数和变量的引用都被正确解析。

⑥加载(Loading):

加载器(Loader)将可执行文件加载到内存中。这一步通常在程序执行时由操作系统完成。

⑦执行:

CPU开始执行加载到内存中的程序。程序执行过程中,操作系统负责管理CPU时间、内存和其他系统资源。

⑧运行时库支持:

程序执行时,可能需要运行时库(Runtime Library)提供的支持,如内存分配、输入输出操作等。

⑨程序结束:

程序执行完毕后,操作系统负责清理程序使用的资源,如关闭文件、释放内存等。

在某些编程语言中,如Java或Python,编译和执行的过程可能稍有不同。例如:

Java:

Java源代码被编译成字节码( .class 文件),然后由Java虚拟机(JVM)解释执行或即时编译(JIT)成机器码执行。

Python:

Python源代码通常在运行时被解释执行,尽管有些Python实现(如PyPy)使用了JIT编译技术来提高性能。

此外,现代编程语言和开发环境可能提供了更多高级特性,如自动内存管理、垃圾回收、异常处理等,这些都在程序执行过程中发挥作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法与盛雨水问题

啥是盛雨水问题?给个图就熟悉了 欸? 这其中的关键在于: 1. 容量2D化就是长 * 宽 2. 木桶效应:宽取决于短板。 那我们来分析,怎么样能达到最佳的结果呢?穷举一下所有可能性不就好了?每两个板子…

ArcGIS001:ArcGIS10.2安装教程

摘要:本文详细介绍arcgis10.2的安装、破解、汉化过程。 一、软件下载 安装包链接:https://pan.baidu.com/s/1T3UJ7t_ELZ73TH2wGOcfpg?pwd08zk 提取码:08zk 二、安装NET Framework 3.5 双击打开控制面板,点击【卸载程序】&…

【c++篇】:解析c++类--优化编程的关键所在(二)

文章目录 一.默认成员函数二.构造函数2.1.构造函数的概念2.2构造函数的特性 三.析构函数3.1析构函数的概念3.2析构函数的特性 四.拷贝构造函数4.1拷贝构造函数的概念4.2拷贝构造函数的特性 五. 赋值运算符重载5.1运算符重载5.2赋值运算符重载5.3前置和后置重载 六.const成员七.…

【业务】群组服务功能重构测试总结

背景: 群组微服务重构想法上半年就开始了,目前老群组服务除了代码设计不合理,服务部署无法启动也是痛点。研发侧发起技术重构。 测试角度来说我这边痛点有三个: 业务不熟悉也没有完整有效case->有哪些功能点,那些…

docker 单节点arm架构服务器安装zookeeper、kafka并测试通信

kafka、zookeeper常用镜像介绍 kafka和zookeeper常见的镜像有以下三个:wurstmeister/zookeeper、kafka、confluentinc/cp-zookeeper、cp-kafka 和 bitnami/zookeeper、kafka。 wurstmeister/xxx: 由wurstmeister团队维护,提供的镜像适用于开发和测试环…

Mac apache配置cgi环境-修改httpd.conf文件、启动apache

Mac自带Apache,配置CGI,分以下几步: 找到httpd.conf。打开终端,编辑以下几处,去掉#或补充内容。在这个路径下写一个测试文件.py格式的,/Library/WebServer/CGI-Executables,注意第一行的python…

矩阵概念 和 性质

目录 一、矩阵因式分解 二、矩阵在图形学的运用 一、矩阵因式分解 1、先将矩阵化为上三角阵,得到U 2、每个主元列以下元素 主元 得到下三角阵 二、矩阵在图形学的运用 二维移动: 子空间H: 零向量属于H 对H中任意向量u、v,uv…

2024-10-25 算法学习及论文辅导(每日更新,随时联系)

看看学习小群的学习氛围👇🏻 很多同学自己学习遇到问题没人解决,最终消耗了时间,精力同时大大消耗了自己对学习的信心😧 🥳来看看跟班学习,大家遇到问题的时候是怎么解决的: 首先…

idea安装visualVm插件

idea 安装visualVM插件用于分析java程序, 1.在插件市场安装visualvm launcher 2.安装成功后,重启idea,此时启动按钮旁边有这两个按钮 3.需要在这里配置插件的visualvm位置 4.配置完后,点击启动

ArcGIS计算落入面图层中的线的长度或面的面积

本文介绍在ArcMap软件中,计算落入某个指定矢量面图层中的另一个线图层的长度、面图层的面积等指标的方法。 如下图所示,现在有2个矢量要素集,其中一个为面要素,表示某些区域;另一个为线要素,表示道路路网。…

Linux相关概念和易错知识点(16)(Shell原理、进程属性和环境变量表的联系)

Shell原理及其模拟实现 在认识进程exec系列函数、命令行参数列表、环境变量之后,我们可以尝试理解一下Shell的原理,将各方知识串联起来,让Shell跑起来才能真正理解这些概念。我会以模拟Shell执行的原理模拟一个Shell。途中配上相关讲解。 1…

InnoDB 存储引擎<一>InnoDB简介与MySQL存储架构及相关数据结构

目录 回顾MySQL架构 InnoDB简介 ​MySQL存储结构 回顾MySQL架构 对MySQL架构图的总结: MySQL服务器是以网络服务的方式对外提供数据库服务的,我们使用的应用程序以及客户端统称为外部程序。 外部程序通过发送网络请求的方式来连接MySQL服务器,这时首先每…

Leetcode239. 滑动窗口最大值

问题描述: 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,…

Python爬虫教程:从入门到精通

Python爬虫教程:从入门到精通 前言 在信息爆炸的时代,数据是最宝贵的资源之一。Python作为一种简洁而强大的编程语言,因其丰富的库和框架,成为了数据爬取的首选工具。本文将带您深入了解Python爬虫的基本概念、实用技巧以及应用…

文件下载漏洞

文件安全 文件下载 常见敏感信息路径 Windows C:\boot.ini //查看系统版本 C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件 C:\Windows\repair\sam //存储系统初次安装的密码 C:\Program Files\mysql\my.ini //Mysql配置 C:\Program Files\mysql\data\mysql\user.…

Python小游戏13——植物大战僵尸

代码 import random import time # 植物类 class Plant: def __init__(self, name, health): self.name name self.health health def is_alive(self): return self.health > 0 # 僵尸类 class Zombie: def __init__(self, name, health): self.name name self.health h…

Tornado简单使用

Tornado简单使用 1 介绍 Tornado 是一个基于Python的Web服务框架和 异步网络库,它最初由 FriendFeed 开发,后来被 Facebook 收购并开源,通过利用非阻塞网络 I/O, Tornado 可以承载成千上万的活动连接,完美的实现了 长连接、WebS…

关于 Linux 内核“合规要求”与俄罗斯制裁的一些澄清

原文:Michael Larabel - 2024.10.24 当 一些俄罗斯的 Linux 开发者被从内核的 MAINTAINERS 文件中移除 时,原因被描述为“合规要求”,但并未明确这些要求具体涉及什么内容。随后,Linus Torvalds 对此发表了评论,明确指…

SIP 业务举例之 三方通话:邀请第三方加入的信令流程

目录 1. 3-Way Conference - Third Party Is Added 简介 2. RFC5359 的 3-Way Conference - Third Party Is Added 信令流程 3. 3-Way Conference - Third Party Is Added 总结 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信)…

[bug] vllm 0.6.1 RuntimeError: operator torchvision::nms does not exist

[bug] vllm 0.6.1 RuntimeError: operator torchvision::nms does not exist 环境 python 3.10 torch 2.4.0cu118 torchvision 0.19.0cu118 vllm 0.6.1.post2cu118问题详情 if torch._C._d…