window中使用cmd将文件保存进文档

window中使用cmd,有些时候输出的内容过长会被截掉一部分,或者有些些时候想要保存下来输出结果,于是就想将内容保存到文档。 如何做?见下面: 执行完上面命令,你就可以在命令行所在的目录,如:C:\Users\Administrator目录下找到了对应的生成文件,以上方式是覆盖文件的方式,若是打算追加的话,将>换成>>就可以了!

两款读取内存中window登录凭证的工具

WCE(windows credential editor):http://www.ampliasecurity.com/research/wcefaq.html WCE的使用简介:参数解释: -l :列出登录的会话和NTLM凭据(默认值) -s:修改当前登录会话的NTLM凭据 参数:<用户名>:<域名>:<LM哈希>:<NT哈希> -r :不定期的列出登录的会话和NTLM凭据,如果找到新的会话,那么每5秒重新列出一次 -c :用一个特殊的NTML凭据运行一个新的会话 参数:<cmd> -e :不定期的列出登录的会话和NTLM凭据,当产生一个登录事件的时候重新列出一次 -o :保存所有的输出到一个文件 参数:<文件名> -i :指定一个LUID代替使用当前登录会话 参数:<luid> -d:从登录会话中删除NTLM凭据 参数:<luid> -a:使用地址 参数: <地址> -f:强制使用安全模式 -g:生成LM和NT的哈希 参数<密码> -K :缓存kerberos票据到一个文件(unix和windows wce格式) -k:从一个文件中读取kerberos票据并插入到windows缓存中 -w:通过摘要式认证缓存一个明文的密码 -v:详细输出 mimikatz:https://github.com/gentilkiwi/mimikatz

Beetl开源过程中那些事

