小编sha*_*kin的帖子

简单的C++ MIME解析器

我想要消化从PHP脚本发回的C++中的多部分响应.有人知道一个非常轻量级的MIME解析器可以为我做这个吗?

c++ parsing mime

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

使用'goto'控制流的宏

是的,两个讨厌的结构相结合.它听起来是不是很糟糕,还是被视为控制goto使用的好方法,也提供了合理的清理策略?

在工作中,我们讨论了是否允许在我们的编码标准中使用goto.一般来说,没有人想允许免费使用goto,但有些人对使用它进行清理跳转是积极的.如在此代码中:

void func()
{
   char* p1 = malloc(16);
   if( !p1 )
      goto cleanup;

   char* p2 = malloc(16);
   if( !p2 )
      goto cleanup;

 goto norm_cleanup;

 err_cleanup:

   if( p1 )
      free(p1);

   if( p2 )
      free(p2);

 norm_cleanup:
}
Run Code Online (Sandbox Code Playgroud)

这种使用的巨大好处是你不必最终得到这个代码:

void func()
{
   char* p1 = malloc(16);
   if( !p1 ){
      return;
   }

   char* p2 = malloc(16);
   if( !p2 ){
      free(p1);
      return;
   }

   char* p3 = malloc(16);
   if( !p3 ){
      free(p1);
      free(p2);
      return;
   }
}
Run Code Online (Sandbox Code Playgroud)

特别是在具有许多分配的类似构造函数的函数中,这有时会变得非常糟糕,尤其是当有人必须在中间插入某些东西时.

因此,为了能够使用goto,但仍然明确地将其与自由使用隔离,创建了一组流控制宏来处理任务.看起来像这样(简化):

#define FAIL_SECTION_BEGIN int exit_code[GUID] = …
Run Code Online (Sandbox Code Playgroud)

c error-handling coding-style goto flow-control

6
推荐指数
3
解决办法
2426
查看次数

什么是"dreadlock"?(注意"R")

听过很多次死锁,但多线程编程背景下的辫子是什么?

更新: IAbstract的答案链接到白皮书,该白皮书解释了名为dreadlock的算法(不是它看起来的产品).它非常彻底地涵盖了这个概念.但是,简要总结一下它的含义:

检测死锁的常用方法是跟踪哪些线程锁定哪些资源.这基本上产生了线程到资源的图形,并且当该图形中出现循环时发生了死锁.这种方法被称为自旋锁,并且还因其昂贵而闻名,因此通常也使用诸如简单锁定超时之类的更有效的替代方案.Dreadlock算法似乎是常规自旋锁算法无效的解决方案,通过最小化跟踪锁定周期所需的数据量.

multithreading deadlock

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

sprintf样式字符串格式的起源

sprintf中的字符串格式化概念现在几乎可以在任何语言中找到(你知道,用%s%d%f等窒息字符串并提供一个变量列表来填充它们的位置).

哪个langugage最初具有提供此功能的库函数或语言结构?

请指定某种来源参考来确认您的声明,以便我们避免纯粹的推测或猜测.

问候

罗伯特

string formatting multilingual printf

5
推荐指数
2
解决办法
1081
查看次数

Windows专家能否在Linux开发平台上高效工作?

说我觉得一个Windows开发人员超过10年的丰富经验,高超的技术在C/C++和出色的引用作为一个多功能编码器谁把事情完成.我可以雇佣他在Linux平台上进行开发,并希望他能在几周内高效地完成生产吗?或者说在开发环境和日常工作中使用的所有常用工具方面,门槛太高了?这个人要克服的主要障碍是什么?

注意,这是一个普遍的问题,我基本上假设典型的Windows和Linux环境(Visual Studio与Eclipse或EMACS,添加/删除程序与apt-get,对话框向导与命令行等)

linux windows development-environment

5
推荐指数
2
解决办法
732
查看次数

从Visual Studio到Vim或Emacs?

我下个月开始上新工作.我实际上已经在Visual Studio中专业地生活了10年或者接受,但是对于这份工作,我将在我的生活中第一次全职工作在linux平台上.

在其中一次采访中,我坐在开发室中间,与人群交往.我们进行了十分钟的轻松交谈,然后其中一个人说:"好吧,现在是真正重要的问题 - Vim还是Emacs?".

我告诉他们我在Linux上工作的经验不是很丰富,所以我没有真正的意见.但是这个问题让我陷入两难境地,因为我想在开始之前对我潜在的工作环境感到满意.

我猜我在开始之前无法解开这两个编辑器的全部潜力,所以为了选择一个最适合我的编辑器,问题就在于:Vim和Emacs将会做什么如果我现在只关注Visual Studio,那么我最舒适高效(使用C++)?

c++ vim emacs visual-studio

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

Clojure兼容的Java虚拟机列表

一个社区维基投票
"我已经使用这个JVM使用Clojure没有问题"为
"我已经使用这个JVM使用Clojure和有问题"

指定评论中的问题将有助于其他人判断风险是否适用于他们.

jvm clojure

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

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

.NET - 在表单上获取控件引用的正确方法

我有一个C#类库,它使用一个表单(也在库中).假设我在这个表单上有一个名为editContents的编辑框.在常规表单应用程序中,我习惯于能够像这样获取编辑框:

class MainForm
{
     void Method()
     {
          this.editContents.Text = "Hi";
     }
}
Run Code Online (Sandbox Code Playgroud)

我想在常规表单应用程序中幕后发生了一些魔术,因为编辑框成员在MainForm类中是私有的,但我仍然可以像公共成员一样访问它.

但在我的类库中,我无法像这样访问编辑框.我实例化并显示"手动"形式,如下所示:

form = new MyForm();
form.Show();
Run Code Online (Sandbox Code Playgroud)

如何从此表单正确获取editContents控件?

c# forms controls

4
推荐指数
2
解决办法
3122
查看次数

当数据库事务被破坏时是否有一个突破点?

我对数据库事务"通常"如何在数据库系统中实现感兴趣,例如MySQL.

假设实际将数据写入物理数据库存储不是原子操作(现在就时钟周期来说),我是否应该通过例如在一些精心挑选的时刻撕掉电源线来破坏交易?

database transactions

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