小编Tim*_*ter的帖子

在Google Protocol Buffers中使用int32而不是sint32是不是很好?

我最近一直在阅读Google Protocol Buffers,它允许在消息中使用各种标量值类型.

根据他们的文档,有三种类型的可变长度整数原语- int32,uint32sint32.在他们的文档中,他们指出int32"编码负数的效率低 - 如果您的字段可能有负值,请sint32改用." 但是如果你有一个没有负数的字段,我认为uint32将是一个比使用更好的类型int32(由于额外的位和处理负数的CPU成本降低).

那么什么时候int32使用是一个很好的标量?文档是否意味着只有当您很少得到负数时它才是最有效的?或者它总是优先使用,sint32uint32取决于该领域的内容?

(同样的问题也适用于这些标量的64位版本,以及:int64,uint64,和sint64,但我离开他们出了问题描述为可读性的缘故.)

primitive protocol-buffers

19
推荐指数
2
解决办法
7763
查看次数

用于处理protobuf的Eclipse插件

协议缓冲区(protobuf)是一种以高效且可扩展的格式编码结构化数据的方法.

有Netbeans 的插件,但我找不到Eclipse 的插件.它存在吗?如果是,请分享链接.

谢谢.

java eclipse eclipse-plugin protocol-buffers

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

防止不必要的C++仿函数对象副本

我有一个类,它可以累积有关一组对象的信息,可以作为仿函数或输出迭代器.这允许我做以下事情:

std::vector<Foo> v;
Foo const x = std::for_each(v.begin(), v.end(), Joiner<Foo>());
Run Code Online (Sandbox Code Playgroud)

Foo const x = std::copy(v.begin(), v.end(), Joiner<Foo>());
Run Code Online (Sandbox Code Playgroud)

现在,理论上,编译器应该能够使用复制省略和返回值优化,以便只Joiner需要创建一个对象.然而,在实践中,该函数会生成一个操作副本,然后将其复制回结果,即使在完全优化的构建中也是如此.

如果我将仿函数创建为左值,则编译器会创建两个额外的副本而不是一个副本:

Joiner<Foo> joiner;
Foo const x = std::copy(v.begin(), v.end(), joiner);
Run Code Online (Sandbox Code Playgroud)

如果我笨拙地强制将模板类型强制转换为引用,它会传入引用,但无论如何都要复制它并返回对(现在已销毁的)临时副本的悬空引用:

x = std::copy<Container::const_iterator, Joiner<Foo>&>(...));
Run Code Online (Sandbox Code Playgroud)

我可以通过在样式的仿函数中使用对状态的引用而不是状态本身来使副本变得便宜std::inserter,从而导致类似这样的事情:

Foo output;
std::copy(v.begin(), v.end(), Joiner<Foo>(output));
Run Code Online (Sandbox Code Playgroud)

但是这使得不可能使用不可变对象的"功能"风格,而且通常不那么好.

有没有办法鼓励编译器忽略临时副本,或者让它一直通过引用并返回相同的引用?

c++ optimization templates

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

timegm跨平台

我正在使用Visual Studio c ++ Compiler(2010),但该库具有不同的ANSI C和POSIX库函数的实现.

ANSI C函数和Windows CRT实现有什么区别?例如tzset()和/ _tzset()setenv()ans有_setenv()什么区别?似乎以同样的方式做同样的事情......

我正在使用msvc(2010),我是否更喜欢Windows CRT实现?

编辑1

好吧,我希望以可移植的方式转换一个以UTC表示的结构tm time_t,但是没有可移植的方法来做到这一点.我要为不同的平台(Android,Linux,Windows,Windows CE)编写功能.

我已经看过这个使用的stackoverflow帖子setenv,getenvtzset

EDIT2

不幸的是,经过一些测试,我发现getenv("TZ")在Windows上返回一个空指针.但为什么如此困难将UTC时间结构转换为time_t

编辑3

从Boost中我发现了boost/chrono/io/time_point_io.hpp中的这段代码.希望这对我有所帮助.

