首页
社区
课程
招聘
[原创]使用hash匹配mime。
发表于: 2013-9-23 14:49 7577

[原创]使用hash匹配mime。

2013-9-23 14:49
7577

我错了,向伟大的技术道歉。
先看一段网上的mime匹配代码,接下来我们对这段代码稍微的优化一下。

const char *get_mime_type(const char *name) {
	char *ext = strrchr((char*)name, '.');
	if (!ext)
		return NULL;
	if (strcmp(ext, ".html") == 0 || strcmp(ext, ".htm") == 0)
		return "text/html";
	if (strcmp(ext, ".jpg") == 0 || strcmp(ext, ".jpeg") == 0)
		return "image/jpeg";
	if (strcmp(ext, ".gif") == 0)
		return "image/gif";
	if (strcmp(ext, ".png") == 0)
		return "image/png";
	if (strcmp(ext, ".css") == 0)
		return "text/css";
	if (strcmp(ext, ".au") == 0)
		return "audio/basic";
	if (strcmp(ext, ".wav") == 0)
		return "audio/wav";
	if (strcmp(ext, ".avi") == 0)
		return "video/x-msvideo";
	if (strcmp(ext, ".mpeg") == 0 || strcmp(ext, ".mpg") == 0)
		return "video/mpeg";
	if (strcmp(ext, ".mp3") == 0)
		return "audio/mpeg";
	return NULL;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 5
支持
分享
最新回复 (9)
雪    币: 243
活跃值: (209)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
一般用多模匹配
2013-9-23 15:39
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
不懂,求解。
2013-9-23 15:57
0
雪    币: 167
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
如果考虑概率和易维护性就不会优化,这段代码有很多可以改进。
2013-9-23 16:19
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你去测一下 根本不比原来的快.......
要用hash值也会直接用c语言版的hashmap, 而不会像这样直接硬编码
2013-9-23 16:19
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
6
错觉,省事。
2013-9-23 17:04
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
7
下次改正。
2013-9-23 17:05
0
雪    币: 406
活跃值: (164)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
8
经这样一改,可维护性和可读性大大地降低了
2013-9-23 18:53
0
雪    币: 247
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
try this way:
(little  endian)

const char *get_mime_type(const char *name) {
char *ext = strrchr((char*)name, '.');
if (!ext)
return NULL;
int val = *(int*)ext;
if (val == 'mth.')
return "text/html";
if (val == 'gpj.' || val == 'epj.')
return "image/jpeg";
if (val == 'fig.')
return "image/gif";
//...
return NULL;
}
2013-9-24 21:14
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
10
膜拜一下,这样也可以,第一次见。
2013-9-24 22:55
0
游客
登录 | 注册 方可回帖
返回
//