小编Sam*_*Sam的帖子

为什么varargs总是方法签名中的最后一个参数?

为什么varargs必须是方法签名中的最后一个参数?

我想知道原因.

java parameters variadic-functions method-signature

5
推荐指数
2
解决办法
2385
查看次数

IntelliJ IDE for MyEclipse中`sout + Tab`快捷方式的同义词

sout + Tab在IntelliJ IDEA中使用快捷方式进行System.out.println();语句.我想知道MyEclipse中是否有上述快捷方式的同义词?

java myeclipse intellij-idea

5
推荐指数
1
解决办法
8542
查看次数

java中的审计和数据历史记录

我有一组域对象及其相关的表,用于应用程序的配置.经过身份验证的用户可以通过表示层更改这些域对象数据.这些 域对象具有非常重要的数据,我需要找到谁和何时更改了他们的数据.我的应用程序的数据访问层是使用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将协议更改HTTPSHTTP(安全协议不安全!),因此我需要将Connection实例的历史记录保存在另一个表中以便进行审计.

我为我研究了一个解决方案,并找到了以下结果:

  1. 触发器:一种可能性是在表上定义触发器,这种方式的缺点是对数据库的依赖.
  2. Hibernate Envers:这个解决方案很好但是让我的DAO层依赖于Hibernate而且我不会受益于JPA及其提供者的独立性.
  3. 春季数据共享+阎王:是好的,但通过添加了一些列的任何实体MappedSuperClass注释,如:Create User,Create Date,Last Update User …

java hibernate auditing hibernate-envers revision-history

5
推荐指数
1
解决办法
2246
查看次数

为什么我的示例不会抛出ConcurrentModificationException

我按照测试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应该抛出异常.但为什么在我的样本中这不会发生?

java collections concurrentmodification

5
推荐指数
1
解决办法
123
查看次数

OpenSSL中自签名证书的含义是什么?

我是OpenSSL工具的初学者.我不明白一些概念.你能解释一下这些概念吗?我想了解的概念,如CA,Self-Signed Certificate或为了更好的理解任何概念.

(对不起,如果我使用错误的术语或语法,我正在学习英语.)

ssl openssl cryptography ssl-certificate

4
推荐指数
1
解决办法
3938
查看次数

我对一般方法不明确

我有一个用于实例化对象的通用方法如下:

@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)

我对这个问题含糊不清.

java generics compiler-errors

4
推荐指数
1
解决办法
595
查看次数

java.sql.SQLException:ORA-01403:在struct.getDescriptor()中找不到数据.getMetaData()

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)

java oracle jdbc ojdbc

4
推荐指数
1
解决办法
1万
查看次数

Spring JMX中@ManagedOperation的名称

我曾经org.springframework.jmx.export.annotation.@ManagedOperation把一个方法公开为MBean.

我希望操作名称与方法名称不同,但托管操作没有任何属性.

例如:

@ManagedOperation
public synchronized void clearCache() 
{
   // do something
}
Run Code Online (Sandbox Code Playgroud)

我希望使用name ="ResetCache"公开此操作.

java spring jmx mbeans spring-jmx

3
推荐指数
2
解决办法
4785
查看次数

针对拆分日期字符串提出了哪种方法?

我有一个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)

我找到了解决这个问题的两种方法:

  1. 使用a SimpleDateFormatter和fetch元素.
  2. 使用类的subString()方法String.

我的问题是:提出哪种方式?还有另外一种方法吗?

java string datetime

3
推荐指数
1
解决办法
1860
查看次数

java继承中的隐藏方法

我有两节课如下:

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 oop static-methods overriding method-hiding

3
推荐指数
1
解决办法
132
查看次数