- 下载模块开发
- 抓取页面歌曲url与name模块开发
- 歌曲信息传送至下载程序模块开发
分类目录归档:工程与技术
CDN学习笔记
春节在家里看到一篇淘宝实习生写的大型网站核心技术普及博文,里面看到一个词:CDN,当时就百度了一下:content deliver network。最近总是在公司内部交流邮件中看到,心一横,学习一下CDN。 继续阅读
监控项目分析报告-系统架构
通过上面的需求分析可以清晰地看到整个监控系统外部的数据流:
- 接收数据流很大,送出数据流很小;
- 接收数据流为内容数据,送出数据流为控制数据;
- 内容数据在系统两端进行处理,前端机器处理为硬实时(秒级),后端人工处理为软实时(时级);
- 控制数据在系统两端都有送出,送出时间与其对应的内容数据处理的时间点一致,处理完内容数据即送出。控制数据内容为对应各个产品对其产品内容数据的控制动作。 继续阅读
python源码分析:dict对象的实现-2
你是否对上面那个lookdict提出过疑问?
对啦,没有退出语句,它不会成为死循环吧,不会!下面马上提晓答案。
看下面这段代码,位于PyDict_SetItem中:
if (!(mp->ma_used > n_used && mp->ma_fill*3 >= (mp->ma_mask+1)*2))
return 0;
return dictresize(mp, (mp->ma_used > 50000 ? 2 : 4) * mp->ma_used);
即dict在插入数据时,都会检查hash空间使用情况,一旦新添加一条且(dummy+used)的数量小于空间总大小的2/3,就会执行dictresize,就会来扩展原有的hash空间,从而始终保证空间中有空闲位置,这样上面那个’死循环‘的疑问就解决了。
2/3:还有一个原因,就是根据统计结果,发现装载率超过2/3后冲突率就会急剧升高。 继续阅读
MySQLdb sql转义与编码处理
进行转义操作时,MySQLdb.escape_string(sql) 中sql的编码是utf8(前提相关表的connection-charset为utf8,即与数据库的connection-charset保持一致)。
由于不管connection的charset是什么,cursor.execute只需要unicode的字符串,在执行上面的转义sql时,需要解码:execute(MySQLdb.escape_string(sql).decode(‘utf8′))。
监控项目分析报告-需求分析
从搜狐各个产品的角度,监控作为一项安全服务来保证各个产品的网络内容层面的安全(防止色情、暴力、政治极端,广告等危及社会稳定与用户体验的内容以sohu产品为平台出现在网络中,以下统称为网络内容安全),需要提供如下功能与标准:
- 需要对各个产品提交的内容进行机器审核并同步给出审核结果,各个产品以此对该内容实施对应的发布策略(进行机器审核的审核依据统一简称为过滤器);
- 需要对各个产品提交的内容进行人工审核并异步给出审核结果,各个产品以此对该内容修改之前的发布策略;
python源码分析:dict对象的实现-1
首先来看看构建dict的基础设施:
typedef struct {
Py_ssize_t me_hash;
PyObject *me_key;
PyObject *me_value;
} PyDictEntry;
这个结构体为dict中key-value,其中的me_hash为me_key的hash值,[空间换时间]。除此之外,我们发现me_key与me_value都是PyObject指针类型,这也说明了为什么dict中的key与value可以为python中的任何类型数据。
struct _dictobject {
PyObject_HEAD
Py_ssize_t ma_fill; /* # Active + # Dummy */
Py_ssize_t ma_used; /* # Active */
Py_ssize_t ma_mask;
PyDictEntry *ma_table;
PyDictEntry *(*ma_lookup)(PyDictObject *mp, PyObject *key, long hash);
PyDictEntry ma_smalltable[PyDict_MINSIZE];
}; 继续阅读
python源码分析:list对象的实现
一、List对象的基石:
下面这个结构体囊括了python实现的list的所有信息:list中的内容信息与处理方法
typedef struct {
PyObject_VAR_HEAD
PyObject **ob_item;
Py_ssize_t allocated;
} PyListObject;
下面来分别解释上面的变量含义:
PyObject_VAR_HEAD
:在第一篇的对象实现中,我们知道只要是变长对象的共有内容
PyObject **ob_item:由于每个对象都是由PyObject指针来索引,而列表是存储若干对象,即存储若干指针
。因此,需要一个指针数组(存储指针的数组),即需要一个指针的指针来索引这个数组。 继续阅读
python源码分析:string对象的实现
通过在分析源码与测试分析预期时,我们发现这样一个现象,就是python的这些基础数据类型(int,string,list,dict)其实在实现python时(注意,是实现python自身时)就开始运用了。比如后面说到的string的intern机制就使用了dict来形成映射。好了,言归正传,下面开始分析任何语言中最为关键的数据类型:String类型。 继续阅读
python源码分析 :整数对象的实现-2
接着上次《整数对象实现-1》来分析,python是怎么避免“内存泄漏”的。在上一章我们看到了,python的设计者使用了ob_type暂时作为为‘next’指针将‘大‘整数堆中的每个整数对象串成单链表,然后由free_list索引。 继续阅读