APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。

APR使得平台细节的处理进行下移。对于应用程序而言,它们根本就不需要考虑具体的平台,不管是Unix、Linux还是Window,应用程序执行的接口基本都是统一一致的。因此对于APR而言,可移植性和统一的上层接口是其考虑的一个重点。而APR最早的目的并不是如此,它最早只是希望将Apache中用到的所有代码合并为一个通用的代码库,然而这不是一个正确的策略,因此后来APR改变了其目标。有的时候使用公共代码并不是一件好事,比如如何将一个请求映射到线程或者进程是平台相关的,因此仅仅一个公共的代码库并不能完成这种区分。APR的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能。

APR的最早的一个目标就是为所有的平台(不是部分)提供一个公共的统一操作函数接口,这是一个非常了不起的目的,当然也是不现实的一个目标。我们不可能支持所有平台的所有特征,因此APR目前只能为大多数平台提供所有的APR特性支持,包括Win32、OS/2、BeOS、Darwin、Linux等等。为了能够实现这个目标,APR开发者必须为那些不能运行于所有平台的特性创建了一系列的特征宏(FEATURE MACROS)以在各个平台之间区分这些特征。这些特征宏定义非常简单,通常用APR_HAS_FEATURE参数设置:

如果某个平台具有这个特性,则该宏必须设置为true,比如Linux和window都具有内存映射文件,同时APR提供了内存映射文件的操作接口,因此在这两个平台上,APR_HAS_MMAP宏必须设置,同时apmmap函数应该将磁盘文件映射为内存并返回适当的状态码。如果你的操作系统并不支持内存映射,那么APR_HAS_MMAP必须设置为0,而且所有的apmmap函数也可以不需要定义。第二步就是对于那些在程序中使用了不支持的函数必须提出警告。

目前APR中支持的基本类型包括下面几种:

表3-1 APR中支持的基本类型

类型名称

文件夹名称

描述

atomic

/apr/atomic

原子操作

dso

/apr/dso

动态加载共享库

file io

/apr/file_io

文件IO处理

mmap

/apr/mmap

内存映射文件

locks

/apr/locks

进程和线程互斥锁

memory

/apr/memory

内存池操作

network_io

/apr/network_io

网络IO处理

poll

/apr/poll

轮询IO

table

/apr/tables

Apache数组(堆栈)和表格以及哈希表

process

/apr/threadproc

进程和线程操作

user

/apr/user

用户和用户组操作

time

/apr/time

时间操作

string

/apr/strings

字符串操作

password

/apr/passwd

终端密码处理

misc

/apr/misc

大杂烩,不属于其余类的任何apr类型都可以放在里面

shmem

/apr/shmem

共享内存

random

/apr/random

随机数生成库

apache 的apr项目目前有三部分组成,分别是apr、apr-util、apr-iconv

apr中包含了一些通用的开发组件,包括mmap,DSO等等

apr-util该目录中也是包含了一些常用的开发组件。这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等。

apr-iconv包中的文件主要用于实现iconv编码。目前的大部分编码转换过程都是与本地编码相关的。在进行转换之前必须能够正确地设置本地编码。因此假如两个非本地编码A和B需要转换,则转换过程大致为A->Local以及Local->B或者B->Local以及Local->A。

以上三个包最新下载地址为:

http://labs.mop.com/apache-mirror//apr/apr-1.4.6.tar.gz

http://labs.mop.com/apache-mirror//apr/apr-util-1.4.1.tar.gz

http://labs.mop.com/apache-mirror//apr/apr-iconv-1.2.1.tar.gz

