我有共同的代码(我称之为控制器的多个类)需要由项目中的多个包共享.我正在考虑创建一个返回这些控制器的工厂.因此,工厂将有一个hashmap,可以返回请求的控制器,如果没有创建,则创建一个新的.控制器有公共代码,因为我不需要创建这些控制器的多个实例,我认为它们应该是单例.
这看起来像是一个好方法吗?
我的任务是设计一个在线预订系统。用户可以在其中输入邮政编码/人数/预订时间并获得餐厅列表。假设(用户和餐厅始终在同一城市)
每个餐厅可以有多个座位不同的桌子。因此,可容纳4人的2张桌子和可容纳4人的4张桌子。
我在使用正确的数据结构时遇到了麻烦。
我的课如下
餐厅:包含timeofopening,timeOfClosing,totalNoOfSeatsAvailable不确定我如何在餐厅内存储表格信息。为表拥有一个单独的类没有任何意义。我需要的所有信息就是howMantables是免费的,它们的大小是多少。
保留:保留实际的保留并允许取消保留
ReservationSystem:包含“列表checkAvailability(长期,国际人士)”的接口,这将如何返回此列表?最初,我想到了使用priorityQueue来维护一个队列,该队列的席位数量最多。但是然后我将遍历该列表以查看时间是否正确,甚至进行保留,然后一旦进行保留,请更新此队列。一个问题是队列执行所有重复操作。
我的具体问题是:
编辑:关于如何存储表信息的问题。我特别担心的是,存储表类将意味着我正在创建不必要的对象。这是我的理由。可容纳2个人的5张桌子具有完全相同的对象-我的意思是,它们之间没有任何有意义的信息是不同的。我只需要数字。座位数/桌子数(如果我有4桌但3 peole的桌子,我会考虑使用这张桌子)
我想到创建3个数组。假设表格代表1,2等,所以int [] differentSeatingOnTable; 它的索引是表,值是允许的座位。接下来是具有totalNoOfThosetable的表数组,其中索引是表,值是该表的总数。空闲表的相似之处freeTables的索引是表,剩余多少个空闲表。
我正在编写一个需要压缩文件的程序.这将在Linux和Windows机器上运行.它在Linux中运行得很好,但我无法在Windows中完成任何操作.要发送命令,我使用的是apache-net项目.我也尝试过使用Runtime().exec,但是它没有用.有人可以建议吗?
CommandLine cmdLine = new CommandLine("zip");
cmdLine.addArgument("-r");
cmdLine.addArgument("documents.zip");
cmdLine.addArgument("documents");
DefaultExecutor exec = new DefaultExecutor();
ExecuteWatchdog dog = new ExecuteWatchdog(60*1000);
exec.setWorkingDirectory(new File("."));
exec.setWatchdog(dog);
int check =-1;
try {
check = exec.execute(cmdLine);
} catch (ExecuteException e) {
} catch (IOException e) {
}
Run Code Online (Sandbox Code Playgroud) 我有一个A类,它有一个私有的最终成员变量,它是另一个B类的对象.
Class A {
private final classB obj;
}
Class B {
public void methodSet(String some){
}
}
Run Code Online (Sandbox Code Playgroud)
我知道A级是单身人士.我需要使用类B中的方法"methodSet"设置一个值.我尝试访问classA并访问classA中的ClassB实例.
我这样做:
Field MapField = Class.forName("com.classA").getDeclaredField("obj");
MapField.setAccessible(true);
Class<?> instance = mapField.getType(); //get teh instance of Class B.
instance.getMethods()
//loop through all till the name matches with "methodSet"
m.invoke(instance, newValue);
Run Code Online (Sandbox Code Playgroud)
在这里我得到一个例外.
我不擅长反思.如果有人能提出解决方案或指出什么是错的,我将不胜感激.
如果我在静态块中启动一个线程。jvm 会在加载类之前等待线程完成吗?
static {
System.out.println("static block");
DataRetrievalThread t = new DataRetrievalThread();
t.run();
}
Run Code Online (Sandbox Code Playgroud)
我尝试这样做的原因是因为我想从服务器检索数据,而获取数据的时间太长了。因此,为了保留我想要检索的数据并将其存储在一个文件中,以便当客户端请求它时 - 它不需要调用服务器来获取信息。
我有一个类,我想模拟类的某些方法并测试其他方法.这是我能够证明并证明它有效的唯一方法.
class UnderTest{
public void methodToTest(){
methodToCall1()
methodToCall2()
}
public void methodToCall1(){
}
public void methodToCall2(){
}
}
Run Code Online (Sandbox Code Playgroud)
现在,因为我想测试第一个方法,我想创建一个UnderTest的部分模拟,这样我就可以验证这两个方法是否被调用.我如何在Mockito实现这一目标?
谢谢你的帮助!
我正在尝试使用回溯来解决骑士的旅行问题.我认为我的算法应该有效.我已经尝试但我无法弄清楚它为什么不起作用.它导致无限循环.
但是,如果我注释掉那条回路的线路solutionBoard[dst.x][dst.y]=-1;就行了!我只是不明白为什么!任何帮助,将不胜感激.
private int solutionBoard[][] = new int [8][8];
// The eight possible moves a knight can make from any given position
private static final Point[] MOVES = new Point[] { new Point(-2, -1),
new Point(-2, 1), new Point(2, -1), new Point(2, 1),
new Point(-1, -2), new Point(-1, 2), new Point(1, -2),
new Point(1, 2) };
private int count = 0;
public KnightsTour_DFS(){
// board is 0- 7
//initialize visited
for(int i =0; i<8;i++){
for(int j = 0; …Run Code Online (Sandbox Code Playgroud) 我有一种情况,我需要一个可以添加字符串的数据结构.这种数据结构非常大.
我需要它的具体品质是:
我尝试使用ArrayList但删除操作是o(n),对于linkedList,traverse或get()操作将是o(n).
我还有其他选择吗?
java ×9
algorithm ×1
backtracking ×1
command ×1
factory ×1
jvm ×1
maven ×1
mockito ×1
oop ×1
powermock ×1
reflection ×1
singleton ×1
static ×1
unit-testing ×1
windows ×1