小编Ant*_*ack的帖子

是否可以在两个不同的集合中生成重复的Mongo ObjectId?

是否可以为两个不同集合中的文档生成相同的Mongo ObjectId?我意识到这绝对不太可能,但有可能吗?

没有太具体,我问的原因是,通过我正在处理的应用程序,我们会显示当选官员的公开个人资料,我们希望将其转换为我们网站的完全成熟用户.我们为用户和当前不是我们网站成员的当选官员提供单独的收藏.还有各种其他文件,其中包含有关当选官员的各种数据,这些数据都使用他们选出的官方ObjectId映射回该人.

创建帐户后,我们仍然会突出显示与当选官员相关联的数据,但他们现在也是用户集合的一部分,并且相应的用户ObjectId将其配置文件映射到与我们的应用程序的交互.

几个月前我们已经开始将我们的应用程序从MySql转换为Mongo,当我们处于转换状态时,我们存储了这两种数据类型的遗留MySql id,我们现在也开始将选定的官方Mongo ObjectId存储在用户中文件,以映射回选定的官方数据.

我正在考虑将新用户ObjectId指定为先前选定的官方ObjectId,以使事情变得更简单,但是想确保不可能与任何现有用户ObjectId发生冲突.

感谢您的见解.

编辑:发布此问题后不久,我意识到我提出的解决方案不是一个好主意.最好只保留我们现有的架构,并链接到用户文档中选定的官方'_id'.

database mongodb nosql

169
推荐指数
3
解决办法
5万
查看次数

如何在打印用法时表示命令行参数是可选的

假设我有一个可以通过以下任一方式运行的脚本.

./foo arg1 arg2
./foo
Run Code Online (Sandbox Code Playgroud)

是否有一种普遍接受的方式来表示在打印正确的命令用法时arg1和arg2不是必需参数?

我有时会注意到使用括号括起来的用法,如下面的用法打印输出.

Usage: ./foo [arg1] [arg2]
Run Code Online (Sandbox Code Playgroud)

这些括号是否意味着参数是可选的,还是有另一种普遍接受的方式来表示参数是可选的?

unix command-line arguments

31
推荐指数
3
解决办法
3万
查看次数

你如何在javascript中获得今天开始的unix时间戳?

我意识到可以使用以下内容生成当前时间戳...

var timestamp = Math.round((new Date()).getTime() / 1000);
Run Code Online (Sandbox Code Playgroud)

我想要的是当天开始时的时间戳.例如,当前时间戳大致是1314297250,我希望能够生成的是1314230400今天的开始August 25th 2011.

谢谢你的帮助.

javascript date unix-timestamp

24
推荐指数
2
解决办法
2万
查看次数

如何捆绑Angular $ http.get()调用?

我有一个控制器,需要检索两个单独的REST资源,将填充两个下拉列表.我想避免填充其中任何一个,直到两个$ http.get()调用都返回,这样下拉列表似乎同时填充,而不是一个接一个地插入.

是否可以捆绑$ http.get()调用并优雅地为两个返回的数组设置$ scope变量,而不必为两个场景编写状态逻辑,例如b之前的返回,b之前返回?

javascript angularjs

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

Java Regex在字符类中的非法转义字符

我正在尝试确定传递给我的Expressions类的表达式是否有运算符.分别+-*/^用于加,减,乘,除和指数.

这段代码有什么问题?

private static boolean hasOperator(String expression)
{
    return expression.matches("[\+-\*/\^]+");
}
Run Code Online (Sandbox Code Playgroud)

我认为我已经正确地转义了特殊字符,但是在尝试编译时我不断收到错误:" 非法转义字符 ".

谢谢你的帮助.

java regex

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

从较小的二进制数中减去一个大的无符号二进制数

我正在学习计算机组织和汇编语言课程.本周我们实验室的书面部分有一个问题让我难过.问题是......

减去以下无符号二进制数(显示借位和溢出位).不要转换成二进制补码.

 0101 0111 1101
-1110 1011 0110
 --------------
Run Code Online (Sandbox Code Playgroud)

