本文讲的是DockOne微信分享(六十九):微服务选型之Modern Node.js【编者的话】目前Node.js的发展非常快,大家可能还停留在:Node.js性能很好,Node.js里都是回调,写起来很恶心,Node.js只能做前端工具,Node.js是单线程部署会有问题,以及这样的八卦《uber用go替代Node.js重写了地理位置服务》...

可是真相呢?

在微服务盛行的今天,为什么我们要选用Node.js去构建微服务呢?本次分享将试图从以下2个方面给出答案:
  • 被误解的Node.js:除了性能,都是病?
  • 现代的Node.js:构建微服务利器。

Mixu说的最经典的一句话:
Everything runs in parallel except your code!(在Node中)除了代码,一切都是并行的!

1. 被误解的Node.js:除了性能,都是病?

  • 单线程,会死?
  • 异步(callbackhell)太恶心?
  • mongodb事务?
  • 接入层?
  • Uber用go替代Node.js重写了地理位置服务?

1.1 单线程,会死?

不是Node.js太弱,而是你不会用。

先不要生气,听听看,为什么我会这样说?
1.1.1 Node.js为什么是单线程呢?
别只看缺点,先知道缺点是为什么来的?Node.js为什么是单线程呢?
Node.js中的第一个基本论点是I/O是昂贵的:
2.png

当前编程技术中最大的浪费是等待I/O的完成。这里有几种用来处理这个性能影响的方法(来自Sam Rushing):
  • 同步:你同一时间只处理一个请求,每次一个。优点:简单;缺点:任何一个请求都可以挂起所有其他请求。
  • fork新进程:你启动一个新进程来处理每个请求。优点:简单;缺点:无法很好的扩展,大量的连接意味着大量的进程。fork()是Unix程序员的锤子。因为它可用,所以每个问题看起来都像一个钉子。但是通常情况下都是大炮打蚊子。
  • 线程:启动新的线程来处理每个请求。优点:简单,比使用fork对内核更加友好,因为线程占用更少的系统开销;缺点:你的机器可能没有线程,而且面向线程的编程由于担心对共享资源的访问控制,可能会很快地变得非常复杂。

第二个基本的论点是「每个连接一个线程」的模式是很耗内存的:[比如每个人都展示过的关于Apache与Nginx对比过的内存消耗图]。

Apache是多线程的:它的一个请求产生一个线程(或者进程,取决于配置文件)。随着并发连接数的增加以及为了服务更多的并发客户端而对更多线程的需求,你可以看见系统统开销是如何吃掉内存的。Nginx和Node.js不是多线程,因为多个线程和多个进程会需要大量的内存。它们都是单线程的,但是是事件驱动。通过在一个线程中处理多个连接,这消除了由上千个线程/进程所产生的系统消耗。

至此理解Node.js的2大核心:(单线程的)异步事件和(单线程的)非阻塞IO。
3.png

其实最大的改变是,强制开发写代码的时候要以异步模式来思考,全部异步才会让大家在异步往同步的路上做更多的思考,才有现在的更加丰富流程控制(下一小节会详细讲,可以同步哦)。
1.1.2 会死?
单线程非常脆弱,随便弄点什么异常都会挂掉。

举个最简单的例子:
$ npm init -y
$ npm install --save koa@next
$ touch app.js

创建Node.js项目标准流程:
  1. npm初始化,不论项目大小,它自己必须是一个模块,必须要有package.json;
  2. 使用npm安装koa模块,安装之后才可以使用;
  3. 创建入口文件app.js。

app.js
const fs  = require('fs');
const Koa = require('koa');
const app = new Koa();// response
app.use(ctx => {
fs.readFile('somefile.txt', function (err, data) {
if (err) throw err;
console.log(data);ctx.body = 'Hello Koa';
});
});app.listen(3000);  

执行,然后访问http://127.0.0.1:3000/,页面显示Not Found
$ node app.js
/Users/sang/workspace/github/modern-nodejs/app.js:8
if (err) throw err;^Error: ENOENT: no such file or directory, open 'somefile.txt'
at Error (native)  

如果只有1个接口,挂了就挂了,可绝大部分情况是一台服务器上至少有有几个,几十个,甚至更多接口,不能因为你一个接口异常就导致所有的都挂掉啊?

