快乐的天空

时间来得快,去得也快

 

删除.svn文件夹

注册表方式:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""


命令解析

将下面内容在.txt文件中保存后,将文件名的“.txt”改成“.bat”,运行即可。

@echo off

for /r %%a in (.) do if exist %%a\.svn rd /s/q %%a\.svn

pause

@echo on

---------------------------------------------------------------------------------------------------

for /r %%a in (.) do if exist %%a\.svn rd /s/q %%a\.svn 这个语句句主要的作用是删除该bat所在的当前目录及其子目录中的所有.svn目录

该语句的解释如下:

首先判断是否存在.svn目录,如果存在,不需用户确认就将其删除;否则进行下次循环。

for /r %%a in (.) do -----循环判断指定目录及其子目录

if exist %%a\.svn rd /s/q %%a\.svn -----这是循环体

If exist %%a\.svn------判断是否存在.svn文件夹

rd /s/q %%a\.svn ------不用确认,直接删除.svn文件夹


posted @ 2013-10-30 14:28 探路者 阅读(841) | 评论 (0)编辑 收藏

技术面试

转载的。。。

只要是招一个技术人员,不管是初级的程序员还是高级软件工程师,技术上的考核都必不可少。很荣幸作为面试官参与过公司的一些技术面试,从中也体会到了一些东西。

 
首先,我觉得技术面试是需要讲究技巧的,不是随随便便拉一个技术不错的人就可以,因为面试的过程是双方相互交流的过程,你需要给对方营造一个轻松的气氛,并在不断的提问与回答的过程中,进行“合理的引导”,“适时的追问”与“正确的判断”。
所以我觉得一个公司的技术面试需要有良好的经验传承,不光光只是留来一些题库;也不光光是一句要相互尊重,你代表公司的形象;更重要的如何去主导一场面试,全面、准确的了解对方的能力。一个新的面试官在上场前需要培训一下如何去做到这些,最好能新老搭配带一下,这样,我觉得才是最靠谱的,也是我们之前做的不够好的地方。
 
一般情况下,软件公司招人总会对这三个方面的能力做一下考核,一是编程语言,二是数据结构与算法,三是系统设计。
 
编程语言 
语言是工具,是一个程序员每天都要使用的东西。在我看来,考察编程语言,不仅能考察一个人对一门语言的理解程度,也能反应一个人的对待知识的态度 - 你会怎么看待一个有10年C++经验但却对这门语言所知甚少的人?恐怕是安于现状,不求甚解。

针对被面者熟知的语言与库来考察其对语言各个特性的了解与应用,最后,让被面者写个程序看看其对这们语言的操控程度。

数据结构与算法
工作5、6年,在我以前的项目中,需要用到数据结构与算法的机会不是很多。我也曾经怀疑,考察算法是不是有必要。那么有必要吗?
我是这么说服自己的:
的确,有些项目,涉及更多的只是调用第三方库去堆彻代码,实现业务逻辑,没有太多的机会去直接的、明显的应用算法,但如果因此而自我设限,难免沦为平庸。
算法,其实考的也是一个人思考问题的套路,一个人的创造力。说句俗气的话,不管你现在做的是什么,如果你具备了这种思维方式,你总能找到地方应用它。或许,以前你所认为的那些没有意义的事情,只是因为你选择了没有意义的方式去完成它而已。

考察一些初级数据结构与算法的概念,别考的太深太偏。准备一些具有“可伸缩性”的算法题,看看被面者如何分析问题,如何分析算法复杂度,以及如何用其选择的语言实现算法。


系统设计
这个主要是考察被面者在面向对象软件设计方面的能力,一般针对高级一些的职位。

可以先了解一下被面者对面向对象设计的基本概念与原则的了解,然后让其谈谈他之前项目中做过的设计;并准备几道可以逐步深入的设计题让其当场设计。哦,别忘了问问他为什么这么设计。

需要注意是,要了解面试者真实的实力,你必须要好非常好的临场应变的能力,善于从面试者的回答中提取有用信息并加以追问。

另外,因为现场面试需要耗费双方很多的时间与精力,所以针对上面三个方面,最好能先进行一下电话面试,做一个大概的了解,这样可以避免不必要的耗费 - 所以,做好电话面试也就非常重要有了:你需要做成尽量准确的判断 - 来,还是不来。

posted @ 2013-10-19 22:25 探路者 阅读(228) | 评论 (0)编辑 收藏

