代码改变世界

关于for,while,dowhile效率测试

2015-01-22 11:03 by tolimit, 5029 阅读, 0 推荐, 收藏,
摘要:引言 大家都知道每种循环对应的效率是不同的,书中都说在循环中使用减法的效率是比加法的效率高的,具体情况是怎么样,我们将详细列出各循环的执行效率问题。本文通过查看汇编代码比较各循环的效率以及i++,++i,i--,--i在循环中使用的效率问题,仅供抛砖引玉,测试平台为intel i5 4440,编译... 阅读全文

wifidog源码分析 - 认证服务器心跳检测线程

2015-01-20 10:19 by tolimit, 1790 阅读, 0 推荐, 收藏,
摘要:引言 但wifidog启动时,会自动启动认证服务器心跳检测线程,此线程默认每隔60s与认证服务器交互一次,会将路由器的信息(系统启动时长,内存使用情况和系统平均负载)告知认证服务器,并通过一个"ping"字符串作为信号,而当认证服务器接收到此数据包后,会返回一个"pong"给路由器,具体我们看看代... 阅读全文

wifidog源码分析 - 客户端检测线程

2015-01-19 10:53 by tolimit, 1656 阅读, 0 推荐, 收藏,
摘要:引言 当wifidog启动时,会启动一个线程(thread_client_timeout_check)维护客户端列表,具体就是wifidog必须定时检测客户端列表中的每个客户端是否在线,而wifidog是通过两种方式进行检测客户端在线情况,一种是定时通过iptables获取客户端出入总流量更新客户... 阅读全文

谈谈arm下的函数栈

2015-01-16 17:14 by tolimit, 3612 阅读, 0 推荐, 收藏,
摘要:引言 这篇文章简要说说函数是怎么传入参数的,我们都知道,当一个函数调用使用少量参数(ARM上是少于等于4个)时,参数是通过寄存器进行传值(ARM上是通过r0,r1,r2,r3),而当参数多于4个时,会将多出的参数压入栈中进行传递(其实在函数调用过程中也会把r0,r1,r2,r3传递的参数压入栈),... 阅读全文

wifidog源码分析 - 用户连接过程

2015-01-15 11:10 by tolimit, 4705 阅读, 0 推荐, 收藏,
摘要:引言 之前的文章已经描述wifidog大概的一个工作流程,这里我们具体说说wifidog是怎么把一个新用户重定向到认证服务器中的,它又是怎么对一个已认证的用户实行放行操作的。我们已经知道wifidog在启动时会删除iptables中mangle、nat、filter表中的所有规则,并在这三个表中添... 阅读全文

IO端口和IO内存

2015-01-14 15:23 by tolimit, 1248 阅读, 0 推荐, 收藏,
摘要:为什么会有IO端口和IO内存 这主要原因是因为处理器的架构不同,这里我们使用arm来代表典型的使用IO内存架构,intel 80x86代表典型的使用IO端口架构。简单来说arm把所有寄存器(包括外部设备的)、内存等所有需要寻址才能访问的东东全部丢到了一个地址空间中,而80x86则是分为了两个地址空... 阅读全文

wifidog源码分析 - wifidog原理

2015-01-14 12:34 by tolimit, 7960 阅读, 1 推荐, 收藏,
摘要:wifidog是一个用于配合认证服务器实现无线网页认证功能的程序,常见的情景就是使用于公共场合的无线wifi接入点,首先移动设备会连接公共wifi接入点,之后会弹出网页要求输入用户名密码,认证过后才能够连入外网。其主页是http://dev.wifidog.org/实现原理 其实wifidog原理... 阅读全文

wifidog源码分析 - 初始化阶段

2015-01-13 16:35 by tolimit, 1929 阅读, 0 推荐, 收藏,
摘要:Wifidog是一个linux下开源的认证网关软件,它主要用于配合认证服务器实现无线路由器的认证放行功能。wifidog是一个后台的服务程序,可以通过wdctrl命令对wifidog主程序进行控制。本文解释wifidog在启动阶段所做的初始化主要工作(代码片段1.1)初始化配置(先将配置结构体初始化... 阅读全文

linux笔记 - 配置与编译

2014-10-30 15:35 by tolimit, 2359 阅读, 0 推荐, 收藏,
摘要:linux内核下载地址:https://www.kernel.org/ubuntu下载内核对应源码:sudo apt-get source linux-$(uname -r) #此命令下载的源码存放在/usr/src/文件夹中配置: 内核编译时会根据内核目录下的.config文件进行编译,而... 阅读全文