你心里一定在骂:太浪费了。。。
1.1.3 捕获uncaughtException
改进版本app2.js
const fs  = require('fs');
const Koa = require('koa');
const app = new Koa();// response
app.use(ctx => {
if (ctx.path == '/good'){
return ctx.body = 'good'
}
fs.readFile('somefile.txt', function (err, data) {
if (err) throw err;
console.log(data);ctx.body = 'Hello Koa';
});
});process.on('uncaughtException', function (err) {
console.log(err);
})app.listen(3000);  

使用process.on('uncaughtException', function (err) {})来处理,这样就不会crash了。可是很多应用都没有做这样的基本处理,不死才怪呢?
1.1.4 捕获异常
app3.js
const fs  = require('fs');
const Koa = require('koa');
const app = new Koa();// response
app.use(ctx => {
if (ctx.path == '/good'){
return ctx.body = 'good'
}fs.readFile('somefile.txt', function (err, data) {
try {if (err) throw err;console.log(data);ctx.body = 'Hello Koa';} catch (e) {// 这里捕获不到 readCallback 函数中抛出的异常console.log(e)
} finally {console.log('离开 try/catch');
}
});});app.listen(3000);

  1. Node.js里有约定,同步代码才能捕获异常,异步代码不能使用;
  2. 代码里都是try/catch太恶心了……
  3. 使用try/catch成本较高,除非必要,一般不用。

所以这种可能性也必将小的。
1.1.5 forever
当遇到crash的时候,再重启就好了么?Node.js很早就有了专门做这个模块。

先全局安装这个模块,然后在terminal里就有forever命令
$ [sudo] npm install forever -g

然后以app.js为例
$ forever start app.js

此时访问http://127.0.0.1:3000/,页面显示Not Found,崩溃,然后forever处理crash事件,然后再起一个Node线程,于是又可以处理了……

forever就是打不死的小强!
1.1.6 小集群:单台服务器上多个实例
至此,上面讲的都是单个实例。现在的服务器大多是多核的,所以无法充分利用多核优势。比较好的办法就是使用Cluster模块

Cluster模块(集群)是Node.js在0.10之后就有的模块,专门用于解决多核并发问题。

大家知道,Nginx或HAProxy等集群都是1主多从,主机的端口通过负载均衡算法,将请求转发到slave机器上。多机器是这样的,在1台机器上起多个实例,对这些实例进行集群也是一样的原理。

这里推荐使用pm2模块,绝大部分的产品环境部署都使用pm2的,以前有用forever的,但大部分都转到pm2了。

先全局安装这个模块,然后在terminal里就有pm2命令
$ [sudo] npm install pm2 -g
$ pm2 start app.js -i 0 --name "modern-nodejs"

4.png

是不是非常简单?

当访问http://127.0.0.1:3000/,页面显示Not Found,崩溃,此时看一下pm2的状态:
5.png

可以看到第一个线程,restart显示为1,也就是说它也也有forever一样的功能,当崩溃的时候它会自动创建新的线程来继续服务。

pm2非常强大,如无缝重载,各种监控,日志,部署等,自己摸索吧
1.1.7 大集群:多台机器
这就和其他语言一样了,常见的Nginx或HAProxy类的即可。

这里就不熬述。
1.1.8 总结
  • 单个应用实例,可以适当的处理,减少崩溃几率;
  • 单个应用实例crash之后,采用forever自动重启,继续服务;
  • 利用多核cluster,同时在一台服务器上启动多个实例(同时崩溃的几率有多大呢?非常小吧?但也不是可能);
  • 你的应用线上部署就只部署1台服务器么?这种几率其实也蛮小的,多台服务器也要做集群。

如果所有集群里的服务器都crash了呢?这是运维水平问题了,招个运维吧,和Node.js无关。

1.2 异步(callbackhell)太恶心?

Node.js的设计初衷为了性能而异步,现在已经可以同步了,你知道么?
1.2.1 js流程控制的演进过程
js流程控制的演进过程,分以下5部分:
  1. 同步代码
  2. 异步JavaScript: callbackhell
  3. Promise/a+
  4. 生成器Generators/yield
  5. Async函数/await(以前说是es7 stage-3)

6.png

看起来挺简单的,各位自测一下,当前是哪个阶段?
1.2.2 Promise
从Promise开始,Node.js已内置Promise对象,另外bluebird、q这样的模块支持的也非常好,性能甚至比原生的还好。

