首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 对函数库的理解

一、前言 我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?...会的。 库如果被取缔了,我们会受到影响吗?会的。 在实现库函数跳转的时候我们要耗费时间吗?要的。 动态链接的优点: 形成的可执行程序小!这样可以节省资源 -- 内存,磁盘,网络。...三、在Linux下库的命名 1.动态库 我们直接编译一个文件,之后用file指令查看编出的 test 可执行文件,这里可以看到 dynamically linked ,翻译成中文就是动态链接的意思。...其中XXX就是库的名字,我们可以看到上面的库的名字是c,所以链接的是c标准库。 用这个库的程序非常多,但是库只有一份,所有有C语言写的程序,不会出现重复的代码! 因为,动态库是一个共享库。...系统给我们提供 标准库的 .h(告诉我们怎么用),动静态库 .so/.a 我们的代码 + 库的代码 = 可执行程序! 这一套只在Linux下有效吗?在windows下原理也是一样的!

89630

【Linux】对进程地址空间的理解

一、关于进程地址空间的简单理解 进程地址空间其实是分了很多个区域的,区域划分的本质就是区域内的各个地址都是可以使用的。...如同下面这个图所示: 无论是环境变量的地址还是环境变量表的地址,所存放的地址都在栈的上部。这里的已初始化数据和未初始化数据是指的全局变量,包括静态变量(静态变量默认被初始化为0)。...进程地址空间不是真实的物理内存,叫做虚拟内存。每一个进程都有自己独立的PCB,也有自己独立的地址空间。在32位机器下,进程地址空间的大小为[0,4GB]。...进程地址空间和真实的物理内存之间有一个叫做页表的结构,页表存放的就是虚拟内存到物理内存之间的映射关系,所以通过虚拟内存经过一定步骤就可以访问到真实物理内存中的内容。...物理内存可以在任意一个空闲的合法的位置进行申请,一个进程申请的物理内存可以是无序的,但一旦映射到页表中就跟有序的虚拟地址产生了一一对应的关系,将物理内存从无序变成有序。