同事的文章,感觉写的很好,故拿出来分享下! 原文地址:http://my.oschina.net/xiandafu/blog/306637 文章内容: 我是Beetl的开源作者,叫李家智,网名是闲.大赋。可能很多人更熟悉这个名字,我本意是希望自己又有钱,又很闲,结果事与愿违,尤其是Beetl使用的人多后,又忙又穷了,也许该改名字叫穷.又忙 :) 做什么事情都需要贵人提携,开源也一样,我就碰到了俩个贵人,一个是HP公司,在做移动总部的好几个项目,客户和HP老板安排事情非常合理谨慎,所以空闲时间挺多的,10点到客户那,6点就下班回家,期间还玩玩各种游戏,一点都不忙。但秋季的有一天我觉悟了,不能这么过下去,得给自己留点什么,闲着闲着就琢磨学习一下技术,选了一个看似高大尚的技术–开发一门语言,也就是现在你们知道的Beetl模板语言。我其实挺后悔这个决定的,当时应该搞搞NOSQL,分布式什么的(后来花了一周搞了一个分布式协作的facade技术,确实带了些好处,这是后话了),或者搞个开源商城什么的的也好拿来卖钱,因为搞语言确实不怎么流行了–尽管难度挺大的。 另外一个贵人就是beetl初期使用者,当我做好0.5版本后,就一直放着,也没有人使用,我也没有意愿推广,有一天,一哥们给我发邮件,说beetl很不错,想用一下。我顿时兴奋了,激起了我再接着开发完善的热情,虽然当时从HP出来去了某有态度公司技术部,但仍然废寝忘食的完善Beetl,这哥们后来所有的项目都是用Beetl做的,我也很感谢他,没有他第一个使用,Beetl很难发展 搞了一门语言,国内用的项目还挺多,是不是我变得高大威猛了,我猜到开头,但结局并不是这样。因为需要花很多时间。每天技术支持+开发 需要1,2个小时,周末或者小长假什么的,还得闭关。这闭关自古都有讲究,不吃饭,去一个安静的山洞里。现在beetl闭关也类似,吃很少的东西以免犯困, 迫使大脑亢奋。另外清净地方不好找,还好北京高校多,就去北京交大研究生教学楼大教室,那里偶尔有些情侣外,少有学习者。 总之,技术开发beetl,花了很多业余时间,导致个人技术全面落后,jdk7,8,9 都没有跟进,还有hadoop,spark没有什么概念,很火的手机移动开发也掌握不精通。有时候自己想,要是当初不写beetl,现在肯定是高精尖人才了。事实也确实这样,以前一些技术很普通同事,稍微研究了一下这俩类很火的技术,立刻身价倍增,成为各大公司枪手的人才,成天给我哀叹如何拒绝其他公司的offer,好让人羡慕 再说一下开源中的竞争吧,模板语言是个大众技术,算不上高大上,所以竞争非常激烈。  Freemarker: 这是我的最大竞争对手,开源有10多年了,在国内外非常流行,尤其是国内拥有很多粉丝,每天有数百个下载。如果你百度一下Freemaker,能看到数不清的介绍文章。我很想代替它,因为零零碎碎用过好几个项目,总觉得别扭。Beetl的优势是语法上更容易上手,使用习俗跟程序员思路接近。还有个不算优势的优势是功能赶得上Freemaker(相对于其他模板引擎来说 ,哈哈)。 Velocity: apache的,国内使用者也很多。Beetl的优势是属于脚本语言。因此能优雅的处理复杂的渲染逻辑。最早使用Velocity的时候,记得它有个特性就是如果某变量属性不存在,将在页面中显示出来该属性而不是报错。当时看到这个就对velocity不感冒了,试想一下,如果系统重构,导致属性名更改或者不存在,页面都不会报错。这是很不友好的。不知道现在有改进没有 HTTL,JetbrickTemplate,TinyTemplate, 都是国产的类似Veclotiy的模板引擎,改良了很多velocity不足的地方。JT 以前帮助过HTTL开发,后来基于antlr4自己又开发了一套。TT模仿了JT,也按照自己的理念做了些改进。他们作为国内的开源模板引擎,同样是后起之秀,Beetl优势不大。唯一的优势就是能持续开发和改进,以及Beetl未来的技术野心,包括IDE集成支持(语法着色,属性提示,史无前例的重构支持和debug支持)等 Webit,BSL.  同Beetl一样,类似JS语法,俩位作者都在自己独立开发前给Beetl提了很多建议。后来对模板引擎的功能和实现方式有自己的想法,就自己开发了一个。我原本认为这俩个都是Beetl未来最大的竞争对手,但现在看来不是,因为BSL现在不维护了,我知道其作者能力很强,兴趣广泛,现在在做其他的技术。Webit则是野心很大,想把Webit做成一个java版本的PHP,因此跟Beetl完全不是一个东西,也无从竞争。总的来说,国内模板引擎竞争氛围很好,有好想法会交流,也不互相拆台。 angularjs, 很火的JS框架,还有其他富客户端框架爱等,他们跟java模板引擎有很多功能重叠。不过我不担心未来会代替模板引擎。主要是因为js语言技术本身就有缺陷,不适合大规模程序。其次是用js构成的页面不适合SEO,在如火如荼的电商环境下,根本不合适,还有一个问题就是一个页面有过多的页面ajax请求,会成倍的增加服务器负载,这到http2.0流行前,其实是个不合理的设计(当然,对于企业应用来说,用户量小,可以这么搞)。 Node.JS:有些架构师已经把Node.js作为一个视图技术,原因是想让前端工程师专注前端开发,这点与Beetl不某而合,Beetl也是JS语法。也考虑到让前端工程师专注界面并提供配套的工具和框架来完成这一点(参考我的CrossMVC) .我个人直觉上认为Node.js并不比Beetl更适合做前端渲染,道理很简单,因为Beetl从出生之日就是为了这个目的,而Node.js不是这样初衷。另外,还是对JS说的那句话,JS语言不适合大规模的程序开发,他的异步编程模型更不适合大规模程序开发。Node.JS强大容易导致滥用。也许现在,在让js前端人员开发模板到底使用Beetl+CrossMVC,还是采用Node.JS,很难判断,但时间会证明采用Beetl是对项目一个正确的选择。 再讨论一下如何推广开源吧。我认识的开源作者并不是为了钱和名而去做开源。目的很纯粹,就是为了兴趣。但是如果自己做的开源并没有使用者,也许就让开愿者失望了,如何推广开源呢,我觉得有点心得体会 第一:农村包围城市策略。你的开源也许比别人的先进,但作为后来者,很难一时被其他人接受。尽管我们希望有BAT这样的领头羊公司使用是最好的,但刚开始推广的时候不应该做次奢望。最好从一些小公司,个人用户开始做起,然后慢慢推广到中型公式,大型公司。Beetl最初使用者是个人用户,经过3年发展现在已经有B,A 领头羊公司在使用了。 第二:要有噱头。想让其他人记住你,必须有噱头。这点跟炒作明星没有什么区别,对于开源来说。有些现成的噱头可以使用,比如,体积最小的开源模板引擎,我见过一个开源模板引擎仅仅200行,尽管我不屑于此,但确实给我留下了深刻映像。 再比如,性能最好的模板引擎,这个在当今软件行业似乎是更好的噱头,Beetl期初并不太在意性能,但后期发现此噱头确实是开发者喜欢的一个因素。因此在1.x后期,2.0版本做了很多性能改进,现在EBM测试 是Freemarker性能4倍多。很多最初的开发多是因为这个原因选择试用beetl 第三: 要有完善的售后支持。重视任何使用者,视他们为客户。如果他们认为文档不够详细,应该尝试去完善文档,如果他们认为缺少例子,那就应该提供更多的例子。如果他们认为Freemaker有的功能,Beetl也应该具有,那就去完成。老实讲,Beetl初期功能都是自己设计完成的的,但是到了后期,很多特性都是使用者推动的,他们不仅仅是Beetl客户,而且也是Beetl实际的推动者。 第四:拥有一颗淡定的心,在推广过程中,会遭遇各种质疑和拒绝,甚至是打击。我一直宣称要代替Freemaker,从而遭受到很多Freemaker粉丝的打击。我自己公司的项目,Freemarker已经有过技术生态圈,我也难以说服其他人使用Beetl,自己不得不一边恶心,一边用Freemarker继续完成自己的工作。 最后,我想说说开源Beetl这几年得失吧。 如前面说的,开源Beetl,这是公司外的一个项目,花去了我业余很多时间,有时候上班也不得不去做一些支持,和Bug的修补。这在HP,还说的过去,但去了有态度公司后,就极大的影响了我工作,我从一个干事麻利的人,变成工作上一个“磨叽”的程序员。我自己也很难接受我这样状态就很快辞职了。后来的创业我也受到这样影响,因此,从事业上来说,做Beetl并没有得到任何利益。我有时候想,如果用这些时间干任何一件其他事情,都或许比这个更值得。Beetl只是我现在一个不得不继续做的事情。我想,这也是很多同样中国的开源作者的想法吧 然而,Beetl的开发开始实现了我的初衷,代替难用的Freemaker,同时熟悉一门我不熟悉的技术(语言开发)。还有就是,通过Beetl开源,认识了很多朋友。每天跟这些朋友聊天,打逗逗,很有意思,又长了见识。有时候一些人会写信给我,说Beetl帮助他顺利完成了项目开发,或者帮助他找到了工作的时候,每当想到这些我认为开发Beetl是一个正确的决定和一件值得坚持的事情。