为了让大家从回调的地狱中回到天堂,Promise你值得拥有。
Promise是一种令代码异步行为更加优雅的抽象,有了它,我们就可以像写同步代码一样去写异步代码。它是从Common JS规范分裂出来的,目前主流是Promose/A+规范。

jQuery很早就引入了Promise的概念,主要是deffered和promise对象。而在Angularjs里也有类似的实现,叫$q,其实是promise库q的精简版。

直接看代码:
var step2 = function(data){
console.log(data)return new Promise(function(resolve, reject){
reject(new Error('reject with custom err'))
});
}hello('./package.json').then(step1).then(step2).catch(function(err) {
console.log(err)
})  

在koa里可以这样用:
exports.list = (ctx, next) => {
console.log(ctx.method + ' /users => list, query: ' + JSON.stringify(ctx.query));return User.getAllAsync().then(( users)=>{
return ctx.render('users/index', {users : users
})
}).catch((err)=>{return ctx.api_error(err);
});
}; 

把callbackhell改成thenable的写法,是不是看起来清爽一些了呢?
1.2.3 generator和yield
其实还有更好的,在Node 0.12开始就支持generator和yield了。

es6里function * () {}为generator,在generator里使用yield转让处理权,generator原意是为了计算用的迭代器,但结合co这样的generator执行器,可以更好的进行“同步”流程控制。
exports.list = function *(ctx, next) {
console.log(ctx.method + ' /students => list, query: ' + JSON.stringify(ctx.query));let students = yield Student.getAllAsync();yield ctx.render('students/index', {
students : students
})
};

看一下yield后接的异步操作(发送http请求),可以获取结果,这不就是和同步一样了么?
1.2.4. Async函数
可是generator还是比较麻烦,需要执行器,generator执行的时候,需要先生成对象,然后next进行下一步。这样做起来还是比较麻烦,能不能不需要执行器啊?于是async函数就应运而生了。

async函数es7 stage-3的特性,可惜差一点就进入到es7规范了。async函数里使用await可以做到和yield类似的效果,但await只能接promise对象。

async 可以声明一个异步函数,此函数需要返回一个 Promise 对象。await 可以等待一个 Promise 对象 resolve,并拿到结果。

以下便是个例子:
async function a1() {
return new Promise((resolve, reject) => {
setTimeout(resolve, 1000);
})
}async function a2() {
await a1();
console.log("2333");
}
a2()

使用babel或runkoa执行,就可以了,是不是更简单?await可以和yield一样,让异步逻辑像同步一样处理?
exports.list = async (ctx, next) => {
console.log(ctx.method + ' /students => list, query: ' + JSON.stringify(ctx.query));
try {
let students = await Student.getAllAsync();await ctx.render('students/index', {students : students
})
} catch (err) {
return ctx.api_error(err);
}
};

这里Student.getAllAsync();是数据库操作,是异步处理,是Promise封装的,通过await就变成了同步的,可以直接获得students,是不是非常简单?
1.2.5 总结
  • async函数是趋势,如果Chrome 52. v8 5.1已经支持async函数了,Node.js支持还会远么?
  • async和generator函数里都支持promise,所以promise是必须会的
  • generator和yield异常强大,不过不会成为主流,所以学会基本用法和promise就好了,没必要所有的都必须会。
  • co作为generator执行器是不错的,它更好的是当做Promise包装器,通过generator支持yieldable,最后返回Promise,是不是有点无耻?

结论:Promise是必须会的,那你为啥不顺势而为呢?

1.3 MongoDB事务?

MongoDB是NoSQL里最像RDBMS的,又有非常好的性能,所以是目前最流行的,MEAN技术栈选用MongoDB也是这个原因。

当MongoDB的问题是事务,MongoDB数据库中操作单个文档总是原子性的,然而,涉及多个文档的操作,通常被作为一个“事务”,而不是原子性的。因为文档可以是相当复杂并且包含多个嵌套文档,单文档的原子性对许多实际用例提供了支持。尽管单文档操作是原子性的,在某些情况下,需要多文档事务。
  • 利用Document上的冗余,做宽表;
  • 使用两阶段事务提交也可以。

但无论如何它还是没有RDBMS的事务处理强的,所以还是要根据需求来处理
  • 严格事务的,比如交易,账单等,可以采用MySQL等RDBMS;
  • 非严格事务的,使用MongoDB。

