Recently in 程序开发 Category

SQLite的原子提交原理(转贴)

|
SQLite的原子提交原理 摘要:   本文源自:http://www.sqlite.org/atomiccommit.html,2007/11/28的版本 本人正在做一个项目,在项目中定义了自己的文件格式,为了做到停电或程序崩溃不损坏这些文件原有的数据,故针对操作的原子性做一些思考,后来看到sqlite的这篇文章,与自己的实现方式作了一些对比。故顺手在研究此文章的时候将大意译成了中文。毕竟只是一时顺手之作,应该存在不少的误读与错误,请多多包涵,此文章的原始地址在 http://chensheng.net/p/sqlite/auto_commit_zh_cn.html,本文可以转载,但请保留出处,以便他人能够方便找到我在修改此文可能的错误之后重新发布的版本。如果发现错误请发mail给我erehw#163.com。   本文描述了sqlite为保证数据库文件不被损坏而采取的种种手段,对于一些小型应用值得借鉴。其实在我看来,我自己实现这种方式似乎都有些不必要,也可以直接利用sqlite或者berkeley db即可。   2008-1-29于杭州,时日江南一片暴雪,众多机场车站都处于凝滞状态。感谢众多在此次雪灾之中作出贡献的人们。   目录 SQLite的原子提交原理... 1 1.0 简介... 2 2.0 硬件设定... 2 3.0 单个文件提交... 4 3.1 实始状态... 4 3.2 申请一个共享锁... 5 3.3 从数据库里面读取信息... 5 3.4 申请一个Reserved Lock. 6 3.5 生成一个回滚日志文件......

C++ Char[] to String

|
char a[5]={'h','e','l','l','o'}string s(a,a+5);...

Oracle 11g 终于可以下载了

|
      从Oracle 发布11g之前,我就开始期待11g的下载了。但是很遗憾,发布之后却仍然不能下载。之后的日子,经常去Oracle网站上看看是否可以下载了。       今天,突然又想起Oracle 11g,去网站看了看,惊奇地发现竟然提供下载了,虽然只有Linux版,但也算是高兴的事情。         我的工作是不用Oracle的。我只所以如此关注,是想做一下Java Lucene, SQL Server Express全文索引,Oracle 全文索引的性能对比。不过最近很忙,等有时间再作吧。...

迅雷的思考与研究

