无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点 这里可以跳转到教程。

吐槽下dnsmasq源码

首先表示下感谢,作者提供简单的设计,丰富的功能,充分降低了我们这些普通程序员的工作,但是要理解起来还是不那么称心如意,主要有那么几点。

  1. 无关设计, 代码缩进问题。

无处不再的空格,偶尔有几行tab,真的不好看阿,阅读起来很麻烦
  1. 整体设计的感想

程序主要架构是select侦听socket的状态进行操作 -- 【决定其只能在小网络架构中使用】采用struct dnsmasq全局的结构体,里面包含很多的链表来存储受到的数据报文并和响应绑定,思考的挺巧妙的,不过,个人觉得这样的结构体太臃肿了,看起来真的不舒服,只能慢慢熟悉代码逻辑后,理解设计。
  1. 修改其dns处理逻辑

主要处理逻辑在check_dns_listener, 我只看了udp的请求,tcp的请求就没注意理解,貌似是fork子进程,单独处理。 有最大连接数限制。主要函数是receive_query, forward_query, reply_query等receive_query - 主要是解析数据报,看看缓存有没有,有且未超时则使用缓存answer_request处理封装相应,没有就调用forward_query
forward_query - 主要做的就是将数据报文发送到所有的dns服务器,来自/tmp/resolve.conf.auto
reply_query - 接受dns服务器的响应,收到后查找是哪个请求,没有找到则丢弃,找到了,就根据SOA,等取出

吐槽下dnsmasq源码相关推荐

  1. mysql centos 源码安装_CentOS5下MySQL源码安装方式

    1.编译环境安装 uname -aLinux ha01 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Lin ...

  2. 初步了解mac下C源码的编译过程

    初步了解mac下C源码的编译过程 参考: 请问Mac OS X (10.9.1)下创建和使用动态链接库的方法 cc.gcc.g++.CC的区别概括 - 今晚打酱油_ - 博客园 Linux 下 的 c ...

  3. linux python3.8源码安装_linux 下从源码安装 Python——小白踩坑记

    实验室服务器使用的系统为 Ubuntu 16.04,自带的 python 版本为 Python 2.7.12 和 Python 3.5.2,命令行下使用$ python命令来启动 python 时默认 ...

  4. rad linux下安装mysql_Linux(CentOS或RadHat)下MySQL源码安装

    MySQL 5.6开始,需要使用g++进行编译. cmake  :MySQL 5.5开始,使用cmake进行工程管理,cmake需要2.8以上版本. bison  :MySQL语法解析器需要使用bis ...

  5. chrome浏览器开发者工具F12中某网站的sources下的源码如何批量保存?

    目录 chrome浏览器 开发者工具F12中某网站的sources下的源码如何批量保存 1. 常用保存Sources源码的两种方法 1.1单个文件 1.2 单个页面 2. 问题 3.解决方案 chro ...

  6. PHP仿代下狗源码-素材代下载搜索引擎系统整站打包

    介绍: PHP仿代下狗源码-素材代下载搜索引擎系统多功能/自带火车头采集接口/源码素材付费下载系统/整站打包完美运营版本 缺点:这个用户登录必须对接QQ互联登录,有能力可以自己二开注册登录 1.采用p ...

  7. Linux下qwt源码编译,QWT的编译与配置

    QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类 ...

  8. simulink模块,提供xpctarget下驱动源码

    simulink模块,提供xpctarget下驱动源码 :77999632700099250风中的蜗牛

  9. Android录音下————AudioRecord源码分析

    Android录音下----AudioRecord源码分析 文章目录 Android录音下----AudioRecord源码分析 一.概述 1.主要分析点 2.储备知识 二.getMinBufferS ...

最新文章

  1. cdr怎样把一张图片随意变形_PS手记|移动工具的使用与画布的变形
  2. Windows 2008远程桌面多用户登陆的配置方法 - z
  3. LaTex 并集交集等
  4. System之Ubuntu:VMware虚拟机 Ubuntu安装详细过程(图文教程,最强攻略,步骤详细,建议收藏)
  5. java 字符串 数组互转
  6. ORACLE中的INTERVAL类型
  7. Linux下如何查找软件安装路径(mysql为例)
  8. 【NetWebApi】接口参数传递笔记
  9. java中 关于静态方法的定义_为什么我们不能在Java接口中定义静态方法?
  10. 掩膜裁剪tif步骤_ENVI中掩膜掩膜操作及影像分类教程
  11. Excel宏教程 (宏的介绍与基本使用)
  12. MySQL 5.7详细下载安装配置教程
  13. 苹果新一代iPad发布,库克表示后PC时代已经来临
  14. Luckysheet 导入导出 - Java后台处理和js前端实现
  15. html、css --苏宁官网静态界面
  16. C语言教程(五):选择结构
  17. 解决telnet不是内部或外部命令的方案!
  18. 为什么调用Dao层会报空指针异常
  19. 帕累托改进和帕累托最优、卡尔多-希克斯改进
  20. 国外热度高的域名有哪些类?

热门文章

  1. 生活锅炉烟气SCR脱硝改造
  2. 墙角的父亲(一篇让千万人潸然泪下好文)
  3. 浅聊:ES6模板字符串与一般字符串
  4. android imageview scaletype,ImageView的scaleType知识总结
  5. 外网ssh远程登录Ubuntu
  6. 字符、字节、字符串之间的相互转换
  7. AI之循环神经网络进阶
  8. 2014元旦放假通知
  9. Python项目:“单人壁球”游戏
  10. angular FileSaver、XLSX 导入导出