把每个服务都写的非常小,1个服务对应一个数据库,这样一个Node应用对应一个数据库就无所谓你选MySQL还是MongoDB了。如果不是类似微服务这样的架构,那么只选1种数据库是非常痛苦的,当分库分表的时候更痛苦的。

1.4 用Node.js做接入层?

很多公司用Node.js做接入层,比如阿里系的天猫和淘宝,后端大量的C/C++和Java,前端用Node.js一点点替换PHP,据说如果都替换完成,可以每年服务器上节省电费700百万(不知真假)。

所谓的接入层就API层以前的(前端 + httpserver-by-node),然后Node去调用API服务,返回给前端。Node的作用就是控制器,从API取数据,然后返回给渲染层。

这是一种切入办法,其实Node远不止做接入层:
  • 前端构建工具(cordova、electron、gulp、npm等)
  • 接入层(最容易)
  • API(可接MySQL,可接MongoDB,可以满足绝大部分需求)
  • im,成本最低的实现方式
  • 其他I/O密集的应用

Node.js即使不优化,性能也非常好,优化也比其他语言简单
其他问题,可以通过架构平衡去解决,时间原因,这里就不相信讲解了。
7.png

1.5 Uber用go替代Node.js重写了地理位置服务?

大家都是知道Uber是大量采用Node.js开发的公司,而2016年4月12日infoq发了一篇名为《Uber是如何基于Go语言构建高QPS服务的?》的文章。

很多人问我,是不是Uber以后要用go去替代Node.js?

我回答是,目前看它只是地理查询的地方使用go重写了,这并不意味着,它完全会用go替代Node.js的,而且在绝大部分场景下Node.js是有它的优势的,除了文章讲的场景外,真的很少能找出差异特别大的点,各有优缺点,一个公司想弃用一项技术栈也是很难的一件事儿。
1.5.1 先看一下文章说的“选择Go的原因”
当我们评估所要使用语言的时候,Node.js正是广大的服务设计团队普遍采用的编程语言。而我们也在Node.js的使用方面有着丰富的经验。然而,Go语言却由于以下原因满足了我们的需求:

高吞吐量和低延迟的需求。Uber的手机端App在发送请求时,必然会触发一次查找地理围栏的操作。而服务器必须要能够对每秒上万次的请求以99%的概率响应时间小于100ms的速度进行响应。

CPU密集型负载。查找地理围栏需要使用计算密集型的Point-In-Polygon(PIP)算法。尽管Node.js可以很好的用于I/O密集型的服务,解释执行以及动态类型定义等的特性使得它并不适合于我们的使用场景。

非中断式的后台加载。为了保证查询操作是基于最新的地理围栏信息而进行的,服务必须要能够根据多个数据源的信息在后台实时刷新内存中的地理围栏数据。因为Node.js是单线程的,后台刷新很可能会占用一定的CPU时间(如CPU密集型的JSON的编译工作),最终导致部分查询的响应时间过长。但是,对于Go语言而言,这完全不是问题。Goroutine可以运行在多个CPU核上,并且可以在响应前端查询的同时后台并行进行刷新数据的工作。

这个理由解释是OK的,go确实在CPU密集应用上有它的优势,异步流程控制上比Node.js要强非常非常多,对于一些TCP长链接(im、游戏),多核计算类的都有非常好的性能优势。

可是,亲,你的瓶颈出在哪里呢?真的是性能么?
1.5.2 黑一下go语言吧: 够(go)不着
go的缺点是很难够(go)着:
  • 没有好的包管理,目前生态还不是特别好,选择的可能不多;
  • 没有好的调试工具,tdd/bdd新手难掌握(vscode-go还凑合);
  • 语法问题,强C背景的人不多。

总结:适合高端人群,但对团队开发是有门槛的,不适用国内大部分大团队,当然如果你的团队足够牛逼,选go是非常好的选择。

羊和骆驼的故事告诉我们:够得着你牛逼,够不着,累死你也够不着
1.5.3 架构的演进
架构的演进过程,一般如下
  • 无论如何,先实现(不择手段,或者说用自己擅长的);
  • 优化(一棵树上吊死);
  • 服务化(东拼西凑,捉襟见肘,趋于稳定);
  • 合适的技术做合适的事儿(有选择的挖坑优化)。

如果Uber的服务都非常成熟了,那么它是有能力完全用其他语言重写的,用go重写地理查询服务,是因为它已经演化到了第四阶段,有了之前的精力才有今天的可转变。

