小编Ale*_*ele的帖子

NodeJS module.exports无法正常工作

我正在使用Express在NodeJS中编写Web服务。我想在其他模块中使用该应用程序(Express实例)时发生我的问题。以下配置工作正常,但如果我替换

var app = module.exports = express();
Run Code Online (Sandbox Code Playgroud)

var app = express();
Run Code Online (Sandbox Code Playgroud)

然后使用

module.exports = app;
Run Code Online (Sandbox Code Playgroud)

在app.js的底部,所有内容都会崩溃。在auth模块中调用app.get()时将出现错误(TypeError:app.get不是函数)。有人可以向我解释为什么导出应用程序对象很重要吗?

app.js

var mongoose = require('mongoose');
var express = require('express');
var bodyParser = require('body-parser');
var debug = require('debug')('app');
var morgan = require('morgan');
var config = require('./config');
var app = module.exports = express();

// --- globals ---
app.set('jwtTokenSecret', config.jwtTokenSecret);

// --- middleware ---
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(morgan('dev'));

// --- routes ---
var courses = require('./routes/courses');
var users = require('./routes/users');
var auth = require('./routes/auth'); …
Run Code Online (Sandbox Code Playgroud)

node.js express

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

Room + RxJava2 无限循环案例

我正在使用带有 RxJava2 的新 Android 持久性库 Room。以下代码导致无限循环。如果我注释掉在第二个 observable 中更新用户的行,它就可以正常工作。如果我把它留在那里,第一个 observable 的 onNext 方法将被一次又一次地调用。

当实体更新时,Room 会重新查询表吗?如果是这样,为什么要在同一个流上再次发布消息?这是预期的行为吗?这是图书馆的错误吗?

val userDao = HeyHeyApp.database.userDao();
userDao.getAll()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({ listOfUsers ->
        if (!listOfUsers.isEmpty()) {
           HeyHeyApp.currentUser = listOfUsers.first()
           HeyHeyApp.currentUser.fcmDeviceId = getDeviceId()

           Single.fromCallable({
               HeyHeyApp.database.userDao()
                  .updateUser(HeyHeyApp.currentUser)
           }).subscribeOn(Schedulers.io())
             .observeOn(AndroidSchedulers.mainThread())
             .subscribe({ _ ->
             })
        }
    })
Run Code Online (Sandbox Code Playgroud)

android android-room

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

关于C中堆栈分配的问题

下面的代码片段是故意访问下面的下一个sizeof(int)字节t[4],所以我知道这里犯的错误.我只是作为一个实验来看看编译器如何处理堆栈分配.

int t[5], i;

for (i = 0; i <= 5; i++) {
   t[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

在Windows上执行此代码时,使用GNU C编译器的移植版本,程序总是陷入无限循环.我确信这只会发生,因为t并且i在堆栈上依次分配并t[5]指向与i变量相同的地址.因此,当执行t[5] = 0程序时实际将值设置i为零.

但是,当使用不同版本的GNU C编译器编译它时,我永远不会得到无限循环.地址t[5]与地址不同i.

我的问题是,为什么这种行为不同?我知道你不应该假设这个结果,但是不是堆栈分配应该以同样的方式发生吗?

我真正好奇的是编译器如何管理这些堆栈分配.有填充物吗?订单总是与源代码中的相同吗?显然,这与C标准无关,实现之间存在差异,甚至同一编译器的不同版本也存在差异.我很好奇,尽管在这种特殊情况下可能的结果和考虑因素是什么.

c stack memory-management

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

标签 统计

android ×1

android-room ×1

c ×1

express ×1

memory-management ×1

node.js ×1

stack ×1