百度搜索的经济学家

1、吴敬琏
2001年在中国股市论战后上镜率极高,只要吴教授出现,就会成为焦点。
吴敬琏教授最早提出并倡导市场经济理论,是"市场取向改革论"的主要代表人物;经济体制比较研究学科的开创者之一;其不同时期的理论主张和政策建议在实践上推动了中国改革事业的前进。
在商务人士中颇受好感,点击率达到70%。给人感觉是一位公正、睿智、博学、为民请命的有良心的经济学家。
他的主要欢迎人群平均分布在男女老少之中。让人"虽不能至,心向往之"。但也有人把近几年中国股市的不景气部分归罪于他。
2、厉以宁
厉教授是2001年与吴教授论战的排头兵,由于网上流传有关其家族暴富内幕的文章使得有关厉教授的争议和其著述一样脍炙人口。
厉以宁教授在对中国以及其他许多国家经济运行的实践进行比较研究的基础上,发展了非均衡经济理论,并运用这一理论解释了中国的经济运行。厉以宁从中国经济改革之初就提出用股份制改造中国经济的构想。所以在海内外享有"厉股份"之称。
受到商务人士中高端人群的欢迎。
3、林毅夫
由于其身份的特殊性,他的头衔多得像在纸上画了一棵大树。
林毅夫教授治学勤奋,研究领域比较广泛,形成了十分丰富的学术思想。他强调制度的内生性,早在1980年代后期,他就认为经济体制改革成功的前提是放弃推行带有赶超色彩的发展战略。在总结了世界各国经济发展的经验教训后,他提出了自己独特的发展经济学理论假说。
受到有海归身份的商务人士和学者们的好感。
4、茅于轼
带有浪漫主义思想色彩的经济学家。
茅于轼先生的"厉害"在于他对微观经济学的资源配置问题的透彻研究和精妙阐释,他曾经用一句话来概括整个微观经济学和市场经济体制的核心:充分竞争下的供求均衡达致资源配置最优。
他的《择优分配原理》由于深入浅出,颇得经济学之妙处,所以成为很多青年学者进入微观经济学领域的介绍信。由于其著述语言引人入胜、观点精练,茅于轼培养了一大批忠实的"茅于轼迷"。
由于其宽容平和的性格,关注民生问题,被认为是经济学家的楷模。
5、樊纲
樊纲被认为是西方经济学在中国的出色的理论阐释者,他的《现代三大经济理论体系的比较和综合》奠定其在中国经济学界的地位。
樊纲在《"不道德"的经济学》中所提到的:"作为一般意义上的知识分子,甚至也应该作传经布道的工作;但作为经济学家,谈道德却是’不务正业’。"引起不小的争论。在最近的关于经济学家之间的"战争"中,又和非主流经济学家杨帆一起成为关注的焦点。
樊纲在众多大经济学家中可以称的上"少年英俊",参加此次评选的女性认为樊纲很像某位电视台主持人,所以颇受青睐。
6、张维迎
张维迎教授的企业理论及有关中国国有企业改革的研究成果在国内外学术界、zgzf有关部门和企业界有广泛影响,被公认为中国经济学界企业理论的权威,是国内最早提出并系统论证双轨制价格改革思路的学者。
张维迎最近推出了《大学的逻辑》一书,作为光华管理学院副院长,积极推动北大教育的改革,颇受争议。
7、郎咸平
郎咸平在国内的知名度极高,他以保护中小股民为理念因而被媒体尊称为"郎监管",他又以仰融的独立第三方出现而深受瞩目。最近郎咸平提出人民币应该"再贬值2%以打击进入中国市场的游资","企业不应做大做强而应精益求精"等观点,并炮轰海尔、TCL、科龙等中国知名企业,再次惊动天下人。
郎咸平的《整合》、《运作》、《操纵》在图书市场上销量也极好。他的学术成果得到世界一流商学院的普遍认可。
8、胡鞍钢
胡鞍钢参加了由周立三院士领导的中国科学院国情分析研究小组,并作为其中的主要研究人员,系统地从事中国国情研究。他是这一新领域的主要开拓者之一。2000年初,胡鞍钢被中国科学院和清华大学联合聘为国情研究中心主任,该中心旨在建成国内一流的国家决策思想库。
他所带头的清华大学国情研究中心是zgzf四大智囊团之一。
9、萧灼基
萧灼基教授在国内学术界第一次从理论上提出和论证了社会主义全民所有制企业所有权与使用权(经营权)分离的问题。提出了重新认识社会主义和资本主义问题。提出生产资料所有制改革是经济体制改革的主要内容。所有制改革的基本思路是:完善社会主义社会的所有制结构;完善社会主义公有制结构;完善全民所有制的经营方式。
萧灼基多年研究《资本论》,近年着重运用《资本论》理论研究社会主义经济问题。
10、张五常
张五常作为新制度经济学和现代产权经济学的创始人之一,他的理论主张在学术界引起广泛争议。其对国内股份转让、外汇转让、政府管制等发表了自己的独特看法。张五常在广州谈中国应对WTO挑战时,认为中国农业人口未来应降到25%……几乎他的每次公开言论都会引起一片哗然--当然其中很重要的原因有张五常教授对自己夸张的评价赢得了很多眼球的作用。
他的经济学"实用论"亦受到大众的广泛关注。有的人评价他是天才,有的人说他哗众取宠

