欢迎浏览sook云!

网站地图

当前位置:主页 > 数据库 > 数据存储 >

轻量服务器_电脑出现域名解析错误_12月免费

时间:2022-05-14 17:20

人气:

作者:sook云

标签: 12月  错误  出现  电脑  轻量  解析  免费  域名  服务器 

导读:交易操作在业务系统中起着非常重要的作用,最常见的例子就是在银行运行的交易系统,基本上,交易都有以下问题: 以上所有的例子都是单次操作,这意味着在整个业务流程中,您...

轻量服务器_电脑出现域名解析错误_12月免费

交易操作在业务系统中起着非常重要的作用,最常见的例子就是在银行运行的交易系统,基本上,交易都有以下问题:

以上所有的例子都是单次操作,这意味着在整个业务流程中,您不必等待其他操作的完成。那么多个操作有什么问题呢?上面的第二个问题在任何编程语言中都很常见,当我们确定所有操作都正确完成时,我们总是需要调用"commit()"之类的函数,淘客推广怎么做,或者在捕获任何异常时调用"rollback()",云店,如果您有JDBC编程的经验,我想大家都熟悉这些。节点.jsHANA的驱动程序也提供类似的接口。

第一个问题怎么样?我们只是在Java中一个接一个地执行语句,但这在Java中不起作用节点.js. 为什么?你还记得吗节点.js是"非阻塞"吗?因此,您不能编写这样的代码:

所有这些语句都会立即返回,不会等待执行完成,也不会按预期的顺序执行。例如,"先插入后更新"的逻辑可以执行为"先更新后插入"。

什么是节点样式来执行"逐个"逻辑?是的,正如我们上面提到的回调。回调函数只有在主操作完成后才会被调用,这就是我们想要的。所以你应该像这样写代码:

而它看起来就像…是的,一个金字塔。实际上,这就是所谓的"回调金字塔",或者说"回调地狱",这就是节点.js一次又一次的指责。这一问题不仅存在于数据库操作中,而且广泛存在于数据库中节点.js代码,物联网技术及应用,我们无法想象当有五个或更多嵌套回调时会有多么糟糕!

这对那些习惯于像Java这样编写"普通"代码的程序员来说无疑是一个打击。幸运的是,已经有了一些解决方案,其中之一就是一个名为"async"(caolan/async·GitHub)的组件。我不得不说,"异步"是计算机中最重要的组件之一节点.js,易淘客,它包括流控制和收集操作,当您考虑运行for each或do while循环时,最好考虑使用这个组件,而不是自己编写代码,我们不会逐一介绍它的所有功能,看看如何在事务操作中使用它,

在"异步"中最常用的方法是

可能有点难理解,所以我们在这里举一个最简单的例子:

它有点复杂,所以我们将把整个程序分成几部分,并解释细节。

首先您需要先通过npm下载组件,一开始就导入:

我们考虑一下这个要求,每个客户都应该有一个唯一的ID,这个ID是自动递增的,我们通过"max+1"来获取新的ID(这不是很好的做法,所以在实际系统中不应该这样做,这里只是为了说明如何处理操作之间的依赖关系)。根据async的文档,如果操作之间存在依赖关系,我们需要使用瀑布流,这意味着您可以将参数发送到下一个操作。您可以调用

来执行异步操作。第一个参数是由操作函数组成的数组,如果当前异步操作是顺序敏感的(如瀑布或序列),它们将按顺序运行,第二个参数"done"是回调函数,当所有这些操作完成时将调用它,或者如果有任何一个操作出错,

对应的sql是:

接下来让我们检查一下操作:

首先是connect,这里有一些您可能熟悉的东西,我们将auto commit设置为false,这就是启用事务。这个函数有一个名为"next"的参数,它是一个函数,你会发现下面所有的函数都有这个参数。在异步中非常重要,当你想从当前操作函数中"返回"时,大数据下,必须调用这个函数,"next"函数的行为取决于你发送给它的参数:

忘记调用"next()"是用异步编码时最常见的错误,当你发现程序挂起在某个操作中但没有错误时,请检查您是否忘记调用它。

让我们回到connect()函数,我们将next()设置为的回调客户端.connect(),因此操作将在客户端.connect()有一些结果,如果成功则查询(),如果失败则完成()。这里我们假设连接成功并转到query():

这是异步操作元素的一个简单示例,获取next()函数作为参数,并执行query。在查询的回调函数中我们可以看到调用next()的两个条件,在无错误分支中,我们将max ID设置为第二个参数,这是下一个操作的可选数据

Insert操作如上所示,由于query()将max ID发送给下一个操作,insertName()操作又增加了一个参数"maxId"与query()比较。在insertName()中,我们获得新的ID,并发送到insertNation()操作。注意,我们在所有错误处理分支中调用next(),并带有错误信息。

好的,这里我们到达了最后一个函数:done():

正如我们前面提到的,done()将被调用如果任何next()有一个"unnull"值,你们中的一些人可能会被next()和done()之间的关系搞糊涂,是的,它们之间的关系非常模糊,下一步()在阴影中做点什么。其实你不必担心他们,只要记住"如果你有任何错误,你将从完成钻出来,否则从下一个操作,就像一个地鼠"。在本例中,如果done()转到error分支,数据库将随时回滚并丢弃所有写入结果,而commit result仅在到达此处时没有任何错误。这里我们将auto commit设置回auto manually,这在本例中是不必要的,因为我们会在之后关闭连接,但是如果您正在运行一个长连接,并且不再需要这个连接,请记住及时关闭它。

好的,下面是瀑布式事务的流程。让我们运行它并观察输出:

它看起来是正确的,但是回滚怎么样?让我们组成一个错误场景,插入时有一行更改:

由于国家表有唯一的列用户ID,如果我们插入重复的值,会产生错误。

您可以检查表以确保没有插入新的记录。

这是中事务实现的介绍节点.js, 也许你会发现代码越来越复杂,需要一些与其他语言不同的编码技巧。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

关于我们 | 版权声明 | 广告服务 | 友情链接 | 联系我们 | 网站地图

Copyright © 2002-2020 sook云 版权所有 备案号:豫ICP备36548666号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。