wireshark找不到网卡的情况

有时候装完WireShark,在Capture Interfaces里面却找不到网卡,抓不到包。遇到这种情况,重启进入安全模式,打开C:\WINDOWS\system32\drivers目录,看看是不是有“nvmini.sys”这个文件。把这个文件删掉,再新建一个文本文件,重命名为“nvmini.sys”并设置属性为“只读”。 wireshark找不到网卡的情况,但是又找不到nvmini.sys这个文件。重新安装的时候提示“NPF驱动没有运行,可能会导致找不到网卡”(大致是这样的)。在网上找到了结果,在命令提示符中输入“net start npf”并回车即可。XP/WIN7/WIN2008下都是这个命令,只是WIN7/WIN2008需要以管理员身份运行CMD。 原文地址:http://it586.iteye.com/blog/1969527

requireJs如何清除强制缓存

urlArgs: RequireJS获取资源时附加在URL后面的额外的query参数。作为浏览器或服务器未正确配置时的“cache bust”手段很有用。使用cache bust配置的一个示例: urlArgs: “bust=” + (new Date()).getTime() 在开发中这很有用,但请记得在部署到生成环境之前移除它。 具体使用方法: 参考文章:http://www.requirejs.cn/

py2exe生成exe可执行文件

官方文档: 安装py2exe,安装了pip的前提下,pip install py2exe,没有的话需要首先安装pip或者是easy_install; 安装完成后,比如想要将test.py生成exe 代码如下: 然后就可以生成exe了,执行python3 creat_exe.py py2exe 然后就在对应的目录生成了dist

iphone第三方输入法(搜狗)监听keyup、keydown失效

