Apache源代码解析之读取配置文件

节选自《Apache源代码解析-基于Apache0.6.5》第十一章。

网址:http://www.oldapache.org

论坛:http://bbs.oldapache.org

邮箱:tsingien@gmail.com



11.1 概述

 

    我们在前几章里面描述的所有几乎所有配置的初始化都是在文件http_config.c中完成的。我们之所以把它放在这里是为了让您在了解了所有的配置功能以后才查看这些配置是怎么读取的,这样更容易理解这部分代码。

11.2 代码注释

 

   1        #include "httpd.h"

   2       

   3        int port ;                               // 服务器开启的端口

   4        uid_t user_id ;                          // 服务器以哪个用户 ID 启动

   5        char user_name[LOGNAME_MAX+12];          // 对应 user_id 的用户名

   6        gid_t group_id ;                         // 服务器以哪个组权限启动

   7        char server_root[MAX_STRING_LEN];        // 服务器目录

   8        char error_fname[MAX_STRING_LEN];        // 错误日志

   9        char xfer_fname[MAX_STRING_LEN];         // 访问日志

  10        char pid_fname[MAX_STRING_LEN];          // 服务器运行时进程 ID 记录文件

  11         char server_admin[MAX_STRING_LEN];       // 出错时提示接受意见的邮箱

  12        char*server_hostname ;                   // 站点域名

  13        char srm_confname[MAX_STRING_LEN];       // srm.conf 文件位置

  14        char server_confname[MAX_STRING_LEN];    // httpd.conf 文件位置

  15        char access_confname[MAX_STRING_LEN];    // access.conf 文件位置

  16        char types_confname[MAX_STRING_LEN];     // mime.types 文件位置

  17       

  18        char*response_code_strings[RESPONSE_CODES+1];

  19        int timeout ;

  20       

            /* 处理服务器配置

              * 1. 确定各个配置文件的路径

              * 2. 确定各个日志文件的路径

              * 3. 根据文件 httpd.conf 的内容设置相关参数

             */

  21        void process_server_config(FILE*errors)

  22        {

  23            FILE*cfg ;

  24            char l[MAX_STRING_LEN],w[MAX_STRING_LEN];

  25            int n=0 ;

  26             

  27            port=DEFAULT_PORT ;

  28            strcpy(user_name,DEFAULT_USER);

  29            user_id=uname2id(DEFAULT_USER);

  30            group_id=gname2id(DEFAULT_GROUP);

  31            make_full_path(server_root,DEFAULT_ERRORLOG,error_fname);

 

限于篇幅,注释代码部分请参看本书官网。  


节选自《Apache源代码解析-基于Apache0.6.5》第十一章。

网址:http://www.oldapache.org

论坛:http://bbs.oldapache.org

邮箱:tsingien@gmail.com

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spark 是一个开源的分布式计算框架,可以在大规模集群上进行高效的数据处理和分析。它支持读取和处理各种数据源,包括 HDFS(Hadoop 分布式文件系统)。 在 Java 中调用 Spark 读取 HDFS 并按行输出的完整实例如下: ```java import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; public class SparkHDFSExample { public static void main(String[] args) { // 创建 SparkConf 对象 SparkConf conf = new SparkConf().setAppName("SparkHDFSExample").setMaster("local"); // 创建 JavaSparkContext 对象 JavaSparkContext sc = new JavaSparkContext(conf); // 读取 HDFS 文件 JavaRDD<String> lines = sc.textFile("hdfs://localhost:9000/path/to/file.txt"); // 按行输出文件内容 lines.foreach(line -> System.out.println(line)); // 关闭 SparkContext sc.close(); } } ``` 首先,我们需要创建一个 SparkConf 对象来配置 Spark 应用程序。可以设置应用程序的名称和运行模式,这里我们设置为本地模式。 接下来,创建 JavaSparkContext 对象,它是 Spark 的入口点,可以用于创建 RDD(弹性分布式数据集)并执行不同的操作。 然后,使用 JavaSparkContext 对象的 `textFile()` 方法读取 HDFS 文件,该方法返回一个包含文件每一行内容的 JavaRDD 对象。 最后,通过调用 `foreach()` 方法,对 RDD 进行遍历并按行输出文件内容。这里使用 Java 8 的 Lambda 表达式简化代码。 最后,记得关闭 SparkContext 以释放资源。 注意,上述代码中的 HDFS 路径 `hdfs://localhost:9000/path/to/file.txt` 需要根据实际情况进行修改,确保能够正确访问 HDFS 文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值