记录学习过程中的点点滴滴
project
CVS update文件的提示信息说明
五 18th
cvs update
和 checkout
在执行中,会为每个文件打印一行提示信息,文件的状态通过前面的单个字符指明:
U
filename- 文件按要求从仓库得到更新。用在那些仓库里面有但你的工作目录没有的文件,以及工作目录里面没有修改 过,但旧于仓库的文件。
P
filename- 类似 `U‘, 但是 cvs 服务器发送的是补丁而不是整个文件。完成与 `U‘ 同样的工作,但降低带宽的使用。
A
filename- 添加到你的私人副本中,当你使用
commit
后会加到仓库。这可以提醒你需要提交文件。
R
file- 从你的私人副本中删除,当你执行
commit
命令后会从仓库清除。这可以提醒你文件需要提交。
M
filename- 在你的工作目录中,文件已经修改。 `M‘ 可以标明你工作的文件的两种状态: 同样的文件仓库里面没有修改,你的文件仍保持原样; 或者仓库里面的文件也有修改,但在工作目录里成功合并,没有冲突发生。如果合并,cvs 将打印一些信息,并建立工作文件的备份(与
update
执行前相同)。update
运行时会打印相应的名字。注意CVS只是将修改合并到你正在处理的拷贝中;仓库和其它的开发者目录没有受到影响。这时你应该测试合并后的文本, 并且确认它是有效的。这些修改还不能被别的开发者看到,需要你将其提交。 C
filename- 合并 你与仓库中修改到 file 时检测到冲突。file (你工作目录里面的副本) 是合并两个修订版的结果; 工作目录里面还有未修改文件的副本,名为 .#file.revision, 其中 revision 是你修改的文件所基于的修订版。冲突是必须要解决的。 (在有些系统里面,如果一段日子没有访问 .# 起头的文件,系统会自动清除。如果你需要保留这些原始的文件副本,最好将其改名)。
?
filename- file 处于工作目录,但是仓库里面没有对应的文件,它们也不是 cvs 忽略的文件。
tinyURL的设计方案与实现【一】
五 9th
前言
随着twitter的流行,tinyURL的方式也变得流行起来。简单的说,tinyURL就是将一个很长的url通过某种hash算法,对应到一个很短的url,然后复制或者
使用时就可以用这个简短的url了,参看tinyurl.com 例如http://www.yaronspace.cn/blog/index.php/archives/572 这个链接,使用tinyURL服务可以将其转化
为http://tinyurl.com/2bejtdo 这样用起来就非常地方便了
原理
其实实现tinyURL这种功能不是很难,相当于再访问http://tinyurl.com/2bejtdo 这个链接时,tinyurl.com首先会找到2bejtdo对应的原始
URL链接,然后进行重定向到原始的URL即可。涉及以下两个问题:
第一,tinyURL 与 原始的URL如何进行对应,也就是说如何通过原始的URL计算获得一个全局唯一的tinyURL,并且保证这个tinyURL尽可能地短;
第二,tinyURL 与 原始的URL如何保存,如何能够高效地在已知tinyURL的情况下能够查询获得原始的URL;
设计方案
第一种方案:不适用hash函数,采用递增的方式,存在一个全局的ID,每新来一个url,将ID加一,将将这个ID作为原始URL的全局标识,然后由这个ID生成对应的tinyURL
优点:可以无限扩展,并且不会重复
缺点:如何保存全局ID,如果保存到文件中,在高并发情况下这个将成为系统瓶颈所在,当然也可保存在memcache中。
由对应ID生成tinyURL的方法
function getTinyUrl($num) { $alpha = array_merge(range(65, 90), range(97, 122)); if($num < 52) { return chr($alpha[$num]); } else { $tiny = chr($alpha[$num%52]); while(($num = (int)($num/52)) >= 1) { if($num<=52) { $tiny .= chr($alpha[$num-1]); } else { $tiny .= chr($alpha[$num%52]); } } return strrev($tiny); } }
第二种方案:使用某种hash函数,将原始的URL转化为64位的int整数,然后再对这个64位int整数,利用上述方法将其转化为由字母与数字组成的tinyURL
如何存储tinyURl与原始的URL:存储到mysql表中
-- -- 表的结构 `tinyurl` -- CREATE TABLE IF NOT EXISTS `tinyurl` ( `tinyurl` VARCHAR(20) COLLATE utf8_bin NOT NULL, `longurl` text COLLATE utf8_bin NOT NULL, PRIMARY KEY (`tinyurl`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
tinyURL字段作为主键,通过tinyURL来查询时由于索引的存在,速度是可以接受的;同时在插入新的记录时,使用replace语句,而不是insert语句
这样就保证了在tinyURL已经存在的情况下,只会覆盖之前的记录,这是解决hash函数冲突的一种解决方法。
本文采用第二种解决方法
未完待续……
本文地址:http://www.yaronspace.cn/blog/index.php/archives/596
Google Code托管——SVN
十二 31st
1. 进入http://code.google.com/ 用Google帐户登录(推荐使用gmail邮箱)。然后点击>Project Hosting
2. 进入>> http://code.google.com/hosting/ 然后点击>Create a new project
3. 填入信息:
写入项目名,描述,两个选择项,写入标签,点击确定。就可以了
4. 提交成功后,选择菜单的Source(其中有https上传协议路径需要拷贝一份,还有一个上传密码)。
5. 打开MyEclipse,打开需要上传的项目,点鼠标右键->team->share Project->svn,写入https路径,下一步,输入Google账号和上传密码,起个名,finish。
6.如果一切顺利,会自动生成一个项目目录,可以查看所有项目文件。然后进入搭建项目界面,点鼠标右键->team->commit。然后开始上传项目。
7,搭建完成。
8.如果想查看自己的项目,可以用浏览器登陆https的路径,输入Google账号和上传密码,如果成功就可以看到含有项目名称的目录。
利用War-Ftpd的漏洞深入解析缓冲去溢出
十 28th
【摘要】
实验目的:
1, 掌握缓冲区溢出原理
2, 掌握常用的缓冲区语出方法
3, 理解缓冲区溢出的危害
4, 掌握防范和避免缓冲区溢出攻击的方法
实验内容:
利用War-Ftpd这个FTP server本身存在的login时username过长缓冲区溢出漏洞,使用调试工具CDB挖掘漏洞并利用这个漏洞编写攻击程序在server端能够运行的shellcode,比如说新建帐户或者开启一个高端口以供远程登陆等。通过试验能够了解缓冲区溢出原理及防范缓冲区溢出方法等。
实验环境:
操作系统:Windows XP
溢出对象:war-ftpd 1.65
调试工具:CDB
高级编程语言:Python
Shellcode功能:在目标机上新建一个hacker帐户
近期评论