iphone第三方输入法监听keyup、keydown失效,也就是说第三方输入法监听不到keyup、keydown事件; 查了网上的资料,发现了如下代码: 用了以上方法之后,又出现了另外一个问题,三星的一款手机出现无法删除字符了(需要手动点击下输入框才行),查了之后果然是上面的原因引起的,为了解决这个问题,我采用了keyup监听和上面监听同时使用,然后利用setTimeout对触发的函数进行防频繁执行处理,代码原理如下: 参考文章:http://blog.csdn.net/hanjunspirit/article/details/9346667

剩油和浮油怎么利用

居家过日子,三餐之后难免会剩下点东西。煎炸过东西的剩油最让人烦心了。扔掉吧,一大碗油舍不得;不扔吧,明知已经加热过一次,再次加热时会早冒那致癌的油烟,炒菜品质下降,而且氧化程度已经上升,吃着心理上也相当不爽。剩菜呢,一则有“过夜有害”的传言,二则担心营养价值下降,三则担心微生物繁殖,也颇有“鸡肋”的感觉。 后面就和大家聊聊,剩油、剩饭和剩菜该怎么处理。先从最难缠的油开始吧。 剩油的最大问题,在于避免再次高温加热冒油烟,并避免进一步的热氧化聚合。既然把握住这个原则,措施就不难出台啦,因为不需要加热的烹调还很多,完全可以用得上。不过,等到油剩下来再处理,就已经有点晚了。最好是油没下锅之前,就把它的用途提前想好。 方法一:用来做调味油。家常拌凉菜、拌面条,很喜欢加点葱香油、蒜香油、花椒油、辣椒油之类来调味。不妨在煎炸食物将近结束的时候,就趁着油温合适,扔进去各种调味品,做出香喷喷的调味油来。 比如说,炸茄盒即将完成时,就准备好大量花椒粒,转为小火,慢慢地炸花椒,等到香味物质进入油中,关火,滤去渣子和花椒粒,把花椒香味的油倒入瓷罐或瓶中,密闭起来,放入冰箱,以后用于调味即可。又比如说,在炸丸子后,放入辣椒碎和蒜蓉等,炸两分钟,再淋到一碗辣椒碎上,冷却、过滤之后制成辣椒油,密闭冷藏备用。因为这些调味品都有一定抗氧化作用,客观上还延长了油的保存时间,可以吃上半个月时间。 方法二:用来做面食。做大饼、烧饼、花卷、点心之类面食都需要放点油。这时候就可以放过滤过的剩油了。因为烤饼时饼内部温度不太高不超过100度,而且还有面团中淀粉的保护,油脂不会受到明显的氧化。 方法三:用来焯菜或做汤。很多蔬菜要用沸水焯一下之后再凉拌,焯的时候最好在沸水中放入1勺油,这样菜叶颜色鲜亮,而且口感软嫩,即便叶子稍微老一点,吃起来也不会塞牙。因为此时只有100度温度,又只有一分钟加热时间,不会冒烟,用剩油完全没问题。做蔬菜汤的时候,也可以最后点一点剩油,特别是炸过肉、鸡的剩油,还可以增加一点香味。 方法四:如果一定要用剩油来炒菜,也有个妥协的办法,那就是在炒蔬菜时后放剩油。炒菜时,先用新油,但只放平日数量的一半,用来炝锅炒香葱姜蒜等,把菜放进去,然后再加入一半的剩油。因为菜已经入了锅,锅的温度就会大幅度下降,菜表面温度降到100度以下。此时加入剩油,就达不到起油烟的温度,对烹调者比较安全。这样做,对于菜肴的品质影响很小。 除了炒菜的剩油之外,从肉汤、鸡汤中分离出来的表面浮油也可以利用。先让肉汤、鸡汤或红烧肉降温,把这些浮油和水分分离,甚至可以把它们放入冰箱,冷却凝固之后,分离起来就很简单了。然后把浮油盛入小碗。如果当餐没有利用,夏秋季节一定要放入冰箱中保存,因为其中还是含有不少水分,非常容易滋生大量细菌。 方案一:用浮油煮蔬菜。这种方式最简单,甚至连一部分汤也可以一起利用。把含有浮油的汤加点水一起煮沸,放入各种自己喜欢的新鲜蔬菜,如冬瓜、白菜、绿叶菜、笋片、蘑菇等,煮沸几分钟,到蔬菜煮熟即可。绿叶菜只需煮两三分钟,冬瓜可能需要10分钟左右。此时加一点盐调味即可,喜欢鲜味的可以再加少量鸡精,不过一定要记得,加鸡精就要放一半盐。有些剩方便面汤料、剩速冻馄饨汤料、挂面汤料之类,都可以在此时撒进去。 方案二:用浮油做面点。浮油属于动物油,它做点心的时候口感比放植物油要好。所以无论做千层饼还是做饼干,味道都会很不错。 方案三:用浮油做以素为主的炖煮菜。先用少量新油炝锅产生香味,然后扔进萝卜、胡萝卜、土豆、南瓜、豆角之类耐煮蔬菜,再加入分离出来的浮油,一起炖到菜熟透就可以啦。 浮油属于饱和脂肪酸偏高的油,并含有胆固醇,胆固醇高、血脂高的朋友不妨少吃,但健康人利用它是不用担心的,特别是用来炖、煮、焯大量的新鲜蔬菜,可以靠大量的膳食纤维和抗氧化物质来弥补它的缺点。

