在前面两个章节中已经介绍过MySQL的安装了,但是光会安装还不够,还需要会一些基本的相关操作。当然了,关于MySQL的内容也是非常多的,只不过对于linux系统管理员来讲,一些基本的操作已经可以应付日常的管理工作了,至于更高深的那是DBA(专门管理数据库的技术人员)的事情了。
异步编程有很多特有的代码设计模式,为了实现同样的功能,使用同步方式和异步方式编写的代码会有很大差异。以下分别介绍一些常见的模式。函数返回值使用一个函数的输出作为另一个函数的输入是很常见的需求,在同步方式下一般按以下方式编写代码:var output = fn1(fn2('input'));// Do something.
我们先大致看看 NodeJS 提供了哪些和进程管理有关的 API。这里并不逐一介绍每个 API 的使用方法,官方文档已经做得很好了。Process官方文档: http://nodejs.org/api/process.html任何一个进程都有启动进程时使用的命令行参数,有标准输入标准输出,有运行权限,有运行环境和运行状态。在 NodeJS 中,可以通过 process 对象感知和控制 NodeJS 自身进程的方方面面。
NodeJS 可以感知和控制自身进程的运行环境和状态,也可以创建子进程并与其协同工作,这使得 NodeJS 可以把多个程序组合在一起共同完成某项工作,并在其中充当胶水和调度器的作用。本章除了介绍与之相关的 NodeJS 内置模块外,还会重点介绍典型的使用场景。我们已经知道了 NodeJS 自带的 fs 模块比较基础,把一个目录里的所有文件和子目录都拷贝到另一个目录里需要写不少代码。
使用 NodeJS 操作网络,特别是操作 HTTP 请求和响应时会遇到一些惊喜,这里对一些常见问题做解答。问: 为什么通过 headers 对象访问到的 HTTP 请求头或响应头字段不是驼峰的?答: 从规范上讲,HTTP 请求头和响应头字段都应该是驼峰的。
我们先大致看看 NodeJS 提供了哪些和网络操作有关的 API。这里并不逐一介绍每个API的使用方法,官方文档已经做得很好了。HTTP官方文档: http://nodejs.org/api/http.html'http'模块提供两种使用方式:作为服务端使用时,创建一个 HTTP 服务器,监听 HTTP 客户端请求并返回响应。作为客户端使用时,发起一个 HTTP 客户端请求,获取服务端响应。
不了解网络编程的程序员不是好前端,而 NodeJS 恰好提供了一扇了解网络编程的窗口。通过 NodeJS,除了可以编写一些服务端程序来协助前端开发和测试外,还能够学习一些 HTTP 协议与 Socket 协议的相关知识,这些知识在优化前端性能和排查前端故障时说不定能派上用场。本章将介绍与之相关的 NodeJS 内置模块。NodeJS 本来的用途是编写高性能 Web 服务器。
使用 NodeJS 编写前端工具时,操作得最多的是文本文件,因此也就涉及到了文件编码的处理问题。我们常用的文本编码有 UTF8 和 GBK 两种,并且 UTF8 文件还可能带有 BOM。在读取不同编码的文本文件时,需要将文件内容转换为 JS 使用的 UTF8 编码字符串后才能正常处理。BOM 的移除BOM 用于标记一个文本文件使用 Unicode 编码,其本身是一个 Unicode 字符("\uFEFF"
遍历目录是操作文件时的一个常见需求。比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录。递归算法遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题。以下示例说明了这种方法。function factorial(n) { if (n === 1) { return 1;
我们先大致看看 NodeJS 提供了哪些和文件操作有关的 API。这里并不逐一介绍每个 API 的使用方法,官方文档已经做得很好了。Buffer(数据块)官方文档: http://nodejs.org/api/buffer.htmlJS 语言自身只有字符串数据类型,没有二进制数据类型,因此 NodeJS 提供了一个与 String 对等的全局构造函数 Buffer 来提供对二进制数据的操作。
NodeJS 提供了基本的文件操作 API,但是像文件拷贝这种高级功能就没有提供,因此我们先拿文件拷贝程序练手。与 copy 命令类似,我们的程序需要能接受源文件路径与目标文件路径两个参数。小文件拷贝我们使用 NodeJS 内置的 fs 模块简单实现这个程序如下。var fs = require('fs');function copy(src, dst) { fs.writeFileSync(dst, fs.readFileSync(src));
了解了以上知识后,现在我们可以来完整地规划一个工程目录了。以编写一个命令行程序为例,一般我们会同时提供命令行模式和 API 模式两种使用方式,并且我们会借助三方包来编写代码。除了代码外,一个完整的程序也应该有自己的文档和测试用例。因此,一个标准的工程目录都看起来像下边这样。
使用 NodeJS 编写的东西,要么是一个包,要么是一个命令行程序,而前者最终也会用于开发后者。因此我们在部署代码时需要一些技巧,让用户觉得自己是在使用一个命令行程序。例如我们用 NodeJS 写了个程序,可以把命令行参数原样打印出来。该程序很简单,在主模块内实现了所有功能。并且写好后,我们把该程序部署在 /home/user/bin/node-echo.js 这个位置。
虽然一般我们使用 JS 编写模块,但 NodeJS 也支持使用 C/C++ 编写二进制模块。编译好的二进制模块除了文件扩展名是.node外,和 JS 模块的使用方式相同。虽然二进制模块能使用操作系统提供的所有功能,拥有无限的潜能,但对于前端同学而言编写过于困难,并且难以跨平台使用,因此不在本教程的覆盖范围内。
暗时间:专注,保持高效学习能迅速进入状态能够保持状态抗干扰进度条:分治,有预估,有反馈不要过早退出循环,搜索引擎,前人们的经验兴趣遍地都是,专注和持之以恒才是真正稀缺的选择很多,敢于选择,别把不知道当成没有靠专业技能的成功是最具可复制性的,所以大家都可能靠此成功反思是让人得以改进自己的最重要的思维品质延迟选择是最差的选择一生的知识积累…
关注时代Java