小编Den*_*lin的帖子

更新MongoDB中精确元素数组中的字段

我有一个这样的文档:

{
    _id:"43434",
    heroes : [
        { nickname : "test",  items : ["", "", ""] },
        { nickname : "test2", items : ["", "", ""] },
    ]
}
Run Code Online (Sandbox Code Playgroud)

可以予$set所述的第二元件items嵌入对象的阵列中的阵列herosnickname "test"

结果:

{
    _id:"43434",
    heroes : [
        { nickname : "test",  items : ["", "new_value", ""] }, // modified here
        { nickname : "test2", items : ["", "", ""] },
    ]
}
Run Code Online (Sandbox Code Playgroud)

mongodb nosql mongodb-query

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

boost :: asio异步服务器设计

目前我正在使用设计,当服务器读取前4个字节的流然后在头解码后读取N个字节.

但我发现第一次async_read和第二次读取之间的时间是3-4毫秒.我刚从回调中打印出控制台时间戳进行测量.我总共发送了10个字节的数据.为什么需要这么多时间阅读?

我在调试模式下运行它,但我认为1个调试连接并不是因为从socket读取之间有3毫秒的延迟.也许我需要另一种方法来削减"数据包"上的TCP流?

更新:我在这里发布了一些代码

void parseHeader(const boost::system::error_code& error)
        {
            cout<<"[parseHeader] "<<lib::GET_SERVER_TIME()<<endl;
            if (error) {
                close();
                return;
            }
            GenTCPmsg::header result = msg.parseHeader();
            if (result.error == GenTCPmsg::parse_error::__NO_ERROR__) {
                msg.setDataLength(result.size);
                boost::asio::async_read(*socket, 
                    boost::asio::buffer(msg.data(), result.size),
                    (*_strand).wrap(
                    boost::bind(&ConnectionInterface::parsePacket, shared_from_this(), boost::asio::placeholders::error)));
            } else {
                close();
            }
        }
        void parsePacket(const boost::system::error_code& error)
        {
            cout<<"[parsePacket] "<<lib::GET_SERVER_TIME()<<endl;
            if (error) {
                close();
                return;
            }
            protocol->parsePacket(msg);
            msg.flush();
            boost::asio::async_read(*socket, 
                boost::asio::buffer(msg.data(), config::HEADER_SIZE),
                (*_strand).wrap(
                boost::bind(&ConnectionInterface::parseHeader, shared_from_this(), boost::asio::placeholders::error)));
        }
Run Code Online (Sandbox Code Playgroud)

如您所见,unix时间戳在3-4毫秒内有所不同.我想了解为什么在parseHeader和parsePacket之间经过这么多时间.这不是客户端问题,摘要数据是10个字节,但我不能发送更多,延迟恰好是在调用之间.我正在使用Flash客户端版本11.我所做的只是通过打开的套接字发送ByteArray.我不确定客户的延误.我一次发送所有10个字节.我如何调试实际延迟的位置?

c++ architecture networking boost boost-asio

13
推荐指数
2
解决办法
9846
查看次数

std :: uniform_real_distribution和rand()

为什么std::uniform_real_distributionrand()随机数发生器更好?有人可以举个例子吗?

c++ random

12
推荐指数
2
解决办法
3006
查看次数

对boost :: timer :: auto_cpu_timer的未定义引用

我尝试使用g ++ 4.4在Debian上的远程服务器上使用boost库编译小的.cpp文件.我为此目的使用Netbeans.我的家用机器在Windows 7上.解决了链接下一个代码的一些问题

#include <boost/timer/timer.hpp>
#include <iostream>
#include <string>

int main()
{
    boost::timer::auto_cpu_timer ac; //line 5
    return 0; //line 6
}
Run Code Online (Sandbox Code Playgroud)

产生2个错误:
第5 undefined reference to boost::timer::auto_cpu_timer::auto_cpu_timer(short)'
行:第6行:undefined reference to boost::timer::auto_cpu_timer::~auto_cpu_timer()'

如果我使用标题boost/thread.hpp但是对于线程构造函数/析构函数,结果相同.但是例如boost/shared_ptr编译没有任何问题.在neatbeans中的结果编译命令是

