小编jea*_*ean的帖子

并发集合的包含方法是无用的吗?

if(concurrentHashMap.containKey(key))
{
    // oops, v has been removed in another thread right after current thread 
    // complete containKey calling
    Value v = concurrentHashMap.get(key); 
    // do something on v                  // null pointer exception
}
Run Code Online (Sandbox Code Playgroud)

似乎并发集合的包含类方法是无用的,以解决上述问题:

Vaule v = concurrentHashMap.get(key);
if(v != null)
{
    // ok, hold v's reference
    // do something on v
}
Run Code Online (Sandbox Code Playgroud)

我对吗?

java concurrency

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

Visual Studio C++ - 检查链接特定库的原因

vs报告错误,例如:

  1. 找不到xxx.lib
    如何查看为什么vs需要链接xxx.lib?有跟踪日志吗?我的项目没有使用boost.regex,但vs报告错误说无法找到regex.lib.所以我想找出代码的哪一部分引用正则表达式

  2. LNK错误:LIBCMT.lib:xxx已经在LIBCMTD.lib中定义了
    如何检查为什么vs也链接yyy.lib,即使这是一个调试版本?我有2个项目,它们链接到相同的库,所有库和项目本身都是/ MTd.但其中一个会报告上面的错误,我认为它不应该链接LIBCMT.lib,因为它是一个发布版本的lib,另一个项目是正常的,所以lib文件是正确构建的

VS可以显示链接跟踪吗?

c++ linker visual-studio-2012

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

在后台运行django时创建的两个进程

我发现

python manage.py runserver 0.0.0.0:8000 &

当通过ps检查时将打开2个进程:

ps -ef

root     13884     1  0 18:01 ?        00:00:00 python manage.py runserver 0.0.0.0:8088
root     13885 13884  0 18:01 ?        00:00:19 /usr/bin/python manage.py runserver 0.0.0.0:8088
Run Code Online (Sandbox Code Playgroud)

为什么django打开2个进程?如果我想要杀死他们,有没有任何序列?

django

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

mongodb-将字段追加到BSONObj

mongodb c ++驱动器通过BSONObjBuilder构造了一个BSONObj对象,但实际上需要将字段附加到BSONObj,例如:

BSONObj base_part_query()
{
    return BSON(...);
}

void q1()
{
    BSONObj obj = base_part_query();
    obj.appendField("q1_special","v"); // mongo driver has no such api
    // query by q1
}
void q2()
{
    BSONObj obj = base_part_query();
    obj.appendField("q2_special","v"); // mongo driver has no such api
    // query by q2
}
Run Code Online (Sandbox Code Playgroud)

如果我不做base_part_query,在qn()中将有n个BSON(...)的副本。这是不好的。

c++ mongodb

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

netty的并发编码

编码器的编码方法会同时执行吗?我观察到编码方法可能由不同的线程并发.管道定义为:

Channels.pipeline(
    idleHandler,
    new AmfDecoder<GameEvent>(GameEvent.class),
    new AmfEncoder<GameEvent>(),
    concurrencyHandler,
    new WebHandler());
Run Code Online (Sandbox Code Playgroud)

编码器:

public class AmfEncoder<T extends IAmfEvent> extends OneToOneEncoder{
private final SerializationContext serializationContext = new SerializationContext();
private final Amf3Output amfout = new Amf3Output(serializationContext);

@Override
protected Object encode(ChannelHandlerContext arg0, Channel arg1,
        Object arg2) throws Exception {
    T e = (T)arg2;
    ByteArrayOutputStream byteoutStreamSize = new ByteArrayOutputStream();
    amfout.setOutputStream(byteoutStreamSize);
    amfout.writeObject(e.getBody());
    // byteoutStreamSize has small probability become empty at here, in debug mode I can sure e.getBody() has data
    // I thought byteoutStreamSize might be empty …
Run Code Online (Sandbox Code Playgroud)

java concurrency netty

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

用asio演绎C++ 11类型

我正在使用boost::asio::steady_timer _timer,但我发现如果使用-std = c ++ 11标志,编译器将报告无法转换类型的错误:

boost::asio::steady_timer::time_point now() {
    return boost::asio::steady_timer::clock_type::now();
}
Run Code Online (Sandbox Code Playgroud)

并且没有匹配运算符+()的匹配函数:

_timer.expires_at(now()+boost::chrono::milliseconds(100));
Run Code Online (Sandbox Code Playgroud)

似乎编译器无法在c ++ 11模式中推断出正确的类型.但相反,我使用

boost::asio::basic_waitable_timer<boost::chrono::steady_clock> _timer;
Run Code Online (Sandbox Code Playgroud)

boost::asio::steady_timer::time_point 改为 boost::chrono::steady_clock::time_point

没关系.但是,它们是相同的,并且在没有0x或11模式的g ++中工作正常.

C++ 11是否对typedef演绎做了不同的事情?还是一个boost配置问题?

c++ typedef boost-asio

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

时间:2019-03-17 标签:c#protobufreflectionus

我正在使用官方的 c# protobuf(不是 Protobuf-net)。是否支持根据消息类型创建消息对象?

\n\n

典型的反序列化就像\xef\xbc\x9a

\n\n
MyProtoMessageClass obj = MyProtoMessageClass.Parser.ParseFrom(byteArray);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是如何根据字符串生成实例

\n\n
"MyProtoMessageClass"\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者Google.Protobuf.Reflection.MessageDescriptor其中的一个对象是

\n\n
MyProtoMessageClass.Descriptor\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n

更新

\n\n
delegate void handler(object data);\nclass Wrapper\n{\n    public handler h;\n    public global::Google.Protobuf.IMessage m;\n}\nDictionary<ushort, Wrapper> dict = new Dictionary<ushort, Wrapper>();\n\n\n// register\nclass HandlerClass {\n    public void handle(object o) {\n        ProtoMessageClass data = (ProtoMessageClass)o;\n        // use data \n    }\n}\nh = HandlerClassObj.handle;\nm = new ProtoMessageClass();\ndict[1] = new Wrapper{h = h, m = m};\n\n// call\nushort cmd = 1;// from socket\nbyte[] dataRecv; …
Run Code Online (Sandbox Code Playgroud)

c# protocol-buffers

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