posted @ 2013-06-23 22:46 探路者 阅读(160) | 评论 (0)编辑 收藏

LuaJIT之callback要注意的地方

目前应该在LuaJIT的ffi库中避免使用函数指针,使用Lua本身来封装回调函数(如果接口需要),方可获得LuaJIT提供的卓越性能。
尽可能直接使用第三方的C库,使用ffi来访问API,而非去实现一个Lua C Module,这也是LuaJIT官方所推荐的,这会让luaJIT的优化达到极致(C API访问,以及对Lua-C Module里函数访问时的传参,会有不能被LuaJIT编译优化的开销,虽然这个开销对于非频繁调用的内容并不大)
另外一个原本预期中的好处是,希望这个项目最终能只有Lua代码,以及luajit主程序、编译好的其他库的动态链接版本,便于去修改、发布及调试。只是目前来看完全这么做还是有点困难。但是使用其他callback不那么常见的库可能会相对轻松。

posted @ 2013-02-25 20:29 探路者 阅读(760) | 评论 (0)编辑 收藏

远程桌面连接服务器时,键盘不能正常打字

这个问题困扰我很久,其实很简单。
解决方案:在远程桌面的XP系统,直接按Win键,远程桌面弹出“开始菜单”,这样就恢复了。

posted @ 2013-02-25 20:26 探路者 阅读(4314) | 评论 (0)编辑 收藏

iconv的用法

conv命令是用来转换文件的编码方式的(Convert encoding of given files from one encoding to another)

 用法: iconv [选项...] [文件...]
  Convert encoding of given files from one encoding to another.
  输入/输出格式规范:
  -f, --from-code=NAME 原始文本编码
  -t, --to-code=NAME 输出编码
  信息:
  -l, --list 列举所有已知的字符集
  输出控制:
  -c 从输出中忽略无效的字符
  -o, --output=FILE 输出文件
  -s, --silent suppress warnings
  --verbose 打印进度信息
  -?, --help 给出该系统求助列表
  --usage 给出简要的用法信息
  -V, --version 打印程序版本号
  Mandatory or optional arguments to long options are also mandatory or optional
  for any corresponding short options.
  用“glibcbug”脚本将错误报告给 <bugs@gnu.org>。
  类似命令: piconv , convmv
  piconv是流模式的,处理超大文件比较方便. convmv是给文件名重命名的,windows和linux系统间切换后尤其有用

首先,我们要知道支持的字符编码有哪些,这个可以用-l参数得到(List known coded character sets)。

格式:iconv -l

其次,是怎样转换,如下所示:

格式:iconv -f from-encoding -t to-encoding inputfile

上面的调用方式,会把输出打印在屏幕上,如果要输出到文件,可以像下面这样

格式:iconv -f from-encoding -t to-encoding inputfile -o outputfile

posted @ 2013-01-20 16:54 探路者 阅读(523) | 评论 (0)编辑 收藏

产品经理工具集


     在通用产品的工作,除了你需要一个敏锐的思路与设计思路外,将未来需要的产品的方向、设计、及需求等如何描述出来,及期间与团队共同面对产品的实现过程中,你如何将脑袋中的“货”,表达“给” 或是正确的传达“给”团队成员或是后期的使用者,成为你产品人的艰巨任务,不管是产品部门的管理者或是最小的产品专员及助理兄弟们,对以下的工具正确的选择与使用,或是说为了拼搏在产品一线上,你产品工具的十八般武艺,你必须得会技痒了。

