我想计算受特定条件限制的列中不同项目的数量,例如,如果表格如下:
tag | entryID
----+---------
foo | 0
foo | 0
bar | 3
Run Code Online (Sandbox Code Playgroud)
如果我想将不同标签的数量计为"标签计数"并在同一个表中将条目ID> 0的不同标签的数量计为"正标签计数",我该怎么办?
我现在从两个不同的表中计算,在第二个表中我只选择了entryID大于零的那些行.我认为应该有一种更紧凑的方法来解决这个问题.
或者,如果T的枚举器只是列出所有元素,那么使用向量是否安全?
理想情况下,我想要做的是使用非阻塞模式延迟任务,然后等待所有任务完成.我试图添加Task.Delay返回的任务对象,然后使用Task.WaitAll但似乎这没有帮助.我该如何解决这个问题?
class Program
{
public static async void Foo(int num)
{
Console.WriteLine("Thread {0} - Start {1}", Thread.CurrentThread.ManagedThreadId, num);
var newTask = Task.Delay(1000);
TaskList.Add(newTask);
await newTask;
Console.WriteLine("Thread {0} - End {1}", Thread.CurrentThread.ManagedThreadId, num);
}
public static List<Task> TaskList = new List<Task>();
public static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
int idx = i;
TaskList.Add(Task.Factory.StartNew(() => Foo(idx)));
}
Task.WaitAll(TaskList.ToArray());
}
}
Run Code Online (Sandbox Code Playgroud) 问题本身的描述非常简单.我正在测试C++ 11和boost :: thread库中std :: thread库的差异.
这些的输出:
#include <iostream>
#include <thread>
#include <boost/thread.hpp>
int main() {
std::cout << std::thread::hardware_concurrency() << std::endl;
std::cout << boost::thread::hardware_concurrency() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给我不同的结果:
0
4
Run Code Online (Sandbox Code Playgroud)
这是为什么?
PS:gcc包的版本是4.6.2-1.fc16(x86_64).我正在使用
g++ test.cc -Wall -std=c++0x -lboost_thread-mt -lpthread
Run Code Online (Sandbox Code Playgroud) 我正在尝试将在C#中实现的线程池移植到Linux下的C++中.我不知道我应该使用哪些功能与"AutoResetEvent"具有相似的行为.
我知道我之前已经问过这个问题:Linux下的AutoResetEvent的C++等价物是什么?
但是,我知道在C++ 0x中,线程库变得更加简单,所以我想再次提出这个问题,是否有一种在C++ 0x中实现AutoResetEvent的简单方法?
假设架构是这样的:
First Name | Last Name | Age | ID
====================================
John Smith 18 123
John Smith 21 234
John Smith 19 123
Cathy Zhang 20 144
Cathy Zhang 20 144
Jackie Chan 35 456
Run Code Online (Sandbox Code Playgroud)
假设我想计算每个(名字,姓氏)之后的不同对的数量.所以输出应该是:
John Smith 3
Cathy Zhang 1
Jackie Chan 1
Run Code Online (Sandbox Code Playgroud)
我想我可以先做:
SELECT FirstName,LastName,Age,ID,COUNT(*);
Run Code Online (Sandbox Code Playgroud)
然后
SELECT FirstName,LastName,COUNT(*)
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
我们公司正在将SMTP邮件服务器切换到Office 365.关键问题是新的SMTP服务器"smtp.office365.com"仅支持TLS加密.因此,我不能使用CredentialCache.DefaultNetworkCredentials自动编码我的Windows登录密码.
var smtpClient = new SmtpClient("smtp.oldserver.com")
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
const string from = "myemail@xyz.com";
const string recipients = "myemail@xyz.com";
smtpClient.Send(from, recipients, "Test Subject", "Test Body");
Run Code Online (Sandbox Code Playgroud)
以前这个没有任何问题.但是,如果我现在将上述代码段更改为:
var smtpClient = new SmtpClient("smtp.office365.com");
smtpClient.EnableSsl = true;
smtpClient.Port = 587;
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)
我现在得到:
Unhandled Exception: System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
Run Code Online (Sandbox Code Playgroud)
但是,如果我在代码中指定我的Windows登录用户名和密码,它可以正常工作: …
当我们在C#中使用随机数生成器时,我们可以定义一个变量
private Random _rndGenerator;
Run Code Online (Sandbox Code Playgroud)
在课堂上然后打电话
_rndGenerator = new Random(seed);
Run Code Online (Sandbox Code Playgroud)
正确地在类的构造函数中.
我的问题是:
什么是这种定义的C++等价物(即类中的RNG).我认为这不是一个正确的使用方法
srand((unsigned int)seed);
Run Code Online (Sandbox Code Playgroud)
对?