我在我们的代码库上运行了findbugs,它指出还有两个语句仍然需要关闭.在我们运行的代码的这一部分中:
preparedStatement = connection.prepareStatement(query);
Run Code Online (Sandbox Code Playgroud)
对于3个不同的查询,重用prepareStatement.在finally块中,我们关闭资源:
finally{
try{
if (resultSet != null)
resultSet.close();
} catch (Exception e) {
exceptionHandler.ignore(e);
}
try {
if (preparedStatement != null)
preparedStatement.close();
} catch(Exception e) {
exceptionHandler.ignore(e);
}
Run Code Online (Sandbox Code Playgroud)
语句是否应在下一个connection.prepareStatement(query)之前关闭; 或者这个发现者是否谨慎?
我正准备在Windows下用Dev-C++重建我的库; 但是,我在此期间添加的着色器功能不受支持,编译器找不到相关的函数(:: glCreateShader(),:: glCreateProgram()等)
在互联网和Dev-C++文件夹中挖掘,我发现OpenGL实现(gl.h)只是v1.1.我找到了从SGI下载最新标题的建议.我找到了gl3.h,然而,经过仔细审查后,我意识到gl.h不包含在我的项目中,我应该看看SDL/SDL_opengl.h.
编辑: SDL_opengl.h 确实包含gl.h 并声明了相关函数的原型.所以问题是,为什么我给出了编译时错误而不是链接器错误?
(我的库只链接到mingw32,libOpenGL32,libSDL,libSDL_Image和libSDL_Mixer,就像在OSX下一样(当然除了mingw32)我没有任何问题.)
如何在Dev-C++和SDL中使用OpenGL v2.0着色器?
我们有一个基本上归档文件的应用程序,我们给用户打印这些文件的可能性.它们可以是.txt,.doc,.pdf,.jpg没什么特别的.是否有.NET方法将这些文件发送到打印机而不进一步处理它们,即打开它们?
我已经尝试使用StartInfo.Verb ="print"创建一个进程
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = fileName;
p.StartInfo.Verb = "print"
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
p.Start();
Run Code Online (Sandbox Code Playgroud)
它仍然打开我不想要的文件.有人可以帮忙吗?
任何帮助,将不胜感激.托比
我已经使用Kohana几个月了,而且对于组织代码/表示/ db-layer的MVC风格我还是比较新的.不幸的是,虽然有大量关于如何创建控制器,建立视图以及通过模型与数据库交互的文档,但我没有找到许多处理干净和建议的开发模式的资源.
让我举一个简单的例子:
我的最新项目有一个控制器,因为我不确定我是否应该做更多的事情......或者我应该做一个新的控制器.我究竟如何确定何时需要新控制器,以及何时需要新模型?
我已经阅读了关于Core Data模型的自动/轻量级迁移的文档 - 但是在实现它的过程中遇到了问题.
据我所知,应用程序应该注意到它所拥有的模型和设备上存在的模型已经不一样了.如果您只添加了属性或关系以及类似的简单更改,则应自动升级模型.
任何指针 - 我需要在xCode中设置一些东西吗?
我的字典:
Dictionary<double, string> dic = new Dictionary<double, string>();
Run Code Online (Sandbox Code Playgroud)
如何返回字典中的最后一个元素?
出于某种原因,当我尝试在我新创建的asp.net mvc应用程序中的默认母版页(Site.Master)中使用Page.ResolveURL或Url.Content时,我收到运行时异常.这很奇怪,因为我已经在.NET中使用ResolveURL辅助函数多年而没有问题.这是我的代码片段:
<link href="<%= Url.Content("~/css/style.css"); %>" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
这是在同一行上发生的运行时错误:
Compiler Error Message: CS1026: ) expected
Run Code Online (Sandbox Code Playgroud)
如果我将href更改为静态URL,一切都很好.此外,这是一个全新的ASP.NET mvc项目......这是我改变的第一行代码.
在使用C++和STL实现Observer模式时,我遇到了一个有趣的问题.考虑这个经典的例子:
class Observer {
public:
virtual void notify() = 0;
};
class Subject {
public:
void addObserver( Observer* );
void remObserver( Observer* );
private:
void notifyAll();
};
void Subject::notifyAll() {
for (all registered observers) { observer->notify(); }
}
Run Code Online (Sandbox Code Playgroud)
这个例子可以在每本关于设计模式的书中找到.不幸的是,现实系统更复杂,所以这是第一个问题:一些观察者决定在收到通知时将其他观察者添加到主题.这使我使用的"for"循环和所有迭代器无效.解决方案相当简单 - 我为已注册的观察者列表创建快照并迭代快照.添加新观察者不会使快照无效,所以一切似乎都可以.但是这里出现了另一个问题:观察者决定在收到通知后自行销毁.更糟糕的是,一个观察者可以决定销毁所有其他观察者(它们是从脚本控制的),这会使队列和快照无效.我发现自己在重新分配的指针上进行迭代.
我的问题是,当观察者互相残杀时,我应该如何处理这些情况呢?有没有现成的模式?我一直认为"观察者"是世界上最简单的设计模式,但现在似乎并不容易正确实现它......
谢谢大家,感谢您的关注.让我们有一个决定摘要:
[1]"不要这样做"对不起,但这是必须的.观察者从脚本控制并被垃圾收集.我无法控制垃圾收集以防止它们的取消分配;
[2]"使用boost :: signal"最有希望的决定,但我不能在项目上引入提升,这样的决定必须由项目负责人做出(我们在Playstation下编写);
[3]"使用shared__ptr"这将阻止观察者解除分配.一些子系统可能依赖于内存池清理,所以我认为我不能使用shared_ptr.
[4]"推迟观察者释放"队列观察员在通知时删除,然后使用第二个周期删除它们.不幸的是,我无法阻止重新分配,所以我使用了某种"适配器"包装观察者的技巧,实际上保留了"适配器"列表.在析构函数中,观察者从他们的适配器取消分配,然后我采取第二个周期来销毁空适配器.
ps是没关系,我编辑我的问题来总结所有的帖子?我是StackOverflow上的菜鸟......
在MyClass.m中,我定义了
- (void) myTest: (NSString *) withAString{
NSLog(@"hi, %@", withAString);
}
Run Code Online (Sandbox Code Playgroud)
和MyClass.h中的适当声明.后来我打电话来
[self performSelector:@selector(mytest:withAString:) withObject: mystring];
Run Code Online (Sandbox Code Playgroud)
在MyClass.m但我得到一个类似于*终止应用程序的错误, 因为未捕获的异常'NSInvalidArgumentException',原因:'* - [MyClass myTest:withAtring:]:无法识别的选择器发送到实例0xe421f0'
我尝试了一个更简单的情况,一个选择器没有参数,打印一个字符串到控制台,并且工作得很好.代码有什么问题,我该如何解决?谢谢.
我一直从第三方库(我不想调试)得到这个警告,所以我真的很感激能够抑制这个特定的警告.谷歌让我失望,所以我在这里.