我正在用ExpressJS,PassportJS,MongoDB和MongooseJS编写NodeJS服务器.我设法让PassportJS使用通过Mongoose获得的用户数据进行身份验证.
但要使其工作,我必须使用如下所示的"findById"函数.
var UserModel = db.model('User',UserSchema);
UserModel.findById(id, function (err, user) { < SOME CODE > } );
Run Code Online (Sandbox Code Playgroud)
UserModel是一个猫鼬模型.我之前声明了架构UserSchema.所以我想UserModel.findById()是一种Mongoose模型的方法?
题
它findById做了什么,有什么文件吗?我用Google搜索了一下但没有发现任何东西.
基于我在这里学到的东西:通过C中的函数操作动态数组.
void test(int data[])
{
data[0] = 1;
}
int main(void)
{
int *data = malloc(4 * sizeof *data);
test(data);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我也试图realloc在函数中使用.
void increase(int data[])
{
data = realloc(data, 5 * sizeof *data);
}
Run Code Online (Sandbox Code Playgroud)
这符合但运行时程序崩溃.
题
我应该如何在函数中使用realloc?
我知道我应该将结果分配给realloc变量并检查它是否是NULL第一个.这只是一个简化的例子.
我正在学习如何在C中创建动态1D数组.下面的代码尝试执行以下操作:
malloc,创建一个10包含类型值的动态长度数组double.j/100for j = 0, 1,..., 9.然后打印出来.realloc.j/100并再次打印出每个条目.测试:
double* data = (double*)malloc(10*sizeof(double));
for (j=0;j<10;j++)
{
data[j]= ((double)j)/100;
printf("%g, ",data[j]);
}
printf("\n");
data = (double*)realloc(data,11*sizeof(double));
for (j=0;j<11;j++)
{
if (j == 10){ data[j]= ((double)j)/100; }
printf("%g, ",data[j]);
}
free((void*) data);
Run Code Online (Sandbox Code Playgroud)
问题
我编码是对的吗?
教程我发现使用malloc没有放在(double*)前面.例如,
int*指针;
pointer = malloc(2*sizeof(int));
在Visual Studio 2010,Windows 7上,这不能为我编译.错误消息是
void类型的值不能分配给类型的实体
int.
为什么它适用于那些教程而不适合我?我是否正确地猜测这是因为他们使用的编译器会(int*)在我的示例中自动填写它们?
我一直在尝试使用Cygwin和MinGW在Windows 7中安装/编译C库.但是,我在以下期间遇到这样的错误make:
sys/resource.h: No such file or directory
sys/times.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我之前认为这可能是特定库的一个问题,并在此处询问:在Visual Studio 2010和Cygwin/MinGW中安装igraph的各种问题("sys/time.h not found"),但在遇到与不同库相同的错误后,我认为问题在于我.
尝试
cygwin/usr/include/sys/times.h并cygwin/usr/include/sys/resource.h存在.在得到关于符号链接的建议之后,我曾经ln -s /usr/include/sys sys确保它sys/times.h有效.
我去看make了一个特定库(igraph)的输出.它说它进入了一个"src"文件夹.所以,我去了src文件夹并做了同样的事情:ln -s /usr/include/sys sys并确保它sys/times.h也在src文件夹中工作.
但是,我仍然得到:
fatal error: sys/times.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
题
如何make在/ usr/include/sys文件夹中设置"路径" 以查找"sys/times.h"或其他文件?我在这里错过了什么?
PS
请耐心等待,因为我通常是Windows用户,不熟悉Linux术语.
我正在使用ExpressJS和Mongoose.
var MongoStore = require('connect-mongo')(express);
var sessionStore = new MongoStore({db: 'myappsession'});
app.use(express.session({ secret: "myappsecret", store:sessionStore }));
Run Code Online (Sandbox Code Playgroud)
这导致"MongoError:错误:未经授权的数据库".我想我需要传递我的登录凭据.我也有,
var mongoose = require('mongoose');
var db = mongoose.createConnection('<omitted username, password and address>', 'myappsession');
Run Code Online (Sandbox Code Playgroud)
我猜connect-mongo需要这些信息才能登录我的数据库来创建会话存储?
题
如何通过connect-mongo登录信息?或者我做错了吗?
首先,我定义了一个包含2列和10行的动态数组.number例如,这里整数设置为10.
int** array;
int number = 10;
array = malloc(number * sizeof(int*));
for (i = 0; i < number; i++)
array[i] = malloc(2 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用qsort()它.
qsort( array, number, sizeof array[0], compare );
Run Code Online (Sandbox Code Playgroud)
这是我的比较功能.它按第一列中的整数值排序,然后按第二列排序,同时保留第一列中的顺序.例如,"0 2,1 7,0 1"将变为"0 1,0 2,1 7".
int compare ( const void *pa, const void *pb ) {
int (*a)[1] = pa;
int (*b)[1] = pb;
if ( (a[0][0] < b[0][0]) || (a[0][0] == b[0][0])&&(a[1][0] < b[1][0]) ) return -1;
if ( (a[0][0] …Run Code Online (Sandbox Code Playgroud) 我试图使用Cygwin在Windows 7中安装/编译诸如igraph和SNAP之类的库(并且还尝试了MinGW-MSYS)并且遇到了一些问题.
我想我已经把问题缩小到了这个错误./configure:
checking sys/times.h usability... no
checking sys/times.h presence... no
checking for sys/times.h... no
Run Code Online (Sandbox Code Playgroud)
在Cygwin中,/usr/include/sys/times.h确实存在.我为MinGW搜索了这个,似乎sys/times.h不适用于MinGW,因为" POSIX/BSD"次"函数不是ANSI标准的一部分,并且在Mingw32运行时不存在 ".
作为一个实验,我尝试使用gcc在Cygwin中编译这个C代码:
#include <stdio.h>
#include <sys/times.h>
int main (void)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这不会编译,错误sys/times.h no such file or directory.即使我将include更改为</usr/include/sys/times.h>或,也会发生这种情况<usr/include/sys/times.h>.在Cygwin命令中,启动/usr/include/sys/times.h工作正常.
题
如何获得sys/times.h的可用性和存在感?我可以安装包或库吗?
我使用动态数组来表示最小堆.有一个循环可以删除最小值,并将随机元素添加到最小堆中,直到出现某些条件.虽然我不知道堆的长度在运行时会如何变化(有很多随机性),但我知道上限,即1000万.我有两个选择:
1)使用malloc声明一个小数组,然后当堆中的元素数超过长度时调用realloc.
2)使用malloc声明一个1000万条目数组.这避免了调用realloc.
题
选项2是否比选项1更有效?
我用我的代码测试了这个,并且使用2似乎有显着的(20%)运行时间减少.这是因为代码中的随机性而估计的.使用malloc预先声明一个大型的10-50万个入口阵列有什么缺点吗?
如果问题是"愚蠢的",请原谅我.我是算法时间复杂性的新手.
我明白,如果我有n个数,我想总结他们来说,以"n步",这意味着该算法为O(n)或线性时间.即所采取的步数随输入数n而线性增加.
如果我写一个新的算法,一次又一次地进行5次求和,我知道它是O(5n)= O(n)时间,仍然是线性的(根据维基百科).
题
如果我说10个不同的O(n)时间算法(总和,线性时间排序等).我在n个输入上一个接一个地运行它们.
这是否意味着整体运行在O(10n)= O(n),线性时间?
int helper( mt19937& generator ){
do stuff;
return 0;
}
#include "helper.h"
// helper function defined in separate source file and included in header
mt19937 generator(time(NULL));
int main( ) {
help(generator);
}
Run Code Online (Sandbox Code Playgroud)
创建和播种mt19937随机数生成器是否正确,然后通过引用将其传递给函数使用?
我这样做是因为我知道我只想种下mt19937一次.但是我在需要使用随机数生成器的单独源文件中有很多辅助函数.例如,具有随机播放功能.