понедельник, 4 декабря 2017 г.

MongoDB. Сравнение двух коллекций

Функция для MongoDB которая позволяет найти все ID документов в одной коллекции которых нехватает в другой.
    function compareCollections(col1, col2){
        if(col1.count() == col2.count()){
            return "completed";
         }
 
        if (col1.count() < col2.count()) {
            temp = col1;
            col1 = col2;
            col2 = temp;
        }

        var compared = col1.find().forEach(function(doc1){
            var doc2 = col2.findOne({_id: doc1._id});

            if (doc2 == null) {
                print(doc1._id);
            }
        });
        return "completed";
    }
Если одна коллекция расположена в другой базе то получить ссылку на нее можно следующим образом:
    col1 = connect(host+":27017/"+dbName1).getCollection(colName1);

среда, 4 октября 2017 г.

Индивидуальные настройки maven для проекта

До версии 3.3.1 в Maven небыло возможным установить параметры либо JVM сваойства для запуска Maven для каждого проекта индивидуально.
Начиная с Maven 3.3.1 можно создать в корне проекта директорию .mvn и положить туда файл maven.config или jvm.config с конфигурацией.

Например нет необходимости каждый раз писать
mvn -T3 -U --fail-at-end clean package
достаточно в ${maven.projectBasedir}/.mvn/maven.config добавить строку
-T3 -U --fail-at-end
которая автоматически будет добавляться к команде запуска maven.

понедельник, 2 октября 2017 г.

Установить System свойство через Spring

Очень полезный трюк который помог мне установить System properties в веб приложении.
Для этого надо добавить в xml конфигурацию следующий код:
<bean>
    <property name="targetClass" value="java.lang.System"/>
    <property name="targetMethod" value="setProperty"/>
    <property name="arguments">
      <list>
        <value>your_value1</value>
        <value>your_value2</value>
      </list>
    </property>
</bean>

четверг, 17 августа 2017 г.

Изменения в HashMap в Java 8.

В Java 8 изменился способ хранения хэшей ключей в java.util.HashMap. Теперь когда количество элементов больше определенного значения
static final int TREEIFY_THRESHOLD = 8
то для хранения хэшей используется сбалансированное дерево вместо связанного списка. Это дает улучшение производительство в наихудшем случае с O(n) до O(log n).  При уменьшении количества элементов до
static final int UNTREEIFY_THRESHOLD = 6
дерево заменяется на связанный список