Моя внутренняя реакция заключалась в том, что объем памяти для Date будет очень маленьким. Изучая исходный код, кажется, что класс содержит только одно поле экземпляра (долгое время называется миллисекундами). Это означает, что размер объекта даты равен размеру long плюс размер экземпляра Object, то есть очень мал.
Затем я нашел этот код , который создает тысячи объектов для определения размера объекта. Это говорит о том, что размер java.util.Date
составляет 32 байта. Сравните это с простым хранением даты как long (что она и делает внутри) - long - 8 байт, поэтому вам нужно заплатить в четыре раза для удобства наличия объекта date.
Тем не менее, накладные расходы на создание объектов не очень высоки. Так что если вы действительно беспокоитесь о пространстве, сохраните даты как длинные и создайте объект Date по мере необходимости.
Вам необходимо создать поддельный TrustManager, который принимает все сертификаты, и зарегистрировать его в качестве менеджера. Примерно так:
public class MyManager implements com.sun.net.ssl.X509TrustManager {
public boolean isClientTrusted(X509Certificate[] chain) { return true; }
public boolean isHostTrusted(X509Certificate[] chain) { return true; }
...
}
com.sun.net.ssl.TrustManager[] managers =
new com.sun.net.ssl.TrustManager[] {new MyManager()};
com.sun.net.ssl.SSLContext.getInstance("SSL").
.init(null, managers, new SecureRandom());
Попробуйте это (ответ на вопрос 2):
System.setProperty("javax.net.ssl.trustStore", "/path/to/truststore");
Вы также можете указать это как дополнительный параметр командной строки:
java -Djavax.net.ssl.trustStore=/path/to/truststore <remaining arguments>
В Fedora это может быть системное хранилище доверенных сертификатов Java в / etc / pki / java / cacerts