inline int32_t is_leap(int32_t year)
{
  if(year % 400 == 0)
  return 1;
  if(year % 100 == 0)
  return 0;
  if(year % 4 == 0)
  return 1;
  return 0;
}
inline int32_t days_from_0(int32_t year)
{
  year--;
  return 365 * year …
Run Code Online (Sandbox Code Playgroud)

c++ crt msvcrt visual-c++

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

ASP.NET"黄色死亡屏幕"如何显示代码?

我以为.Net代码被编译成MSIL,所以我总是想知道黄色屏幕是如何产生错误的代码的.如果它正在执行已编译的代码,编译器如何能够从错误消息中的源文件生成代码?

随意编辑这个问题/标题,我知道它没有意义.

.net asp.net yellow-screen-of-death

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

使用ProtoBuf时,加密的最佳方法是什么?

我已将我的移动设备上的数据库迁移远离VistaDB,因为它太慢了.我现在使用ProtoBuf在存储卡上创建一系列平面文件,唯一的问题是显然没有加密.

哪种加密方法最适合ProtoBuf?我基本上将一组数据实体序列化到一个文件中,然后从File反序列化回到我的集合中.我认为加密的最佳位置是在读/写的FileStream中.

数据将包含NI编号,名称和地址,因此必须是安全的.任何想法的人?

encryption serialization compact-framework protocol-buffers .net-2.0

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

为什么Visual Studio在启用时会说"代码覆盖率未启用此测试运行"?

在Visual Studio中,我刚刚创建了一个简单的单元测试来测试我编写的方法.我想检查代码覆盖率,但代码覆盖率窗口只表示"未对此测试运行启用代码覆盖率".为什么?注意:

  1. 我已经按照本页面上的说明进行操作,即测试配置确实在代码覆盖率选项页面上检查了相关的程序集.
  2. 我点击了"运行测试",而不是 "调试测试",一些消息来源声称这导致了这一点.
  3. 我已经尝试将当前构建配置设置为"Debug"或"Release"来运行测试; 既不起作用.
  4. 我也按照这个页面上的建议(通过选择Test => Select Active Test Run Configuration重新选择testrunco​​nfig文件),但无济于事.

然而,每次运行相关测试时,我仍然会收到"此测试运行未启用代码覆盖率"的消息.如何一劳永逸地启用代码覆盖?

unit-testing code-coverage visual-studio

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

将PNG图像裁剪为最小尺寸

如何使用Python切断PNG图像的空白边框区域并将其缩小到最小尺寸?

python png image

10
推荐指数
3
解决办法
9250
查看次数

如何在当前时间添加时间

我对这个很困惑.

我想抓住当前时间,而不是根据条件,我想将所需时间添加到当前时间.例如.

current time  = 06:47:10 
//or should i hv to change this format to "2011-03-26 06:47:10  GMT"

 if(a= 1 and b= min ) 
  { //add 1 min to
  current time 
  } 
  else if(a= 1 and b= hour) 
  { //add 1
   hour to current time 
  } 
 else if(a= 1 and b=week )  
 { //add 1
 week to current time  
 }
Run Code Online (Sandbox Code Playgroud)

只需要将上述条件的输出添加到当前时间.

请指导我这个.

问候

iphone xcode datetime ios

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

从已编译的DLL中获取所有XAML文件

我想在第三方库(DLL)的运行时外部XAML样式期间加载.在本教程中,他们使用:

Application.LoadComponent(new Uri("/WpfSkinSample;component/Skins/" + name + ".xaml", UriKind.Relative)) as ResourceDictionary;
Run Code Online (Sandbox Code Playgroud)

加载新样式.

但是我不知道第三方库中的XAML名称,所以我正在寻找一种方法来获取它们并将它们加载到我的应用程序中.

谢谢你的帮助.

编辑: 感谢andyp,我做了以下工作:

    public void LoadXaml(String Assemblypath)
    {
        var assembly = Assembly.LoadFile(Assemblypath);
        var stream = assembly.GetManifestResourceStream(assembly.GetName().Name + ".g.resources");
        var resourceReader = new ResourceReader(stream);

        foreach (DictionaryEntry resource in resourceReader)
        {
            if (new FileInfo(resource.Key.ToString()).Extension.Equals(".baml"))
            {
                Uri uri = new Uri("/" + assembly.GetName().Name + ";component/" + resource.Key.ToString().Replace(".baml", ".xaml"), UriKind.Relative);
                ResourceDictionary skin = Application.LoadComponent(uri) as ResourceDictionary;
                this.Resources.MergedDictionaries.Add(skin);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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