g++ -m64 -I/usr/include/boost/boost_1_49_0    -lboost_system -o dist/Debug/GNU-Linux-x86/test build/Debug/GNU-Linux-x86/main.o
-L/usr/include/boost/boost_1_49_0/stage/lib -Wl,-rpath /usr/include/boost/boost_1_49_0/stage/lib  build/Debug/GNU-Linux-x86/main.o
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

c++ compiler-construction boost

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

更新MongoDB中数组内部的嵌入对象

我有文件喜欢

{
    id : 100,
    heros:[
        {
           nickname : "test",
           spells : [
             {spell_id : 61, level : 1},
             {spell_id : 1, level : 2}
           ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我不能$set拼的level : 3spell_id : 1spells那里面heros有绰号"测试我尝试此查询:

db.test.update({"heros.nickname":"test", "heros.spells.spell_id":1}, 
{$set:{"heros.spells.$.level":3}});
Run Code Online (Sandbox Code Playgroud)

我看到的错误是

无法使用字符串字段名称附加到数组[spells]感谢您的帮助.

mongodb mongodb-query

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

jQuery:将文件类型类添加到任何文件类型的链接

$("a[href $='.pdf']" ).addClass("linkIconPDF");
$("a[href *='.pdf#']").addClass("linkIconPDF");
$("a[href *='.pdf;']").addClass("linkIconPDF");
$("a[href *='.pdf?']").addClass("linkIconPDF");

$("a[href $='.txt']" ).addClass("linkIconTXT");
$("a[href *='.txt#']").addClass("linkIconTXT");
$("a[href *='.txt;']").addClass("linkIconTXT");
$("a[href *='.txt?']").addClass("linkIconTXT");
Run Code Online (Sandbox Code Playgroud)

到目前为止一直很好,但如何简化以匹配任何文件类型?

是否可以进行一些正则表达式分组以匹配所有可能的文件类型?

$("a[href $='.([a-zA-Z0-9]{2,4})']" ).addClass("linkIcon$1");
Run Code Online (Sandbox Code Playgroud)

测试脚本:http://jsfiddle.net/k2jqn/

javascript regex jquery

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

来自Keras的冷冻模型在恢复后无法预测

我正在Keras建立和训练我的模型.模特看起来像这样:

inputs = Input(shape=(input_size, 3), dtype='float32', name='input')
lstm1 = LSTM(128, return_sequences=True)(inputs)
dropout1 = Dropout(0.5)(lstm1)
lstm2 = LSTM(128)(dropout1)
dropout2 = Dropout(0.5)(lstm2)
outputs = Dense(output_size, activation='softmax', name='output')(dropout2)
Run Code Online (Sandbox Code Playgroud)

在创建检查点之前,我的模型可以很好地预测类(softmax之后的类分布):

[[ 0.00117011  0.00631532  0.10080294  0.84386677  0.04784485]]
Run Code Online (Sandbox Code Playgroud)

但是下一个代码之后:

all_saver = tf.train.Saver()
sess.run(tf.global_variables_initializer())
print save_path + '/model_predeploy.chkp'
all_saver.save(sess, save_path + '/model_predeploy.chkp', meta_graph_suffix='meta', write_meta_graph=True)
tf.train.write_graph(sess.graph_def, save_path, "model.pb", False)
Run Code Online (Sandbox Code Playgroud)

并使用它冻结它

bazel-bin/tensorflow/python/tools/freeze_graph --input_graph=/Users/denisermolin/Work/Projects/MotionRecognitionTraining/model/graph/model.pb --input_checkpoint=/Users/denisermolin/Work/Projects/MotionRecognitionTraining/model/graph/model_predeploy.chkp --output_graph=/Users/denisermolin/Work/Projects/MotionRecognitionTraining/model/graph/output.pb --output_node_names=Softmax --input_binary=true
Run Code Online (Sandbox Code Playgroud)

然后加载它

graph = load_graph(args.frozen_model_filename)

    # We can verify that we can access the list of operations in the graph
    for …
Run Code Online (Sandbox Code Playgroud)

android keras tensorflow

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

std :: unordered_map非常高的内存使用率

昨天我试图使用std::unordered_map,这段代码混淆了我使用了多少内存.

typedef list<string> entityId_list;
struct tile_content {
   char cost;
   entityId_list entities;
};
unordered_map<int, tile_content> hash_map;

for (size_t i = 0; i < 19200; i++) {
   tile_content t;
   t.cost = 1;
   map[i] = t;
}
Run Code Online (Sandbox Code Playgroud)

所有这些代码部分都是在MS VS2010中以调试模式编译的.我在任务管理器中看到的是大约1200 kb的"干净"过程,但填充后hash_map它使用了8124 kb的内存.这是正常的行为unordered_map吗?为什么要使用这么多内存?

c++ unordered-map visual-c++

7
推荐指数
3
解决办法
9809
查看次数

动态内存分配 - 为什么程序结束时没有"删除"?

我有两个关于下面程序的问题:1.程序是否只创建动态元素(类型矩形和六边形),还是指向它们的指针是动态的?

2.为什么程序最后没有删除.例如这样的事情:(如果我正确地假设只有元素是动态的..)

for(i=0;i<3;i++)
    delete shapeArray[i];
Run Code Online (Sandbox Code Playgroud)

非常感谢,这个网站帮助了我很多老师无法帮助的事情!使然

该计划是:

 int main()
{
 // Create array of pointers to Shapes of various types.
 const int NUM_SHAPES = 3;

 Shape * shapeArray[] = { new Hexagon(),
 new Rectangle(),
 new Hexagon()
 };

 // Set positions of all the shapes.
 int posX = 5, posY = 15;
 for (int k = 0; k < NUM_SHAPES; k++)
     {
 shapeArray[k]->setPosition(posX, posY);
 posX += 10;
 posY += 10;
};

 // Draw all the shapes at their positions.
 for (int …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
2
解决办法
745
查看次数

为什么具有多个嵌套循环的代码可以在GCC上立即完成,但是要永远使用VS?

long long r = 0;
long long k = 0;
for (; k < 9999999999999; k++) 
{
    for (long long i = 0; i < 9999999999999; i++) 
    {
        for (long long j = 0; j < 9999999999999; j++) 
        {
            r = (r + (i * j) % 100) % 47;
            if (r != 0) 
            {
                r++;
            }
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

此代码在i3Core上以0.000001壁秒执行,在i7Core boost::timer::auto_cpu_timer上检查.

但是对于visual studio 2010来说,它似乎在无限的时间里运行.

GCC或VS出了什么问题?GCC优化太多了吗?

c++ optimization gcc compiler-optimization visual-studio

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

错误:已经定义了类模板

我有这个小模板类:

namespace emple {
    template <class LinkedClass> 
    class LinkedInList 
    {
    public:
        LinkedInList()
        { 
            active = false; 
        }
        ~LinkedInList(){}
        LinkedClass* getNext() const
        {
            return next;
        }
        void setNext(LinkedClass* const next_)
        {
            next = next_;
        }
        void setActive(bool state)
        {
            active = state; 
        }
        bool isActive()
        { 
            return active; 
        }
    private:
        LinkedClass* next;
        bool active;
    };
};
Run Code Online (Sandbox Code Playgroud)

编译时我收到此错误:

类模板已经定义.

我究竟做错了什么?

c++ compiler-errors metaprogramming

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

套接字设置选项说明

我有一小段代码

boost::asio::ip::tcp::no_delay option(true);
boost::asio::ip::tcp::socket* sock = new boost::asio::ip::tcp::socket(ios);
sock->set_option(option);
_session_acceptor.async_accept(*sock, 
                boost::bind(&server::playerAccept, this, sock, boost::asio::placeholders::error));
Run Code Online (Sandbox Code Playgroud)

如果我set_option在接受服务器之前调用套接字,则不接受任何连接。但如果我set_option在连接被接受后打电话。难道有什么魔法吗?

c++ boost boost-asio

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

找到由线段相交的所有瓷砖

我必须找到与线段相交的所有瓷砖,但Bresenham的线算法不符合我的要求.我需要找到所有细胞.我不需要知道交叉点,只需要交叉点的事实.感谢帮助.

我想找到线的方向向量,并逐步找到通过瓦片大小划分的单元格.但我不知道如何选择正确的步长.我认为1 px步骤很糟糕.

c++ math optimization

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