产品经理工具集(全产品周期通用工具篇) - yinaje - yinaje

原型设计工具》Axure RP Pro, UIDesigner

流程用例设计工具》Mindjet MindManager, MS Visio 

数据库设计工具》PowerDesigner   

业务解决设计工具》MS Word 

项目统计与计划工具》MS Excel ,MS Project

产品培训与演示工具》 Microsoft Office PowerPoint 2007


 


posted @ 2012-12-04 21:22 探路者 阅读(376) | 评论 (0)编辑 收藏

不要一辈子靠技术生存

     我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊). 

一、 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你千万更不要认为哪些从事 市场开发,跑腿的人,没有前途。 

  不知道你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,在软件上线和开发的关键阶段需要团队的成员没日没夜的加班,还需要为测试出的BUG和不能按时提交的软件模块功能而心怀忐忑,有的时候如果你不幸加入现场开发的团队你则需要背井离乡告别你的女友,进行封闭开发,你平时除了编码之外就是吃饭和睡觉(有钱的公司甚至请个保姆为你做饭,以让你节省出更多的时间来投入到工作中,让你一直在那种累了就休息,不累就立即工作的状态) 

  更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一,甚至破坏你原有的爱情(想象一下,你在外地做现场开发2个月以上,却从没跟女友见过一面的话,你的女友是不是会对你呲牙裂嘴)。 

  也许你拿到了所谓的白领的工资,但你却从此失去享受生活的自由,如果你想做技术人员尤其是开发人员,我想你很快就会理解,你多么想在一个地方长期待一段时间,认识一些朋友,多一些生活时间的愿望。 

  比之于我们的生活和人际关系及工作,那些从事售前和市场开发的朋友,却有比我们多的多的工作之外的时间,甚至他们工作的时间有的时候是和生活的时间是可以兼顾的,他们可以通过市场开发,认识各个行业的人士,可以认识各种各样的朋友,他们比我们坦率说更有发财和发展的机会,只要他们跟我们一样勤奋。(有一种勤奋的普通人,如果给他换个地方,他马上会成为一个勤奋且出众的人。) 

二、在学习技术的时候千万不要认为如果做到技术最强,就可以成为100%受尊重的人。 

  有一次一个人在面试项目经理的时候说了这么一段话:我只用最听话的人,按照我的要求做只要是听话就要,如果不听话不管他技术再好也不要。随后这个人得到了试用机会,如果没意外的话,他一定会是下一个项目经理的继任者。 

  朋友们你知道吗?不管你技术有多强,你也不可能自由的腾出时间象别人那样研究一下Linux源码,甚至写一个Linux样的杰作来表现你的才能。你需要做的就是按照要求写代码,写代码的含义就是都规定好,你按照规定写,你很快就会发现你昨天写的代码,跟今天写的代码有很多类似,等你写过一段时间的代码,你将领略:复制,拷贝,粘贴那样的技术对你来说是何等重要。(如果你没有做过1年以上的真正意义上的开发不要反驳我)。 

  如果你幸运的能够听到市场人员的谈话,或是领导们的谈话,你会隐约觉得他们都在把技术人员当作编码的机器来看,你的价值并没有你想象的那么重要。而在你所在的团队内部,你可能正在为一个技术问题的讨论再跟同事搞内耗,因为他不服你,你也不服他,你们都认为自己的对,其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好,比对方强。(在一个项目开发中,没有人愿意长期听别人的,总想换个位置领导别人。) 

三、你更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。 

  如果你那样认为,真的是大错特错了,你可以做个调查在非技术人群中,没有几个人知道C#与JAVA的,更谈不上来欣赏你的技术是好还是不好。一句话,技术仅仅是一个工具,善于运用这个工具为别人干活的人,却往往不太擅长用这个工具来为自己创业,因为这是两个概念,训练的技能也是完全不同的。 

  创业最开始的时候,你的人际关系,你处理人际关系的能力,你对社会潜规则的认识,还有你明白不明白别人的心,你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等,也许有一万,一百万个值得我们重视的问题,但你会发现技术却很少有可能包含在这一万或一百万之内,如果你创业到了一个快成功的阶段,你会这样告诉自己:我干吗要亲自做技术,我聘一个人不就行了,这时候你才真正会理解技术的作用,和你以前做技术人员的作用。 

