如何保证长时间的操作完成(How to guarantee a long operation completes)
通常情况下,账单应该在预定日期在后台执行(我还没有想出如何做到这一点,但这是另一个话题)。
但偶尔,用户可能希望手动执行计费。 一旦点击,我想确保操作运行完成,无论用户端发生什么(例如关闭浏览器,机器死机,网络停机,等等)。
我很确定db.SaveChanges()在事务中包装它的数据库操作,所以从服务器的角度来看,我相信整个事情要么完成要么失败,没有部分影响。
但是POST和db.SaveChanges()之间的所有工作呢? 有没有办法确保用户不会无意或有意阻止完成?
我想这个问题的必然结果是,如果用户断开连接,正在运行的异步控制器或正在运行的
Task
或Thread
会发生什么?Normally, billings should execute in the background on a scheduled date (I haven't figured out how to do that yet, but that's another topic).
But occasionally, the user may wish to execute a billing manually. Once clicked, I would like to be sure the operation runs to completion regardless of what happens on the user side (e.g. closes browser, machine dies, network goes down, whatever).
I'm pretty sure db.SaveChanges() wraps its DB operations in a transaction, so from a server perspective I believe the whole thing will either finish or fail, with no partial effect.
But what about all the work between the POST and the db.SaveChanges()? Is there a way to be sure the user can't inadvertently or intentionally stop that from completing?
I guess a corollary to this question is what happens to a running Asynchronous Controller or a running
Task
orThread
if the user disconnects?
原文:https://stackoverflow.com/questions/15007432
最满意答案
Vim将
\d
匹配到数字; 你需要\x
匹配十六进制数字。但似乎你想要替换所有出现的
:"
with:"\u25
。你能用:
:%s/:"/:"\\u25"/
或者,如果您想要将
\u25
到所有出现的2个十六进制数字,
:%s/\x\x/\\u25&/
Vim matches
\d
to digits; you'd need\x
to match hex digits.But it seems you want to replace all occurrences of
:"
with:"\u25
.Can you use:
:%s/:"/:"\\u25"/
Or, if you want to prepend
\u25
to all occurrences of 2 hex digits,
:%s/\x\x/\\u25&/
相关问答
更多-
红帽linux下文本编辑的命令是什么?[2022-08-28]
vim -
Vim - 通过正则表达式搜索和替换的增量编号(Vim - incremental numbering via regular expression search and replace)[2023-10-01]
我对你的一般问题没有答案,但我确实有一个针对你的具体情况。 您可以通过将逗号置于正面预测中来使命令工作,如下所示: :let i=1 | g/1(\,\)\@=/ s//\=i/ | let i+=1 现在它只会取代1 。 I don't have an answer to your general question, but I do have one for your specific situation. You can make your command work by putting the c ... -
通过使用此包https://sublime.wbond.net/packages/RegReplace,您可以创建正则表达式模式并将它们绑定到快捷方式。 此外,如果一个单词出现多次,您可以将光标放在单词的任何部分,并按CTRL + D多次。 一个CTRL + D按下将选择光标下的单词,每按一次将选择下一个单词出现。 如果你的单词包含一些随机字符,你也可以使用https://sublime.wbond.net/packages/Expand%20Selection%20to%20Whitespace将选择扩展 ...
-
Vim替换正则表达式(Vim substitution regex)[2022-01-10]
您需要在模式中使用捕获组,并在替换中使用反向引用: :%s/&\(\w*\)/C_LOC(\1)/g 如果您需要非常魔术模式,则不应转义模式中的(和) 。 此外,如果要匹配至少1个单词字符,请将\w*替换为\w\+ (关于转义+作为(和)相同注释)。 You need to use a capturing group in the pattern and a backreference in the replacement: :%s/&\(\w*\)/C_LOC(\1)/g If you need ve ... -
Vim将\d匹配到数字; 你需要\x匹配十六进制数字。 但似乎你想要替换所有出现的:" with :"\u25 。 你能用: :%s/:"/:"\\u25"/ 或者,如果您想要将\u25到所有出现的2个十六进制数字, :%s/\x\x/\\u25&/ Vim matches \d to digits; you'd need \x to match hex digits. But it seems you want to replace all occurrences of :" with :"\u25. C ...
-
这个命令应该做你想做的事情: :%s/\v(".{-}")/\=substitute(submatch(1), "_", " ", "g") 我捕获每行中的第一对引号,然后将其作为替换,删除所有下划线。 This command should do what you want: :%s/\v(".{-}")/\=substitute(submatch(1), "_", " ", "g") I capture the first pair of quotes on each line then I use ...
-
:%s/\(\w*\)->hwqe_w1_len/common_wqe_get_len(\1)/g :%s/\(\w*\)->hwqe_w1_len/common_wqe_get_len(\1)/g
-
vim substitute()和expand()在新命令定义中调用(vim substitute() and expand() calls inside new command definition)[2022-07-08]
更改命令定义如下。 :command! MyNewCommand call system('/tmp/myscript.sh ' . \ shellescape(substitute(expand('%:p'), '-debug', '', 'g'))) 要查看命令的输出, call使用echo替换call 。 Change the command definition as follows. :command! MyNewCommand call system('/tmp/myscript.sh ' ... -
你不需要逃避{ :%s/{/ &/g You do not need to escape the { :%s/{/ &/g
-
Vim中的正则表达式(Regular Expressions in Vim)[2022-05-17]
a)在我看来,如果你没有使用它而你现在的工作方式很开心,那么就把它留在那里。 一旦到了,你开始需要正则表达式来学习它们。 在你需要的范围内。 大多数人以这种方式使用它们。 很少有人知道他们,让他们说,去写他们自己的语法文件或类似的东西。 b)Vim有自己独特的正则表达式( 许多之一 ),但首先,除了Vim的帮助之外,我还推荐了一本Perl的入门书籍。 例如, 学习Perl 。 它有一个很好的温和方法,因此表达式开始有意义(并且你不只是将它们作为一个特定问题的一个衬里学习)。 可以在这里找到 Perl的开始( ...