其实,我对语言并没有什么偏见,按照目前技术发展速度来看,未来应该是一个技术多样性,语言性能趋于相同,大家只看喜好来决定选用那种语言的局面,而不是语言之争。

其实最终还是要回归到架构的本质上去的,场景决定技术。

在未来很长一段时间,Node.js都会是Uber的主要服务,即使替换也会一点一点的来,积累与成本是不可能短时间消失的。

我们要问的是:“现在处于什么阶段?当前场景下使用Node.js是否合适?”,而不是看人家用go重写了。
1.5.4 合理选型
Node.js是单线程的,从上面的说明,我们可以知道Node.js对于IO密集型应用开发是非常棒的,其他,如CPU-密集型的就不是那么适合。

那时下最流行的直播来说,Node.js可以做直播么?

肯定是可以的,但全是Node.js效率不会特别高,比较直播音频、视频、图片、编辑码,以及socket不是Node.js最强的点,像很多公司采用go去实现这部分是非常棒的。

实时视频处理(推荐go)。

其他用Node.js做都非常合适,无论是聊天室,弹幕,还是各种Rank、API等。

2. 现代的Node.js:构建微服务利器

  • 小而美
  • 同步的Node.js
  • 善用npm,实现3化(模块化,最小化,服务化)
  • 使用docker compose作为本地开发环境
  • 微服务选型

2.1 哲学:小而美

使用Unix的方式:
Developers should build a program out of simple parts connected by well defined interfaces, so problems are local, and parts of the program can be replaced in future versions to support new features.

保持模块足够小(内聚),模块应该只做一件事!

The Node philosophy is to build small composible parts that do one thing (the UNIX philosophy), and if that one thing can be done in "userland", then it doesn't belong in core.
"Small is beautiful"是Unix哲学9条里的第一条,但对Node.js来说,它实在是再合适不过了。

http://blog.izs.me/post/482819 ... odejs
  • Write modules that do one thing well. Write a new module rather than complicate an old one.
  • Write modules that encourage composition rather than extension.
  • Write modules that handle data Streams, because that is the universal interface.
  • Write modules that are agnostic about the source of their input or the destination of their output.
  • Write modules that solve a problem you know, so you can learn about the ones you don’t.
  • Write modules that are small. Iterate quickly. Refactor ruthlessly. Rewrite bravely.
  • Write modules quickly, to meet your needs, with just a few tests for compliance. Avoid extensive specifications. Add a test for each bug you fix.
  • Write modules for publication, even if you only use them privately. You will appreciate documentation in the future.

以前吹牛拿性能说事儿,现在那npm说事儿,也就是说npm目前是最好的包管理器,比其他语言都要好,它的模块数也非常多。

可以这样说,Node.js世界里,一起都是模块,无论写点啥,都推荐你先npm init然后再写代码。

这就有一个问题,模块的定义,是不是3行代码也可以是一个模块呢?

知名Node.js程序员 sindresorhus 说过:

Sometimes code is complex because it has to be. It might handle more edge cases which are found over time and makes the code more durable.
对于模块使用问题,我觉得还是要谨慎一点,能自己做的尽量自己做,如非必须,尽量少用。

2.2 同步的Node.js

上面讲了generator和async函数可以让Node.js代码写的跟同步一样,推荐async + promise用法。

2.2.1 异常处理

Node.js里关于异常处理有一个约定,即同步代码采用try/catch,非同步代码采用error-first方式。对于async函数俩说,它的await语句是同步执行的,所以最正常的流程处理是采用try/catch语句捕获。
try {
console.log(await asyncFn());
} catch (err) {
console.error(err);
} 

这是通用性的做法,很多时候,我们需要把异常做的更细致一些,这时只要把Promise的异常处理好就好了。
  • then(onFulfilled, onRejected)里的onRejected
  • catch
    2.2.2 实践
  • Promise更容易做promisefyAll
  • Async函数无法批量操作

那么,在常见的Web应用里,dao层使用Promise比较好,而service层,使用async/await更好

dao层使用promise。
  • crud
  • 单一模型的方法多
  • 库自身支持Promise

这种用promisefyAll基本几行代码就够了,一般单一模型的操作,不会特别复杂,应变的需求基本不大。

