node.js 下依赖Express 实现post 4种方式提交参数

上面这个图好有意思啊,哈哈, v8威武啊....在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据.上上一篇说到了关于http协议里定义的4种常见数据的post方法,详细介绍请点击查看.分别是这四种:www-form-urlencoded,form-data,application/json,text/xmlExpress 依赖 bodyParser 对请求的包体进行解析,默认支持:application/json, application/x-www-form-urlencoded, multipart/form-data.可惜对xml没有支持,需要自己代码来

node.js AES/ECB/PKCS5Padding 与其他语言的加密解密通用

关于什么是AES? 需要自己goole了解一下,今天就是简单和大家分享node.js下使用AES/ECB/PKCS5Padding 如何与其他语言通用加密解密.就像你的接口是node.js提供服务,而第三方平台是其他服务器端语言开发,比如php ,在第三方平台请求你的接口可能需要sign验证,假设我们使用了AES/ECB/PKCS5Padding 加密.AES/ECB/PKCS5Padding 斜线分隔的3部分分别是 算法/模式/填充量AES加密包括不同的模式,已经后面是否有填充量(为什么有填充量,就像我们引用的图片,一个AES块是16个字节,如果不满16的时候要不要填充?)算法/模式/填充

[转]四种常见的 POST 提交数据方式

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:<method> <request-url> <version><headers><entity-body></entit

node.js里面的全局变量

在node.js开发中,你一定用到过 console 类来打印一些东西或者debug.但是你在使用console类之前一定没有require 相关的包.有的人会说,console 是node.js核心自带模块,不需要require ,错了,这里容易理解错.核心代码库是你安装node.js时已经包含了并编译了此模块.核心模块定义在node源代码的lib/目录下.但是用的时候还是要require 一下.比如上一篇博文提到的node.js里querystring类的使用,这个就是核心代码库自带的,但是你用的时候还是要require('querystring');而我们常常拿来直接就用

node.js querystring类介绍

