我正在构建一个使用的Socket类boost::asio.首先,我创建了一个connect方法,它接受了主机和端口并将其解析为IP地址.这很好用,所以我决定去看看async_resolve.但是,我的回调总是得到一个错误代码995(使用与它同步工作时相同的目标主机/端口).
代码:
启动解决方案的功能:
// resolve a host asynchronously
template<typename ResolveHandler>
void resolveHost(const String& _host, Port _port, ResolveHandler _handler) const
{
boost::asio::ip::tcp::endpoint ret;
boost::asio::ip::tcp::resolver::query query(_host, boost::lexical_cast<std::string>(_port));
boost::asio::ip::tcp::resolver r(m_IOService);
r.async_resolve(query, _handler);
}; // eo resolveHost
Run Code Online (Sandbox Code Playgroud)
调用此函数的代码:
void Socket::connect(const String& _host, Port _port)
{
// Anon function for resolution of the host-name and asynchronous calling of the above
auto anonResolve = [this](const boost::system::error_code& _errorCode,
boost::asio::ip::tcp::resolver_iterator _epIt)
{
// raise event
onResolve.raise(SocketResolveEventArgs(*this, !_errorCode ? (*_epIt).host_name() …Run Code Online (Sandbox Code Playgroud) 我正在针对我们的核心框架编写单元测试,并且遇到了这个问题.
我们有一个扩展方法,如下所示:
public static T ThrowIfDefault<T>(this T self, string variableName)
{
if (self.Equals(default(T)))
throw new ArgumentException(string.Format("'{0}' cannot be default(T)", variableName));
return self;
} // eo ThrowIfDefault<T>
Run Code Online (Sandbox Code Playgroud)
(ThrowIfNull<>我在Stack Overflow上看到的扩展方法的变体.
在为此编写测试用例时,我首先编写了一个帮助器:
public void ThrowIfDefaultTestHelper<T>(T value)
{
// unit test *itself* requires that a value be specified!!
Assert.AreNotEqual(default(T), value);
// Good test
GenericExtensionMethods.ThrowIfDefault(value, "value");
// Bad test
try
{
GenericExtensionMethods.ThrowIfDefault(default(T), "value");
}
catch (ArgumentException)
{
// Expected result
}
catch (Exception)
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
然后是以下内容:
[TestMethod()]
public void ThrowIfDefaultTest()
{ …Run Code Online (Sandbox Code Playgroud) 这可能是一个"最佳实践"问题,但我想确保我以正确的方式解决这个问题.
我有以下课程:
typedef boost::shared_ptr<MyClass> MyClassPtr;
class MyClass final : public boost::enable_shared_from_this<MyClass> {
public:
/* ctors/dtor ommitted */
MyClassPtr method1() {
// does something
return shared_from_this();
};
MyClassPtr method2() {
// does something
return shared_from_this();
};
}; // eo class MyClass
Run Code Online (Sandbox Code Playgroud)
这是因为我想轻松地将呼叫链接在一起:
MyClassPtr ptr(myClassFactory.createMyClass());
ptr->method1()->method2()->methodX(); // etc...
Run Code Online (Sandbox Code Playgroud)
这是shared_from_this()成语的合适用途吗?有没有我不知道的陷阱,或者有更好的方法吗?
考虑这个函数:
static void Throw<T>(string message) where T : Exception
{
throw (T)Activator.CreateInstance(typeof(T), message, (Exception)null);
}
Run Code Online (Sandbox Code Playgroud)
T正如问题标题所示,给定类型System.ArgumentException,我收到“找到不明确匹配”的运行时错误。查看 的文档ArgumentException,以下是公共构造函数:
ArgumentException()
ArgumentException(string)
ArgumentException(SerializationInfo, StreamingContext)
ArgumentException(string, Exception)
ArgumentException(string, string)
ArgumentException(string, string, Exception)
Run Code Online (Sandbox Code Playgroud)
鉴于我将 2 个参数传递给CreateInstance,并强制null为 null Exception,我很难理解为什么它与上面列表中的第四个构造函数不匹配?
我有一个问题......我需要构建一个app多线程,我的问题是:如果我有一个2cpu处理器,我的2个线程是自动分开处理器吗?如果我有4个线程并且我的电脑有4cpu,那么每个处理器还有1个吗?如果我有4个处理器和2个cpu,怎么分?
提前致谢
我一直在设计一个基于组件的游戏库,其总体目的是用C++编写它(因为这是我的强项),以Ogre3D作为后端.现在我已经准备好编写一些代码,我认为在XNA4.0框架下测试我的框架会更快(获得结果/编写编辑器等更快一些).然而,尽管我不是初来乍到C++或C#,我感到有点新人当谈到做事的"XNA"的方式,可以这么说,所以我有几个疑问之前,我开始敲定代码:
我读到了使用数组而不是集合来避免性能命中,然后还读到这不完全正确,如果你枚举一个具体的List<>集合(而不是一个IEnumerable<>),枚举器是一个值类型,它是用于每次迭代,并且没有任何GC担心.有问题的文章早在2007年.这是否成立,或者您是否经历过XNA开发人员对此有真实的陷阱?理想情况下,在我做太多之前,我想先选择一条路线.
如果阵列真的是要走的路,没有问题,我假设在调整阵列大小时,你用新的空间复制旧阵列?或者这是不是标志?您是否尝试永远不会调整阵列的大小?如果是这种情况,那么GC是否会为旧版本启动,或者是无关紧要的打击?
由于引擎是为C++设计的,因此该设计允许使用lambdas和delegates.一种设计使用fastdelegate库,这是在C++中使用委托的最快方法.一种更灵活,但速度稍慢的方法(虽然在C++世界中几乎不引人注意)是使用C++ 0x lambdas和std::function.理想情况下,我想在XNA中做类似的事情,并允许使用代理.代表的使用是否会导致性能方面的任何重大问题?
如果有关于代表的性能考虑因素,那么之间是否存在差异:
public void myDelegate(int a, int b);
private void myFunction(int a, int b)
{
}
event myDelegate myEvent;
myEvent += myFunction;
Run Code Online (Sandbox Code Playgroud)VS:
public void myDelegate(int a, int b);
event myDelegate myEvent;
myEvent += (int a, int b) => { /* ... */ };
Run Code Online (Sandbox Code Playgroud)
对不起,如果我有点胡扯,我更愿意明白我的问题.:)
提前致谢!
我需要代码,从用户那里获取输入,然后将它们加在一起 - 简单.但是我找不到方法,接受输入直到0被按下并且将数字加在一起..到目前为止,我做了它需要10个值,但就像我说它需要自定义..感谢您的帮助.
int[] myarray = new int[10];
for (int i = 0; i < 10; i++)
{
myarray[i] = Convert.ToInt32(Console.ReadLine());
}
int a = 0;
for (int j = 0; j < 10; j++)
{
a = a + myarray[j];
}
Console.WriteLine(a);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud) 我正在研究像这样的一些c ++代码:
//c++ code
class MovieInfo;
MovieInfo getMovieInfoByName(String movieName)
{
//search the movieInfoList with movieName
if(FOUND)
return movieInfo;
//TODO: **what should i return if the movieInfo can't be found in the list?**
}
Run Code Online (Sandbox Code Playgroud)
问题是如果在列表中找不到movieInfo,我应该返回什么?
我从文件中得到的文字有以下字符串:1"-DC-19082-A3
获得该行后,我得到以下字符串(在调试时得到它):"\"1 \"\" - DC-19082-A3 \""
因为我正在搜索数据库,所以没有任何用途
任何想法我怎么能回到原来的?
我已经看到StreamWriter.WriteLine可以完成这项工作,但我不想为此创建任何文件.
我尝试了以下,但它没有用
StringBuilder sb = new StringBuilder();
sb.Append(@"\");
sb.Append('"');
string strToReplace = sb.ToString();
string lineNumberToSearchFor = lineNumber.Replace(strToReplace, string.Empty);
Run Code Online (Sandbox Code Playgroud)
希望有一个简单的方法来实现这一目标
非常感谢!
我有这个城市列表(复选框和标签)和一个输入字段:
<input class="search-filter" type="text"/>
<form autocomplete="off" id="city-search-form" name="city-search-form" action="" method="">
<div id="list" class="multiselect">
<input id="city-id-1" class="css-checkbox" type="checkbox" />
<label for="city-id-1" name="" class="css-label">abc</label>
<input id="city-id-2" class="css-checkbox" type="checkbox" />
<label for="city-id-2" name="" class="css-label">bce</label>
<input id="city-id-3" class="css-checkbox" type="checkbox" />
<label for="city-id-3" name="" class="css-label">cde</label>
<input id="city-id-4" class="css-checkbox" type="checkbox" />
<label for="city-id-4" name="" class="css-label">rgp</label>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我正在使用此jquery代码按我键入的单词过滤复选框+标签,但代码不起作用.如何过滤并仅显示以键入的单词开头的标签.
function listFilter(list) {
var input = $('.search-filter');
$(input)
.change( function () {
var filter = input.val();
$('.css-label').filter(function(filter) {
if($('.css-label').text().search(filter) == 0){
.....hide();
}
else {
.......show();
}
}); …Run Code Online (Sandbox Code Playgroud) c# ×5
c++ ×3
.net ×1
arrays ×1
asynchronous ×1
boost ×1
boost-asio ×1
c++11 ×1
class-design ×1
for-loop ×1
generics ×1
html ×1
int ×1
javascript ×1
jquery ×1
reflection ×1
return ×1
return-value ×1
shared-ptr ×1
sockets ×1
streamreader ×1
string ×1
unit-testing ×1
visual-c++ ×1
xna ×1