来自irising, 挺有意思的一篇文章

扫盲1:同步和异步

同步(Synchronous),主要是指客户端在发送请求后,必须得在服务端有回应后才发送下一个请求。比如你需要发送一条短信,必须等信息发送完毕才能退出界面;异步(Asynchronous),指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,这样对于所有的请求动作来说将会在服务端得到异步。比如你发送一条短信,不用等它发送完毕,你就可以爱干嘛干嘛去,系统会在后台把这条短信发送完毕。

【举例】同步就是你追一个姑娘,晚上给她发我爱你,她一直没有搭理你,你就一直等,一直等,一直等,一直等,直到姑娘终于答复了你,我也爱你,于是你们在一起了;异步就是你追一个姑娘,晚上给她发我爱你,没等她搭理你,你就又给另一个姑娘发我爱你,没等她搭理你,你就又给第三个姑娘发我爱你,姑娘一、姑娘二、姑娘三都以为你是专心致志的对自己,最后可能有的答复了我爱你,有的答复了对不起。

扫盲2:模态与非模态

模态(Mode),就是指当这个控件弹出的时候,鼠标不能单击这个控件之外的区域,这种控件往往是用户进行了某种操作后才出现的。例如:windows的选择字体颜色对话框 ;必须先关闭对话框才能进行其他操作;非模态(Modeless),通常用于显示用户需要经常访问的控件和数据,并且在使用这个控件的过程中需要访问其它窗体的情况。例如:word的查找对话框。可以直接点击任何地方,例如,发邮件时添加附件就是个非模态的。

【举例】模态就是你陪这个姑娘吃饭,姑娘让你不许玩手机,不许你上厕所,不许你听音乐,甚至不许你说话,只能做一件事,就是乖乖把饭吃完;非模态就是你陪这个姑娘吃饭,姑娘不管你,爱玩手机玩手机,爱刷微博刷微博,爱上厕所上厕所,甚至可以玩亲亲。

扫盲3:轮询和中断

中断(interrupts),程序中断通常简称中断,是指程序在正常运行的过程中,由于预选安排或发生了各种随机的内部或外部事件,使程序中断当前操作,转到处理相应事件,这个过程称为程序中断;轮询(Polling),是让程序以一定的周期按次序查询每一个外设,看它是否有数据输入或输出的要求,若有,则进行相应的输入/输出服务。

【举例】中断就是你跟这个姑娘开始同居,你正在写一个项目计划书的时候,姑娘一会儿跟你说玻璃脏了,要你擦擦玻璃,一会儿跟你说地板脏了,要擦擦地板;轮询就是你跟这个姑娘开始同居,她一会儿跟你说玻璃脏了,一会儿说地板脏了,你淡定的告诉她,当脏的地方累积到10个的时候,再告诉你,你才开始打扫,这样就不会频繁的被打断啦。

扫盲4:长连接和短连接

长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持;短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。

【举例】长连接就是你们俩开始异地恋了,他会每天给你一个电话,保持跟你的联系,遇到节假日等大事,会额外准备一些惊喜给你;短连接就是你们俩开始异地恋了,他会在逢年过节等特殊情况下,才跟你取得联系,然后就消失。

以一个程序小白的视角,去解释这些概念,肯定让人觉得傻的可笑吧,如果有说的不对的地方,还请真正的技术大拿帮忙指正一下。

程序和设计,都是有法可依有据可循的,当一个程序员跟你讨论二八原则简单法则,商量让你砍设计砍功能的时候,你肯定也更容易被说服,因为,你们是在同等的层面做沟通。

CentOS中yum里没有Git,需要手动安装。

首先需要安装git的依赖包

> yum install curl
> yum install curl-devel
> yum install zlib-devel
> yum install openssl-devel
> yum install perl
> yum install cpio
> yum install expat-devel
> yum install gettext-devel

下载最新的git包

> wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
> tar xzvf git-latest.tar.gz
> cd git-xxxx-xx-xx
> autoconf
> ./configure
> make | make install

验证是否安装成功:检查安装的版本

> git --version

———————————— 12-18日更新 ——————————

经朋友提示,在检查完以上依赖包后,还有可能出现一种错误,如下所示:

/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
 Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
 BEGIN failed--compilation aborted at Makefile.PL line 3.
 make[1]: *** [perl.mak] Error 2
 make: *** [perl/perl.mak] Error 2

提示是perl的问题,使用yum search perl-devel查出一些包。

> yum install perl-devel.i686

继续make | make install。 成功!

在安装RVM时候报错了,curl通过https下载的时候出错。

错误描述:

Downloading RVM from wayneeseguin branch stable

curl: (60) SSL certificate problem, verify that the CA cert is OK.
Details: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed More
details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a
"bundle" of Certificate Authority (CA) public keys (CA
certs). The default bundle is named curl-ca-bundle.crt; you can
specify an alternate file using the —cacert option. If this HTTPS
server uses a certificate signed by a CA represented in the bundle,
the certificate verification probably failed due to a problem with
the certificate (it might be expired, or the name might not match the
domain name in the URL). If you’d like to turn off curl’s
verification of the certificate, use the -k (or —insecure) option.

Could not download
https://github.com/wayneeseguin/rvm/tarball/stable‘. Make sure
your certificates are up to date as described above. To continue in
insecure mode run ‘echo insecure >> ~/.curlrc’.

经过原因查找,在验证证书的时候出现问题,是本地ssl判别证书太旧,导致报ssl证书错误

下载新的ssl本地判别文件

>> wget http://curl.haxx.se/ca/cacert.pem

并更名为ca-bundle.crt放置到默认目录

>> mv cacert.pem ca-bundle.crt  | mv ca-bundle.crt /etc/pki/tls/certs/

或者curl —cacert cacert.pem 方式指定调用