从名字就可以看出是一个和参数相关的帮助类,node.js原生自带,直接 require('querystring') 即可使用.此类一共包括4个方法:querystring.stringify(obj, [sep], [eq])querystring.parse(str, [sep], [eq], [options])querystring.escape querystring.unescape [内参数]表示可选参数, [sep]指分隔符 默认& , [eq]指分配符 默认=下面一个一个来介绍:一:querystring.stringify(obj,[sep],[e

关于node.js 验证 Oauth1.0 接口

下面的node.js调用Oauth接口并不是针对 腾讯开放平台.....具体不同的服务商可能在 oauth 基础上添砖加瓦,还要考虑具体的业务需求.相比Oauth2.0来说,Oauth1.0真的很繁琐......但是实际应用中碰到这个问题只能去解决,而不可能给对方打电话说,你赶紧把Oauth协议升级到2.0吧,1.0太繁琐,你想想将会发生什么事情 $#(+)&*@!!常常涉及到三方:Service Provider:服务提供者(如 腾讯,只是假设)Consumer:消费⽅,外部第三⽅方平台(如 一介布衣)User:用户 (登录用户)当然我的博客不是多用户博客,只是举例.前提条件:在服务

漫谈javascript 单线程异步io回调的特性

javascript经过浏览器大战的几次更新换代,终于一统江湖,稳坐第一把交椅,经过你会发现javascript语法和实现并不尽人意,但是丝毫不影响它的发展.我们最开始接触javascript应该大部分是从html中的js脚本开始,但是这种看似简单的语言稀里糊涂的用了好几年,也没有搞清楚它的一些原理机制,有没有躺枪!起码javascript在操作dom的时候用了各种事件回调,比如按钮,链接的点击,鼠标经过,获取焦点等等.在这个过程中,我们在dom上绑定一个事件回调函数 比如 onclick="doCheck()" 这个过程就是给dom元素注册了一个click 事件,并且绑定

async和eventproxy在流程控制上哪个更优秀

由于node.js特性异步IO,导致 node.js 开发常常让你头疼的是异步嵌套回调.一层一层的大括号嵌套让你当场就迷失在回调函数中,更不用说隔一段时间自己去维护这段代码的时候,恨不能砸显示器来泄愤.不过这个世界还是美好的,你遇到的问题大家也都遇到了,而且大牛们致力于减轻码农的各种node.js 的痛苦,开发出了高效好用的流程控制包,让你的逻辑变的清晰,维护起来一目了然.常用的有 async ,step ,eventproxystep本人接触很少,一直在用async,也是最近注意到了 eventproxy ,我想看看哪个性能更优,代码更加优雅,所以有了下面一个小demo.这个demo不去比较

友情链接做手脚 - 这里面水还挺深

这个世界总需要一些人来制定规则,然后另外一些人想办法去破坏规则,当然这部分人会受到一定惩罚.比较圆滑的一部分是钻规则的空子.就像出现搜索引擎以后,自然就出现了seo这个职业,人们就在使用各种各样的手段.所以搜索引擎定义了 白帽,黑帽及灰帽 .白帽是按照搜索引擎中规中矩去优化.黑帽是走捷径,seo作弊.灰帽就类似上面转空子的那拨人.这里面的水好深哦.今天就简单说下常常遇到的 友情链接交换.互联网也是一张网,所以我们把搜索引擎去收录页面的自动化程序比作蜘蛛,蜘蛛在网上爬来爬去,从A节点到B节点需要一条蛛丝相连,而互联网之间的相连全靠链接,就是 a 标签.链接在互联网世界中非常重要,搜索引擎的好多算

request 模拟post提交表单

node.js环境下,利用request 模拟post提交表单 需要 formstream 插件配合使用.npminstallrequestformstreamvarrequest=require('request') ,FormStream=require('formstream') var form = FormStream()   .field('name', '一介布衣')   .file('head_image', '100x100.png') var upload = request.post('http://yijiebuyi.com/page',

修改阿里云ssh默认22端口

站长都应该有服务器安全意识,虽然很少有人会盯上我这个小博客,但是害人之心不可有,防人之心不可无.如果遇到个好奇心很重的访客,他会试探你服务器上的端口.而我们常常使用的ssh 默认端口是22,一般站长修改的不多.也难免会有人想去暴力破解下密码.所以为了保护自己,我们可以修改ssh默认端口,提高被攻击的门槛.今天我就是要把阿里云vps默认ssh端口改掉.ssh的配置信息存放在这里 /etc/ssh/sshd_confignano/etc/ssh/sshd_config打开配置文件,你会密密麻麻看到罗列好处好多配置项,现在需要把鼠标移动到10-20行之间,找到 #Port 22这个注释是提示你当前s

我的vps运行4个站点,512M内存1M带宽下博客依然秒开不卡顿的原因是什么? - 站长必看

我从统计后台常看到有人site我的站,一部分是打算做友链的,另外还有一部分观望的站长,他们会发现一个固定IP上竟然绑了4个站,而且我的博客反应还足够快,一页列出40篇图文博客几乎是秒出,无延迟无等待,所以我收到一个站长的Email,大概就是问下我阿里云vps花了多少钱.站点加载速度快大概有下面几个因素:此blog是node.js开发的,异步IO处理还是有优势的.可以查看我的另外一篇博文,node.js和其他语言相比的优点在哪里?2.此blog没有用特别复杂的数据库,而且选择了小众化的google推出的kv型nosql数据库 levelDB.此数据库简约而不简单,它强悍的读写能力可以支撑十亿级别

userAgent判断客户端浏览器来自PC还是移动端

今天在三思悦网站通过微信上分享了一篇关于婴幼儿教育的帖子,等来到公司自己点进去一看,彻底凌乱了,看上去很多余的页头,样式完全错乱了,还有画蛇添足的页脚....移动浏览器可视化范围很小,所以充分利用有限的空间去展示有价值的东西,页头,页脚,侧边栏都是可以弱化,甚至不显示效果更佳.下面进行优化改造,我打算采用js来分辨pc浏览器还是移动端浏览器,pc端浏览器和移动客户端浏览器是通过 userAgent 来分辨,直接上代码:navigator.userAgent.match(/Android/i)//安卓客户端浏览器 navigator.userAgent.indexOf('iPhone&#

[转] Node.js一分为二:开源项目真需要“大管家”吗?

猎云网12月15日报道 (编译:西洲豹)Node.js作为服务器编程语言的后起之秀,常用来构建和运行Web应用,近日却爆出其社区出现分裂。由于对官方运营商Joyent公司在Node.js管理上的长期不满,多位核心开发者另立门户,创建了分支Io.js。从GitHub得知,Io.js的第一个版本(1.0.0 alpha1版)将于2015年1月13日发布。Node.js开源社区组织者Mikeal Rogers也是“另立门户”中的一员,他说:“我们不想被另外一家公司任命的管理人员牵着鼻子走,而是想让Node.js的贡献者拥有更多的控制权,并寻求更多的共识。”Io.js与Node.js的分离,再一次凸显

Express 3.x升级到4.x 优缺点

Express 是Node.js Web应用框架,他集成了一整套完善的api,让您能够快速搭建一套Web应用.安装Expressnpminstall-gexpress创建一个启动文件 index.jsvarexpress=require('express'); varapp=express(); app.listen(8000);nodeindex.js既可以成功运行起来应用创建一个路由app.get('/',function(request,response){ response.send("HelloWorld!"); });Expres

node.js cookie 操作

cookie是保存着http头信息中的.所以最原生的方法就是通过node.js的原生方法setHeader来设置.response.setHeader(name, value)方法接收key,value键值对获取 header 里面设置的值通过另外一个方法:response.getHeader(name)根据name 获取 value如下:设置cookieresponse.setHeader("Cookie", ["type=user", "name=一介布衣"]);获取cookieresponse.getHeader("C

AngularJS双向绑定 - 免费入门教程

angular.js快速开始在这一步你会增加一个让用户控制手机列表显示顺序的特性。动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情。请重置工作目录:git checkout -f step-4你应该发现除了搜索框之外,你的应用多了一个下来菜单,它可以允许控制电话排列的顺序。步骤3和步骤4之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。模板app/index.htmlSearch:<inputng-model="query"> Sortby: <selectng-model="orde

通过url跳转参数实现百度站内搜索

自google退出后,国内主流搜索引擎必须是百度,好多站长也抛google于脑后,一心针对百度优化.今天和大家分享一个百度站内搜索.(一)如果你用了百度的站长工具,左侧其他工具-->站内搜索就可以申请定制自己的站内搜索框.(二)之前三思悦站内搜索用google搜索,但是现在根本打不开的状态,让人很难堪,由于页面UI不想去变动的情况下如何用url跳转实现百度站内搜索呢.之前的google搜索是这样的跳转链接:https://www.google.com.hk/#hl=zh-CN&q=site:sansiyue.com+' + key上面的参数key是通过url编码后的关键词

jquery链式操作,dom操作,事件操作- 基础训练第二篇

jquery选择器之基础训练第一篇链式操作jQuery允许把一系列的操作像链条一项写出来,比如下面的形式$('select').find('[class=city]').find("option:selected").val(); 上面的表达式分步显示是这样的:$('select') 找到所有下拉列表$.find('[class=city]') 过滤class=city的下拉列表$.find('option:selected').val() 找到下拉列表被选中的项的值之所有jquery支持这种极

Error: invalid csrf token

当你的Express 升级到4.0+版本后,有没有遇到过下面这个问题.{ [Error:invalidcsrftoken] expose:true, code:'EBADCSRFTOKEN', statusCode:403, status:403 }上面的错误是在node.js 运行环境的命令行报出来的.页面直接返回了500服务器错误.我执行了什么操作?这是我的一个新站 三思悦 ,此站有个功能是邀请注册,不对外公开注册的.所以管理后台有个页面用来显示 邀请码,同时有个按钮,用来生成验证码,一次生成唯一不重复的50个.所以这个页面对应2个相同的url ,只不过get方式用来呈现为

jquery选择器之基础训练第一篇

jquery是前端开发者最喜欢的javascript开发框架之一,就像他的宣传语一样,写更少的代码,做更多的事情,现在拥有一大波开发者粉丝,甚至微软将它作为官方库,这一切说明jquery在开发者心中确实有很高的地位.jquery有一个强大的构造函数jQuery() 也就是我们常常简写的 $ ,这个构造函数强大之处在于,它能识别复杂的选择表达式进而找到你想要的元素.所以使用jquery的前提是会使用他的选择表达式,下面几种类似css选择器$(document)//选择整个文档对象 $('#documentID')//选择ID为myId的网页元素 $('a[name=me

主域名权重在搜索引擎看来最高

seo的摸索一直进行中,所以这个博客就成了个牺牲品,当初因为nginx做代理同时支持 www.yijiebuyi.com和 yijiebuyi.com 2个域名,熟不知在搜索引擎中这是2个完全不同的站点,所以决定把不带www的站点挑战到带www的站点当时看来百度权重1,www.yijiebuyi.com的收录略高于yijiebuyi.com 所以在nginx做了301跳转,当 yijiebuyi.com 过来的路径全部301跳转到www.yijiebuyi.com经过2个月的观察,发现了下面的问题:百度权重没有变化,goole pr值依旧没变yijiebuyi.com 的收录不亚于 www.y

levelDB前置匹配查询方法

上一篇简单说了levelDB存储复杂数据结构里面介绍了nosql 方式下kv数据如何存储复杂数据结构.今天用实例的方法说明下调用levelDB api的方法,因为一介布衣博客就是就是使用node.js 和 levelDB搭建而成,所以今天还是用此博客来举例说明.需要结合上一篇来学习,关于levelDB的api我简单做了一个封装,看这篇文章 levelup的使用方法 里面的 get ,put ,delete 都非常好理解,就是根据key去查询value ,插入一对key和value ,根据key删除value.createReadStream方法可能不是特别好理解,在levelDB存储复杂数据结

levelDB存储复杂数据结构

levelDB是一种轻量级kv类型数据库,且自己本身并不去维护索引.你可以理解成,levelDB数据库中只有其中的一对kv是有关系的,和其他任何数据没有关系.就拿 一介布衣 博客举例说明一下:博客中有nosql分类,点击nosql应该加载此分类下的所有博文并分页.首先,博文的存储类型如下key: blog.fse89fw8fwe89fwe98fweiwe9fvalue:{_id:'fse89fw8fwe89fwe98fweiwe9f',title:'levelDB存储复杂数据结构',content:'省略500字',category:'n

node.js 用函数实现 setTimeout 的效果

程序中常常有回到一种需求"等一等",就是让当前线程延时等待一下.之前发过一个帖子就是关于 node.js定时器setTimeout(function(){//实现内容},时间值)确实可以起到这样的效果,用起来也非常方便,匿名函数里是你的逻辑实现,后面的时间值是多少毫秒.我们可以自己实现一个方法来模拟setTimeout 函数functionmySetTimeout(ms){ varcurrentTime=newDate().getTime(); while(newDate().getTime()<currentTime+ms); }如何使用:console.log(&

node.js使用leveldb

上一篇简单说到leveldb数据库,此开源项目目前是支持处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。那么问题来了,node.js环境下如何使用leveldb数据库呢?node.js下需要第三方npm包 levelup 和 leveldown 来支持.安装依赖环境:npminstalllevelupleveldown提醒:levelup 版本最好用0.10.0或者更低版本,最新版本和leveldown编译时出问题.npm 安装指定版本依赖包npminstalllevelup@0.10.0或者你也可以这样npminstalllevel使用起来也非常简单.varlevelup

高性能kv数据库levelDB

LevelDB是google公司开发出来的一款超高性能kv存储引擎,以其惊人的读性能和更加惊人的写性能在轻量级nosql数据库中鹤立鸡群,下面简单说下这个文件存储引擎。次存储引擎是google公司2位大神级工程师开发而成.Jeff Dean其人:http://research.google.com/people/jeff/index.html,Google大规模分布式平台Bigtable和MapReduce主要设计和实现者。Sanjay Ghemawat其人:http://research.google.com/people/sanjay/index.html,Google大规模分布式平台GF

MongoDB连接字符串格式参数及说明

MongoDB的标准连接字符串格式及参数分析说明标准格式如下:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]mongodb:// 是一个必填的前缀,它标识当前字符串是标准连接格式。{{username:password@}}可选。给出用户名和密码后,驱动将在连接到数据库后尝试登录。host1 uri里唯一的必填项,数据库的连接地址。:portX 可选。默认连接到27017端口。/database 是希望连接到的数据库名,只有在提供 use

jquery 常用小功能收集

在新窗口打开链接$(document).ready(function(){ //全部链接新页面打开 $('a[href^="http://"]').attr("target","_blank"); //部分链接新页面打开,比如class='menu'的链接 $('a[class='menu']').click(function(){ this.target="_blank"; }); });<a href="http://www.op

markdown 语法总结学习

markdown 这种轻量级编辑工具确实给像我这种不会排版的人带来很多亮点,你只需要注重你的内容书写即可,语法也非常简单,常用就是下面这几种,好记好使唤,简单归纳总结一下:文字:*斜体***加粗**_斜体___加粗__上面2种方式都适用.删除线 (像这样 ~~悲剧啊,我被删除了~~)链接:[一介布衣](http://www.yijiebuyi.com)Headers:从#到######表是\<h1>到\<h6>#This is \<h1>##this is \<h2>###### this is <h6>List:1. 1112. 2

回到顶部