小编Zan*_*nko的帖子

Express中间件错误处理程序

按照生成的快递模板.在app.js下面有一个代码片段

app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
Run Code Online (Sandbox Code Playgroud)

根据我的理解,中间件将按顺序从app.use('/users', users)404处理程序运行到错误处理程序.我的问题是如何才能到达错误处理程序并执行此行res.status(err.status || 500);?不是每个失败的请求都首先通过404处理程序,因此获取状态代码404?如果我错过了什么,请告诉我!谢谢

node.js express

4
推荐指数
1
解决办法
4842
查看次数

锁定新插入的行[PostgreSQL]

有没有办法锁定最近插入的行,以便在我当前的事务仍在进行时其他事务不会看到它?

sql postgresql

4
推荐指数
1
解决办法
1526
查看次数

在 SELECT 中嵌入 pg_advisory_lock 与显式使用另一个语句有什么好处?

我无法真正理解https://www.postgresql.org/docs/9.1/static/explicit-locking.html 中的示例

他们将锁与 SELECT 子句一起嵌入的位置 SELECT pg_advisory_lock(id) FROM foo WHERE id = 12345; -- ok

它从什么中选择FOO?如果是这样,我会更好地理解

SELECT pg_advisory_lock(123); //lock
SELECT * FROM foo WHERE id = 12345;
Run Code Online (Sandbox Code Playgroud)

它明确锁定块的地方。我似乎无法在任何地方找到关于如何真正使用咨询锁的解释来解释 Embedding 和 Explicitly 之间的区别。

sql postgresql

4
推荐指数
1
解决办法
608
查看次数

Kivy了解self.pos和self.size

每当我尝试跨越布局跨越画布时,我所要做的就是这个

<FloatLayout>:
    canvas:
        Color:
            rgba: 54 / 255, 60 / 255, 72 / 255, 1
        Rectangle:
            pos: self.pos
            size: self.size
Run Code Online (Sandbox Code Playgroud)

我一直在玩,无法理解self.pos指的是什么?通过阅读文档,它似乎指向当前小部件,它应该是Rectangle.但是当我进入调试模式时,我注意到self.size的默认值是(100,100).

python kivy

3
推荐指数
1
解决办法
1006
查看次数

发布请求后重定向页面[Express 4]

/**
 * @api {post} /logout Logout from system
 * @apiName Logout
 * @apiGroup Login
 */
router.post("/logout", function (req, res) {
  req.logout();
  req.session.destroy();
  return res.redirect("/");
});
Run Code Online (Sandbox Code Playgroud)

我读过Node.js Express:如何在处理发布请求后重定向页面?但无法弄清楚答案.

我最近将注销更改为POST而不是GET.在这样做之后,重定向不起作用

POST /logout 307 4.912 ms - 36
POST / 302 3.922 ms - 23
GET / 200 7.519 ms - -
Run Code Online (Sandbox Code Playgroud)

我可以在客户端手动执行此操作,但我想知道如何在服务器端执行此操作.这可能吗?

客户

HTML

<a href="javascript:;" onclick="logOut();">
Run Code Online (Sandbox Code Playgroud)

JS

 function logOut() {
        $.post("/logout");
    }
Run Code Online (Sandbox Code Playgroud)

node.js express

3
推荐指数
1
解决办法
5378
查看次数

正则表达式仅用于数字和连字符

我想了解正则表达式,对于长度为10的数字,我可以简单地做

/^[0-9]{10}$/
Run Code Online (Sandbox Code Playgroud)

只可以连字符

/^[-]$/
Run Code Online (Sandbox Code Playgroud)

使用组表达式将两者结合起来将导致

/^([0-9]{10})|([-])$/
Run Code Online (Sandbox Code Playgroud)

此表达式无法按预期工作,如果字符串无效,它将以某种方式匹配字符串的一部分,而不是完全不匹配。

在此处输入图片说明

如何制作仅接受“-”或10位数字的正则表达式?

javascript regex

3
推荐指数
1
解决办法
2436
查看次数

单线程同步和异步混淆

假设makeBurger()需要10秒钟

在同步程序中,

function serveBurger() {
   makeBurger();
   makeBurger();
   console.log("READY") // Assume takes 5 seconds to log. 
}
Run Code Online (Sandbox Code Playgroud)

执行总共需要25秒.

因此,对于NodeJ,我们假设我们制作的异步版本makeBurgerAsync()也需要10秒钟.

function serveBurger() {
   makeBurgerAsync(function(count) {

   });
   makeBurgerAsync(function(count) {

   });  
   console.log("READY") // Assume takes 5 seconds to log. 
}
Run Code Online (Sandbox Code Playgroud)

因为它是单线程.我不禁想象幕后真的发生了什么.

  1. 因此,当函数运行时,两个异步函数都将进入事件循环并立即console.log("READY")执行.
  2. 但是在console.log("READY")执行时,对于异步函数都没有真正的工作吗?由于单线程占用console.log 5秒.
  3. 在console.log完成之后.CPU将有时间在两个异步之间切换,以便每次都可以运行一些功能.

所以根据这个,该函数不一定会导致更快的执行,由于事件循环之间的切换,异步可能会更慢?我想,在一天结束时,一切都将在一个线程上传播,这将与同步版本相同?

我可能错过了一些非常大的概念,所以请让我知道.谢谢.

编辑 如果异步操作就像查询数据库等那么有意义.基本上,nodejs会说"Hey DB会为我处理这个,而我会做其他事情".但是,我不理解的情况是nodejs本身内部的自定义回调函数.

EDIT2

function makeBurger() {
    var count = 0;
    count++; // 1 time
    ...
    count++; // 999999 times
    return count;
}

function makeBurgerAsync(callback) {
    var count = …
Run Code Online (Sandbox Code Playgroud)

asynchronous node.js

3
推荐指数
1
解决办法
735
查看次数

NodeJS版本问题

有没有解释为什么NodeJS最新版本是6.2.1但LTS是4.4.5?它可能看起来很奇怪,但是在开发或发布版本6之前,它们不应该首先稳定版本5吗? https://nodejs.org/en/

node.js

2
推荐指数
1
解决办法
175
查看次数

单独的地图声明和初始化

Value.h

#ifndef  VALUE_H
#define VALUE_H
#include <map>
#include <string>
std::map<uint8_t, std::string> status;
#endif
Run Code Online (Sandbox Code Playgroud)

Value.cpp

#include "Value.h"
std::map<uint8_t, std::string> status = {
    { 0x00, "Status1" },
    { 0x11, "Status2" },
    { 0x10, "Status3" }
};
Run Code Online (Sandbox Code Playgroud)

但我一直在重新定义; 多次初始化错误; 我该如何申报和初始化?我希望地图是全球性的.可以不将地图包装在一个类中吗?我只是希望这个文件是其他文件的地图和值的信息.

c++ dictionary declaration definition

1
推荐指数
1
解决办法
70
查看次数

装配je,jns,jle哪个注册使用?

情况1:

cmp dword ptr[ebp + 18],00
mov eax, [ebp + 14]
je Game.exe+417442
Run Code Online (Sandbox Code Playgroud)

案例2:

test eax,eax
jns Game.exe+47137
Run Code Online (Sandbox Code Playgroud)

它总是看寄存器eax吗?如果没有,我们如何知道它所看到的寄存器以确定跳转?

x86 assembly

-2
推荐指数
1
解决办法
1103
查看次数