自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

深情小建

有些事,明知是错的,也要去坚持,因为不甘心;有些人,明知是爱的,也要去放弃,因为没结局;有时候,明知没路了,却还在前行,因为习惯了...

  • 博客(310)
  • 资源 (6)
  • 收藏
  • 关注

转载 鸟哥的Linux私房菜-第二部分-Linux文件、目录与磁盘格式

第8章 Linux磁盘与文件系统管理

2017-10-31 22:11:58 377 1

转载 鸟哥的Linux私房菜-第二部分-Linux文件、目录与磁盘格式

第7章 Linux文件与目录管理

2017-10-31 22:10:51 372

转载 鸟哥的Linux私房菜-第二部分-Linux文件、目录与磁盘格式

第6章 Linux的文件权限与目录配置

2017-10-31 22:09:51 412

转载 鸟哥的Linux私房菜-第一部分-Linux的规则与安装

第4章 安装CentOS 5.x与多重引导小技巧

2017-10-31 21:57:26 337

原创 4.1.3.简单模拟HTTP服务器

HTTP实际上是基于TCP的应用层协议,他在更高层次封装了TCP的使用细节,使网络请求操作更为易用。TCP连接是因特网上基于流的可靠连接,他为HTTP提供了一条可靠的比特传输管道。从TCP连接一端输入的字节会从另一端以原有的顺序、正确地传送出来。如果所示: TCP的数据是通过名为IP分组(或IP数据报)的小数据块来发送的。这样的话,如图的HTTP协议所示,HTTP就是“HTTP over

2017-09-18 23:05:26 1108

原创 4.1.2.HTTP报文格式解析

不同的请求方式,他们的请求格式可能是不一样的,请求格式就是我们所说的的报文格式。但是,通常来说一个HTTP请求报文由请求行(request line)、请求头(header)、空行和请求数据4个部分组成,如图给出了请求报文的一般格式: 1.起始行 报文的第一行就是起始行,在请求报文中用来说明要以什么方式做什么请求,而在响应报文中粗略说明了报文的执行结果。2.首部字段 起始行后面有零个或

2017-09-18 22:57:27 842

原创 4.1.HTTP网络请求原理

HTTP是一种应用层协议,它通过TCP实现了可靠的数据传输,能够保证数据的完整性、正确性,而TCP对于数据传输控制的优点也能够体现在HTTP上,使得HTTP的数据传输吞吐量、效率得到保证。对于移动开发来说,网络应用基本上都是C/S架构,也就是客户端/服务器架构。客户端通过向服务器发起特定的请求,服务器返回结果,客户端解析结果,再将结果展示在UI上。客户端与服务器的交互如下图: 详细的交互流程有

2017-09-18 22:33:57 639

原创 HTTP网络请求原理

HTTP是一种应用层协议,它通过TCP实现了可靠的数据传输,能够保证数据的完整性、正确性,而TCP对于数据传输控制的优点也能够体现在HTTP上,使得HTTP的数据传输吞吐量、效率得到保证。对于移动开发来说,网络应用基本上都是C/S架构,也就是客户端/服务器架构。客户端通过向服务器发起特定的请求,服务器返回结果,客户端解析结果,再将结果展示在UI上。客户端与服务器的交互如下图:详细的交互流程有如下几步

2017-08-30 23:36:19 474

转载 只有20行Javascript代码!手把手教你写一个页面模板引擎

原文地址:http://blog.jobbole.com/56689/AbsurdJS 作者写的一篇教程,一步步教你怎样用 Javascript 实现一个纯客户端的模板引擎。整个引擎实现只有不到 20 行代码。如果你能从头看到尾的话,还能有不少收获的。你甚至可以跟随大牛的脚步也自己动手写一个引擎。以下是全文。不知道你有木有听说过一个基于Javascript的Web页面预处理器,叫做AbsurdJS。

2017-07-30 23:19:57 454