我意识到答案是-1001 0011 1001但是我很难通过取较大的数字并从较小的数字中减去并显示我的工作来弄清楚如何借用来实际执行这个减法.我的整个生命从一个较小的数字中减去一个大数字我已经扭转了问题,而是从较大的数字中减去较小的数字,并在结果前面添加了一个负号.我问教授,他说他希望问题能够解决问题.我不允许通过从较大的数字中减去较小的数字来解决这个问题,并且像我通常那样否定.我无法在网上找到任何从较小的无符号二进制数减去较大的无符号二进制数的例子.

如果有人可以向我描述如何在这种情况下执行减法,我将非常感激.

更新:@Alex是正确的.教授正在寻找

0110 1100 0111 (1735)
Run Code Online (Sandbox Code Playgroud)

感谢大家.

theory math binary subtraction

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

printk loff_t类型的格式说明符?

我正在为学校作业开发一个Linux角色设备驱动程序,我不知道如何打印*ppos传入我的读取函数类型loff_t.

我知道我必须使用printk而不是printf内核中的标准库,但我似乎无法找出正确的格式说明符.

c linux linux-device-driver linux-kernel printk

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

MIPS指令集移动vs add/addi 0用于存储值?

我目前正在学习计算机组织和汇编语言课程,主要使用MIPS指令集来教授汇编语言.

我注意到教授在网上发布的许多例子都使用add或addi将值移动到$ a0参数寄存器中,用于调用打印服务,如下所示......

# store the first integer in $a0 and print
add $a0, $zero, $t0
li $v0, 1
syscall
Run Code Online (Sandbox Code Playgroud)

要么...

# store the first integer in $a0 and print
addi $a0, $t0, 0
li $v0, 1
syscall
Run Code Online (Sandbox Code Playgroud)

我也注意到一些在线的例子,其他人只是使用移动指令完成同样的事情,如下所示...

# store the first integer in $a0 and print
move $a0, $t0
li $v0, 1
syscall
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用add或addi指令优先于简单地使用move吗?如果是这样,为什么?是否存在性能差异或仅仅是品味问题?

assembly mips

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

通常的做法是在方法签名中使用args以达到合同的唯一目的

我对我在学校看到的一些代码有点好奇,这是否是这个领域的常见做法或者只是糟糕的设计.

考虑以下接口和实现它的两个类......

public abstract interface Anchor
{
    public abstract double x(double x);

    public abstract double y(double y);
}
Run Code Online (Sandbox Code Playgroud)

请注意,在Cycle类中,实际使用x()和y()中的参数...

public class Cycle implements Anchor
{
    public Anchor anchor;
    public double radius;
    public double period;
    public double phase = 4.0D;

    public Cycle(Anchor anchor, double radius, double period) {
        this.anchor = anchor;
        this.radius = radius;
        this.period = period;
    }

    public double angle(double day) {
        return this.phase * 3.141592653589793D * (day / this.period) / 2.0D;
    }