2015年总结

这一年,感触还是挺多的,作为过来人,给还没工作和刚开始工作的人一点意见吧! 1、工作不要给自己定下太高的目标,除非你真的有做一番事业的心,并打算为梦想去努力,否则很可能一身疲惫,还搞得自己很自卑,其实我们大部分人真的都只是芸芸众生中最普通的一个,扔在人群中甚至很难被找到!也许有人会说做人要上进?这里我问一下,上进想要得到的是什么?若只是从小被灌注的上进思想,或者说是上进是给其他人看的,那这样的上进是一种困住人的枷锁!当然,若是你有着很明确的目标,明确知道自己奋斗拼搏的是什么,那放手去博吧,苦和委屈全部吞进肚子,只要不是特别“笨”,我相信五年十年后肯定有收获的,至于这五到十年失去的东西就不要去追忆了! 2、不要给自己定太高目标……是不是等于不思进取了?肯定不是啊,其实生活中很多东西,尤其是见识和知识都是日积月累起来的,只要你认真去做一件事去积累,五年十年后你能够了解到的东西绝对比你想象的多得多,所以给所有人一个建议,没啥事的时候多看看书,各行各业都可以涉略下,对什么感兴趣对什么好奇看什么就可以,当然小说这个东西不算啊(虽然我是写小说的,但……你懂得,大部分小说没什么营养),随着知识的积累,很多感觉神秘的东西、技术被揭开面纱,那种感觉我觉得很爽啊!偶尔还可以卖弄下! 3、这两年互联网热,薪资高,很多喜不喜欢这个行业的人都进来了,我不否认这个行业是我们穷人家出身的孩子快速积累财富的一个途径……怎么说呢?对于已经踏上这个行业的人已经没什么可说的了,唯一说的(也是对自己说的),多多运动吧(动脑多,体力劳动少,容易猝死 ,容易肥胖),为了能够让自己多活几年,没准多活一年就能够见证人类科技的突破,没准人就可以不死了 !对于没入行的,还在大学中的,建议你们多找找挣钱的路子,我觉得其实还是很多的,大学真的是能够尝试一些想法的最好时间段,一旦错过就不会再有了!当然你当真没什么想法,只是想找一份养活自己的工作,也没必要排斥程序员!程序员的特点就是“挣得多、花的少、死的早!”,开玩笑,我觉得程序员也不见得花的少,死的早,挣得和有些行业比起来根本不值得一提!写代码时我最烦的是需要处理的逻辑太复杂,项目规划太混乱,开发时间不给够,由于项目底子没打好、水平限制、项目迭代过快线上老是出问题,需要24小时待命解决问题!唉!不过哪个行业底层人员都不容易,为了支撑上层人员的梦想,底层人员只能默默付出辛苦! 4、昨天看了一个有关人类的纪录片,看到第三世界的人们还未解决温饱问题,看到身处战争中的人失去所有至亲,辗转逃到多个国家,结果却是一再被驱逐,对着屏幕他要求很简单,他不求当地政府给予他什么,只求当地政府能够让他生活在那里,但那对他来说已是奢望!一个孩子的父亲,每次拿起枪内心就充满了畏惧,他怕战争中自己死在他人手上,也怕有人死在他的手上,但他又不得不拿起枪,为了自己的家园,为了自己的家人!看了这些,我告诉自己我又有什么可以抱怨的呢?今天中午吃饭回来碰到技术部老大,和他聊到这些,他说我们就闷头活着吧,让自己活的好些,让自己的家人活的好些!没错,这就是我应该做的!改变不了世界,改变不了很多事情的我,至少可以尽我所能让家里人生活的好些!还能尽些绵薄之力帮助下困难的人!今年,我一共捐出去900左右,其中一件让我感动的事,我们学校一个校友白血病,学校帮忙筹款,预计筹款60万,最后筹款72万多!感动,心里温暖,这是我一个众多参与者的内心最直接的反应,那位校友和他的家人更加不用说了,也许钱不能真正的解决他的问题,但至少能够让他在这个寒冷的冬天感到温暖,我想那也将转换成他对抗病魔的一种力量! 5、生活也许比我们想象的简单很多,当然也可以比我们想象中的复杂很多!简单还是复杂一半是社会决定的,一半取决于我们自己,生活中的各种世俗、各种枷锁能卸掉就卸掉吧!不去攀比,不去挣没必要的面子,不去急功近利的,做好自己的,自己、家人、在乎的人平安健康就是最简单最真的幸福! 6、财富的积累!我现在隐约觉得这件事是水到渠成之事,不奢侈不乱花,可能除了买房(车不知道算不算,我觉得不算必需品)有些压力,生活其实没什么压力。算一笔账,现在一个月4000应该很平常(算不上高)的薪水了吧(北上广除外),到手的差不多3000多些吧,两个人的话,一个月有6000,必要开销3000应该差不多了吧……忘记一个东西了,首付这个东西,若是家里条件不错,可以帮忙出了会更好,不能出的话那可能要找一份相对高薪点的工作了……假设家里出了首付的钱,公司走正常的五险一金,贷款年限长一点,住房公积金外也不用交什么钱!最主要的是你不可能一直都是4000的薪水,若是你一直都是4000的工资,我觉得真的是不涨薪(心)啊!若是首付家里没有办法,自己就努力下,咬牙一年在工作中学习,升职加薪不是难事,攒个三五年也不是难事!当然这样经历三五年后你的眼界可能就不一样了,也许你就不会倾向安稳,向我一样用最笨的日积月累来积累财富了! 上面的计算若是有误的话请见谅,由于这个计算没有什么考证! 7、扯得差不多了,最后提前祝大家新年快乐,工作中有封版一说,这篇日志就是我今年的“封版”了,过年的时候做的两个活动会推出来(为了保证我们能够第一时间响应线上问题,公司特意给配了无线网卡,我不知道我应该感到开心还是不开心?),希望不要出什么问题,让我过一个“平平淡淡”的春节,以便年后有一个不错的心情投入2016年的“战斗”! 最后不知道有多少人看到这里了,看到的人麻烦留下点什么,一个赞或者一条评论都可以