[小结] 

  基于上面的讨论,我奉劝那些学习技术的朋友,千万不要拿科举考试样的心态去学习技术,对技术的学习几近的痴迷,想掌握所有所有的技术,以让自己成为技术领域的权威和专家,以在必要的时候或是心里不畅快的时候到网上对着菜鸟说自己是前辈。 

  技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢他,但最好不要一辈子靠它生存。 

  掌握技术的唯一目的就是拿它找工作(如果你不想把技术当作你第二生命的话),就是干活。所以你在学习的时候千万不要去做那些所谓的技术习题或是研究那些帽泡算法,最大数算法了,什么叫干活? 

  就是做一个东西让别人用,别人用了,可以提高他们的工作效率,想象吧,你做1万道技术习题有什么用?只会让人觉得酸腐,还是在学习的时候,多培养些自己务实的态度吧,比如研究一下当地市场目前有哪些软件公司用人,自己离他们的要求到底有多远,自己具体应该怎么做才可以达到他们的要求。等你分析完这些,你就会发现,找工作成功,技术的贡献率其实并没有你原来想象的那么高。 

  不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的认识,在中国不会出现BILL GATES,因为,中国目前还不是十分的尊重技术人才,还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。(如果你不理解,一种可能是你目前仅仅从事过技术工作,你的朋友圈子里技术类的朋友占了大多数,一种可能是你还没有工作,但喜欢读比尔。盖茨的传记)。

posted @ 2012-11-30 11:59 探路者 阅读(255) | 评论 (0)编辑 收藏

Git 常用命令集合

git config —global user.name “Nshen” //必须
git config —global user.email “nshen121@gmail.com” //必须
git config —global color.ui “always” //或者"auto", always不仅Base环境是彩色,Dos里也是彩色的。
git config —global core.editor notepad.exe //设为windows记事本
git config —global alias.ci “commit” //别名缩写
git config —global merge.tool //可以设置合并工具
git config —global —list //查看设置

其实最后这些设置都保存在C:\Documents and Settings\用户名\.gitconfig 文件下(windows)

查看帮助: git help command

初始化 :

git init

纳入版本控制:

git add *.txt //添加所有txt文件
git add README //添加单个文件
git add . //添加所有文件包括子目录,但不包括空目录

add命令是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)注意每次修改后都要重新add,不然就会提交之前add时的版本。

git add -i //进入交互式add
git add -p //直接进入补丁模式,可以暂存修改的一部分。

提交:

git commit -m “initial project version”
git commit -m “something” someFile //提交指定文件
git commit -C HEAD -a —amend //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎)

参数:

-m “提交的说明”
-a 动把所有已经跟踪过的文件暂存,并提交.(工作目录中修改过的文件都提交到版本库,不需一个一个手动add了)
—amend 增补提交
-C 复用指定提交的提交留言
-c 打开编辑器在已有的提交基础上编辑修改

e.g 修改最后一次提交:

git commit -m 'initial commit'git add forgotten_filegit commit --amend

如果没有修改就相当于更改提交说明,上边3个命令得到一个提交.

忽略提交的文件:

所有人都需要忽略的文件要写在.gitignore文件里,而只有自己的个人偏好需要忽略的文件要写在.git/info/exclude文件中

语法:

# 此为注释 – 将被 Git 忽略*.a # 忽略所有 .a 结尾的文件!lib.a # 但 lib.a 除外*.[oa] #忽略以.o或.a结尾的文件*~ #忽略以~结尾的文件/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild/ # 忽略 build/ 目录下的所有文件doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt查看文件改动:

git diff // 比较工作目录与缓存区的区别
git diff —cached 或者 git diff —staged //缓存区与版本库里的区别
git diff HEAD //三者的区别

请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
git diff 18f822e //18f822e这个版本与当前目录的区别

git diff aaaaa..bbbbb //比较aaaaa与bbbbb之间差别
git diff —stat可以统计数据,比较特别的命令

重命名,移动,删除文件:

git mv file_from file_to //改名或移动

$ git mv README.txt README$ git status# On branch master# Your branch is ahead of 'origin/master' by 1 commit.## Changes to be committed:#(use "git reset HEAD <file>..." to unstage)## renamed: README.txt -> README

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.txt README
$ git rm README.txt
$ git add README

必须调用 git rm 文件名 //从暂存区移除,并且文件也被删除

如果只是手工删除了文件,运行git status时会出现

