加勒比海盗5百度云资源云

node.js 接收get请求
我的图书馆
node.js 接收get请求
Get 请求的相关方法一定在下,有data、end、close3个事件,method、url、headers、trailers、httpVersion、connection6个属性,setEncoding、pause、resume3个方法。
url属性下有一段说明描述了怎么解析get请求:
GET /status?name=ryan HTTP/1.1\r\n Accept: text/plain\r\n \r\n
'/status?name=ryan'
node& require('url').parse('/status?name=ryan') { href: '/status?name=ryan', search: '?name=ryan', query: 'name=ryan', pathname: '/status' }
node& require('url').parse('/status?name=ryan', true) { href: '/status?name=ryan', search: '?name=ryan', query: { name: 'ryan' }, pathname: '/status' }说明中提到了require('url')和require('querystring') 可以分别查看API的和小节
按照说明试一下吧(node& 表示 在命令行里敲代码)
那就结合 hello world 写一个动态的hello world
[javascript]
var&http&=&require('http');&&
var&server&=&http.createServer();&&
server.on('request',function&(req,&res){&&
&&res.writeHead(200,&{'Content-Type':&'text/plain'});&&
&&var&name&=&require('url').parse(req.url,true).query.name&&
&&res.end('Hello&World&'&+&name);&&
server.listen(1337,&"127.0.0.1");&&
console.log('Server&running&at&http://127.0.0.1:1337/');&&将以上代码保存到 &example3.js文件中,在cmd中敲入node&example3.js
在浏览器地址栏中敲入 &http://127.0.0.1:1337/hello?name=myname
挺简单的,下一节讲复杂的post
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
试看一个express的Node网站,如果不开PM2或者Cluster。那么意味着只有单线程在处理Node的请求,现在有很多人一起请求,是不是这些人会排队,一个一个的处理呢?如果逻辑中间有异步代码,那么在回调之前(正在Io,是不消耗Cpu的,Node在等待之中),此时Node在干什么?不太可能在Io期间Node去处理其他请求吧?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
就是去处理其他请求。
Node.js的主线程是不会处于block(等待)状态的,除非使用fs.readFileSync等node api里的同步方法。
Node.js使用的是Reactor模式,凡是遇到需要block的地方,要么使用系统的异步API(网络请求),要么扔到线程池里(文件读写)去做,主线程接着处理其他请求。
简单描述Node.js主线程的工作顺序:
执行到时的Timer
检查异步操作队列里是否有已完成的,并执行回调
检查新的连接
所以多请求并发的时候,Node.js本质上是在排队,但是每个人等待的时间都很短,除非每个请求都耗费大量CPU时间。一般来说web server大多数时间都在等IO(网络请求),所以Node.js这种Reactor模式的Server对于CPU利用是相对高效的,避免了线程切换导致的的CPU上下文切换。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
说的比较专业。
简单说,并不一定是服务完一个人再服务下一个的。
总有一些操作,很少(或几乎不)占用cpu时间,但是得等待硬盘/数据库去搜索资料。这时候,我们用回调来实现异步编程,让一个句柄去做数据io,然后node就开始服务下一个人了。
回调的前提满足后,也要排队,加工数据返回数据。
楼主可以去研究一下异步的定义及其必要性。
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 Appnodejs是单线程的,是不是意味着一个请求要花长时间计算时,_nodejs吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:11,126贴子:
nodejs是单线程的,是不是意味着一个请求要花长时间计算时,收藏
nodejs是单线程的,是不是意味着一个请求要花长时间计算或读取数据时,其他的请求就要阻塞,等待前面的请求完成???
好像,正好相反
实际上很多网络程序并不是在计算,而是在操作数据库和文件,这些东西跟 cpu 关系不大,使用异步非阻塞模型,实际上对于这些请求的处理更快,因为它是单线程,……
给你举个例子,两个setTimeOut,两个时间都写1000,但是第一个回调里进行1000万次的循环,然后打印一句话,第二个回调只打印一句话。你觉得执行顺序是什么样的
是的,应该避免同步的密集运算,可以拆分后用nextTick加入事件循环 避免阻塞
计算会 但读数据肯定不会 因为读数据都是异步读取的
非阻塞也得有非阻塞的实现去支持.说白了就是提高单线程的执行能力.
同步运算的话会,可以用异步的方式操作空闲的时候就运算,计算完了就回调,很快的
我理解的话,因为基于回调函数的,所以每个cpu操作都很快,文件读写或数据库操作没完成前,已经异步做其他事情去了
一句话回答,就是阻塞cpu,不阻塞I/O。CPU上只有一个线程,所以当程序进行计算,占着CPU时,一切其他消息都被阻塞了。而当程序需要等待网络或磁盘等I/O设备时,CPU是空闲的,这个线程就会转去做其他事情。callback的形式只是打破了顺序执行程序对I/O操作的依赖性,并没有使得cpu操作更快(相反,由于javascript本身的特性,它的cpu效率相对于很多其他语言是更低的)。但由于大多数web server都是I/O intensive的,等待I/O的时间远大于cpu计算的时间,所以node会比其他的程序快。
回答你另一个问题,node处理新的请求不需要等前一个请求完成。因为在node中响应一个http请求并不是通过一个event完成的。比方说你在第一个event的callback中解析request,然后提交数据库查询;第二个event中接收数据库查询结果,并触发读取模板文件;第三个event中把数据库查询结果填进模板,做成response的页面,发给client,完成http请求的处理。node中每个event callback是原子操作,必须等前一个完成才能进行下一个,但一个http响应被拆成了几个callback来完成,在它们之间是可以穿插其他的任务的。
其实,node还有子进程,当某些运算太过费时,可以丢给子进程运算,然后继续下个队列,当子进程运算完成后,再返回到队列中来,这样就可以充分利用多核CPU,而不是仅仅依靠CPU的单核来进行运算。
虽然是单线程,但是可以通过异步模拟多线程,不会阻塞
和js 还是不一样的!
不会啊,单线程 和多线程
在于同时执行任务的多少,执行一个任务的话,单线程,和多线程 没什么区别,同时执行多个任务的话,多线程的优势就体现出来了,其实,计算机没有办法在同一时间同时处理的,这种看起来像是同时执行,实质上还是要排队执行,不知道说的对不对,差不多是这个意思
现在可以用promise呀。
node是异步的
node的异步逻辑通过调用libuv来实现。你去拿libuv写写程序就知道了。libev也成。简单来说就是有个全局的eventloop,你拿libuv写程序的时候能自己看到。
登录百度帐号推荐应用

我要回帖

更多关于 加勒比海盗5网盘下载 的文章

 

随机推荐