小编Mah*_*dsi的帖子

初始化对象时{0}意味着什么?

何时{0}用于初始化对象,这是什么意思?我找不到任何{0}地方的任何引用,并且由于大括号,谷歌搜索没有帮助.

示例代码:

SHELLEXECUTEINFO sexi = {0}; // what does this do?
sexi.cbSize = sizeof(SHELLEXECUTEINFO);
sexi.hwnd = NULL;
sexi.fMask = SEE_MASK_NOCLOSEPROCESS;
sexi.lpFile = lpFile.c_str();
sexi.lpParameters = args;
sexi.nShow = nShow;

if(ShellExecuteEx(&sexi))
{
    DWORD wait = WaitForSingleObject(sexi.hProcess, INFINITE);
    if(wait == WAIT_OBJECT_0)
        GetExitCodeProcess(sexi.hProcess, &returnCode);
}
Run Code Online (Sandbox Code Playgroud)

没有它,上面的代码将在运行时崩溃.

c c++

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

使用sudo ulimit时找不到命令

我正在使用ubuntu 12.04,我运行ulimit -n,它显示1024,我想将我的打开文件限制从1024增加到65535,所以我尝试了以下命令:

sudo ulimit -n 65535
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

sudo: ulimit: command not found
Run Code Online (Sandbox Code Playgroud)

如何将文件限制从1024增加到65535?任何帮助将不胜感激.

linux shell ubuntu-12.04

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

计数值出现在MySQL的特定列中

之前可能已经提到过,但我无法通过无数的搜索结果.

给定一个非规范化的MySQL表,什么是最优化的查询来计算列x的每个不同值的使用次数?

例如,给出一个包含的表

mike
mary
mike
Run Code Online (Sandbox Code Playgroud)

返回结果如:

mike 2
mary 1
Run Code Online (Sandbox Code Playgroud)

从MySQL文档中,它似乎count是一个可以使用的聚合函数GROUP BY,但它没有做我想要的(它返回的总行数GROUP BY,而不是每行的出现次数.即这不工作SELECT count(email) as c FROM orders GROUP BY email

mysql aggregate-functions

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

将两位数年份转换为四位数年份

这是最佳实践的问题.我有一个实用程序,它将一个两位数的年份作为字符串,我需要将其转换为四位数年份作为字符串.现在我做

//DOB's format is "MMM (D)D YY" that first digit of the day is not there for numbers 1-9
string tmpYear = rowIn.DOB.Substring(rowIn.DOB.Length - 3, 2); //-3 because it is 0 indexed
if (Convert.ToInt16(tmpYear) > 50)
    tmpYear = String.Format("19{0}", tmpYear);
else
    tmpYear = String.Format("20{0}", tmpYear);
Run Code Online (Sandbox Code Playgroud)

我确信我做错了,任何指针?

c# string date

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

在OS X上,我如何找出为其编译共享库的架构?

我需要知道我是否为32位或64位架构编译libjpeg,但不知道如何查找,是否有一个命令可以让我检查?

unix architecture macos

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

防止PHP中竞争条件的最可靠和安全的方法

我需要在PHP中使用互斥锁或信号量,这让我很害怕.为了澄清,我并不害怕编写无死锁的代码,这些代码可以正常同步或者担心并发编程的危险,但是PHP处理边缘情况的程度如何.

快速背景:编写位于用户和第三方信用卡网关之间的信用卡处理程序界面.需要防止重复请求,并且已经有一个适用的系统,但是如果用户点击提交(w/out JS启用,所以我无法为他们禁用按钮)相隔毫秒,一个竞争条件接着我的PHP脚本没有意识到已经发出了重复的请求.需要一个信号量/互斥量,这样我才能确保每个唯一的事务只有一个成功的请求.

我通过PHP-FPM在多核Linux机器上运行多个进程,在nginx后面运行PHP.我想确定一下

  1. 所有php-fpm进程和所有内核(i686内核)之间共享信号量.
  2. php-fpm在持有互斥锁/信号量时处理PHP进程崩溃并相应地释放它.
  3. php-fpm在持有互斥锁/信号量时处理会话中止并相应地释放它.

是的我知道.非常基本的问题,认为任何其他软件都不存在适当的解决方案是愚蠢的.但这是PHP,它肯定不会考虑并发性,它经常崩溃(取决于你加载了哪些扩展),并且处于易变的环境中(PHP-FPM和Web).

关于(1),我假设如果PHP使用POSIX函数,这些条件在SMP i686机器上都适用.至于(2),我从简要略读文档看到有一个参数决定了这种行为(虽然为什么人们希望PHP不释放互斥锁是会话被杀死我不明白).但是(3)是我的主要关注点,我不知道是否可以安全地假设php-fpm正确地为我处理所有边缘情况.我(显然)不想要死锁,但我不确定我是否可以信任PHP,永远不会让我的代码处于无法获取互斥锁的状态,因为抓住它的会话要么优雅地还是不合理地终止.

我考虑使用MySQL LOCK TABLES方法,但更令人怀疑是因为虽然我相信MySQL锁定比PHP锁定更多,但我担心如果PHP在持有MySQL会话锁定时中止请求(带*out*崩溃),MySQL可能会保持表格锁定(特别是因为我可以很容易地设想会导致这种情况发生的代码).

老实说,我最熟悉一个非常基本的C扩展,在那里我可以确切地看到POSIX正在调用什么以及使用什么params来确保我想要的确切行为..但我不期待编写该代码.

任何人都有关于他们想要分享的PHP的并发相关最佳实践吗?

php concurrency

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

保留Google +1,Facebook赞和Twitter推文此按钮在URI更改后计算

我的问题非常简单:有没有办法(以编程方式,技术上或手动方式)制作Google +1,Facebook赞或Twitter推文这个按钮在更改URI后保留其计数?

以编程方式:使用javascript做一些事情,使其显示两个URI的组合计数,同时仅将新操作发布到后者.

技术上:他们是否检测并遵循原始资源的301重定向?我可以在HTTP标头中包含任何特殊文本,告诉他们应该将所有"点"从旧URI移动到新URI吗?

手动:有些形式可以在我们网站的某个地方提交,或者我可以通过电子邮件发送给我们能够将我们的点数复制到新的URI?

(请注意,我故意在此问题中使用URI而不是URL.规范资源链接正在something.php?id=idnumber变为/mycoolproduct/)

编辑

赏金开始了,但不回答"它无法完成"

redirect social-networking facebook-like google-plus-one

11
推荐指数
2
解决办法
4460
查看次数

C/C++中的位顺序

我必须实现一个定义8位字数据的协议,首先从最低有效位(LSB)开始.我想用这个数据来实现这个数据unsigned char,但是我不知道在C/C++中LSB和最高有效位(MSB)的位顺序是什么,可能需要交换位.

任何人都可以解释我如何找出unsigned char编码:MSB-LSB或LSB-MSB?

例:

unsigned char b = 1;

MSB-LSB: 0000 0001 LSB-MSB: 1000 0000

c c++ bit

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

减慢线程的最佳方法?使用睡眠()好吗?

我编写了一个C++库来完成一些非常繁重的CPU工作(所有这些都是数学和计算),如果留给它自己的设备,将很容易消耗100%的所有可用CPU资源(它也是多线程的可用逻辑数量)机器上的核心).