而service层一般是多个model组合操作,多模型操作就可以拆分成多个小的操作,然后使用await来组合,看起来会更加清晰,另外对需求应变也是非常容易的。
2.2.3 总结
  • async函数语义上非常好
  • async不需要执行器,它本身具备执行能力,不像generator
  • async函数的异常处理采用try/catch和promise的错误处理,非常强大
  • await接Promise,Promise自身就足够应对所有流程了
  • await释放Promise的组合能力,外加Promise的then,基本无敌

这就是我们要追赶的趋势。如果无意外10月份之前就会发布新的Node.js版本,会支持async函数哦。即使现在,用babel编译,也还是可以的。

2.3 善用NPM,实现3化(模块化,最小化,服务化)

使用NPM模块化:
  • 使用npmjs的private私有模块(目前做法)
  • 使用npm的本地模块开发方法(测试和部署都非常快)
  • 搭建npm私服(todo)

通过识别业务边界,能拆分服务的都拆分成服务,保证模块的粒度最小。

比如:
hz-api-admin
hz-api-crm
hz-api-order
hz-api-statistics
hz-api-stock
hz-dao-cloud
hz-dao-private
hz-dao-usercenter

2.4 使用Docker Compose作为本地开发环境

Dockerfile
app:
build: .
volumes:
- .:/src
links:
- mongo
- redis
- api_order
ports:
- 3000:3000redis:
image: redismongo:
image: mongoapi_order:
image: api_order

自己构建服务镜像,类似Redis、MongoDB这样的,组合镜像,可以快速构建开发环境。

使用Docker Compose和Node.js结合是非常方便的,外加其他Docker技术,可以让开发流程更顺畅。

2.5 微服务选型

技术栈
8.png

微服务选型
9.png

2.5.1 HTTP API
采用Koa.js 2.x作为http api层框架,主要封装和组装rpc服务。

Koa的优点
  • 简单,可定制性强
  • 高性能,即使同样不优化,性能也比较好
  • “同步”流程控制,支持Promise、Generator、Async函数

当前做法
  • 目前使用Generator和yield + promise来做异步流程控制
  • 等node原生支持async函数,全面切换到async + promise(预计10月份)

2.5.2 使用RPC拆分服务
比较好的做法是http api调用rpc,提供最终api
  • 单一调用,简单接口
  • 多个调用,可以封装成上层服务,也可以组合用

RPC框架,如Dubbo、dubbo-x、Motan、gRPC等,我们选的是gRPC。

Node.js还有senecajs.org专门做微服务的,唯一的缺点是多语言支持,其他都非常好。
2.5.3 RPC拆分后,拆分DB
一般拆分RPC都会按照某些业务主体划分,所以数据库是可以拆分出去。

比如
  • 库存
  • 订单
  • 评论
  • 弹幕

其实,只要保证用户一致,其他数据库保存各自的数据就好。在数据分析的时候,汇总到一起即可,无论etl还是stream都可以。

服务和db拆分的好处是便于横向扩展,这样就可以做到动态伸缩,哪里有瓶颈治哪里,在架构调优上是有明显优势的。
2.5.4 服务多,就要服务治理、发现
采用Consul作为服务发现软件(etcd也不错)。
2.5.5 API多了,怎么办呢?
都是重复的,如日志、权限等,这时,我们需要API Gateway。

https://getkong.org/

通过Nginx + lua实现,提供插件机制,非常好用。
10.png

2.5.6 容器化
剩下的就是大家熟悉的Docker了。
2.5.7 总结
架构是相同的,其实语言是无所谓的。使用Node.js可以最小成本的快速构建服务,无论从技术难度,运维,还是未来趋势上都是比较好的技术选型。

如果大家有兴趣,也可以看看我写的《全栈工程师之路-Node.js》。

以上内容根据2016年7月12日晚微信群分享内容整理。分享人桑世龙,i5ting(江湖人称狼叔),空弦科技CTO,StuQ明星讲师,开源项目Moajs作者,Node.js技术布道者,即将出版《更了不起的 Node 4:将下一代 Web 框架 Koa 进行到底》。曾就职在新浪、网秦,曾做过前端、后端、数据分析、移动端负责人、做过首席架构师、技术总监,全栈技术实践者,目前主要关注技术架构和团队梯队建设方向。 DockOne每周都会组织定向的技术分享,欢迎感兴趣的同学加微信:liyingjiesz,进群参与,您有想听的话题或者想分享的话题都可以给我们留言。