# Changed but not updated:#(use "git add/rm <file>..." to update what will be committed)## deleted: grit.gemspec

此时必须再运行 git rm 文件名,才会在提交时候不再纳入版本管理.
如果删除之前修改过并且已经add到缓存区了的话,则必须强制删除 -f

另外一种情况是,我们想把文件从Git仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆.a编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 —cached 选项即可:

查看状态:查看当前状态:

git status

$ git status# On branch master# Changes to be committed: //只要在这行后边的,说明放入暂存区了#(use "git reset HEAD <file>..." to unstage) //想取消放入缓存 git reset HEAD README## new file: README# Changed but not updated: //跟踪文件内容改变,但还没有放到暂存区,需要git add 命令才会放到暂存区#(use "git add <file>..." to update what will be committed)#(use "git checkout -- <file>..." to discard changes in working directory) //删除修改,恢复到之前版本,有危险 (如果想保留并且回退版本用stashing 和分支来处理)# modified: benchmarks.rb查看提交历史:

git log

这时“j”向下浏览,“k”向上浏览,“q”退出

git log —pretty=oneline //一行显示
—pretty=“%h %s” //以各种格式输出

git log –p -2 //-p显示每次提交的内容差异 -2表示最近2次更改

git log —since “5 hours”
—since “3 hours”
—since “1 minute”
—before =“2008-10.01”

git log 27j34j3j..03u43u23 //最老版本..最新版本(不包括起点只包括终点)
git log 34j4j4..HEAD
git log fhfs8fh.. //省略HEAD
git log “HEAD^^”..“HEAD^” //windows必须加引号表示回溯上一个提交
git log -1 HEAD~1 //相当于git log -1 HEAD^

问责:查明谁修改了代码

git blame hello.html //你也可以用"-L"参数在命令(blame)中指定开始和结束行:
git blame -L 12,+10 hello.html //12到22行
blame还可以跟踪内容复制,文件复制,略,见版本控制之道 79页

撤销:撤销缓存区的修改(没有commit的)

git checkout head 文件名 //撤销暂存区的修改 
git checkout head readme.txt todo.txt
git checkout head *.txt
git checkout head . //撤销所有

反转提交:

git revert HEAD //创建一个反向的新提交抵消原来的提交改动
如果需要反转多个,必须从最后的开始反转, 加 -n可以不马上提交,之后一起提交。
git revert -n HEAD
git revert -n 54efhds
git commit -m “revert head and 54efhds”

复位:还没有commit,让工作目录回到上次提交时的状态

git reset —hard HEAD //所有未提交的内容清空,这会让"git diff" 和"git diff —cached"命令的显示法都变为空
git reset —soft HEAD //复位版本库,暂存差异,便于提交中发现错误需要更改时有用(例如私人密码放到里边了)

分支:在当前分支末梢建立分支:

git branch RB_1.0(建立分支不会自动切换过去)

切换分支:

git checkout RB_1.0(切换到RB_1.0分支)

创建并切换分支:

git checkout -b RB_1.0(简化上边2步操作)

删除分支:

git branch -d RB_1.0

基于某次提交、分支或标签创建新分支:

git branch RB_1.0 master
git branch RB_1.0 6fe57de0
git branch Rb_1.01 1.0

查看分支:git branch //列出本地分支 iss53* master //*号表示当前所在分支 testing

git branch -r //显示远程分支
git branch -a //列出所有分支

分支重命名:

git branch -m master mymaster
-M 大写M会覆盖同名的分支

合并分支:

直接合并:
git merge 想合并到当前分支的源分支名
git merge —no-commit 分支 //合并但不提交

压合合并:将分支压合成一条commit记录,并合并过来
git merge —squash 某bug分支
git commit -m “修复某bug”

拣选合并:只合并一个提交
git cherry-pick 321d76f
如果需要连续拣选,就需要加 -n参数
然后再git commit ,但不要加-m参数,编辑器就会使用刚拣选的提交留言作为现在的留言。

标签Tag:查看标签:

git tag

创建标签:

git tag 1.0 //在当前分支最后一次提交创建标签
git tag 1.0 RB_1.0 //基于RB_1.0分支的最新踢脚创建标签
git tag 1.0 ae468d8kt //为某次提交创建标签

检出标签:

git checkout 1.0 //检出标签与检出分支一样操作,但检出标签后用git branch查看本地分支会发现你现在不再任何分支上
这时你不应该修改,而应该立即基于此标签创建一个分支
git checkout -b from-1.0

