有人请解释之间的差异java.lang.RuntimeException和java.lang.Exception?如果我创建自己的异常,如何决定扩展哪一个?
我有一个std :: vector m_vPaths; 我会迭代这个向量并调用:: DeleteFile(strPath).如果我成功删除了该文件,我将从矢量中删除它.我的问题是,我可以使用两个向量吗?是否有不同的数据结构可能更适合我需要做的事情?
示例:使用迭代器几乎可以实现我想要的,但问题是一旦使用迭代器擦除,所有迭代器都将变为无效.
std::vector<std::string> iter = m_vPaths.begin();
for( ; iter != m_vPaths.end(); iter++) {
std::string strPath = *iter;
if(::DeleteFile(strPath.c_str())) {
m_vPaths.erase(iter);
//Now my interators are invalid because I used erase,
//but I want to continue deleteing the files remaining in my vector.
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用两个向量,我将不再有问题,但是有没有更好,更有效的方法来做我想做的事情?
顺便说一句,如果不清楚,m_vPaths就是这样声明的(在我的课上):
std::vector<std::string> m_vPaths;
Run Code Online (Sandbox Code Playgroud) 在C++中,我经常将单元测试类作为我正在测试的类的朋友.我这样做是因为我有时觉得需要为私有方法编写单元测试,或者我想要访问某个私有成员,这样我就可以更轻松地设置对象的状态,以便我可以测试它.对我来说,这有助于保持封装和抽象,因为我没有修改类的公共接口或受保护的接口.
如果我购买第三方库,我不希望它的公共接口被一堆我不需要知道的公共方法污染,因为供应商想要进行单元测试!
我也不想担心一群受保护的成员,如果我从一个类继承,我不需要知道.
这就是我说它保留抽象和封装的原因.
在我的新工作中,他们不赞成使用朋友课,甚至进行单元测试.他们说因为班级不应该"知道"关于测试的任何内容,而且你不希望课程和测试的紧密耦合.
有人可以向我解释这些理由,以便我可以更好地理解吗?我只是不明白为什么使用朋友进行单元测试很糟糕.
我正在测试Google Analytics目标,但我不确定我是否正确设置了它.我设置一个基本的3步目标作为测试.然后我去了我的网站并执行了这三个步骤.这应该立即显示在目标报告中的Google Analytics中,还是需要几天?我需要知道,所以我可以知道我是否需要进行故障排除.
提前致谢!
我正在上一门计算机科学课程,教学大纲说下载java 1.6.我没有找到java 1.6,一切都说JDK 6.当我用谷歌搜索java 1.6我发现这个链接:
http://java.sun.com/javase/downloads/index.jsp
这是他所谓的java 1.6吗?我下载了JDK 6 update 17和netbeans 6.8.我会给教练发电子邮件并问他这个问题,但我打赌我会在这里得到更快的答案,我已经准备好开始了!谢谢!
更新:感谢大家快速解答!我现在正在努力!
package myintergertest;
/**
*
* @author Engineering
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//this one does not increment
Integer n = new Integer(0);
System.out.println("n=" + n);
Increment(n);
System.out.println("n=" + n);
Increment(n);
System.out.println("n=" + n);
Increment(n);
System.out.println("n=" + n);
Increment(n);
//this one will increment
MyIntegerObj myInt = new MyIntegerObj(1);
Increment(myInt);
System.out.println("myint = " + myInt.get());
Increment(myInt);
System.out.println("myint = " + myInt.get());
Increment(myInt);
System.out.println("myint = " + myInt.get()); …Run Code Online (Sandbox Code Playgroud) std::string s("??<");
std::cout << s << std::endl;
Run Code Online (Sandbox Code Playgroud)
为什么输出{而不是?<
我正在使用Visual Studio 2008.我认为它正在对它进行编码但是为什么以及如果发生了什么就会调用编码?
这个小%#$ ^*!导致我在我的(单元测试)代码中查找错误30分钟,然后我发现我的字符串被破坏了!:(
这是一段代码:
//Game board is made up of Squares. A player can place GamePieces on a Square.
public class CheckersBoard
{
public boolean PlaceGamePiece(GamePiece gamePiece, int nRow, int nColumn) {
return m_theGameBoard[nRow][nColumn].PlaceGamePiece(gamePiece);
}
private Square[][] m_theGameBoard;
}
Run Code Online (Sandbox Code Playgroud)
假设我正在测试PlaceGamePiece方法(使用junit),我需要访问m_theGameBoard,这样我就可以查看它并验证GamePiece是否放置在正确的Square上并且具有正确的数据.
在C++中我要么让测试类成为朋友,所以它可以访问私有成员m_theGameBoard,或者我有一个函数返回一个无法修改的const GameBoard(因为它是const):
const GameBoard& GetGameBoard() const { return m_theGameBoard; }
Run Code Online (Sandbox Code Playgroud)
现在我可以做任何检查我想在游戏板上做的事情,但我不能修改游戏板,因为它是常量.
Java不支持返回const引用或朋友类.所以我的问题是这样做的标准Java方法是什么?我是否必须提供一堆get访问器,以便我检查数据Square?
更新:我最终写了一个GetPiece方法,正如Kaleb Brasee建议的那样.
public GamePiece GetGamePiece(Point pt) {
return new GamePiece(m_theGameBoard[pt.GetRow()][pt.GetColumn()]);
}
Run Code Online (Sandbox Code Playgroud)
注意我创建了一个新的GamePiece对象并返回该对象.我没有返回GameBoards内部参考,因此没有人可以修改游戏板,因为他们只有副本!太好了!感谢帮助人员,一些非常好的建议.
仅供参考:当我在这里张贴物品时,我会不断更改物品的名称,对不起,如果这让任何人感到困惑.
我已经实现了使用FtpWebRequestC#中的类上传,下载,删除等功能.这是相当直接的.
我现在需要做的是支持发送任意FTP命令,如
quote SITE LRECL=132 RECFM=FB
or
quote SYST
Run Code Online (Sandbox Code Playgroud)
以下是我们的示例配置app.config:
<!-- The following commands will be executed before any uploads occur -->
<extraCommands>
<command>quote SITE LRECL=132 RECFM=FB</command>
</extraCommands>
Run Code Online (Sandbox Code Playgroud)
我还在研究如何使用它FtpWebRequest.我接下来可能会WebClient上课.任何人都可以更快地指出我正确的方向?谢谢!
更新:我得出了同样的结论,因为.NET Framework 3.5 FtpWebRequest不支持除了内容之外的任何内容WebRequestMethods.Ftp.*.我会尝试一些其他帖子推荐的第三方应用.谢谢您的帮助!
我试图想出最简单的代码来重现我所看到的.完整的程序如下,但我将在此处进行描述.假设我的类命名ListData只有一些属性.然后假设我有一个MyList有成员的班级List<ListData> m_list.假设m_list在MyList构造函数中初始化.
在main方法中,我只需创建其中一个MyList对象,向其中添加一些对象ListData,然后让它超出范围.我在添加完成后在dotMemory中拍摄快照ListData,然后在MyList对象超出范围后再拍摄另一个快照.
在dotMemory中,我可以看到该MyList对象已按预期回收.我还看到ListData我创建的两个对象也按预期收回.
我不明白为什么有ListData[]幸存的?这是一个屏幕截图:

我在最新快照上打开幸存的对象,ListData[]然后我查看Key Retention Paths,这就是我所看到的.

我是.NET内存管理的新手,我创建了这个示例应用程序来帮助我探索它.我下载了JetBrains dotMemory版本4.3的试用版.我正在使用Visual Studio 2013 Professional.我必须学习内存管理,这样我才能解决我们工作中的内存问题.
这是完整的程序,可用于重现这一点.它只是一个快速而又脏的应用程序,但如果您对它进行分析,它会得到我要问的问题.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class ListData
{
public ListData(string name, int n) { Name = name; Num = n; }
public string Name { get; private set; }
public int Num …Run Code Online (Sandbox Code Playgroud)