16

npm 和 cnpm

npm
  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用
npm命令
  • npm -v 来测试是否成功安装
  • 查看当前目录已安装插件:npm list
  • 更新全部插件: npm update [ --save-dev ]
  • 使用 npm 更新对应插件: npm update <name> [ -g ] [ --save-dev]
  • 使用 npm 卸载插件: npm uninstall <name> [ -g ] [ --save-dev ] Continue reading
15

http请求怎样实现TCP长连接、短连接

HTTP连接分为长连接和短连接,而我们现在常用的都是HTTP1.1,因此我们用的都是长连接。

这句话其实只对了一半,我们现如今的HTTP协议,大部分都是1.1的,因此我们平时用的基本上都是长连接。但是前半句是不对的,HTTP协议根本没有长短连接这一说,也正因为误解了这个,导致对于长连接一直不明不白,始终不得其要领,具体下面一段会说到。

网络上很多文章都是误人子弟,根本没有说明白这个概念。这里要强调一下,HTTP协议是基于请求/响应模式的,因此只要服务端给了响应,本次HTTP连接就结束了,或者更准确的说,是本次HTTP请求就结束了,根本没有长连接这一说。那么自然也就没有短连接这一说了。

之所以网络上说HTTP分为长连接和短连接,其实本质上是说的TCP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接这一说。

其实知道了以后,会觉得这很好理解。HTTP协议说到底是应用层的协议,而TCP才是真正的传输层协议,只有负责传输的这一层才需要建立连接。 Continue reading

14

Emacs编辑器的安装和简单使用方法

国际化


Emacs支持对多种文字的文本编辑,包括UTF-8在内的诸多编码系统,加上对多种字符集、文稿、书写系统,以及不同文化的书写习惯都提供了支持,使得世界上大多数语言的使用者都能通过Emacs进行文本处理。

Emacs还能通过调用诸如ispell这样的外部程序,实现多种语言的拼写检查。

跨平台性


Emacs是目前世界上最具可移植性的重要软件之一,能够在当前大多数操作系统上运行,包括类Unix系统(GNU/Linux、各种BSD、Solaris、AIX、IRIX、Mac OS X等等)、MS-DOS、Microsoft Windows以及OpenVMS等,还有移动Android平台以及iOS。 Continue reading

13

Node.js HTTP 服务器与客户端

Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的 HTTP 客户端。http.Server 是一个基于事件的 HTTP 服务器,它的核心由 Node.js 下层 C++ 部分实现,而接口由 JavaScript 封装,兼顾了高性能与简易性。http.request 则是一个 HTTP 客户端工具,用于向 HTTP 服务器发起请求,例如实现 Pingback(Pingback 是博客系统中用来通知文章被他人引用的一种手段,例如 WordPress 会自动解析文章中的链接,发送 Pingback 以告知链接被引用。 )或者内容抓取。 Continue reading

07

普通人会将BitcoinCash与Bitcoin弄混吗?

据Ambcrypto消息,“比特币耶稣”Roger Ver于莱特币创始人李启威(Charlie Lee)就其未能将比特币现金视为真正的比特币的原因进行了辩论。在辩论中,李启威表示自己不喜欢“Bitcoin Cash”这个名字,他认为Bitcoin Cash这一术语很容易在社区内产生混淆和歧义,因为用户很容易将Bitcoin和Bitcoin Cash混淆。

李启威在解释自己不喜欢的原因时举了一个例子:如果一个商人表示自己商店的任何商品都可以用比特币来购买,你认为比特币现金就是比特币,所以你用比特币现金付款,商家无法接受它,因为商家只接受比特币,而且这还不好沟通。李启威进一步补充说,由于会产生混淆,所以社区成员建议将“Bitcoin Cash”改为“Bcash”。 Continue reading

07

抢火车票程序-其实只是个监听+提醒的定时任务实现

用node写一个爬虫,每过一分钟就爬取12306,查询某一辆火车是否还有余票,有余票就给我发一封邮件,提醒我有余票了,然后我立马登录12306改签。抢票系统。

这个思路的有两点前提,第一、要自己提前确定好想买哪一辆火车,包括:火车车次,日期。第二、自己要经常在电脑前,只要一来邮件就去12306买票,这对于程序猿来说已经满足了。

代码实现

要想实现我的想法,运用到了2个node库:nodemailernode-schedule,分别实现邮件和定时执行功能。

因为12306是https协议的,所以node的http模块还是不行,这里可以用node的https模块。

当然12306还需要有浏览器证书,我代码里已经有了,大家下下来就可以用。 Continue reading

07

比特币开发原理浅析

随着勒索病毒的爆发,比特币更是近一步的被人们接触,机缘巧合之下,从大四开始接触比特币钱包的后台开发,我只做简单的介绍。

  • 比特币终端是一个跨平台的软件,运行在windows ,linux ,移动设备上,本文以Windows平台为例。
  • 服务器:windows 2012 server . Bitcoin Core . 由于同步钱包需要很多时间,并且现在同步容量应该在200G内(我最近一次是160g).
  • 先上图
v2-037efcc0b96b7f324c79775e011c3a44_hd
  • 你的钱包只是在官网上下载的一个客户端,每个钱包可以生成N个钱包地址,从别的钱包转账可以转到这N个地址中的一个,你最先收到钱包转账的通知,也就是确认数为1,但是这个时候区块链还没有发出确认通知,当确认数>=2的时候可以认为转账成功了。 Continue reading
30

HTTP连接管理之并行连接、持久化连接(Keep-Alive、Proxy-Connection)、管道化连接

串行事务处理时延

在介绍连接方式之前,先介绍一下串行事务处理时延

  • 如果只对连接进行简单的管理,TCP 的性能时延可能会叠加起来。比如,假设有一个包含了3个嵌入图片的Web页面。浏览器需要发起 4 个 HTTP 事务来显示此页面: 1 个用于顶层的 HTML页面,3 个用于嵌入的图片。如果每个事务都需要(串行地建立)一条新的连接,那么连接时延和慢启动时延就会叠加起来

watermarktype_ZmFuZ3poZW5naGVpdGkshadow_10text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDUzMjg1size_16color_FFFFFFt_70

  • 串行加载的另一个缺点:有些浏览器在对象加载完毕之前无法获知对象的尺寸, 而且它们可能需要尺寸信息来决定将对象放在屏幕的什么位置上,所以在加载了足 够多的对象之前,无法在屏幕上显示任何内容。在这种情况下,可能浏览器串行装 载对象的进度很正常,但用户面对的却是一个空白的屏幕,对装载的进度一无所知

一些提高HTTP连接性能的技术:

  • ①并行连接:通过多条 TCP 连接发起并发的 HTTP 请求
  • ②持久连接:重用 TCP 连接,以消除连接及关闭时延
  • ③管道化连接:通过共享的 TCP 连接发起并发的 HTTP 请求
  • ④复用的连接:交替传送请求和响应报文(实验阶段)

Continue reading

20

Nodejs mysql pool使用实例

Nodejs mysql pool使用实例,mysql连接池

在开发web应用程序时,连接池是一个很重要的概念。建立一个数据库连接所消耗的性能成本是很高的。在服务器应用程序中,如果为每一个接收到的客户端请求都建立一个或多个数据库连接,将严重降低应用程序性能。

因此在服务器应用程序中通常需要为多个数据库连接创建并维护一个连接池,当连接不再需要时,这些连接可以缓存在连接池中,当接收到下一个客户端请求时,从连接池中取出连接并重新利用,而不需要再重新建立连接。 Continue reading