我正在使用mongodb 2.2.0并试图在一行中打印json而不是使用printjson()或者"漂亮"打印find().pretty().即我需要以json格式列出的文件,只需运行命令db.collection.find().limit(10),但我需要使用javascript文件中的游标完成,如下所示:
var cursor = db.collection.find().sort({_id:-1}).limit(10000);
while(cursor.hasNext()){
//printNonPrettyJson(cursor.next()); //How???!
}
Run Code Online (Sandbox Code Playgroud)
print() 不做这个工作,只是打印一些关于对象标识符的乱码.
我想要这个的原因是因为我从控制台调用javascript文件,然后将输出传递给文件,如下所示:
mongo mydatabase myjsfile.js >> /tmp/myoutput.txt
Run Code Online (Sandbox Code Playgroud)
编辑:我想要输出如下:
> db.zips.find().limit(2)
{ "city" : "ACMAR", "loc" : [ -86.51557, 33.584132 ], "pop" : 6055, "state" : "A
L", "_id" : "35004" }
{ "city" : "ADAMSVILLE", "loc" : [ -86.959727, 33.588437 ], "pop" : 10616, "stat
e" : "AL", "_id" : "35005" }
>
Run Code Online (Sandbox Code Playgroud)
而不是像:
> db.zips.find().limit(2).pretty()
{
"city" : "ACMAR",
"loc" : [ …Run Code Online (Sandbox Code Playgroud) 有快速命令吗?我不想Ctrl+d和运行斯卡拉每次我要清除所有变量.重置,清除和清洁不起作用,:help没有列出任何内容
我需要根据条件设置变量.但由于变量是不可变的,我发现自己陷入了不得不重复代码的困境.我想做的是:
def doSomething(x:Int):Int = {
if(x==1){
val player="Andy"
} else {
val player="Rob"
}
getSomeValue(player) // Another function
}
Run Code Online (Sandbox Code Playgroud)
但变量"玩家"已不在范围内.我看到的唯一方法是在两个条件块中调用函数"getSomeValue",但这不是我想做的事情.如何使用不可变变量解决这个问题?
我有一个项目,我正在使用Java + Scala + Slick2D.
从日食开始,项目本身运行良好.但是当我尝试制作一个jar文件时,它只是拒绝工作.这是我在尝试将其导出为Runnable jar时遇到的错误:

如果我尝试导出只是一个Jar文件,它将无法找到主类:

当然,游戏中有一个主要类.TicTacGame.但它拒绝承认它.我尝试用简单的Hello World项目创建一个可执行文件,它运行正常.它甚至可以检测到主类.为什么Eclipse在这种情况下没有检测到主类?
PS:我还尝试提取创建的.jar文件,编辑manifest.mf文件以添加Main-Class:game.TicTacGame,输入两个新行并重新创建jar.然后它给了我一个损坏的jar文件错误.
我在我的智慧结束,并希望在这方面有任何帮助.我正在使用带有Eclipse Juno,Java 1.7和Scala 2.10的Windows 7 x64
编辑:Main类是Java
请原谅我的无知,在我看来,这std::array意味着您的常规数组的 STL 替代品。但是因为数组大小必须作为模板参数传递,它阻止我们std::array使用仅在运行时已知的大小进行创建。
std::array<char,3> nums {1,2,3}; // Works.
constexpr size_t size = 3;
std::array<char,size> nums {1,2,3}; // Works.
const buf_size = GetSize();
std::array<char, buf_size> nums; // Doesn't work.
Run Code Online (Sandbox Code Playgroud)
我认为 C++ 中数组的一个非常重要的用例是基于运行时输入创建一个固定大小的数据结构(比如为读取文件分配缓冲区)。
我为此使用的解决方法是:
// Create a array pointer for on-the-spot usecases like reading from a file.
char *data = new char[size];
...
delete[] data;
Run Code Online (Sandbox Code Playgroud)
或者:
// Use unique_ptr as a class member and I don't want to manage the memory myself.
std::unique_ptr<char[]> myarr_ = std::unique_ptr<char[]>(new char[size]);
Run Code Online (Sandbox Code Playgroud)
如果我不关心固定大小,我知道我可以使用 …
微软的线程安全页面说,shared_ptr即使有多个副本共享同一个对象,也应该使用它。
那么这是否意味着以下两种情况都可以接受?我已经尝试了两者,它们似乎工作正常。
编辑:实际的业务目标是从长时间运行的线程到主线程获取字符串更新。我想我应该使用,shared_ptr因为string它不是线程安全的。不要诚实地关心所有权。
选项 1(传递参考):
auto status = std::make_shared<std::string>();
auto f = [&status]() {
...
*status = "current status";
...
};
std::thread t{f};
while(true) {
std::cout << *status << std::endl;
std::this_thread::sleep_for(1000ms);
if (*status == "completed") break;
}
t.join();
Run Code Online (Sandbox Code Playgroud)
选项 2(制作副本):
auto status = std::make_shared<std::string>();
auto f = [](std::shared_ptr<std::string> s) {
...
*s= "current status";
...
};
std::thread t{f, status};
while(true) {
std::cout << *status << std::endl;
std::this_thread::sleep_for(1000ms);
if (*status == "completed") …Run Code Online (Sandbox Code Playgroud) 我们正在使用MongoDB 2.2.0.数据库包含大约51GB的数据(目前),我想对我们迄今为止收集的用户数据进行一些分析.问题是,它是现场机器,我们现在买不起另一个奴隶.我知道MongoDB有一个读锁定,可能会影响任何特别是复杂查询的写入.有没有办法告诉MongoDB以最低优先级处理我的(特定)查询?
我写了一个Scala程序,我希望通过UI(也在Swing中)触发.问题是,当我触发它时,UI会挂起,直到后台程序完成.我认为解决这个问题的唯一方法是让程序在另一个线程/ actor中运行,并在需要时让它更新UI.更新将包括一个状态栏,显示当前正在处理的文件和进度条.
由于Scala演员已被弃用,我现在很难通过Akka来进行某种基本的多线程运行.Akka网站上给出的例子也很复杂.
但更重要的是,我发现很难绕过如何尝试这个问题.我能想到的是:
第3步让我感到困惑.如何在不锁定某个变量的情况下告诉UI?
此外,我确信这个问题已经解决了.任何示例代码都将受到高度赞赏.
我敢肯定有解决此问题的标准方法,但我找不到。
我有一Processor堂课,管理所有对象的寿命。Foo可能会Bar偶尔分配A。但是Bar需要知道何时Foo不再可用(已被删除Processor)。什么是实现此目标的正确方法?
class Processor {
private:
vector<unique_ptr<Foo>> foos;
vector<unique_ptr<Bar>> bars;
};
class Bar {
public:
void AssignFoo(Foo* foo){ cur_foo = foo; }
private:
Foo* cur_foo = nullptr;
};
Run Code Online (Sandbox Code Playgroud)
我能想到的一种选择是有一个map在Processor其跟踪的分配,并有功能RemoveFoo的Bar,但我不知道是否有任何其他方式。
网上的一般建议似乎是尽可能使用auto。
但这不起作用:
auto cnt = std::atomic<int>{0};
Run Code Online (Sandbox Code Playgroud)
虽然这工作正常:
std::atomic<int> cnt {0};
Run Code Online (Sandbox Code Playgroud)
有推荐的方法来使用它auto吗?或者我应该假设这auto是不可能的?
c++ ×4
scala ×4
c++11 ×2
mongodb ×2
conditional ×1
eclipse-juno ×1
immutability ×1
java ×1
javascript ×1
slick2d ×1
stdarray ×1
swing ×1