window下的调试

先介绍几个windows下的调试器:ollydbg、PyDbg、Immunity debugger 寄存器可以被认为是位于CPU上的小型存储器,CPU获取数据最快的方式就是直接访问寄存器。在x86指令集中,一个CP具有8个通用寄存器:EAX、EDX、ECX、ESI、EDI、EBP、ESP、EBX。 EAX寄存器也被称为累加器,用于协助执行一些常见的运算操作以外用于传递函数调用的返回值。在X86指令集中很多经过优化的指令会优先将数据写入或者独处EAX寄存器,在对数据进行进一步的计算。大多数基本的运算操作如:假发、减法和比较运算都会借助使用EAX寄存器来达到指令优化的效果。还有一些特殊指令如:乘法和除法则必须在EAX寄存器中进行。 若之前所属,函数调用的返回值被储存在EAX寄存器中。牢记这一点很重要,你可以基于存储在EAX中的值来判断一个函数调用所执行的操作是成功还是失败了。除了布尔类型的返回之外,EAX中存数的也可能是一个确切的函数返回值。 EDA是一个数据寄存器,这个寄存器可以被认为是EAX寄存器的延伸部分,用于协助一些更为复杂的运算指令,如:乘法和除法,EDA被用于存储这些指令操作的额外数据结果。EDA也可以用于通用目的的数据存储,但是其最常见的用法是和EAX寄存器联合使用,以协助执行这类更复杂的元算。 ECX寄存器也被称为计数器,用于支持循环操作,存储一个字符串或者进行计算就是典型的循环操作。需要特别注意的是ECX寄存器通常是反向计数的,而非正向计数。我们用以下的Python代码片段来向你说明这个问题。 在x86汇编语言中,那些涉及数据处理的循环操作依赖于ESI和EDI这两个寄存器,以实现高效的数据操作,ESI寄存器也被称为源地址寄存器,这个寄存器存储着输入的数据流的位置信息。EDI寄存器则指向相关数据操作结果的存放位置,我们称之为目的变址寄存器,可以简记为ESI用于“读”,而EDI用于“写”。在数据操作过程中使用源变址索引和目的变址寄存器可以极大提高程序运行的效率。 ESP和EBP寄存器分别被称为栈指针和基址指针,这些寄存器用于控制函数调用和相关的栈操作。当一个函数被调用时,调用参数连同函数的返回的地址将先后被压入函数栈中,ESP寄存器始终指向函数栈的最顶端,有此不难推断出在函数调用过程中的某一时刻,ESP指向了函数的返回地址。EBP寄存器被用于指向函数栈的低端。在某些情况下,编译器为了指令优化的目的可能会避免将EBP寄存器用作栈指针。在这种情况下,被释放出来的EBP寄存器可以向其他任何一个通用的寄存器一样另左它用。 EBX寄存器是惟一一个没有被指定特殊用途的寄存器,它可以被作为额外的存储单元来使用。 另外一个应当被提及的寄存器是EIP寄存器。这个寄存器始终指向当前正在执行的指令,当CPU穿行于二进制代码中时,EIP寄存器中的值随之更新以实时的反映当前代码所执行到的位置。 一个调试器应当能够轻易的读取和修改这些寄存器的内容,每一个操作系统都会提供一个接口做组来使得调试器能够与CPU进行交互,以获取或修改这些寄存器中的值。