|
迅雷的思考       迅雷给广大网民带来了更快的下载速度,估计现在已经超过flashget成为全球使用最多的下载软件,成为仅次于QQ的第二多网络客户端软件(当然IE不在计算范围内)。      记得迅雷刚诞生的时候,我还以为它与flashget相同原理,所以断定它并不会带来理想的下载加速,所以对它的广告一直持抵触心理。直到有一天同学告诉我她的原理,我才心甘情愿的安装了她。       迅雷的下载方法是个创新,但从道义上讲是个资源掠夺,所以有时重装系统后,我并不急着安装迅雷,因为她的下载方式不道德。但如果下载速度慢的不行了,我还是得安装迅雷。        迅雷不但从资源获取方式上不道德,而且也和BT一样占用大量带宽,甚至在无法控制的情况下,把本地文件与网络用户共享。这几点是迅雷最容易遭遇批评的地方。 迅雷的研究        迅雷的原理:当用户使用迅雷下载资源时,迅雷会把下载地址报告给迅雷服务器,并从服务器上获取候选资源列表(就是相同文件的下载地址),然后迅雷客户端会对多个下载地址发起下载请求,从而达到加速的作用。        候选资源获取方式(推测 ): 1. 用户下载时,客户端把文件的特征码, 网址,user-agent, cookie,referer等数据提交给服务器,这样本次下载的地址就会成为下载的候选资源;2. 下载完毕后,你的计算机也会成为候选资源之一,类似于其他p2p软件;3. 迅雷也有自己的蜘蛛程序,从网络上发现下载地址        编码重现迅雷(转贴): 目前,网络上存在迅雷用户相关(登陆,积分,退出)的数据包分析,获取候选资源的编程实现,大家可以在下面下载。感兴趣的朋友可以研究一下 。 迅雷获取候选资源源代码(无法判断原始出处和作者) 迅雷用户登录/退出/积分协议分析  (转自http://bbs.pediy.com/showthread.php?t=49767)        ...

在windows下开发linux程序,moto的做法够高!

|
     前日我在淘宝上买了一个GPS,回来后发现我的moto e2竟然没有可用的GPS软件。郁闷呀,其实早就该想到,E2的API不公开,很难有可用的GPS软件。     其实 我买GPS的目的很单纯,获取经纬度信息,不是用来导航。通过自带的minigpsviewer发现以下细节:      1. minigpsviewer 只有几百K,可以获得经纬度信息;     2. 蓝牙帮定的时候 可以设置串口号,比如选择com1?com2?     3. minigpsviewer连接的时候 需要设置串口号 与 频率     于是,我有了以下几个推断:      1. 蓝牙绑定的原理是映射为串口;     2. 通过串口编程,应该可以获取GPS的经纬度信息;     3.  java应该可以胜任这个工作。     4. 我的E2支持java    通过这四个推断,我看到了曙光: 我的moto e2也可以支持GPS了。     到MOTO DEV官方网站上下载了JAVA SDK,解压后却发现一个 exe 文件。 下载界面没有操作系统选择呀。到官方网站上 仔细研究了一下,发现 Microsoft® Windows...

自动化工具:AutoIt 3

|
     聊天机器人(其实说是群发器更贴切一些)"交工"了。      我可是捉摸起其他方案来,一朋友用ruby的wator作网页测试工具,我问他是否支持 windows应用程序测试。他给我推荐了AutoIt 。      AutoIt 给我的第一印象就是和按键精灵差不多。后来看到网上评论,果然两者很类似,只不过更多的人拿按键精灵来玩游戏,而拿autoit来实现办公自动化。       autoit安装很简单,而且还提供了很多范例。我就是通过范例,明白了antoit是如何工作,脚本如何编写的。我的学习目标,就是我的聊天机器人,所以尝试着找人,聊天,没想到这一些是那么简单。一个简单的自动聊天程序出来了。 AutoIt还支持编译功能,生成 .exe文件,估计可以拿到其他机器上直接运行。        在这里借blog向大家推荐一下antoit,一个很好用的自动化工具。要想了解更多,可以访问antoit的官方网站是 http://www.autoitscript.com/autoit3/。       ...

这两天编写了一个聊天机器人

|
     朋友让我破解一个聊天机器人的注册限制,我实在无能为力。作为同学,肯定要尽力帮忙,这不我开始捉摸着写个机器人给他。      之前,对他提及的聊天工具不是很熟悉,尝试了一下聊天工具和聊天机器人,基本上明白了聊天软件的情况以及聊天机器人的功能需求,便开始探索机器人的思路:       1. 分析协议,完全自己实现。到网上搜了一下,没有相关的协议分析,自己抓包到不难,但自己分析却是一个未知的问题,而且估计很大可能会失败。       2. 辅助工具实现,比如按键精灵,没挑战性的事情不愿意干。       3. 利用钩子Hook编程实现,十分感兴趣,被选方案之一。       4. 投机取巧,我发现这个聊天工具还提供网页版,网页抓包,JS破解, 程序重现这一系列技能是我的拿手好戏,这也是备选方案。       苦于我的计算机上没有安装windows编程软件(有个C#, 不过不愿意让朋友多安一个.NET FRAMEWORK),于是我决定选用第四方案。       下面我简单的说一下整个过程。        1. 协议分析。          网页抓包,snifferpro不擅长,我推荐 httpwatch。这是一个共享软件,需要注册(如何注册,需要发挥大家的聪明才智)。我抓去了登录/聊天的数据请求,发现没有想象的复杂(曾经研究过mapbar,mapabc的经纬度加密,要比现在的目标复杂的多)。         2. 代码实现。         用PHP吧,因为我的服务器支持curl,所以考虑用curl实现。大家可以看我下午发布的"CURL封装类"。         3. 测试。         本地测试通过,把程序放到了服务器上,告诉朋友可以用了。他却告诉我不能用,后来发现原因是因为登录页面的编码是GBK,而我用了UTF-8,他的用户名是中文,所以出问题了。修正了这个bug,程序终于跑起来了。         4.报酬   他说要给我买个《仙剑奇侠传4》,但不知道啥时候才能兑现。 ...

VB编程操作Excel时控制单元格的格式

|
    周日晚,我在朋友那里接触了一下VB操作Excel表时如何设置单元格的格式。    其实很简单,在操作单元格之前或之后(估计是没有commit,所以在前后都可以), 关键代码如下:       xlSheet.Cells(4, 2).NumberFormatLocal   =   "@"         如果单元格是字符串,则设为"@";    如果单元格是要求5位数的数字,则设为"00000";    如果单元格是"小时:分钟",则设为"hh:mm";    其他类推,或往上查找资料。    VB 不能自动提醒NumberFormatLocal  属性,但实际上是可以用的,估计这一点绊住了很多人。    那晚也有幸看到了一个运行2小时才能完成的宏。 有两点感触:    1. 宏的效率真低;    2. 没想到公司这么愿意用Excel,用宏。其实在我们学校,勤工助学的工资统计也用EXCEL,现在想想还真应该用宏来完成自动运算。...

让eclipse支持perl开发

|
既然MT4要开源了,咱们也得为他做点贡献,要不做一个汉化包?    用记事本编辑 .pm 太痛苦了,而且pm用的还是unix的换行,记事本根本不支持 。我平日用eclipse开发php,要想编辑pm又不想安装额外的编辑器,便想让eclipse也支持perl开发,便上网搜。最后搜到了EPIC, 一个开发Perl的,开源的eclipse插件。    网上说的EPIC安装方式几乎都是下载插件包,手工安装,几乎没有提eclipse的便捷安装:    Help->Software Updates->Find and Install-> Search for new features to install ->New Remote Site        Name: Perl(随便写), URL: http://e-p-i-c.sourceforge.net/  之后便是 选择安装对象, 同意许可协议之类的事情了。    是不是很傻瓜化?比那样直接复制文件来安装要简单一些。...