因此,我在主计算循环中有一个回调,使用该库的软件应该调用:

while(true)
{
    //do math here
    callback(percent_complete);
}
Run Code Online (Sandbox Code Playgroud)

在回调中,客户端调用Sleep(x)来减慢线程.

最初,客户端代码是一个固定的Sleep(100)调用,但这会导致糟糕的不可靠性能,因为有些机器比其他机器更快地完成数学运算,但所有机器上的睡眠都是相同的.所以现在客户端检查系统时间,如果超过1秒(= =几次迭代),它将休眠半秒钟.

这是减慢线程的可接受方式吗?我应该使用信号量/互斥量而不是Sleep()来最大化性能吗?每1秒处理工作正在睡觉x毫秒,还是有什么不对的,我没有注意到?

我问的原因是,即使taskman显示该进程占用了大约10%的CPU,机器仍然会严重陷入困境.我已经探讨过硬盘和内存争用无济于事,所以现在我想知道我放慢线程的方式是否导致了这个问题.

谢谢!

c++ performance multithreading sleep cpu-usage

8
推荐指数
2
解决办法
4079
查看次数

Linux上的va_list错误行为

我有一些代码将variadic参数转换为a va_list,然后将列表传递给随后调用的函数vsnprintf.这在Windows和OS X上运行良好,但在Linux上却出现了奇怪的结果.

在以下代码示例中:

#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>

char *myPrintfInner(const char *message, va_list params)
{
    va_list *original = &params;
    size_t length = vsnprintf(NULL, 0, message, *original);
    char *final = (char *) malloc((length + 1) * sizeof(char));
    int result = vsnprintf(final, length + 1, message, params);

    printf("vsnprintf result: %d\r\n", result);
    printf("%s\r\n", final);

    return final;
}

char *myPrintf(const char *message, ...)
{
    va_list va_args;
    va_start(va_args, message);

    size_t length = vsnprintf(NULL, 0, message, va_args);
    char *final …
Run Code Online (Sandbox Code Playgroud)

c variadic-functions

8
推荐指数
2
解决办法
4237
查看次数