请求进入服务器之后,服务器上的的 http 监听进程会得到这个请求,然后一般情况下会启动一个新的子进程去处理这个请求,同时父进程继续监听。http 服务器首先会查看重写规则,然后如果是文件真实存在,例如一些图片,或者 css js 等的静态文件,就会直接把这个文件返回,如果是一个动态的请求,那么会根据 url 重写模块的…… 阅读全文
Monthly Archives: September 2012
从点击到呈现 — 详解一次HTTP请求(2)
上回说道服务器启动了监听服务,准备迎接来自客户机的请求。那么,我们以一次典型的浏览请求来解析:
当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,对于 google chrome 那种变态的浏览器,他甚…… 阅读全文
printf 一定需要 stdio.h 吗
刚刚看到一个范例代码,调用了 printf 函数,但是却没有包含 stdio.h 的头文件,这种写法第一反应就应该是不对的啊,本着动手实验的原则,试了一下
zrj@vm:~/c/test$ cat test.c
int main() {
printf("hello worldn");
return 0;
}
zrj@vm:~/c/test$ gcc -o test test.c
test.c: 在函数‘main’中:
t…… 阅读全文
找出第一个不重复的字母
今天笔试,遇到一个题目要找出一个字符串中第一个不重复的字母,简单写了一下
#include <stdio.h>
void find(const char *str, char *result)
{
int count[128]={0}, pos[128]={0};
for (int i=0; str[i]!='\0'; i++)
{
int ascii = (int)(str[i]);
count[ascii]++;
if (pos[ascii] == 0)
{
…… 阅读全文
子数组最大和
昨天笔试看到一个求子数组最大和,参考这里,http://blog.csdn.net/v_JULY_v/…,写了一下,复杂度 O(n)
#include <stdio.h>
int max_sum(int *a, int n)
{
int max = a[0];
int sum = 0;
for (int i=0; i<n; i++)
{
if (sum < 0)
{
sum = a[i];
}
else
{
sum += a[i];
}
if…… 阅读全文
出栈次序问题
昨天笔试,见到一个题
一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
写代码模拟的结果如下
#include <iostream>
#include <stack>
#include <queue>
#include <set>
using namespace std;
set<queue<int>> total;
void print(queue<int> q)
{
total.i…… 阅读全文
最短脚本下载文件
今天遇到一个题,给定一个文本文件,每一行一个 url,用脚本把他们下载回来,语言不限,越短越好
简短这种事情首先想起 python
import urllib
f = open("url.txt", "r")
for line in f:
urllib.urlretrieve(line, line[line.rfind("/") + 1:-1])
f.close()
准备的 url.txt,需要注…… 阅读全文
蛇形填数
之前因为家里的原因,回乡下一个星期,期间都没有机会,也没有心情写代码,一个星期就这么毫无长进,罪过。
看到一个蛇形填数的题目,搞了搞,代码如下
#include <stdio.h>
#include <stdlib.h>
void print(int **a, int n)
{
for (int y=0; y<n; y++)
{
for (int x=0; x<n; x++)
{
printf…… 阅读全文
生成可重集的排列
刘汝佳在算法竞赛入门经典,http://book.douban.com/subject…,的 118 页提到生成一个可重集的全排列问题,跟上次的 生成一个字符串的全排列 很相像,但是写法却巧妙很多
#include <stdio.h>
void quick_sort(int a[], int left, int right)
{
int i=left, j=right;
int povit = a[(i+j)/2];
while (i …… 阅读全文
简单枚举的除法
今天看到一个简单枚举的题目
除法
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列,2 阅读全文