我目前正在研究一种使用密钥加密/解密特定文件的功能.我写了三个类,一个生成一个密钥,一个用密钥加密文件,另一个用密钥加密.
生成密钥并加密文件可以正常工作,但是当我尝试解密文件时,会在行处抛出异常c.init(Cipher.DECRYPT_MODE, keySpec);::
java.security.InvalidKeyException:缺少参数
我认为我byte[]在解密文件时将密钥流式传输给我或者出错了我做错了.
快速解释这三个类:KeyHandler创建一个AES密钥并将其存储在硬盘上.密钥/明文/加密/解密文件的名称当前是硬编码的,用于测试目的.
EncryptionHandler将磁盘上的.txt文件转换为字节,使用密钥加密文件,然后使用加密字节写入磁盘CipherOutputStream.
DecryptionHandler当然是相反的EncryptionHandler.
这是代码:
public class KeyHandler {
Scanner scan = new Scanner(System.in);
public KeyHandler(){
try {
startMenu();
} catch (Exception e) {
System.out.println("fel någonstanns :)");
}
}
public void startMenu() throws Exception{
System.out.println("Hej. Med detta program kan du generera en hemlig nyckel"+"\n"+"Vill du:"+"\n"+ "1. Generera en nyckel"+"\n"+"2. Avsluta");
int val=Integer.parseInt(scan.nextLine());
do{
switch (val){
case 1: generateKey(); break;
case 2: System.exit(1);
default: System.out.println("Du måste välja …Run Code Online (Sandbox Code Playgroud) 我最近将我的solr实例从1,4升级到3.6.但是,每当我更新索引时,我现在似乎在我的日志中收到"未定义的字段文本"严重消息.
我的模式中有文本字段(从版本1.4开始有效),但以前从未将其声明为字段类型.3.6中有变化吗?
我的架构在这里>> http://pastebin.com/KrCVab0U
SEVERE: org.apache.solr.common.SolrException: undefined field text
at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.java:408)
at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.java:383)
at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:574)
at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.java:206)
at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1429)
at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1317)
at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1245)
at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1234)
at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:206)
at org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:79)
at org.apache.solr.search.QParser.getQuery(QParser.java:143)
at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105)
at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:165)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
at org.apache.solr.handler.PingRequestHandler.handleRequestBody(PingRequestHandler.java:67)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:679)
Run Code Online (Sandbox Code Playgroud) 我最近在应用程序上获得了源代码.当我试图构建解决方案时,我在winnt.h包含的所有部分都会收到错误.错误代码略有不同,但它们始终指向winnt.h中的这些行:
typedef void *PVOID;
typedef void * POINTER_64 PVOID64;
Run Code Online (Sandbox Code Playgroud)
和
struct {
DWORD crc;
BYTE rgbReserved[14];
} CRC;
Run Code Online (Sandbox Code Playgroud)
那么,原因可能是什么?winnt.h是标准头文件,尚未修改.是否与使用VS 2010或使用64位窗口的我有关?还是需要某种配置?
编辑:这是确切的错误代码:
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(290): error C2146: syntax error : missing ';' before identifier 'PVOID64'
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(290): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(8992): error C2146: syntax error : missing ';' before identifier 'Buffer'
1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(8992): error C4430: missing type specifier - int …Run Code Online (Sandbox Code Playgroud) 我正在恢复一个旧的家庭作业,我正在编写一个程序,其中包括使用Dijkstra算法在图形中找到最短路径.
我认为我在大多数时候都做对了,但是NullPointerException在执行时我一直在第58行if(currentNode.getAktuell()).
我一直在尝试几种解决方案,但似乎无法弄清楚什么是错误但在队列为空时prioQueue.poll();返回null.我试图处理最后一次currentNode最终变成null但无法找到有效的解决方案,所以我开始认为我错过了这里的一些东西.
如果熟悉dijkstras算法的人可以帮助我,我真的很感激.这个算法可能有一个更好的解决方案,但我只想帮助找出我写的那个有什么问题,而不是使用别人算法的"答案".
public static List<String> shortestPath(Graph<String> graph, String från, String till){
//if(!pathExists(graph, från, till))
//return null;
PriorityQueue<DjikstraObjekt<String>> prioQueue = new PriorityQueue<DjikstraObjekt<String>>();
LinkedHashMap<String, DjikstraObjekt<String>> samling = new LinkedHashMap<String, DjikstraObjekt<String>>();
for(String bla : graph.getNodes())
samling.put(bla, new DjikstraObjekt<String>(bla, Integer.MAX_VALUE, null, false));
samling.get(från).updateVikt(0);
prioQueue.add(samling.get(från));
while(!samling.get(till).getAktuell())
{
DjikstraObjekt<String> currentNode = prioQueue.poll();
if(currentNode==null)
break;
if(currentNode.getAktuell())
continue;
currentNode.aktuellNod();
for(ListEdge<String> edge : graph.getEdgesFrom(currentNode.getNode()))
{
System.out.println("get edges from");
int nyVikt = edge.getVikt() + currentNode.getVikt();
DjikstraObjekt<String> toNode = …Run Code Online (Sandbox Code Playgroud) 我正在研究如何在即将开展的项目中执行测试.为了在开发过程的早期发现错误,开发人员将在实际代码(TDDish)之前编写单元测试.单元测试将单独关注单元(在这种情况下是一种方法),因此依赖性将被模拟等等.
现在,我还想在与其他单位交互时对这些单元进行测试,我认为应该有一个有效的最佳实践,因为已经编写了单元测试.我的想法是单元测试将被重用,但被模拟的对象将被删除并替换为真实的对象.我现在的不同想法是:
if陈述我认为所有这些方法的方式都有利有弊.哪个是首选,为什么?有没有更好的方法从单元测试到集成测试的有效过渡?或者这通常以其他方式完成?
我对系统测试和验收测试之间的真正区别感到困惑.当我搜索这个主题时,答案不同,我没有看到测试用例如何大不相同.
事实我发现:
系统测试在整个系统上进行,由供应商完成.系统测试是端到端测试,您可以根据需求规范(功能和非功能)测试系统中的完整流(从登录到注销).
验收测试由客户完成,以验证其是否满足客户需求.这也是完整的流程,并且基于需求规范.然而,构建的系统是根据需求规范设计的,并且外观/可用性通常已经在开发周期的早期阶段被接受.如果系统满足要求规范,则客户不应该说"这不是我们想要的,重做这个和那个",除非合同允许这样做并且客户每小时付费.
所以,我的问题基本上是,这两个测试阶段的测试用例将如何不同?它们都是端到端测试,并专注于它是一个功能系统,它满足规范,其程度也是业务需求(因为它是他们订购的).似乎系统测试中的测试用例可以在验收测试中重复使用,因为它们都可以完成整个流程?
我有以下工作簿设置:

工作簿A具有指向x工作簿B的链接并从中获取数据.工作簿B链接到其他一些工作簿并从中获取数据.
工作簿A是所有其他工作簿包含的"摘要".就像现在一样,我必须在打开工作簿A之前打开我的所有工作簿B,刷新它们并保存.如果我不这样做,工作簿B将不会更新工作簿C中的数据.
是否可以使用.bat或vbs脚本更新所有工作簿B?或者是否可以从工作簿A中更新它们?
我可能会补充一点,我在这台计算机上使用excel启动器,所以最好是解决方案与之兼容.
我目前正在处理以下用于记录测试用例的excel工作簿:

如果用户输入felF列,则会将其着色为红色.Fel意思是fault"(瑞典语)所以我想强迫测试人员在其中一个测试用例失败时在错误跟踪系统中注册这个错误.列我应该在错误跟踪系统中包含这个错误的ID.所以我我想要实现的是:
如果测试人员已输入felF列,则应强制或使测试人员意识到在I列中未输入任何ID.一个想法是如果F单元格包含fel且I单元格为空,则将相应的I单元格颜色为红色,并且当测试者在I单元格中输入某些内容时,红色会消失.
这是我到目前为止所做的:
=IF(AND(F5="Fel",I5=ISEMPTY(TRUE)),)
Run Code Online (Sandbox Code Playgroud)
我使用条件格式,但我无法让它工作.此外,单元格值是硬编码的,如何使条件对具有相应行的单元格的某个列有效.
此外,我愿意接受建议,如果有更好的方法,只需将该单元格颜色为红色,以使用户意识到他需要在I列中输入内容
起初这听起来有点令人困惑.但我有一个数据表,我想创建此表中所有行的副本.所以,如果我这样做:
SELECT *
FROM the_table
Run Code Online (Sandbox Code Playgroud)
它列出了该表中的所有数据.现在,我想创建所有返回结果的副本,除了我想要更改一列(日期)的数据.这将使新行唯一.
我想这样做的原因是因为我需要在此表中添加更多数据,因为我正在构建统计数据以用于测试目的.所以,如果我有这个:
**Column1 Column2 Column3**
abc aaa bbb
abcd aaaa bbbb
abcde aaaaa bbbbb
The table will now contain:
**Column1 Column2 Column3**
abc aaa bbb
abcd aaaa bbbb
abcde aaaaa bbbbb
abc aaa bbb_new
abcd aaaa bbbb_new
abcde aaaaa bbbbb_new
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个函数,它应该检查某个日期是否格式正确.对此,函数接受一个变量,并将其分解为三个子变量,年,月和日.稍后我想在几个if语句中检查每个子串.
当我使用我的GFs号码880413运行时,然后年份= 88,月份= 4,日期= 13但是,当我使用我自己的号码820922运行此功能时,该功能将年份设置为82,将月份设置为0? !和天= 22.
这怎么可能?当月份为04时,它会将其切断并仅显示4,但是当月份为09时,它会将其切断为0.
Heres相关代码:
function isValidDate(date)
{
var valid = true;
var year = parseInt(date.substring(0, 2));
var month = parseInt(date.substring(2, 4)); // error here!
var day = parseInt(date.substring(4, 6));
alert(year+"--"+month+"--"+day+"--")
}
Run Code Online (Sandbox Code Playgroud)
运行号码820922时输出继承(忘记最后4位数字,它们是瑞典社会安全号码,在此示例中无需考虑)

而heres输出数字880413(再次忘记最后4位数字)

我试图通过套接字连接发送定制的对象.该类实现了serializable,但构造函数仍然NotSerializableException在尝试将对象写入套接字时抛出.我将在下面发布相关代码:
public class serilizableArrayHolder implements Serializable {
private ArrayList<Client> array= null;
public serilizableArrayHolder(ArrayList<Client> array) {
this.array=array;
}
public ArrayList<Client> getArray() {
return array;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我定制的课程.现在我试图从服务器发送一个arraylist到客户端,但我会在稍后阶段添加其他信息.send方法发布在我的服务器类下面,发布如下:
public void sendData(Socket clientSocket){
ObjectOutputStream out;
try {
serilizableArrayHolder temp = new serilizableArrayHolder(clientCollection);
out = new ObjectOutputStream(clientSocket.getOutputStream());
out.writeObject(temp); <---This line generates the error.
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我从服务器发送的方法.clientCollection是我试图发送的arrayList.
整个Client类:
public class Client implements Runnable, Serializable{
public Thread thread = new Thread(this);
private Socket s;
private …Run Code Online (Sandbox Code Playgroud) 我一直在阅读如何编写可测试代码,并偶然发现了依赖注入设计模式。
这种设计模式非常容易理解,而且实际上没有什么意义,对象请求值而不是自己创建它们。
然而,现在我正在考虑如何将其用于我当前正在开发的应用程序,我意识到它存在一些复杂性。想象一下下面的例子:
public class A{
public string getValue(){
return "abc";
}
}
public class B{
private A a;
public B(A a){
this.a=a;
}
public void someMethod(){
String str = a.getValue();
}
}
Run Code Online (Sandbox Code Playgroud)
单元测试someMethod ()现在会很容易,因为我可以创建 A 的模拟并返回getValue()我想要的任何内容。
类 B 对 A 的依赖是通过构造函数注入的,但这意味着 A 必须在类 B 之外实例化,因此此依赖项已移至另一个类。这将重复很多层,并且在某些点上必须完成实例化。
现在的问题是,使用依赖注入时,您是否会不断通过所有这些层传递依赖项?这是否会降低代码的可读性并增加调试时间?当您到达“顶层”时,您将如何对该类进行单元测试?