linux apr下载地址,apache apr各版本国内高速下载地址及入门教程相关推荐

  1. java旧版下载地址_Java下载 - 最新版、历史版本的官方下载地址

    Java下载 - 最新版.历史版本的官方下载地址 2015-07-31·WeaponX 4114 次浏览 ## 最新版下载 ### 最新版Java下载地址 [http://www.oracle.com ...

  2. JetBrains全家桶(IDEA、Pycharm等各个产品)在国内高速下载地址

    JetBrains产品在国内有CDN下载通道,下面给出各个产品的下载链接,在某些情况下,官网无法访问,可以使用下面的链接直接下载. 只需要照模样修改后缀名和年份版本号即可. 操作系统后缀 Win: . ...

  3. python下载无法安装_各种版本的python下载安装教程

    关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一 ...

  4. 下载visual studio的历史版本及离线下载

    网上一堆安装教程,大多是安装最新的版本,感觉像在浪费时间: 1.访问官网默认最新下载页面,找到下方的较早下载项: 开始下载:https://visualstudio.microsoft.com/zh- ...

  5. macOS系统更新下载太慢?官方原版系统高速下载教程

    下面以安装 macOS Monterey为例子展开说明: 好多小伙伴遇到系统更新下载系统安装包很慢的问题,在线更新macOS Monterey更新下载过慢?根本就更新不动,没有速度,怎么办?本文将介绍 ...

  6. 国内高速下载 GitHub 下载单文件夹和 release 的方法

    高速下载 release 1. https://d.serctl.com/ 网址:https://d.serctl.com/ 将 release 下载地址复制粘贴,点击提交,稍等即可.该方法来自知乎用 ...

  7. 各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享

    给大家分享个网站,里面有很多好的资源可供免费下载 网站地址: I Tell You 官网 下面是各版本的 sqlserver 数据库 下面是各版本的 windows 操作系统 喜欢的点个赞❤吧!

  8. CentOS各个版本国内镜像下载地址,下载速度10M+

    CentOS下载,CentOS系统下载 1.复制链接打开链接 https://man.linuxde.net/download/CentOS/ 2.点击要下载的版本 3.下载迅雷种子 4.进入迅雷下载 ...

  9. 国内高速下载Docker 以及 docker-compose 地址

    下载地址: Docker CE 镜像源站-阿里云开发者社区 DaoCloud | Docker 极速下载 CentOS7用阿里云Docker Yum源在线安装Docker 17.03.2_锐意工作室- ...

  10. CentOS 6 7 8版本国内镜像下载

    各镜像的快捷链接 CentOS 6 镜像超链接 也可复制网址访问:http://mirrors.aliyun.com/centos/6/isos/x86_64/ CentOS 7 镜像超链接 也可复制 ...

最新文章

  1. Python网络爬虫之requests库Scrapy爬虫比较
  2. Java线程-两阶段终止模式(interrupted实现)
  3. 如何php防止XSS攻击
  4. ERP项目成败的三个因素
  5. luajit日记-FFI库
  6. html清除内部所有补白,如何清除行内元素之间的HTML空白
  7. DockOne微信分享(一一零):Docker在沪江落地的实践
  8. linux卸载wine qq,ubuntu安装wineQQ
  9. 【内网安全】445端口的入侵与扫描
  10. SQL中COUNT的用法
  11. BP神经网络:误差反向传播公式的简单推导
  12. 【吐血整理】一份完备的集成学习手册!(附Python代码)
  13. 跨站脚本(XSS)攻击
  14. 树的递归遍历与递归序
  15. 计算机中c盘和硬盘有什么关系,都是硬盘分区 C盘和D盘到底有什么区别?
  16. hyperterminal使用教程_hyperterminal 教程
  17. c语言圆周率小数点后500万位,活久见!德科学家整理出圆周率小数点后500万位数字...
  18. 操作系统-计算机硬件简介
  19. JUDE/Professional中文版
  20. npm太慢, 淘宝npm镜像使用方法

热门文章

  1. 8年Android开发教你如何写简历,详细的Android学习指南
  2. 5G助推直播行业快速发展
  3. mysql 外键约束失败_MYSQL:错误:无法添加或更新子行:外键约束失败
  4. “0x005346c4”指令引用的“0x00786000”内存,该内存不能为读
  5. python爬楼梯问题_python解决上楼梯问题
  6. Java习题练习:1299 String
  7. STC15单片机功能和应用电路
  8. 和机器人问问题的软件_如何开发一个特定领域的自动问答机器人(Chat Bot)?
  9. c#语言絢止函数是,取汉子拼音首字母的C#和VB.Net方法
  10. arcmap叠置分析_ArcGIS常见的叠加操作分析情况汇总