字符编码,字符、ASCII、Unicode、ASCII UNICODE UTF-8

字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。 但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。 你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。 因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。 现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。 字母A用ASCII编码是十进制的65,二进制的01000001; 字符0用ASCII编码是十进制的48,二进制的00110000,注意字符’0’和整数0是不同的; 汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。 你可以猜测,如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。 新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。 所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间: 字符 ASCII Unicode UTF-8 A 01000001 00000000 01000001 01000001 中 x 01001110 00101101 11100100 10111000 10101101 从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。 搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式: 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。 用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件: 浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器: 所以你看到很多网页的源码上会有类似<meta charset=”UTF-8″ />的信息,表示该网页正是用的UTF-8编码。   摘自:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000

python2.x启动http服务

一行代码搞定,python2.x可以用下面的方法,代码如下: python3.x可以用下面的方法,代码如下: 这只是启动了一个简单的http服务,若是想真正跑起来,还需要做些东西!

python常用工具包整理

python常用工具包整理,写给自己的一篇,会根据实际使用不断更新: py2exe:用于生成可执行文件; psutil:可以读取系统、内存信息 Pillow,可以用来处理图片的,2.x版本可以看PIL mysql-connector-python,Mysql的驱动 numpy,用于科学计算的NumPy库 Jinja2,用于生成文本的 pySerial,与串行端口的数据通信 操作execl的 最后,知乎上有人发了如何学习python,连接拿来记录下:https://www.zhihu.com/question/20039623

Windows下多个python 版本开发环境的管理

在我的Windows 8 下安装了: python 2.7:C:\Python27 python 3.3:C:\Python33 希望在command line 输入python2 就是执行C:\Python27\python.exe;输入python3 就是执行C:\Python33\python.exe 那么可以利用Windows内建的Doskey指令(参考:Simplify Command Entry with Doskey Macros )及Registry指令达成。 Doskey 指令,简单来说其实就是别名,把一长串指令用简单的符号来取代。 例如:在Windows 环境下,还是习惯使用unix 的ls –al 而不是输入dir /A /W。 此时,就可以以利用doskey 指令,在Command line 输入: doskey ls= dir /A /W 之后,在Command line 输入ls 就等于执行dir /A /w 的指令啰… 但是,每次进入Command line 就必须重新设定Doskey 一次,所以我们必须将命令先储存起来。 在command line 载入后,马上帮我们重新设定Doskey。 所以,先建立一个pythonautorun.bat档案,档案内容如下: @echo off doskey python2=c:\Python27\python.exe $* doskey python3=c:\Python33\python.exe $* 其中@echo off 是把命令输入关闭… doskey python2=c:\Python27\python.exe $*,则是表示输入python2 等于执行c:\Python27\python.exe 而$*则是带入每一个参数,例如python2 test test2就等于c:\Python27\python.exe test test2 做好pythonautorun.bat后,将档案放在固定的位置,例如:c:\windows\pythonautorun.bat 在command line输入regedit,进入registry编辑模式: 找到HKEY_CURRENT_USER\Software\Microsoft\Command Processor位置:  新增字符串值(REG_SZ),名称: Autorun,数据  c:\windows\pythonautorun.bat 这样每次进入cmd,就会自动执行pythonautorun.bat,然后就可以方便的执行python2或python3了。   参考文章:http://jlan.me/?p=379

