对不起,可能很容易问题.
我需要一系列标志
boolean[20] isTownVisited
Run Code Online (Sandbox Code Playgroud)
但是在它中使用int并不方便,我想使用字符串:
isTownVisited[Town.Milan] = true;
Run Code Online (Sandbox Code Playgroud)
要么
return isTownVisited[Town.Rome]
Run Code Online (Sandbox Code Playgroud)
我试图宣布枚举
enum Town {Milan, Rome, Florence, Napoli}
Run Code Online (Sandbox Code Playgroud)
但我仍然不能用它来索引我的布尔数组.如何解决这个问题,我可以这样写:
enum Town {Milan = 0, Rome = 1, Florence = 2, Napoli = 3}
Run Code Online (Sandbox Code Playgroud) 我想在我的机器上运行我的程序的两个实例.每个实例都需要localhost命名管道:
_host = new ServiceHost(typeof(ManagementConsole),
new Uri[]
{
new Uri("net.pipe://localhost")
});
_host.AddServiceEndpoint(typeof(IManagementConsole),
new NetNamedPipeBinding(),
"PipeManagementConsole");
_host.Open();
Run Code Online (Sandbox Code Playgroud)
在我使用的程序的另一个例子中 PipeManagementConsole2
所以客户应该使用net.pipe://localhost/PipeManagementConsole和net.pipe://localhost/PipeManagementConsole2.
但是,Windows不允许我的程序的第二个实例运行,它声称net.pipe://localhost已经在使用(它是),我该如何解决这个问题?
在我的工作站上我有SVN存储库.我在工作站和笔记本电脑上都使用它.在工作站上,我可以在本地访问存储库,但在笔记本电脑上,我必须通过互联网连接到访问存储库.这不方便,因为我不能在飞机/火车和其他没有互联网的地方工作(我想比较修改等等).
在笔记本电脑上安装svn存储库的COPY会更舒服,但我需要最新版本.
最简单的解决方案是将svn存储库存储在云中,如https://www.dropbox.com,以便随时在一台计算机上更新存储库,它将在另一台计算机上更新.
但由于安全原因,我不想使用Dropbox,我不想在互联网的某个地方存储机密文件,而且可能是未加密的.
我还可以做些什么?我想自动同步两个存储库副本,但我不想将其存储在Internet中.每次互联网出现时,笔记本电脑本身应该从工作站"获取"最新的副本,每次在笔记本电脑上更新存储库时,它应该自动对工作站进行新的修订?
我知道SVN不是为了做这些事情而设计的,但由于我是存储库的唯一提交者而我只有工作站和笔记本电脑,我们可以认为冲突永远不会发生......
我有事件,例如:
public event EventHandler<NewReadyMessageEventArgs> NewReadyMessage
Run Code Online (Sandbox Code Playgroud)
问题是我需要为它添加两个处理程序,我需要先执行一个(因为最后一个依赖于第一个).即我需要一定的处理程序执行顺序.
我知道实际上处理程序将逐个执行,所以我只需要按正确的顺序附加它们,但这将是非常错误的设计.
我想创建单独的处理程序并附加它.在这个处理程序中,我只想按正确的顺序执行我的两个处理程序.你怎么想,你会建议什么?
我没有提供完整的列表,因为下面的代码对于那些熟悉 Disruptor 的人来说已经足够了。问题是调用Next和Publish方法是否是线程安全的。下面的例子中哪一个是正确的?请注意,Attach可以同时从不同线程调用。我有多个消费者。
例1. 锁定一切:
private object attachLock = new object();
// can be called from parallel threads
public void Attach(OrdersExecutor oe)
{
lock (attachLock)
{
long sequenceNo = ringBuffer.Next();
ringBuffer[sequenceNo].Value = oe;
ringBuffer.Publish(sequenceNo);
}
}
Run Code Online (Sandbox Code Playgroud)
例2. 锁定下一个:
private object attachLock = new object();
// can be called from parallel threads
public void Attach(OrdersExecutor oe)
{
long sequenceNo;
lock (attachLock)
{
sequenceNo = ringBuffer.Next();
}
ringBuffer[sequenceNo].Value = oe;
ringBuffer.Publish(sequenceNo);
}
Run Code Online (Sandbox Code Playgroud)
例3. 无锁
private object …Run Code Online (Sandbox Code Playgroud) 我为记录编写了自己的简单类.我明白我最好使用某种类型的库(boost.log,log4cpp?)但是让我们讨论我的简单类:
#include "stdafx.h"
#include "Logger.h"
Logger::Logger(std::string fileName)
{
logFile.open(fileName);
}
Logger::~Logger(void)
{
logFile.close();
}
void Logger::Error(std::string message) {
logFile << message << std::endl;
}
void Logger::Debug(std::string message) {
logFile << message << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
"Error code: %x", code.怎么做?Debug如果LOG_DEBUG没有设置编译符号,我想要排除方法.在C#中,我可以[Conditional("LOG_DEBUG")]在方法声明之前添加,但现在在c ++中这样做?upd关于1我已经尝试了它并且它的工作原理:
void Logger::Debug(std::string message, ...) {
va_list arglist;
fprintf(pFile, message.c_str(), arglist);
Run Code Online (Sandbox Code Playgroud) 当发生未处理的异常时,我想打印堆栈跟踪而不是仅仅终止.我试过这样做SetUnhandledExceptionFilter:
SetUnhandledExceptionFilter(UnhandledException);
...
LONG WINAPI UnhandledException(LPEXCEPTION_POINTERS exceptionInfo)
{
printf("An exception occurred which wasn't handled!\nCode: 0x%08X\nAddress: 0x%08X",
exceptionInfo->ExceptionRecord->ExceptionCode,
exceptionInfo->ExceptionRecord->ExceptionAddress);
return EXCEPTION_EXECUTE_HANDLER;
}
Run Code Online (Sandbox Code Playgroud)
我发现这个代码工作正常.但是也有因为没有另外的信息ExceptionCode,并ExceptionAddress在系统"事件查看器"打印反正.如果可以打印完整的堆栈跟踪,那么我可以确定发生异常的确切位置?
我发现此代码https://code.google.com/p/m0d-s0beit-sa/source/browse/src/main.cpp?r=9ceb4fec21d647b169c72851d7882bef2b9c5a8a它部分解决了我的问题.仅打印出现异常的方法.但是不打印异常类型和行号.
Jason Dolinger在他的视频中(现在热门)www.lab49.com/files/videos/Jason%20Dolinger%20MVVM.wmv(从0.59到1.04)使用这样的代码:
public partial App: Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
IUnityContainer container = new UnityContainer();
RandomQuoteSource source = new RandomQuoteSource();
container.RegisterInstance<IQuoteSource>(source);
WatchList window = container.Resolve<WatchList>();
window.Show();
}
}
Run Code Online (Sandbox Code Playgroud)
他使用我无法找到的IUnityContainer类.据我所知,我们只是创建了一个窗口(所以container.Resolve调用可以替换new WatchList(...,也可以用某种方式RandomQouteSource作为实现关联IQouteSource,但是我不清楚如何在以后使用它.
问题是:
在我的情况下,服务器不可用,因此我无法读取客户端的数据,因此我想抛出一个异常。我应该抛出什么异常?我不想为这种情况创建自己的异常类,因为程序中有很多不同的情况。
可能存在某种“一般”异常,例如“ NetworkProblem”或什至只是“ Problem”之类的东西?
我不需要任何特定的东西,只是消息的例外。
Peek 返回队列开头的对象而不删除它.
如果我想对"队列中的最后一个对象"做同样的事情怎么办?即"最新的"(刚刚插入的那个).
我已经尝试queue.Reverse().Peek()但是这不会编译.