原文发布时间为:2016-07-18

本文作者:桑世龙

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:DockOne微信分享(六十九):微服务选型之Modern Node.js

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Node.js性能优化

    你不知道的Node.js性能优化 - 知乎 https://zhuanlan.zhihu.com/p/50055740你不知道的Node.js性能优化“当我第一次知道要写这篇文章的时候,其实我是拒绝的,因为我觉得,你不能叫我写马上就写,我要有干货才行,写一些老生常谈的然后加上好多特技,那个 Node.js 性能啊好像 D…...

    2024/4/15 3:55:49
  2. nodejs完全支持promise了,现在还需要再用Bluebird这类三方库了吗

    nodejs完全支持promise了,现在还需要再用Bluebird这类三方库了吗 bluebird …...

    2024/4/15 3:55:49
  3. node.js redis 同步取值 bluebird async await promisifyAll

    1. 安装redis库npm install --save redis2. ../../.../config.jsmodule.exports = {// ...redis: {host: "172.16.0.224",port: 6379,options: {password: "myredispassword",timeout: 3000}},spam: {limit: 3,seconds: 60,},// ... }3. Cache.jsconst red…...

    2024/4/24 17:15:17
  4. Node.js 根本没有这样搞性能优化的?

    1、使用最新版本的 Node.js仅仅是简单的升级 Node.js 版本就可以轻松地获得性能提升,因为几乎任何新版本的 Node.js 都会比老版本性能更好,为什么?Node.js 每个版本的性能提升主要来自于两个方面:V8 的版本更新;Node.js 内部代码的更新优化。例如最新的 V8 7.1 中,就优化…...

    2024/4/18 8:14:00
  5. node js Bluebird 简单介绍 promise 解决回调地狱

    Promise是异步代码实现控制流的一种方式。这一方式可以让你的代码干净、可读并且健壮。异步回调如下:fs.readFile(directory/file-to-read, function(err, file){if (error){//handle error} else {//do something with the file} });你以前可能听说过Node很快会陷入回调地狱,…...

    2024/4/24 13:30:21
  6. MAC安装vue.js

    一、首先需要安装必要的软件 Homebrew:Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件 Node.js:JavaScript运行环境(runtime) npm:node.js下的包管理器,npm能很好地和诸如 webpack 或 Browserify 模块打包器配合使用 webpack:vue的组件都是.vue无法被用户端的…...

    2024/4/24 13:30:20
  7. 【Node.js安装步骤】

    "Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。本文详细介绍了Node.js的安装和使用。 Node.js 不是一个 JavaScript 框架,不同于CakePHP、Django、Rails。Node.js 更不是浏览器端的库,不…...

    2024/4/24 13:30:19
  8. Linux下Nodejs安装(完整详细)

    【原文】https://www.cnblogs.com/kevinchou/p/5405540.html之前安装过windows下以及Mac下的node,感觉还是很方便的,不成想今天安装linux下的坑了老半天,特此记录。首先去官网下载代码,这里一定要注意安装分两种,一种是Source Code源码,一种是编译后的文件。我就是按照网…...

    2024/4/24 13:30:17
  9. MAC系统安装Vue.js开发环境

    1、Mac安装Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2、安装node.js 网址:https://nodejs.org/en/ 安装即可。node -v 可以查看node版本 3、安装插件 npm install -g web pack npm install …...

    2024/4/24 13:30:16
  10. Mac下 node+vue-cli3+webpack搭建教程

    安装brew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"安装node.jsbrew install nodejs获取nodejs模块安装目录访问权限sudo chmod -R 777 /usr/local/lib/node_modules/安装淘宝镜像npm install -g cnpm --…...

    2024/4/24 13:30:15
  11. mac 下安装node 并 运行helloworld

    1准备环境 装过GIT 2获取并编译源码获取git clone https://github.com/nodejs/node cd node git checkout编译./configure --prefix=/opt/node makesudo make install (tips: make 后编译花费时间特别长) 3额外设置 将node可执行文件夹到系统path中export PATH=$PATH:/opt/node…...

    2024/4/24 13:30:14
  12. Mac下node安装后输入node -v提示node command not found

    2019独角兽企业重金招聘Python工程师标准>>> 从官网下载了node的.pkg文件安装node,安装好后,在mac终端下输入npm -v 和 node -v均提示 command not found,参考了网上的方法,终于得解 第一步:创建.bash_profile文件,~表示在~目录下,.表示隐藏文件,打开终端…...

    2024/4/24 13:30:13
  13. Mac环境下装node.js,npm,express;(包括express command not found)

    Mac环境下装node.js,npm,express;(包括express command not found)1。 下载node.js for Mac 地址: http://nodejs.org/download/直接下载 pkg的,双击安装,一路点next,很容易就搞定了。 安装完会提醒注意 node和npm的路径是 /usr/local/bin。 看到一些帖子,用Homebrew安装也…...

    2024/4/24 13:30:13
  14. mac下node.js 安装express后报express command not found

    使用brew安装node的时候会自动帮你安装npm,所以npm不用单独去安装,当然如果你想安装最新版本,可以去官网下pkg包安装,http://nodejs.org/1brew install node这个步骤node和npm就都安装好了1sudo npm install -g express全局安装express -g 是全局安装,如果想指定版本安装可…...

    2024/4/24 13:30:11
  15. Mac 安装 nodejs方法——新手教程

    访问nodejs官网,点击蓝色选框区域稳定版,并下载官网链接我们这里选择了右面的12.8.1 current,点击下载 双击刚下载的文件,按步骤默认安装就行 安装完成后打开终端,输入 npm -v node -v 两个命令,如出现版本信息,说明安装成功。 参考链接...

    2024/4/24 13:30:10
  16. windows下pomelo开发环境搭建及JS乱码问题

    最近一直在研究node.js这一块,为的就是使用网易的pomelo框架,学习了将近一周多,node.js基本已经上手,今天开始搭pomelo的环境,手上机器的系统是win7和黑苹果mac os x lion,不想装linux,折腾老半天才在windows装上。pomelo这个东西在mac os下是最好安装的,但貌似在黑苹果…...

    2024/4/24 13:30:12
  17. Node.js+Ajax实现物流小工具

    半年过去了,好像什么也没干,好像什么也干了。 最近在网易云课堂上看到了这个课程,觉得很有意思,就跟着课程做了一遍,课程地址:http://study.163.com/course/courseMain.htm?courseId=1004615001。 1. NPM和Webpack之前专门了解了一下这两者,但是看完之后没有实际应用过…...

    2024/4/24 13:30:08
  18. heX——基于 HTML5 和 Node.JS 开发桌面应用

    heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案。heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁琐的UI和交互开发工作,使其变的简单而高效,特别适合于开发重UI,重交互的桌面应用软件…...

    2024/4/24 13:30:07
  19. node.js简易版邮箱注册

    一. 封装一个发送邮件的模块:下载安装第三方模块——nodemailer: (1)打开npm文档,要善于查阅文档哦 npm文档官网 (2)搜索nodemailer并下载安装:npm install nodemailer --save对官网中nodemailer的相关代码进行封装,通过传递参数的方式来达到简化调用的目的://引入模…...

    2024/4/24 13:30:06
  20. Pomelo网易开源基于Node.js的游戏服务器框架pomelo

    https://github.com/NetEase/pomelo/wiki/Home-in-Chinese 有空看的东西。暂时先专注图形学。...

    2024/4/24 13:30:05

最新文章

  1. WPF中Nlog的使用--能够提取Nlog的日志内容,并定义使用

    背景 使用Nlog日志进行本地文件输出,以及进行定时清理删除参考其他文章 在用户本地计算机上进行Nlog输出,或者使用Web的Http的Post请求输出到后端数据库使用File或者Web的数据类型就可以了,但是我这里希望把我的日志进行输出到自己的云端,但是存在如下情况: 1、用户在一天…...

    2024/5/2 20:58:59
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. node.js常用指令

    1、node:启动 Node.js REPL(交互式解释器)。 node 2、node [文件名]:执行指定的 JavaScript 文件。 node app.js 3、npm init:初始化一个新的 Node.js 项目,生成 package.json 文件。 此命令会创建一个…...

    2024/5/2 2:43:01
  4. 爱自然生命力粤东中心家风家教高端研讨会在广东汕头盛大开启

    2024年3月30日,爱自然生命力粤东中心家风家教高端研讨会在广东汕头金海湾大酒店隆重召开。 (图为活动现场) 本次由爱自然生命力体系粤东中心主办的粤东家风家教高端研讨会,主题为“携手校家社,共筑新格局”&#xff0…...

    2024/5/1 13:42:48
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57