sublime pulinter could not automatically determined to the path to ‘lint.py’报错

最近在搞python,由于是做前端的,所以编辑工具用的sublime,为了支持python语法,故添加了Pylinter插件,但结果报错了:sublime pulinter could not automatically determined to the path to ‘lint.py’ 搜索后,发现解决方法是下,首先从https://pypi.python.org/pypi/pylint 下载,随后解压到指定目录,比如C:\pylint-1.5.4,然后全局搜索下Packages目录,找到对应的Pylinter目录,里面有一个Pylinter.sublime-settings,打开编辑设置pylint_path变量,指定pylint的位置,”pylint_path”: “C:\\pylint-1.5.4″。 备注:本人的Packages目录:C:\Users\Administrator\AppData\Roaming\Sublime Text 3\Packages\Pylinter

window8利用pip安装scrapy失败总结

输入pip install scrapy 第一次报错: 谷歌下发现:windows下使用pip安装包的时候需要机器装有vs2008,VS2012还不行,如果不想装VS2008的话,可以安装一个Micorsoft Visual C++ Compiler for Python 2.7的包。 不想安装vs2008了,那就安装下Micorsoft Visual C++ Compiler for Python 2.7,安装完成后不报第一个错误了,又来了一个错误: Cannot open include file: ‘libxml/xpath.h’: No such file or directory 很明显,安装的时候需要xpath.h这个头文件,而这个头文件又是libxml这个库下的,于是找下怎么安装这个库吧,于是搜到了http://www.lfd.uci.edu/~gohlke/pythonlibs/#libxml-python,下载下来用pip安装(cmd到文件下载下来文件目录,执行pip install ****.whl),安装完这个果然搜到了libxml/xpath.h,再次尝试安装,果然成功了! 参考文章: http://www.cnblogs.com/ldm1989/p/4210743.html http://www.crazyant.net/700.html

各大巨头电商提供的IP库API接口-新浪、搜狐、阿里…

关键字:各大巨头电商提供的IP库API接口-新浪、搜狐、阿里… 新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.192.3.42 搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson 搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8 搜狐另外的IP地址查询接口:http://txt.go.sohu.com/ip/soip 太平洋电脑 IP库接口:(默认callback=IPCallBack) http://whois.pconline.com.cn/ipJson.jsp http://whois.pconline.com.cn/?ip=[ip地址字符串] 直接访问:http://whois.pconline.com.cn/?ip= 调用方法非常丰富,提供多种JS嵌入调用。 网易有道IP地址API接口 查询IP地址: http://www.youdao.com/smartresult-xml/search.s?type=ip&q=115.156.238.114 淘宝IP地址库API接口 1. 请求接口(GET): http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] 另外,还有Google,搜狐,腾讯等均提供相应接口,请参看相关资料,这里不再赘述。 原文地址:http://zhaoshijie.iteye.com/blog/2205033

casperjs不支持phantomjs 2.x 版本解决方案

遇到的问题如题: 首先,安装完成后,直接运行报错如下: 解决方式,去掉casperjs的版本限制代码,代码所在目录casperjs\bin\bootstrap.js,要去掉的代码,当然你也可以替换成下: 若是替换,可用下面代码 操作完成后,再次运行发现又出了如下错误: 还是需要修改上面的casperjs\bin\bootstrap.js文件,在文件上方加上如下代码: 至此,可以正常运行了! 参考文章: http://stackoverflow.com/questions/28656768/issues-running-casperjs-with-phantomjs2-0-0-on-mac-yosemite https://github.com/n1k0/casperjs/issues/1150