Tag: C#的

在cpp.react库的C ++源代码中奇怪的“ – > * ”expression式

这里是我在cpp.react库的文档中find的C ++代码片段: auto in = D::MakeVar(0); auto op1 = in ->* [] (int in) { int result = in /* Costly operation #1 */; return result; }; 我从来没有见过->* []符号。 首先,我认为这只是一个错字,但我也在源代码中find了这样一个expression式: auto volume = (width,height,depth) ->* [] (int w, int h, int d) { return w * h * d; }; 这是有效的C + + 11(或C + […]

如何安全地从std :: istream读取一行?

我想安全地从std::istream读取一行。 stream可以是任何东西,例如Web服务器上的连接或处理由未知来源提交的文件的东西。 有很多答案开始做这个代码的道德等价物: void read(std::istream& in) { std::string line; if (std::getline(in, line)) { // process the line } } 考虑到可能存在的可疑来源,使用上述代码将导致一个漏洞:恶意代理可能使用巨大的代码对这个代码进行拒绝服务攻击。 因此,我想将线路长度限制在一个相当高的值,比如400万个char 。 尽pipe可能会遇到一些大的问题,但为每个文件分配一个缓冲区并使用std::istream::getline()是不可行的。 怎样才能限制这条线的最大尺寸,理想的情况是不会严重扭曲代码,而且事先没有分配大量的内存?

这个错误是什么意思:“错误:在'type_name'之前预期说明符 – 限定符列表”?

我一直在处理单元处理器,我试图创build一个结构,将持有一个spe_context_ptr_t ,将用于线程内启动一个spe上下文,还将持有一个指向其他东西,将被传递给从线程内的spu上下文(目前我试图只是把它作为一个通用的指针,但实际上它将是一个指向我定义的另一个结构的指针)。 当我尝试编译时,出现以下错误: spu/../common.h:38: error: expected specifier-qualifier-list before 'spe_context_ptr_t' // here is the offending line(s) typedef struct _PTHREAD_BLOCK { spe_context_ptr_t * context; // Error happens here uintptr32_t args; } PTHREAD_BLOCK;

GNU99和C99(Clang)有什么区别?

我看到了编译器选项GNU99和C99。 他们有什么不同? 任何详细的文件? (Clang,Xcode,Mac OS X)

Boost.Spirit使用这个不寻常的C ++模板特性的名字是什么?

下面的代码来自Boost.Spirit x3文档 。 它使用了我以前从未见过的有趣的C ++语法,在不知道正确的术语的情况下几乎不可能在search查询中进行描述。 这是一个class的前进宣言的简写吗? C ++标准中提到的这个特性在哪里? namespace parser { using x3::eps; using x3::lit; using x3::_val; using x3::_attr; using ascii::char_; auto set_zero = [&](auto& ctx){ _val(ctx) = 0; }; auto add1000 = [&](auto& ctx){ _val(ctx) += 1000; }; auto add = [&](auto& ctx){ _val(ctx) += _attr(ctx); }; // What is this? This is the […]

SSE内在函数参考

有谁知道一个引用,列出了gcc的SSE内部函数的操作,即<* mmintrin.h>头文件中的函数? 谢谢。

清除一个小整数数组:memset与for循环

有两种方法可以将整数/浮点数组清零: memset(array, 0, sizeof(int)*arraysize); 要么: for (int i=0; i <arraysize; ++i) array[i]=0; 显然,对于大型arraysize ,memset更快。 但是,memset的开销实际上大于for循环的开销? 例如,对于大小为5的数组 – 这将是最好的? 第一个,第二个,或者甚至是未滚动的版本: array[0] = 0; array[1] = 0; array[2] = 0; array[3] = 0; array[4] = 0;

在debugging模式下,发布版本中缺陷的常见原因不存在

错误和exception程序行为的典型原因是什么,它们仅在释放编译模式下performance出来,但在debugging模式下却不会发生?

SqlParameter已经被另一个SqlParameterCollection包含了 – 是否使用(){}作弊?

如下所示,使用using(){} (sic)块,并假定cmd1没有超出第一个using(){}块的范围,为什么第二个块会抛出一个exception,消息SqlParameter是已经包含另一个SqlParameterCollection ? 这是否意味着资源和/或句柄(包括连接到cmd1的参数(SqlParameterCollection))在其末尾被销毁时不会被释放? using (var conn = new SqlConnection("Data Source=.;Initial Catalog=Test;Integrated Security=True")) { var parameters = new SqlParameter[] { new SqlParameter("@ProductId", SqlDbType.Int ) }; using(var cmd1 = new SqlCommand("SELECT ProductName FROM Products WHERE ProductId = @ProductId")) { foreach (var parameter in parameters) { cmd1.Parameters.Add(parameter); } // cmd1.Parameters.Clear(); // uncomment to save your skin! } […]

如何处理使用MemoryCache的代价高昂的build筑操作?

在ASP.NET MVC项目中,我们有几个需要大量资源和时间构build的数据实例。 我们想caching它们。 MemoryCache提供一定程度的线程安全性,但不足以避免并行运行多个构build代码实例。 这里是一个例子: var data = cache["key"]; if(data == null) { data = buildDataUsingGoodAmountOfResources(); cache["key"] = data; } 正如您在繁忙的网站上看到的,数百个线程可能会同时进入if语句,直到数据build立,并使build设操作更慢,不必要地占用服务器资源。 在MemoryCache中有一个primefacesAddOrGetExisting实现,但它错误地要求“设置值”而不是“代码来检索设置的值”,我认为呈现给定的方法几乎完全无用。 我们一直在使用我们自己的专用脚手架来绕过MemoryCache,但是它需要明确的lock 。 使用per-entry锁对象很麻烦,我们通常通过共享远离理想的锁对象而逃脱。 这使我认为避免这种惯例的理由可能是有意的。 所以我有两个问题: 不lockbuild筑物代码是否更好? (这可能已经被certificate对一个更加敏感,我想知道) 什么是正确的方式来实现每个条目lockingMemoryCache这样的锁? 在“.NETlocking101”中,强烈要求使用keystring作为locking对象。