为什么varargs必须是方法签名中的最后一个参数?
我想知道原因.
我sout + Tab在IntelliJ IDEA中使用快捷方式进行System.out.println();语句.我想知道MyEclipse中是否有上述快捷方式的同义词?
我有一组域对象及其相关的表,用于应用程序的配置.经过身份验证的用户可以通过表示层更改这些域对象数据.这些 域对象具有非常重要的数据,我需要找到谁和何时更改了他们的数据.我的应用程序的数据访问层是使用JPA,Hibernate和Spring实现的.我需要记录每个更改,包括:用户+操作日期+操作类型+以前的值.
例如,让我们考虑一个简单的域对象(为了这个问题的目的简化):
@Entity
class Connection
{
private Long id;
private String name;
private String protocol;
}
Run Code Online (Sandbox Code Playgroud)
假设有一个Connection具有以下值的实例:
Connection
id = 1;
name = Web;
protocol = HTTPS;
Run Code Online (Sandbox Code Playgroud)
在用户(例如John)登录UI并将此连接更改为以下值之后:
Connection
id = 1;
name = Web;
protocol = HTTP;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,John将协议更改HTTPS为HTTP(安全协议不安全!),因此我需要将Connection实例的历史记录保存在另一个表中以便进行审计.
我为我研究了一个解决方案,并找到了以下结果:
MappedSuperClass注释,如:Create User,Create Date,Last Update User …我按照测试ConcurrentModificationException概念编写了这个例子:
public class Person
{
String name;
public Person(String name)
{
this.name = name;
}
}
public static void main(String[] args)
{
List<Person> l = new ArrayList<Person>();
l.add(new Person("a"));
l.add(new Person("b"));
l.add(new Person("c"));
int i = 0;
for(Person s : l)
{
if(s.name.equals("b"))
l.remove(i);
i++;
}
for(Person s : l)
System.out.println(s.name);
}
Run Code Online (Sandbox Code Playgroud)
当我执行上面的main方法时,ConcurrentModificationException不会抛出,输出控制台会输出以下结果:
a
c
Run Code Online (Sandbox Code Playgroud)
根据我对这个问题的了解,当在循环列表中时,在修改列表时,ConcurrentModificationException应该抛出异常.但为什么在我的样本中这不会发生?
我是OpenSSL工具的初学者.我不明白一些概念.你能解释一下这些概念吗?我想了解的概念,如CA,Self-Signed Certificate或为了更好的理解任何概念.
(对不起,如果我使用错误的术语或语法,我正在学习英语.)
我有一个用于实例化对象的通用方法如下:
@Override
public <T> T createRawObject(Class<?> raw_type,
ProviderParam param)
{
SpringProviderParam spring_param = (SpringProviderParam) param;
ApplicationContext ctx = SpringContextGenericProvider.getInstance()
.generate(param,
ApplicationContext.class,
(Object[]) spring_param.getContextPaths());
ValidateUtility.notNull(ctx, "Target Application_Context is null");
T raw_object= (T) ctx.getBean((spring_param.getBeanName()!=null)?spring_param.getBeanName():raw_type);
ValidateUtility.sameType(raw_object, raw_type, "Target object isn't instance of a {} class", raw_type);
return raw_object;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是以下行:
T raw_object= (T) ctx.getBean((spring_param.getBeanName()!=null)?spring_param.getBeanName():raw_type);
Run Code Online (Sandbox Code Playgroud)
此行未编译并显示以下编译错误:
The method getBean(String) in the type BeanFactory is not applicable for the arguments (Serializable)
Run Code Online (Sandbox Code Playgroud)
但是当我将这一行更改为以下行并编译好时:
T raw_object= null;
if(spring_param.getBeanName()!=null)
raw_object= (T) ctx.getBean(spring_param.getBeanName());
else
raw_object= (T) ctx.getBean(raw_type);
Run Code Online (Sandbox Code Playgroud)
我对这个问题含糊不清.
我oracle.sql.STRUCT上课了.通过以下代码:
ResultSetMetaData metaData = struct.getDescriptor().getMetaData();
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
java.sql.SQLException: ORA-01403: no data found
ORA-06512: at line 1
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:218) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:969) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1190) ~[ojdbc14.jar:Oracle JDBC Driver version - "10.2.0.4.0"]
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370) ~[ojdbc14.jar:Oracle JDBC Driver version - …Run Code Online (Sandbox Code Playgroud) 我曾经org.springframework.jmx.export.annotation.@ManagedOperation把一个方法公开为MBean.
我希望操作名称与方法名称不同,但托管操作没有任何属性.
例如:
@ManagedOperation
public synchronized void clearCache()
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我希望使用name ="ResetCache"公开此操作.
我有一个String如下格式的实例:
yyyyMMddHHmmss
Run Code Online (Sandbox Code Playgroud)
我想将它的任何元素拆分为整数变量.样品:
String date_time = "20080519145436";
Run Code Online (Sandbox Code Playgroud)
通过上面的字符串结果必须是:
int year = 2008;
int month = 05;
int day = 19;
int hour = 14;
int minutes = 54;
int second = 36;
Run Code Online (Sandbox Code Playgroud)
我找到了解决这个问题的两种方法:
SimpleDateFormatter和fetch元素.subString()方法String.我的问题是:提出哪种方式?还有另外一种方法吗?
我有两节课如下:
public class Car {
public static void print() {
System.out.println(getWord());
}
public static String getWord() {
return "CAR";
}
}
public class BMW extends Car {
public static String getWord() {
return "BMW";
}
}
// main method
public static void main(String args[]) {
BMW.print();
}
Run Code Online (Sandbox Code Playgroud)
运行上面的示例后,打印此输出:
汽车
我的问题是:为什么方法getWord()不被覆盖?
java ×9
auditing ×1
collections ×1
cryptography ×1
datetime ×1
generics ×1
hibernate ×1
jdbc ×1
jmx ×1
mbeans ×1
myeclipse ×1
ojdbc ×1
oop ×1
openssl ×1
oracle ×1
overriding ×1
parameters ×1
spring ×1
spring-jmx ×1
ssl ×1
string ×1