All streams
Search
Write a publication
Pull to refresh
27
0.6

User

Send message
используют для той же Java slf4/log4 (не log4j2, это важно), которые просто не умеют в асинхронность.

Насчёт log4j согласен, но чего ради slf4j обвиняется в неумении?

slf4f — это просто фасад, набор интерфейсов, за которыми может скрываться какая угодно их имплементация. Например, авторский logback умеет быть асинхронным.
Сдаюсь. Видимо, действительно, javascript не подвержен переполнению.
Таки да, был неправ при выборе элементов массива.

[1<<31, 1].sort((x, y) => x-y)
Как минимум то, что он отсортирован по убыванию, тогда как компаратор предполагает обратное.
Как минимум, неоправданное использование глобальной переменной.
А вот так делать нельзя.
Внезапно
>> [0, Number.MIN_VALUE].sort((a, b) => a - b)
Array [ 0, 5e-324 ]
я этого не заметил/замечаю

Не соглашусь, этого сложно просто не заметить. Не обращать внимания — да, но не замечать невозможно. Не будете же спорить, что запускается бобёр куда как медленнее, нежели pgadmin, например.

Дрова для Оракла? У меня ничего такого не было нужно.

Имелся ввиду jdbc-драйвер.
слишком монструозен

Эта монструозность проявляется только на старте.

требует яву!

Есть дистрибутивы с предустановленной jre, тупо распаковать архив и запустить.

потребовалась рега на oracle.com

Это не вина бобра. Ораклового драйвера нет в публичных репозиториях.

Коннектит именно к БД

Опять же это ограничение не бобровое. It is not possible to access more than one database per connection.

Можно использовать галочку «Show non-default databases» диалоге настройки соединения, чтобы видеть все имеющиеся БД на сервере. А также «Switch default database on access» для переподключения к другой базе при необходимости. Но проще настроить несколько подключений к разным БД.
Если я правильно помню, подобным способом реализованы массивы в стандартной библиотеке scala.
Всё решается гораздо проще и без всякого наследования.
JUnit4
@RunWith(Parameterized.class)
public class ISortTest {

    private ISort sortAlgorithm;

    public ISortTest(ISort sortAlgorithm) {
        this.sortAlgorithm = sortAlgorithm;
    }
    
    @Test
    public void sort() {
        assertNotNull(sortAlgorithm);
        int n = 10000;
        int[] ints = new Random().ints().limit(n).toArray();

        int[] sortInts = Arrays.stream(ints)
                .sorted()
                .toArray();

        int[] testSotrInts = sortAlgorithm.sort(ints);
        assertArrayEquals(sortInts, testSotrInts);
    }

    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(
            new Object[] { new BubleSort() },
            new Object[] { new MergeSort() }
        );
    }

}

JUnit5
class ISortTest {

    @ParameterizedTest
    @MethodSource("data")
    void sort(ISort sortAlgorithm) {
        assertNotNull(sortAlgorithm);
        int n = 10000;
        int[] ints = new Random().ints().limit(n).toArray();

        int[] sortInts = Arrays.stream(ints)
                .sorted()
                .toArray();

        int[] testSotrInts = sortAlgorithm.sort(ints);
        assertArrayEquals(sortInts, testSotrInts);
    }

    static Stream<Arguments> data() {
        return Stream.of(
            Arguments.of(new BubleSort()),
            Arguments.of(new MergeSort())
        );
    }

}

Так всё помнить и не надо. Но как запускать программу в консоли без IDE — это основа основ.

Любой HelloWorld в любом источнике состоит плюс-минус из одних и тех же шагов:
  1. Создать файл HelloWorld.java.
  2. Описать в нём класс HelloWorld с main-методом.
  3. Скомпилировать, выполнив javac HelloWorld.java
  4. Запустить, выполнив java HelloWorld


И каждый шаг расписывается «что», «как» и «почему».

Мне на ум приходит единственный вариант, при котором это знание было Вами утеряно: Вы не написали ни одной программы, не используя IDE, maven/gradle/ant/etc. Я не говорю о чём-то масштабном, хотя бы банальный сумматор двух аргументов командной строки. С целью пощупать и понять, что же творится под капотом любой IDE.
Тут мне пришла идея, даже можно сказать вызов. А как запустить приложения без jar?

Какой вызов? Об этом пишут в любом учебнике по Java.
Варежки в детстве на резинках помните? Скорее всего, используется что-то подобное.
За возвращением null из метода, который должен вернуть Optional, Map, Collection, etc., нужно следить всякими анализаторами. А кто так делает, тому металлической линейкой по пальцам во избежание рецидивов.
Согласитесь, не очень. Намного приятнее иметь дело с такой строчкой:
Optional<User> user = Optional.of(repository.findById(userId));

И поймать всё тот же NullPointerException, если пользователя с переданным идентификатором не найдено.

По-моему, правильным решением будет возвращение Optional-а из findById(), а никак не оборачивание его результата.
Если видов скобок несколько, то, естественно, алгоритм не сработает.

Но в комментарии стояла задача найти
все фигурные скобки в тексте
, т.е. только '{' и '}'.
Задачу можно решить через инкремент/декремент целого числа, если на выходе не равно нулю, то скобки несбалансированы. Случаи, когда закрывающая идёт раньше открывающей, обрабатывается условием, что декрементировать 0 нельзя.

Information

Rating
1,914-th
Location
Омск, Омская обл., Россия
Registered
Activity