    public double x(double x) {
        return this.anchor.x(x) …
Run Code Online (Sandbox Code Playgroud)

java interface

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

管,叉和执行 - 父母与子女过程的双向沟通

我的操作系统类中的赋值要求我通过在同一程序上递归调用exec来构建二进制进程树.目标是将一些任意任务拆分为单独的进程.父母应该通过未命名的管道与孩子和父母进行交流.这个想法是父母将每个孩子的一半工作发送,并且这继续递归,直到满足基本案例,其中传递给每个孩子的字符串的长度<= 2.然后孩子处理这些数据并将结果发回通过管道给父母.

为了更好地理解双向通信如何与c中的管道一起工作,我在继续实际分配之前创建了以下简单程序.父节点从不从子进程读取数据.我期待输出......

在父母| 收到的消息:测试

相反,当我打印时,我得到......

在父母| 收到消息:

似乎buff是空的,而不是从子进程中读取.有人可以解释我做错了什么和/或标准方式

  1. 写给父母的exec'd孩子
  2. 从exec'd孩子的父母那里读书
  3. 从exec'd孩子写回父母
  4. 从父母的执行孩子那里读书

我需要使用exec(),pipe(),fork().谢谢.

/**
 * *********************************
 * two_way_pipes.c
 * *********************************
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <math.h>
#include <sys/time.h> 
#include <sys/types.h> 
#include <unistd.h>

#define PARENT_READ read_pipe[0]
#define PARENT_WRITE write_pipe[1]
#define CHILD_WRITE read_pipe[1]
#define CHILD_READ  write_pipe[0]

#define DEBUGGING 1

int main(int argc, char **argv) {
    char buff[5];

    // in the child process that was exec'd on the orginal call to two_way_pipes
    if(argc == 2) {
        read(STDIN_FILENO, …
Run Code Online (Sandbox Code Playgroud)

c fork pipe exec

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

带有连接文件描述符的pthread竞争条件

我正在为学校作业实现一个简单的多线程Web服务器,并且遇到了与每个连接使用的连接文件描述符的一些同步问题.我最初的问题是,一个线程有时会关闭文件描述符(conn_fd),因为文件描述符也在另一个线程中使用.当另一个线程尝试发送()或recv()时,这将导致错误的文件描述符错误.

我的解决方法是存储每个文件描述符是否最多为1000(任意数量和我知道的错误)当前是打开的.如果accept()返回的文件描述符已经打开,我的progam调用fcntl(conn_fd,F_DUPFD,0); 创建一个重复的文件描述符,以便一个线程不会无意中关闭另一个线程需要使用的连接.我的程序似乎比我开始跟踪打开的文件描述符之前的工作要好,但我仍然有一些同步问题,我无法弄清楚如何解决.每个线程的开始路由中的conn_fd,process_connection_request()似乎都被破坏了.

我在针对我的服务器运行Siege时尝试使用Helgrind来隔离问题.不幸的是,我的代码在Helgrind下运行时从未崩溃.它确实表明conn_fd存在潜在的竞争条件,但我认为在main()和process_connection_request()中包装我周围的互斥锁将解决该问题.我以前从未开发过任何多线程或套接字程序,我怀疑有一些简单的我缺少.非常感谢有关如何在发送和接收时使用错误的文件描述符解决问题的任何见解和建议.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <fcntl.h>
#include <time.h>
#include <signal.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define SERVER_PORT 50040
#define MAX_LISTEN_BACKLOG 1024
#define MAX_FILENAME_LENGTH 255
#define REQUEST_BUFF_SIZE 8192
#define THREAD_POOL_SIZE 16

// function prototypes
int int_len(int i);
void *process_connection_request(void *conn_fd);
void sig_handler(int sig);

pthread_t thread;
pthread_attr_t thread_attr;
pthread_mutex_t conn_fd_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t stats_mutex = PTHREAD_MUTEX_INITIALIZER;

int sock_fd;
int conn_fds_open[1000];

int main(void)
{
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr; …
Run Code Online (Sandbox Code Playgroud)

c sockets pthreads

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

您使用什么命令来使用Mercurial刷新开发环境?

我想我正在学习一些倒退.我对git很满意,直到我最近的项目才使用mercurial.

困扰我的一件事是,由于未跟踪的文件错误,有时我似乎无法刷新我的开发环境.我真的不在乎是否在开发服务器上跟踪/取消跟踪文件.我只想从bitbucket中获取最新的repo状态.

不幸的是,我有时最终会诉诸于nuking应用程序并重新克隆.通常情况下,这不会是一个很大的交易,但每次我执行此操作时都需要添加回应用程序的依赖项,因为它们不存储在repo中.

用git我会跑......

git reset --hard; git checkout master -f; git pull; git checkout origin/master -f
Run Code Online (Sandbox Code Playgroud)

什么是mercurial等价物?我试过了...

hg revert --all; hg pull; hg update;
Run Code Online (Sandbox Code Playgroud)

这似乎有点像我期望的那样有效.当它不起作用时,由于未跟踪的文件错误而中止.我正在寻找一直有效的东西.

version-control mercurial

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