原创 第10章-为Node.js应用上线做准备

诚然,不同应用在架构、所用框架以及预期目标等方面各不相同。 可是,它们仍然有很多共性值得我们关注,如环境变量、多线程、日志和错误处理等。 1、环境变量 2、生产环境下的Express.js 3、生产环境下的Socket.IO 4、错误处理 5、错误处理工具Node.js domains 6、使用Cluster处理多线程 7、使用Cluster2处理多线程 8、事故日志和监控 9

2017-06-18 19:06:15 316

原创 第9章-WebSocket、Socket.IO和DerbyJS的实时应用程序-9.3.用DerbyJS,Express.js和MongoDB搭建一个在线协作的代码编辑器

Derby是一个新的,成熟的MVC框架,作为Express的中间件使用。 Express.js是使用中间件概念增强应用程序功能的一个流行的node框架。 Racer也支持Derby,他是一个数据同步引擎,类似Handlebars的模板引擎,拥有很多其他特性。 Meteor和Sails.js是另一个实时全栈Node.js的MVC框架,可与DerbyJS相媲美。 不过Meteor更保守些,他往

2017-06-18 19:05:30 809

原创 第9章-WebSocket、Socket.IO和DerbyJS的实时应用程序-9.2.Socket.IO和Express.js

大多数的实时Web应用程序中,服务器和客户端之间的通信发生在响应报文里,或者是对用户行为的响应,或者是从服务器获取数据更新的结果。安装Socket.IO $npm install [email protected] –save package.json文件$npm install{ "name": "socket-express", "version": "0.0.1",

2017-06-18 19:04:11 488 1

原创 第9章-WebSocket、Socket.IO和DerbyJS的实时应用程序-9.1.WebSocket、Socket.IO和DerbyJS的实时应用程序

实时应用程序:游戏,社交媒体,各种工具,服务和新闻HTML5的WebSocket开创了实时连接的新标准。 在服务器端,Node.js有一个高效、非阻塞的I/O平台,非常适合处理后端到浏览器JavaScript和WebSocket的任务。一、什么是WebSocket1.WebSocket是浏览器(客户端)和服务器之间的一种特殊的通信通道,他是一个HTML5协议。 2.WebSoc

2017-06-18 19:03:39 427

原创 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.5.小结

REST API服务器和客户端(移动端、Web端、网页前端)之间这种松耦合的关系为程序提供了更佳的可维护性。 他是TDD/BDD的绝佳拍档。 另外,NoSQL数据库(例如:MongoDB)特别适合用于REST API,我们不需要为他定义复杂的模式,只需要把数据丢给他,他就会保存下来。

2017-06-18 19:03:18 392

原创 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.4.重构:使用Hapi搭建REST API服务器

Hapi是一个企业级的框架。他比Express.js复杂,功能更加丰富,更适合大团队开发使用。由Walmart Labs的Eran Hammer维护。Hapi是一个框架,他的日志功能十分强大。 安装好Hapi后一、创建程序入口文件hapi-app.js//1.引入依赖模块var hapi = require('hapi'), mongoskin = require('

2017-06-18 19:02:45 633

原创 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.3.使用Express和Mongoskin实现REST API服务器

创建index.js作为程序的入口文件 //1.引入依赖var express = require('express'), mongoskin = require('mongoskin'), bodyParser = require('body-parser'), logger = require('morgan')//2.创建一个服务器对象var app = e

2017-06-18 19:02:15 397

原创 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.2.项目依赖

一、项目依赖现在开始我们的项目, 把依赖写入到package.json文件中{ "name": "rest-express", "version": "0.0.1", "description": "REST API application with Express, Mongoskin, MongoDB, Mocha and Superagent", "main":

2017-06-18 19:01:47 451

原创 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.1.REST(表述性状态传递)Representational State Transfer

REST: 即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,

2017-06-18 19:01:13 439

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.10.Express.js+Mongoose=真正的MVC

为了避免在ORM中重建其他所有无关的组件,比如templates、routes以及forth,

2017-06-18 19:00:37 295

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.9.修改原型的行为

Mongoose允许我们在原型中自定义一些方法,如:取值器(get)、赋值器(set)以及默认方法(default) 其他一些验证和一些有用的方法也都可以自定义。下面定义了一个set方法(当赋值时将他转换为小写格式)、get方法(当数字过千时,在千位后增加逗号)、default方法(生成全新的ObjectId对象),以及validate方法(当调用save()时触发次方法,检查是否为emai

2017-06-18 18:59:48 333

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.8.虚拟字段

虚拟字段并不真实存在于数据库中,但是在Mongoose文档中和普通字段中扮演着同样的角色。 简单来讲,虚拟字段除了不会存入数据库外,其他方面和普通字段没有区别。一、用虚拟字段创建聚合字段是很不错对选择。例如:如果我们的系统需要有姓、名以及全名等字段(全名不过是姓和名连接起来),所以除了姓、名的值不需要再存储全名的值。 我们需要做的只是在虚拟字段里将姓和名连接起来。二、其他用

2017-06-18 18:59:00 574

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.7.嵌套的文档

往NoSQL数据库中存储模型很适合使用嵌套的文档。 例如:我们可以使用一个单独的集合(users)代替两个集合(posts和users),这个单独集合中的每一项都包含posts决定是使用分开的集合还是嵌套的文档不止是一个代码结构的问题,这个问题的答案取决于用途。 例如:如果posts只是在users的上下文中用到,那么最好用嵌套的文档。 然而,如果博客里多个posts需要独立于他们的us

2017-06-18 18:58:37 500

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.6.使用population建立关系和连接

虽然,在NoSQL类的数据库,例如MongoDB中是不存储关系数据的,但是我们可以在应用层进行存储。 Mongoose提供了这一特性,名为population。 他允许我们使用不同的集合来填充文档的特定部分。 假设我们有posts和users两个集合 我们可以在user的原型中引用posts:var mongoose = require('mongoose'), Schem

2017-06-18 18:58:06 665

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.5.Mongoose模型

就像在很多其他ORM中一样,在Mongoose中,模型都是最基础的对象。 将原型编译为一个模型,使用mongoose.model(name, schema)即可 如:var Book = mongoose.model('Book', bookSchema);第一个参数是一个字符串,我们可以使用它来调用这个实例。 通常,这个字符串和模型的变量名一致(例如:Book)我们可以使用

2017-06-18 18:57:38 429

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.4.自定义静态方法和实例方法

除了数十个内建的Mongoose模型方法,我们还可以增加一些自定义的方法。 比如,当我们实现自定义实例方法buy()后,就可以调用practicalNodeBook文档的buy()方法。bookSchema.method({ buy: function(quantity, customer, callback){ var bookToPurchase = this

2017-06-18 18:57:12 400

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.3.使用钩子保持代码的逻辑清晰

在复杂的、拥有很多相互关联对象的应用中,我们可能会在保存一个对象之前想执行某些特定的逻辑。 钩子(Hooks)正是存储这些逻辑的好地方。 例如,我们可能想在保存book这个文档之前上传一个PDF:bookSchema.pre('save', function(next){ // 准备保存 // 上传PDF return next();});又或者,在删除b

2017-06-18 18:56:32 317

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.2.Mongoose的原型

原型是一个JSON格式的类,这个类包含一些关于文档的类型、属性等的信息。 如果需要,他也可以存储一些验证信息和默认值。他还可以包含一些业务逻辑以及其他重要的信息。 换句话说,原型可以作为文档的蓝图。模型创建的时候需要原型(即:原型被发布为模型) 所以在我们使用模型的属性前,需要先定义他们的原型,例如,book原型中定义了字符串类型的name属性。var bookSchema = mo

2017-06-18 18:55:25 336

原创 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.1.Mongoose的安装

Mongoose是一个基于Node.js和MongoDB的高级ORM类库。 使用ORM有很多优势,不只是利于组织代码或易于开发这么简单。 典型的ORM是现代软件工程至关重要的一部分。Mongoose能从数据库中提取出任何信息,且应用程序代码只能通过对象以及他们的方法进行交互。 ORM允许指定不同类型对象之间的关系,也允许将业务逻辑(与这些对象相关的)放入类中。另外,Mongoose拥

2017-06-18 18:54:11 579

原创 第6章-在Node.js应用中使用session和OAuth进行用户认证和授权

今年来,Web应用逐渐不再相互独立,安全性也日益重要。 作为开发者,我们不仅被鼓励使用市面上众多的第三方服务(如QQ、微信、微博等),也被希望作为服务商向外界提供服务(如提供API接口)。在这种情况下,我们需要使用某些手段来确保我们的应用以及应用间通信的安全,例如:基于token的用户认证、OAuth授权协议等。1、使用Express.js中间件实现权限管理 2、基于token的用户认证 3、

2017-06-06 22:43:01 521

原创 第5章-MongoDB、Mongoskin特性-5.5.Mongoskin的主要方法介绍

Mongoskin比MongoDB的原生驱动提供更好的API。像之前那样,在NPM上安装一个模块$npm install [email protected]和数据库的连接var mongoskin = require('mongoskin'), dbHost = '127.0.0.1', dbPort = 27017;var db = mongoskin.db(dbHost + ':' + db

2017-06-04 23:52:05 868

原创 第5章-MongoDB、Mongoskin特性-5.4.Node.js版原生MongoDB驱动示例

首先,先安装MongoDB的Node.js版原生驱动:$npm install [email protected]不要忘了包含package.json文件的依赖关系:{ "name": "node-example", "version": "0.0.1", "dependencies: { "mongodb": "1.3.23", ... }

2017-06-04 23:49:31 487

原创 第5章-MongoDB、Mongoskin特性-5.3.用控制台操作Mongo

在mongodb的bin目录输入如下命令: mongo,或者直接双击mongo.exe运行 如果已经将MongoDB的位置添加到了$PATH里,可以直接输入mongod如果看到:MongoDB starting: pid=7218 port=27017… 这意味着MongoDB数据库服务正在启动。默认监听http://localhost:27017。这是访问MongoDB脚本和应用的主机和端口

2017-06-04 23:37:08 399

原创 第5章-MongoDB、Mongoskin特性-5.2.简单且正确安装MongoDB

一、Windows下安装1、下载安装包:mongodb-win32-x86_64-2.6.6.zip解压如下: 2、创建目录D:\mongodb下建立data文件夹,然后在该data文件夹下分别建立db,log两个文件夹,至此mongodb下有以下文件夹 D:\mongodb\bin D:\mongodb\data\db D:\mongodb\data\log 在log目录下创建一个日志文

2017-06-04 23:34:43 382

原创 第5章-MongoDB、Mongoskin特性-5.1.NoSQL数据库

NoSQL数据库、也叫非关系数据库,其开源、水平扩展容易,适合用于分布式系统。NoSQL数据库比起传统数据库更适合处理大数据。实现的关键是数据库实体之间的关系并不存储在数据库本身(没有更多的查询);他们转移到了 应用层或者对象关系映射(ORM)水平–在这里,就是Node.js代码处理的部分。选用NoSQL的另一个理由是,他是无模式数据库,对于原型开发和敏捷迭代是近乎完美的(更加推荐)。MongoDB

2017-06-04 23:25:01 625

原创 第4章-模板引擎Jade和Handlebars-4.6.Express.js中Jade和Handlebars的用法

默认情况下,Express.js 4.x 和 3.x可以使用提供给res.render方法的模板扩展,也可以使用通过view engine设置的默认扩展,去调用模板库里的require方法和__express方法。换句话说,Express.js是在外部实例化模板引擎库的,该库需要有__express方法。当模板引擎库不提供__express方法,也不提供有参数(path、options、cal

2017-05-06 22:31:04 689

原创 第4章-模板引擎Jade和Handlebars-4.5.单独使用Handlebars

可以通过NPM安装Handlebars,用命令$npm install handlebars 或$npm install handlebars --save.示例: handlebars-example.js文件如下:var handlebars = require('handlebars'), fs = require('fs');var data = { title: '

2017-05-06 22:30:43 491

原创 第4章-模板引擎Jade和Handlebars-4.4.Handlebars的语法

Handlebars库是另一个模板引擎。他继承自Mustache,所以大部分语法是兼容Mustance的。但Handlebars也新增了很多特性,比如superset。在设计上,Handlebars不同于Jade,他不允许在模板里写很多JavaScript逻辑,这有助于保持模板的简洁和严格相关的数据表示。Jade和Handlebars的另一个显著的不同是,Handlebars要求书写完整的

2017-05-06 22:30:04 611

原创 第4章-模板引擎Jade和Handlebars-4.3.单独使用Jade

模板引擎并不总是和Node.js一起使用(也不总是和框架一起用,比如Express.js)有时,我们可能只是单独使用Jade,比如生成一个邮件模板,发布前预编译Jade和调试等。一、安装Jade模块1.用命令$mkdir mode_modules创建一个空文件夹 2.用命令$npm install jade -save安装并添加jade到package.json例:

2017-05-06 22:28:42 492

原创 第4章-模板引擎Jade和Handlebars-4.2.Jade的语法和特性

Jade是Node.js的一个模板引擎,他借鉴了Haml,语法和Haml相似,支持空格缩进。一、标签一行开头的任何文件都会被默认解释成HTML标签,Jade的主要优势是为HTML元素同时渲染闭合和开始标签,标签后的文本和空格会被解释成内联HTML,也就是元素的文本内容。如:Body div h1 Practical Node.js

2017-05-06 22:27:17 748

原创 第4章-模板引擎Jade和Handlebars-4.1.模板引擎

模板引擎是一个库,或者是一个使用一定规则/语言来解释数据并渲染视图的框架。在Web应用中,视图就是HTML页面(或页面的一部分),也可以是JSON或XML文件; 在桌面程序中,也可以是图形用户界面GUI。对应到熟悉的MVC框架,模板属于视图层。一个模板可以动态生成无限多个页面, 一处修改,全部变更。

2017-05-06 22:26:46 544

自定义吐司(Toast)

自定义吐司toast ★如果要弹出来 可以相应触摸点击事件的窗体,需要做3件事情。★ * 1.params.type 设置为可以相应触摸事件 * 2.修改窗体类型 电话优先级窗体类型TYPE_PRIORITY_PHONE * 3.设置权限 android.permission.SYSTEM_ALERT_WINDOW

2014-07-20

Android系统上层源代码-系统设置

Android系统上层源代码-系统设置,三击Android设置界面的版本号弹出logo的源代码研究

2014-07-17

Android系统上层所有应用的源代码

Android系统上层所有应用的源代码: 一、packages 1.1apps 包含很多... 1.2experimental 包含很多... 1.3inputmethods 包含很多... 1.4providers 包含很多... 1.5wallpapers 包含很多...

2014-07-17

小人吐笑脸案例源代码

小人吐笑脸案例源代码 1、点击屏幕任意位置小人会吐出笑脸 2、四个方向键可以控制小人的上下左右移动

2014-05-02

Android选项卡viewpager入门到精通-源代码2

Android选项卡viewpager入门到精通-源代码2 1、实现了滑动效果 2、实现了点击效果

2014-04-27

Android选项卡viewpager入门到精通-源代码1

Android选项卡viewpager入门到精通-源代码1

2014-04-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除