这是一个面试问题.
采访结束了,但这个问题仍在我的脑海中.
我不能问面试官,因为我没有得到这份工作.
场景:
后来的代码:
C1 c1FromCache = (C1) cache.get("a");
此代码抛出ClassCastException.
原因是什么?
我说是因为别人把另一个对象放在同一把钥匙上,所以把它覆盖了.我被告知不,想到其他可能性.
我说也许在这个节点上没有定义类C1的jar(不确定这是否会导致类强制转换或ClassNotFoundException,但我现在正在抓住任何领导.然后我说可能是错误的类版本?他们说所有节点都有相同的C1类罐子.
编辑/添加询问获取是否抛出ClassCast但被告知没有.在那之后我告诉他我解决这个问题的行动是放入一个模拟动作的测试jsp,并在异常之后放置更好的日志记录(堆栈跟踪).这是问题的第二部分(如果在生产中发生这种情况,你会做什么以及如果做什么)
有没有其他人对缓存获取为什么会导致演员问题有任何想法?
想要在excel VBA中的选择中迭代每一行.
我有:
Dim rng As Range
Dim s As String
Set rng = Application.Selection
Debug.Print "c :" & rng.Address
Run Code Online (Sandbox Code Playgroud)
这打印
c:22美元:29美元
如何从第22行到第29行/解析开始和结束行?
在单独的int变量中获取开始和结束列?
我想创建一个Java类,它将执行以下操作
1.使用wsdl加载/创建SOAPUI项目.
2.对该wsdl中的操作运行请求.
这是我的SoapJavaTest.java文件(尽管这还不完整,它只是在SOAP UI中注册一个项目并打印其中包含的操作)
public class SoapJavaTest{
public static void main(String args[]) throws Exception{
String projectFile ="SoapUIJavaTest\\SoapUIProjects\\soapui-project1.xml";
WsdlProject project = new WsdlProject (projectFile);
//WsdlProject project = new WsdlProject();
WsdlInterface[] wsdls = WsdlImporter.importWsdl(project, "http://metalmaker.net/metalmaker.asmx?WSDL");
WsdlInterface wsdl = wsdls[0];
for (Operation operation : wsdl.getOperationList()){
WsdlOperation op = (WsdlOperation) operation;
System.out.println("OP:"+op.getName());System.out.println(op.createRequest(true));
System.out.println("Response:");System.out.println(op.createResponse(true));
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误 - 'NoSuchMethodError:org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(Ljava/lang/ClassLoader; Ljava/lang/String;)Lorg/apache/xmlbeans/SchemaTypeSystem;'.
我已经包含了以下jar文件1. commons-cli-1.2
2. commons-httpclient-3.1
3. log4j
4. soapui-3.6-beta2
5. soapui-xmlbeans-2.0.2
6. wsdl-xmlbeans-1.1
7. xbean -1.0.3
8. xmlbeans-xmlpublic-2.2.0
9. XmlSchema-1.0.3
我错过了什么jar文件,或者我使用的是错误的类?任何帮助,将不胜感激.
我的问题是:最好用getMessage或toString或两者来记录?考虑到开源引发的错误.在评论中看到了问题,但没有得到答案.也许我错过了什么?不要介意记录其中一个的性能损失,但除非有充分的理由,否则不要记录它们.
含义log(ex)或log(ex.getMessage),不是谈论堆栈跟踪.
记录异常:哪个更好:log.warn(ex.getMessage(),ex)或log.warn(ex,ex);
我注意到有时getMessage返回空或null,所以通常的做法是有任何理由不使用:
log.warn(ex, ex);
Run Code Online (Sandbox Code Playgroud)
因为它似乎打印了类名和消息(如果设置)?我想有一个原因可能是,如果一个子类已经过度使用字符串而不是打印消息,但实际上是否有任何hibernate,apache或spring libs这样做?
更新:现在使用地图.想要向其他实例发送内容的类发送对象即路由字符串.
使用对象流,使用Java serializable将对象写入servlet.
先写字符串然后再写对象.
接收servlet将输入流包装在ObjectInputStream周围.首先读取字符串,然后读取Object.路由字符串决定它去了.
更通用的方法可能是发送类名及其声明的方法或Spring bean名称,但这对我们来说已经足够了.
原始问题
了解基本方法,但需要步骤的详细信息.还知道我可以使用Jaxb或RMI或EJB ...但是想使用纯序列化到bytearray然后进行编码,将它从jvm 1中的servlet 1发送到jvm 2中的servlet 2(同一个中的两个app server实例)局域网,在两个J2EE应用程序中设置相同的Java版本和jar)
基本步骤是(Approcah 1): -
将任何Serializable对象序列化为字节数组并生成一个字符串.确切的代码见下文
Base64输出1.是否需要基于64或可以跳过第2步?
使用java.util.URLEncode.encode对字符串进行编码
命名参数后,使用apache http组件或URL类从servlet 1发送到2
在Servlet 2 J2EE框架上已经有URLDecoced它,现在只需执行反向步骤并根据param名称转换为对象.既然两者都是我们的应用程序,我们就会知道类型/类映射的param名称.基本上寻找在JVM之间发送对象的最快和最方便的方法.
示例:要发送的POJO类
package tst.ser;
import java.io.Serializable;
public class Bean1 implements Serializable {
/**
* make it 2 if add something without default handling
*/
private static final long serialVersionUID = 1L;
private String s;
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
}
Run Code Online (Sandbox Code Playgroud)
*效用*
package tst.ser; …Run Code Online (Sandbox Code Playgroud) 有这样的数据:
pid recom-pid
1 1
1 2
1 3
2 1
2 2
2 4
2 5
Run Code Online (Sandbox Code Playgroud)
需要做到:
pid, recommendations
1 2,3
2 1,4,5
Run Code Online (Sandbox Code Playgroud)
含义忽略第二列中的self,并将其余部分放入逗号分隔的字符串中.其标签分隔数据
尝试过变体,但不确定如何在foldLeft中引用productId
.groupBy('productId) {
_.foldLeft(('prodReco) -> 'prodsR)("") {
(s: String, s2: String) =>
{
println(" s " + s + ", s2 :" + s2 + "; pid :" + productId + ".")
if (productId.equals(s2)) {
s
} else {
s + "," + s2;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用scala 2.10,烫洗0.10.0,级联2.5.3.需要一个烫伤的答案.我知道如何操纵scala中的数据.我只是想知道如何在分组过程中抓住列,并使用它们有条件地做左侧折叠或其他方法来获得过滤后的输出.
有关完整的工作示例,请参阅https://github.com/tgkprog/scaldingEx2/tree/master/Q1
(如果您使用log4j版本2,则不适用)
知道如何设置log4j以打印调试以及如何以编程方式构造默认的Properties对象.
需要帮助代码来检测log4j是否在类路径中找不到配置文件.
这个时候没有log4j.xml来至少看到控制台中的所有日志.
我有以下代码:
private static void log4Default() {
boolean noLog = true;
//how to set this to false if log4j did find a config file
// File log4f = new File("log4j.xml");
// File log4f2 = new File("log4j.properties");
//
// if(log4f.exists() || log4f2.exists()) {
// noLog = false;
// }else {
// log4f = new File("target/classes/log4j.xml");
// log4f2 = new File("target/classes/log4j.properties");
// if(log4f.exists() || log4f2.exists()) {
// noLog = false;
// }
// }
// if(noLog) {
// log4f …Run Code Online (Sandbox Code Playgroud) 有一个项目,我们在 Eclipse 中有 8 个项目,每个项目都有自己的 pom.xml
现在通过 sh 文件调用它们(一系列 cd、mvns、sleep 3 秒,以便我们可以查看是否有错误和 ctrl-c)
有没有办法从另一个主 pom 中调用各种 pom,并且只有在当前项目 mvn 成功运行时才能继续?
如果不是通过 maven 那么通过 ant 或其他插件 / linux 脚本编辑?请举例。
我尝试使用整数数组列表并检查var中是否存在.它适用于字符串数组但不适用于整数数组.
public static void main(String[] args) throws ScriptException {
List<Object> list = new ArrayList<Object>();
list.add(1);
list.add(2);
List<String> lists = new ArrayList<String>();
lists.add("1");
lists.add("2");
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.put("list", list);
System.out.println(engine.eval("list.indexOf(1)"));
//print -1 , Why ?
engine.put("lists", lists);
System.out.println(engine.eval("lists.indexOf('1')"));
//print 0
}
Run Code Online (Sandbox Code Playgroud)
代码有什么问题?
拥有一项公开加密功能的服务。我们不需要清理,也不希望每次/每次会话都创建对象。但我需要每个线程一个单独的对象。
在 Web 应用程序中 - 范围是 Web 容器的线程池吗?
spring 3 和 spring 4 的实现是一样的吗?
我们计划使用它的另一个地方是缓存 SimpleDateFormat 对象。再次不需要清理方法。
我看到Calling a groovy script from a java function using javax.script我猜想使用 runWithGroovyClassLoader 可以获取一个 java 类、java 对象并使用参数调用其方法。尽管在示例中它是一个无参数的示例。
我提供了一个能够调用类型脚本的解决方案。所以我的用户在前端输入类型脚本。在后端,我们从 Java 函数中调用脚本,从 Java 向其传递当前 txn 的一些状态(参数),然后类型脚本返回一个映射/对象以调用 java 函数