我正在做一个项目,要求我接收来自许多发件人的消息.我的recv服务器使用线程recv在UDP协议下连续数据.我struct BufferData在头文件中调用了一个结构来组织我从客户端收到的缓冲区.这是我的struct样子:
struct BufferData
{
char Buffer1[BYTES];
char Buffer2[BYTES];
char Buffer3[BYTES];
char MixedBuffer1[BYTES];
char MixedBuffer2[BYTES];
char MixedBuffer3[BYTES];
};
Run Code Online (Sandbox Code Playgroud)
这是我在.cpp文件中的recv线程函数.
hThread = (HANDLE)_beginthreadex(NULL, 0, &CUdpSocket::ServerRecvThread, pRecvData, 0, &threadID); // Thread caller
unsigned __stdcall CUdpSocket::ServerRecvThread(void *threadArg)
{
//-----------------------------------------------
// Initialize Winsock
//-----------------------------------------------
// Create a receiver socket to receive datagrams
//-----------------------------------------------
// Bind the socket to any address and the specified port.
//-----------------------------------------------
// Call the recvfrom function to receive datagrams
// on the bound socket. …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用.NET ORM,我还没有在Entity Framework和NHibernate之间做出决定.但在这两种情况下,我遇到了一个问题,因为他们似乎希望我以各种方式破坏我的域模型的完整性,特别是在C#对象设计的更精细点上.这是关于这个问题的几个问题之一.
我习惯于使用如下所示的模式在适当的属性上强制使用不变性:
public class Foo
{
private readonly string bar;
public string Bar { return this.bar; }
public Foo(string bar)
{
this.bar = bar;
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎不受NHibernate或Entity Framework的支持.他们想要默认的构造函数和publicsetter; 看起来甚至privatesetter(和默认构造函数)工作(有时?)因为ORM可以使用反射.
我想我可以通过使用privatesetter和private默认构造函数来解决这些问题.至少那时公共API不会受到损害.我正在修改我的所有类的实现以添加未使用的private构造函数,并且必须信任future-Domenic,他private对我的setter 理解的确意味着"除了在构造函数中之外不要打电话给我".持久层泄漏到我的域对象设计中.
它似乎也是不必要的 - 为什么ORM不能知道使用非默认构造函数?也许他们能够,我只是没有找到正确的博客文章解释如何.
最后,在某些情况下,我的不可变值对象实际上很适合(不可变)值类型,即structs.我的猜测是这是可能的,因为在数据库中,我的struct的字段将显示在父实体存储的同一行中.你能确认/否认吗?这篇博文看起来很有前途,因为它给出了肯定的答案,但代码的数量(实际上特定于所讨论的价值类型)却让人头疼.
令人沮丧的是,经过几年阅读像Effective C#这样的书或像Eric Lippert那样的博客,它们提供了关于如何设计富有表现力和防弹的C#对象的建议,使用ORM的需要让我把大量的知识从窗口.我希望这里有人可以指出我错在哪里,要么掌握他们的能力,要么是我对域建模和ORM角色的思考.
默认情况下,OS X 10.6用于/usr/libexec/path_helper添加文件中列出的以下路径/etc/paths:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
这意味着在路径/usr/bin之前/usr/local/bin.这导致的版本通过的Xcode 4的git安装在/usr/bin被调用,而不是通过自制软件安装到的版本/usr/local/bin.
这引出了我的问题,是否有一个问题,/usr/local/bin来到/usr/bin路径前?是否有一个特定的原因,苹果默认/usr/bin以前来过/usr/local/bin?
/usr/bin和的顺序/usr/local/bin/usr/local/bin从文件底部移到/etc/paths顶部是一个问题吗?这样做会影响路径,而不仅仅是当我启动终端时,因为/usr/libexec/path_helper可以被其他资源使用(我不确定这一点).
虽然多余,但我似乎更安全地添加/usr/local/bin到路径中~/.bash_profile,这意味着/usr/local/bin将在路径上两次.
我想使用AutoFac将引用注入到对象的构造函数中.但是,实际对象本身未注册.我正在为ASP.NET MVC控制器工厂执行此操作,其中控制器将不会注册,但构造函数params将是.我设法团结一致,但我遇到了AutoFac的问题.
那可能吗?
谢谢.
我总是被Python的collections.deque对象所吸引.它似乎就像一个列表,除了在开头添加/删除项比在列表中更快.
这让我想替换list用deque在我的代码不同的地方,我有我做左侧弹出一个列表.所以我的问题:有没有人标杆deque反对list在这样的情况下?
我应该为rabbitmq使用什么ruby客户端?
我是否只是在Web应用程序启动期间连接到rabbitmq服务器,即在初始化程序中,或者是否可以按请求完成?
在启动期间执行一次是否存在任何并发问题?
下面首先记录0,然后记录1.如何存储对象的副本,而不是对它的引用?
debug.log(vi.details.segment);
vi.nextSegment = vi.details;
vi.nextSegment.segment++;
debug.log(vi.details.segment);
Run Code Online (Sandbox Code Playgroud) 我正在寻找.Net中点对点NAT遍历的建议或解决方案.假设我有一个聊天应用程序,两个客户端需要连接,但两者都在NAT后面:
对于家庭场景,uPNP可能没问题,因为只涉及电缆调制解调器或消费者路由器.但是,uPNP无法实现的企业环境呢?
我熟悉UDP穿孔,可以握手,但我宁愿不依赖它来传输真实的应用数据.
我也研究过IPv6和Teredo,但我不确定每个客户端都有IPv6可用性,并且对于所有Teredo要求(服务器,中继等)都有点混乱.
这是2011年和IM /聊天客户已经存在了十年,然后一些 - 所以我相信这个问题已经解决了很多次.任何人都可以推荐这方面的最佳实践吗?提前致谢!
在Visual Studio中打开20多个文件是很常见的(我现在使用VS 2008,但很快我们将迁移到VS 2010).是否有任何可以帮助组织主动打开文件的加载项?
我的意思是像Firefox彩色标签或标签管理器,它将按项目或文件夹分组窗口标签,...
visual-studio-addins visual-studio-2010 visual-studio-2008 visual-studio
我可以期待修复HtmlAgility库有哪些错误?我根据自己的经验知道它可以关闭一个缺失的标签,例如:
<car>Nissan</car
Run Code Online (Sandbox Code Playgroud)
何时执行Load或LoadHtml,它将修复它,如:
<car>Nissan</car>
Run Code Online (Sandbox Code Playgroud)
我也知道ParseErorrs集合可以确定Reason,Stream等.
是否存在错误列表(或者您可以根据自己的经验判断)HtmlAgility修复错误的可靠性如何以及HtmlAgility无法解决哪些错误?
.net ×3
arrays ×1
autofac ×1
c# ×1
c++ ×1
class-design ×1
clone ×1
collections ×1
deque ×1
immutability ×1
javascript ×1
jquery ×1
macos ×1
nat ×1
networking ×1
object ×1
orm ×1
p2p ×1
path ×1
python ×1
rabbitmq ×1
ruby ×1
value-type ×1
wcf ×1