17610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux】对信号产生的内核级理解

    一、键盘产生信号  键盘产生信号这里就要涉及一个重要的概念了,叫硬件中断。我这里会粗粒度地说一下键盘产生信号,以及信号被上层软件读到的过程,只是说一下我自己的理解。...1.2、键盘产生信号并被读取的过程 在CPU上是有各个针脚的,每个针脚有对应的编号。针脚在主板上是可以和键盘进行连接的。...CPU有寄存器能记录是几号(我觉得可以理解成数组下标)针脚触发了高电平。然后CPU就可以根据寄存器中的数字在中断向量表中找到对应数组下标中的读取键盘数据的方法。操作系统就去读取键盘上输入的数据。...信号发送给进程后进程PCB中其实是用一个32位的整数来保存收到的信号的,也就是说,信号是以位图的形式被保存起来的。...假设我们要修改空指针里的内容,将保存在eax寄存器中的空指针的地址(虚拟地址)和CR3寄存器中的基地址到MMU中进行映射,发现页表中根本就没有空指针的虚拟地址到物理地址之间的转换关系(或者是其它情况,有转换关系但是页表项的权限为只读权限但你却要做修改

    12410

    对linux系统中“平均负载”的理解

    最近在极客时间学习了倪朋飞老师的《Linux性能优化实战》专题,里面讲到了linux的平均负载这个概念。也就是load average。现在谈谈对平均负载的理解,并整理为笔记。...对,没有看错,这里说的是平均的进程数量,与CPU本身的使用率没有直接关系。这个load averages实际上表示的是系统中的平均活跃进程数。...因此,我们可以讲系统的平均负载理解为单位时间内的平均的活跃进程数。 那么我们如果需要知道一个服务器上负载究竟是多少合适呢?...从这个趋势来看,系统的整体负载在降低。 按照课程的经验值,通常情况下,当平均负载高于CPU数量70%的时候,就应该对负载进行排查了,一旦系统负载过高,可能对整体服务的性能造成影响。...sysstat包含了常用的linux性能工具。用于监控和分析系统性能。

    1K20

    linux | 对静态路由理解与测试

    静态路由 静态路由使用的原因多种多样,当没有到目的IP地址的动态路由时经常使用静态路由,或者用于覆盖动态获知的路由。 默认情况下,静态路由的管理距离为 1,因此优先于来自任何动态路由协议的路由。...RELATED— 请求新连接但属于现有连接一部分的数据包,例如连接端口为 20 的被动 FTP 连接,但传输端口可以是任何未使用的端口 1024 或更高。...INVALID— 不属于连接跟踪表中任何连接的数据包。 您可以对任何网络协议使用连接跟踪的有状态功能iptables,即使该协议本身是无状态的(例如 UDP)。...: -A 在规则链的末尾加入新规则 -i 网卡名称 匹配从这块网卡流入的数据 -o 网卡名称 匹配从这块网卡流出的数据 -m state 匹配状态 -j 跳转到指定的目标。...valid_lft forever preferred_lft forever https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux

    1.7K30

    【Linux】对进程PCB的理解&&查看进程信息的方法

    一、学习准备:对操作系统工作模式的理解 首先我们要清楚的是,操作系统是一个进行软硬件资源管理的软件。操作系统对下要管理好底层硬件。...原因是如果我们要使用系统调用接口的话,我们本身就应该对操作系统有一定的认知和了解,所以有人就对系统调用接口进行了封装,形成了库(例如C标准库),方便使用者直接使用库函数就可以达到使用系统调用接口同样的使用效果...进一步的说,正是对系统调用函数进行了封装,才使诸如C语言,C++等各种编程语言具有了跨平台性,我上层同样都是调用printf函数,在linux操作系统下我就去调用linux下的系统调用函数(封装在C标准库...下面是计算机的层状结构图: 二、进程的理解 可执行程序被加载到内存,加载的是程序的代码和数据,可是操作系统并不认识哪些代码和数据对应哪些进程。...三、查看进程 ps axj:在Linux系统中用于查看关于进程的更多信息 其中pid就是进程对应的标识符,ppid就是进程的父进程对应的标识符 ps ajx | head -1 && ps ajx |

    23510

    对GC的理解

    而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。...因为年轻代中的对象基本都是朝生夕死的(80%以上),所以在年轻代的垃圾回收算法使用的是复制算法,复制算法的基本思想就是将内存分为两块,每次只用其中一块,当这一块内存用完,就将还活着的对象复制到另外一块上面...这个时候,“From”和“To”会交换他们的角色,也就是新的“To”就是上次GC前的“From”,新的“From”就是上次GC前的“To”。不管怎样,都会保证名为To的Survivor区域是空的。...频发的Full GC消耗的时间是非常可观的,这一点会影响大型程序的执行和响应速度,更不要说某些连接会因为超时发生连接错误了。...碎片化带来的风险是极大的,严重影响Java程序的性能。堆空间被散布的对象占据不连续的内存,最直接的结果就是,堆中没有足够大的连续内存空间,接下去如果程序需要给一个内存需求很大的对象分配内存。。。

    1.1K40

    对vite的理解

    对vite的理解快速的冷启动"快速的冷启动"指的是在开发过程中,当你启动应用程序或重新启动开发服务器时,Vite 能够迅速加载应用程序。...即时的热模块替换(HMR)即时的热模块替换(HMR)是指在开发过程中,当你对代码进行修改后,Vite 能够实时更新修改的模块,而无需完全刷新整个页面或重新加载整个应用程序。...Vite 的预解析(Pre-Bundling)"Vite 的预解析"是指在构建阶段对项目的源码进行静态分析和预处理,以提前解析模块的依赖关系和生成优化的代码块,从而提高构建性能和减少启动延迟。...Vite 利用了现代浏览器对 ES 模块的原生支持,可以通过静态分析和预处理源码,提前解析模块的依赖关系,从而减少构建时的工作量和时间。...3、优化的代码块生成:根据模块的依赖关系,Vite 会生成优化的代码块(Code Splitting),将相关的模块打包到同一个代码块中。这样可以提高代码的加载效率,减少不必要的网络请求。

    28670

    对less的理解

    我对less的理解: less是写css时可以采用的另一种写法,用less的格式写出来的东西,可以通过编译器编译成css。也就是可以使用某种方法,把less文件变成css文件。...编译成的css文件和平时自己写的css没什么区别,浏览器自动可读 好处 使用less而不是直接写css有几个好处: less使用常量的形式保存一个值,哪里用到这个常量都行,这个常量的作用域应该是这个less...(这里的常量类似于js的变量,只是常量定义了之后不能动态修改值)。 编译后可以是压缩后的css,这样就不用自己压缩啦。 选择器嵌套写法。...据说这种方法是官方推荐的,就是你的less和你的html、js是没有关联的,html中直接引用编译好的css就行。...这种方法据说官方最不推荐, 在编译完成之前,body的宽度会被设为0,我也不知道为什么,但实际就是这样。 可以使用外部设置的变量。

    1K20

    对Activit的理解

    对Activit和工作流的理解 工作流(Workflow),就是通过计算机对业务流程自动化执行管理。...工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理。...就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流程管理。...而手工处理工作流程,一方面无法对整个流程状况进行有效跟踪、了解,另一方面难免会出现人为的失误和时间上的延时导致效率低下,特别是无法进行量化统计,不利于查询、报表及绩效评估。...Activit如何使用 部署activiti Activiti是一个工作流引擎(其实就是一堆jar包API),业务系统使用activiti来对系统的业务流程进行自动化管理,为了方便业务系统访问(操作)activiti

    1K30

    对PBC的理解

    最近有几次关于PBC的培训,部门内也在搞一些实践,PBC的全称是Packaged Business Capabilities,感觉每个人对PBC的理解都有差别,我也在思考PBC是什么?...我对PBC有什么深入的思考,以及如果让我去构建BPC的时候,我会怎么做。整理一下自己对PBC的理解,希望可以抛砖引玉。 PBC是什么?...咨询公司gartner对PBC定义为:Packaged business capabilities (PBCs) are software components representing a well-defined...需要被业务人员理解和识别,可被组装,复用的能力模块。 PBC也是一种能力,但什么是能力呢?能力是能够顺利完成某些活动所必须具备的一组功能。...可能会有的想法是低代码解决不了复杂的业务问题,但是业务流程处理,大的业务流程包含小的业务流程,低代码能不能解决业务问题,在于流程梳理的够不够清楚。

    1.1K11

    【Linux课程学习】:对操作系统(Operator System)的理解

    (手段) 对上层环境 给上层提供一个良好的运行环境。(目的) 如何理解OS: OS相当于中间角色:OS对上进行收集数据,对下进行决策工作。...最后OS对硬件的管理就是对链表的增删查改。 整体理解: 对下层的理解---驱动程序: 每一种硬件都要有自己对应的驱动程序。硬件厂商自己写的驱动程序。 让操作系统内核进行管理时,通过驱动程序就能进行。...理解OS 和银行系统一样,必须保证银行的安全性, 以银行系统类比来理解OS。 1.设备,仓库,宿舍,桌椅相当于计算机底层的硬件。...2.对应的这些硬件,设备有计算机相关专业的人堆设备进行管理,仓库有仓库管理员……对应的这些人员,是对某些硬件进行特殊管理的,可以理解为驱动程序。 3.银行的行长就可以看成OS。...根据不同的用户的需求,设计出了: 1.命令行界面:Unix和Linux的shell环境。文本基础,效率,灵活性,简洁。一系列指令用C语言写的,比如ls指令:通过系统调用,对磁盘的内容进行访问。

    7110

    【Linux】对system V本地通信的内核级理解

    一、system V版本的进程间通信技术   通过之前的学习,我们大致可以感受出来,共享内存,消息队列和信号量在使用的时候是有很多共性的。它们三个的接口,包括接口中传的参数有的都有很大的相似度。...cgid:共享内存创建者所属组的有效组ID。类似于cuid,它记录了创建共享内存段的组的ID。 mode:该共享内存的权限 _seq:_seq字段通常用于确保IPC对象的唯一性和追踪对象的更改。...这有助于防止IPC对象的重复创建和避免竞态条件  只有超级用户或创建IPC对象的进程才有权改变ipc_perm结构体的值。其他进程只能根据这些值来确定它们对共享内存段的访问权限。 ...当我们要删除一个IPC资源的时候,只需要在该数组中将对应下标中的struct ipc_perm*释放掉就可以了。这样对IPC资源的管理就变成了对数组的增删查改。  ...四、总结 其实System V的通信技术在现在已经逐渐被边缘化了。System V是一个单独设计的内核模块,其标准的设计不符合Linux下一切皆文件的思想。

    13910

    简述你对ioc的理解_对剩余价值的理解总结

    一、对IOC和DI的基本认识 (一)理解IoC,即“控制反转” (二)IoC具体做什么?...(三)理解IoC和DI的关系 二、对IOC容器初始化的理解 三、对DI依赖注入的理解 参考书籍、文献和资料 ---- 当前没有去添加对应的源码,只是自己的一些总结,可能理解有错误或不到位,还请指出。...一、对IOC和DI的基本认识 (一)理解IoC,即“控制反转” 在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。...二、对IOC容器初始化的理解 IOC容器初始化的基本步骤主要是两个方面: 初始化的入口由容器实现中的refresh()方法调用来完成。...三、对DI依赖注入的理解 当Spring IOC容器完成了Bean定义资源的定位、载入和解析注册,IOC容器就可以管理Bean定义的相关数据了,但是此时IOC容器还没有对所管理的Bean进行依赖注入,依赖注入

    51520

    对php多态的理解

    「PHP开发者」 致力于做最专业的PHP中文开发者交流平台 php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态。php理应具有这三大特性。...封装是类的构建过程,php具有;php也具有继承的特性。唯独这个多态,php体现的十分模糊。原因是php是弱类型语言。...java的多态体现的十分清晰,大体分两类:父类引用指向子类对象;接口引用指向实现接口的类对象。java声明变量时都要给变量设定类型,所以存在什么父类引用和接口引用。...而php则没有这点体现,php声明变量不需要给变量设定类型,一个变量可以指向不同的数据类型。所以,php不具有像java一样的多态。 php不具有像java那种清晰的多态,不是代表php不具有多态性。...,说明子类对象是父类的一个实例,从而达到了java多态的功能。 上边的类是抽象类,也表明了接口与实现接口的类对象同样可以适用。 至此,得出php虽然多态体现模糊,但还是具有多态特性的。

    1.5K70

    对sppnet网络的理解

    前言:    接着上一篇文章提到的RCNN网络物体检测,这个网络成功的引入了CNN卷积网络来进行特征提取,但是存在一个问题,就是对需要进行特征提取图片大小有严格的限制。...当时面对这种问题,rg大神采用的是对分割出的2000多个候选区域,进行切割或者缩放形变处理到固定大小,这样虽然满足了CNN对图片大小的要求,确造成图片的信息缺失或者变形,会降低图片识别的正确率....大神在进入CNN前对图片进行warp处理,就是为了卷积之后的特征数,能够和了全连接层的神经元个数相等. ?  ...我们对这种图进行卷积处理(我们以zf为例,最后一个卷积之后得到这样的特征图) ?...何大神觉得,如果对ss提供的2000多个候选区域都逐一进行卷积处理,势必会耗费大量的时间,所以他觉得,能不能我们先对一整张图进行卷积得到特征图,然后 再将ss算法提供的2000多个候选区域的位置记录下来

    71560

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券