变基:

1)git rebase RB_1.01 //也许修改过一个bug,希望新版本变基到RB_1.01分支上
2)手动解决冲突 //如果解决不了直接git rebase -abort来跳过特定提交或完全放弃变基
3)git add xxx.html //冲突解决
4)git rebase —continue

git rebase --onto HEAD^^ HEAD^ HEAD

//—onto参数可以改写历史抹掉中间的参数,将倒数第一个参数变基到倒数第3个参数,为防止出错建议在试验性分支上先试验。

rebase -i 可以排序历史记录,多个提交合并为1个,一个提交分解成多个提交 ,
详见版本控制之道p86 ,需要编辑器支持,windows记事本不行

远程相关:

git clone git://github.com/schacon/grit.git //从现有仓库克隆
git clone git://github.com/schacon/grit.git mygrit //换名,唯一区别就是新建的目录成了mygrit,其他都一样

添加远程仓库:

git remote add pb git://github.com/paulboone/ticgit.git
clone会默认添加origin仓库,如果原本用git init创建的版本库,后来又想提交到远程版本库,就可以用下边的办法
git remote add origin git@example.com:/xxxxxx

查看远程分支:

git remote -v //查看远程仓库,默认clone后,应该有一个origin仓库,-v显示对应的clone地址
git remote show origin //查看远程仓库信息

远程仓库重命名和删除:

git remote rename pb paul
git remote rm paul

获取数据:git fetch [remote-name] 拉取远程仓库到本地远程仓库,不自动合并 //$ git fetch origin$ git fetch pbremote: Counting objects: 58, done.remote: Compressing objects: 100% (41/41), done.remote: Total 44 (delta 24), reused 1 (delta 0)Unpacking objects: 100% (44/44), done.From git://github.com/paulboone/ticgit* [new branch] master -> pb/master* [new branch] ticgit -> pb/ticgit

现在pb/master可以在本地访问了,你可以合并到自己的某个分支,或者切换到这个分支看看有什么有趣的更新

git pull 抓取数据合并到工作目录中当前分支

推送数据:

git push [remote-name] [branch-name] //默认为 git push origin master

git push origin serverfix //推送分支,其实是下边一句的简化,提取我的 serverfix 并更新到远程仓库的 serverfix

git push origin serverfix:serferfix

git push origin :serverfix //这个语法用于删除,只要把分号前留空

其他:

git gc //垃圾回收,每隔一段时间例如一个月运行一次可以减少磁盘占用空间。
git reflog //最后的保障,列出误删的东东
git bisect //二分查找,版本控制之道p124页,略

归档版本库,导出压缩包:

git archive —format=格式 —prefix=目录/ 版本>压缩包.zip
git archive —format=zip head>test.zip
git archive —format=tar —prefix=mysite-1.0/ 1.0 | gzip>mysite-1.0.tar.gz
git archive —format=zip —prefix=mysite-1.0/ 1.0 >mysie-1.0.zip

posted @ 2012-11-29 18:44 探路者 阅读(5904) | 评论 (0)编辑 收藏

并行的几个层面

并行是分多个层面的,个人认为基本上可以分为这么几个层面:1、指令级的并行;即所谓的微程序、指令流水线等,现在cpu的一级缓存、二级缓存都很大,所以这个cache的效果还是比较好的(基于局部性原理)2、线程级的并行;即同一个时刻多个函数在运行(现在的cpu好像都是多核的)3、服务级别的(比如一个游戏服务器中有商店服务、也有战斗服务、聊天服务等 这里的每个服务可能对应多个逻辑线程)4、节点级别的;即所谓的分布式系统,多个节点互相配合,使整个系统在逻辑上成为一个单一的系统。(google、qq等这些海量访问的服务统统是分布式的)一般来说,第一个级别的并行直接做在硬件里面,第二个级别的并行会有一些基础的框架,第三和第四个级别的并行就是应用程序自己的架构的问题了。
并行库:TBB,FastFlow


posted @ 2012-11-25 11:51 探路者 阅读(329) | 评论 (0)编辑 收藏

仅列出标题
共6页: 1 2 3 4 5 6 

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

新闻档案

Android

Compiler Course

VIM

编译技术集合

测试

高性能计算

个人博客

框架/组件/库

搜索

最新评论

阅读排行榜

评论排行榜