• LinkedHashMap vs HashMap какие отличия, что дает изменение значения accesOrder?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Главным отличием является сохранение порядка добавления элементов. Всё.
    Ответ написан
    Комментировать
  • HashMap коллизия?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Если речь про стандартный HashMap, то там, конечно, всё работает из коробки. Там реализован, условно, метод цепочек. Но, на самом деле, там строятся не цепочки, a сбалансированные деревья(rb-tree).

    Если речь про самописную реализацию, то в ней, конечно, всё надо руками писать. В каждой ячейке - список, или каким-то образом искать пустую ячейку.
    Ответ написан
    2 комментария
  • [spring jpa repository] как правильно deleteInBatch?

    @gsaw Автор вопроса
    Как только отправил вопрос, на ум пришло посмотреть документацию по deleteInBatch и там черным по белому написанно.

    Assume that we will clear the EntityManager after the call.


    Вообщем em.clear() между deleteInBatch и save помогло.
    Ответ написан
    Комментировать
  • При Запуске Chrome Driver на IntelliJ проект maven Win 10 он открывается и сразу закрывается. Exit code 1?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    А вот что он мне пишет в консоли:
    Так, а почему вы сами не прочитали, что там написано? Там же английским по белому написано, несовместимость версий:
    This version of ChromeDriver only supports Chrome version 89
    Current browser version is 88.0.4324.104 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

    У вас ChromeDriver = 89, а сам chrome - 88.

    Вариантов решения 2. Либо понизьте версию драйвера, либо обновите chrome.
    Ответ написан
    Комментировать
  • Как положить в лист миллиард объектов?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Просто вам нужно минимум 64 гигабайта свободной оперативной памяти (если я все правильно посчитал), а по факту раза в четыре больше, так как храним не примитивы, а объекты. Посему, если владеете такой памятью, то ключи для java -Xms128G -Xmx128G
    Ответ написан
    Комментировать
  • Платформа для обучения сотрудиков, как лучше реализовать?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Начать со списка функциональных, а потом и не функциональных требований. Если нет четкости то согласовать и устаканиться первичные, а по мере работы уже что-то корректировать. Технологии особо роли не играют в такой постановки вопроса. Как и архитектура ПО
    Ответ написан
    2 комментария
  • Есть ли метод в java, который генерирует рандомную дату?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Есть.
    Instant.now(); - всегда новая дата. Еще ни разу не повторялась.
    Можно еще так:
    public static void main(String[] args) {
            long leftLimit = 0L; // 01/01/1970, 00:00
            long rightLimit = Instant.now().toEpochMilli(); // now
            long generatedLong = leftLimit + (long) (Math.random() * (rightLimit - leftLimit));
            var randomDate = Instant.ofEpochMilli(generatedLong);
    
            DateTimeFormatter formatter =
                    DateTimeFormatter.ofLocalizedDateTime( FormatStyle.SHORT )
                            .withZone( ZoneId.systemDefault() );
    
            System.out.println( formatter.format( randomDate ));
        }
    Ответ написан
    Комментировать
  • Java, должно ли чтение коллекций или переменных быть Thread Safe?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    почему я не могу прочитать обычную коллекцию ( не изменяя ее ) из разных Thread

    Можете, если никто её не изменяет. Иначе можете изменений не увидеть.

    Или одну и ту же переменную, если она будет final

    Тем более можете.

    Я был бы очень рад и благодарен, если бы кто-то смог доступно объяснить.

    Тема сложная, не стоит искать ответов в интернете, тут и обмануть могут. Лучше прочитайте "Java Concurrency in Practice".
    Ответ написан
    1 комментарий
  • Как добавить только хэш в адрес перехода?

    Fragster
    @Fragster
    помогло? отметь решением!
    this.$router.push({...this.$route, hash: this.hash });
    Ответ написан
    Комментировать
  • SPA концепция node+vue/react?

    @hello_my_name_is_dany
    Backend Developer (Node.js, PHP, C#)
    У меня, например, backend и frontend - два проекта.
    Frontend как обычно под nginx заливаю.
    location / {
        try_files $uri $uri/ /index.html;
        root /var/www/frontend/dist;
        index index.html;
    }

    Потом backend запускаю, а в nginx делаю проксирование всех запросов /api на localhost с портом, где прослушивает backend.
    location /api {
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host  $host;
        proxy_pass http://localhost:3000;
    }
    Ответ написан
    Комментировать
  • Как отдавать через WebSocket потоки данных?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Да, про Netty правда. Только он очень низкоуровневый, лучше взять Spring WebFlux или Play Framework.
    Ответ написан
    3 комментария
  • Как правильнее указывать атрибуты для тегов в JAXB?

    VDT2
    @VDT2 Автор вопроса
    Java
    И так РЕШЕНИЕ ЗАДАЧИ.
    ДАНО:
    <?xml version="1.0" encoding="UTF-8"?>
    <types>
        <type name="Бинт">
            <nominal>5</nominal>
            <category name="медикаменты"/>
        </type>    
    </types>


    Для того, чтобы использовать аннтацию "name" для тега category который является вложенным в тег с аннотацией , нужно создавать для такого тега (category) отдельный класс

    class Category
    public class Category
    {
        private String name;
    
        public String getName ()
        {
            return name;
        }
        
        @XmlAttribute(name = "name") //добавили аннотацию name ( name="медикаменты")
        public void setName (String name)
        {
            this.name = name;
        }
    }


    class Type
    public class Type
    {
        private String nominal;
    
        private String name;
    
        private Category category;
    
        public String getNominal ()
        {
            return nominal;
        }
    
        public void setNominal (String nominal)
        {
            this.nominal = nominal;
        }
    
        public String getName ()
        {
            return name;
        }
        @XmlAttribute(name = "name") //атрибут NAME для имени тега type (name="Бинт")
        public void setName (String name)
        {
            this.name = name;
        }
    
        public Category getCategory ()
        {
            return category;
        }
    
        public void setCategory (Category category)
        {
            this.category = category;
        }
    }


    class Types
    @XmlSeeAlso({Type.class})
    @XmlRootElement( name = "types" )
    public class Types
    {
    
        List<Type> types;
    
        public List<Type> gettypes()
        {
            return types;
        }
    
        /**
         * element that is going to be marshaled in the xml
         */
        @XmlElement( name = "type" )
        public void settypes( List<Type> types )
        {
            this.types = types;
        }
    
        /**
         * This method is not used by jaxb, just used for business reasons. In the case that this class
         * would be generated using xml schemas definitions, this method has to be added to the
         * generated class or to some helper or util one
         *
         * @param Type
         */
        public void add( Type Type )
        {
            if( this.types == null )
            {
                this.types = new ArrayList<Type>();
            }
            this.types.add( Type );
    
        }
    
        @Override
        public String toString()
        {
            StringBuffer str = new StringBuffer();
            for( Type museum : this.types )
            {
                str.append( museum.toString() );
            }
            return str.toString();
        }
        
    }


    Далее магия маршалинга. Теперь чтобы эту дичь запаковать нужно в main class сделать следующее

    Category category = new Category(); //Создали объект Категории для объекта type
                category.setName("медикаменты"); //Прописали атрибут
    
                Type type = new Type(); //Создаем объект TYPE.
                type.setName("Бинт"); //Прописываем ему имя
                type.setNominal("5"); // какие то данные в тег Nominal
                type.setCategory(category); // добавили ссылку на объект Категории
    
                Types types = new Types(); // создали "основной" объект
                 types.add(type);  // положили в него все объекты типа Тайп (у нас он один)
    //             types.add(type2);  // так добавляем еще типы.
    
                JAXBContext jaxbContext = JAXBContext.newInstance( Types.class); //Указываем только "корневой" класс. Тот что самый верхний в иерархии (куда мы все и сложили)
                Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
                
                jaxbMarshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, true );
    
                jaxbMarshaller.marshal( types, new File( "test.xml" ) ); //сохранили в файл
                jaxbMarshaller.marshal( types, System.out ); //показали в консоли чего там в файл сохранили.


    Готово.
    p.s. Дожили. Я пишу инструкции и примеры кода. А жизнь то меняется....)))
    p.p.s. Изменил код class Types. Там была ошибка приводящая не корректному результату при маршалинге.
    Ответ написан
    Комментировать
  • Веб-приложение на Java без знаний фронтенда?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, придется погрузиться в протокол HTTP (не HTML) на недельку другую. Изучить что есть GET/POST/HEAD и остальное, что такое request и response, для чего нужны заголовки в них и как ими манипулировать (считывать и устанавливать), коды ответов (200,400,401,500..), что такое сессия и как с ней работать.
    Затем нужно погрузиться в HTML (не HTTP) на недельку-другую и научиться работать с формами и активировать их посылку через GET и POST.
    Ну и затем понять для чего CSS и как раскрасить HTML.
    Затем приступить к javascript и конкретно AJAX для посылки форм.
    Ну а уж затем react/angular/vuejs/далее-везде.

    В общем читаем про http/html/form.
    Ответ написан
    Комментировать
  • Как создать объекты на основе данных из csv-файла?

    разделить строку по запятой и спарсить. Будет что-то типа:
    (псевдокод)
    var str = reader.readLine(); //Читаем строку
    
    var tokens = str.split(','); // Делим строку по ','
    
    var aircraft = new Aircraft(); // Создаём новый объект
    
    aircraft.type = tokens[0].trim();
    aircraft.name = tokens[1].trim();
    aircraft.float1= Double.parseDouble(tokens[2].trim()); // Хз что это за характеристика, так что назвал это float1
    aircraft.id = tokens[3].trim(); // не уверен, но похоже на бортовой номер
    aircraft.country = tokens[4].trim();
    aircraft.float2 = Double.parseDouble(tokens[5].trim()); // тоже не уверен, что это за значение, так что float2
    aircraft.boolean1 = Boolean.parseBoolean(tokens[6].trim()); // тоже не уверен - назвал boolean1
    
    aircrafts.add(aircraft); // где-то наверху пусть будет объявлен ArrayList со всеми объектами

    Есть и готовые решения
    https://mkyong.com/java/how-to-read-and-parse-csv-...
    Ответ написан
    Комментировать
  • Почему в Java нельзя инициализировать переменные разных типов в условии for?

    @Ryabos
    В соответствии со спецификацией языка. В разделе LocalVariableDeclaration указано, что должен быть указан тип переменной (UnannType) и затем одно или несколько имён переменных
    Ответ написан
    Комментировать
  • Почему в Java нельзя инициализировать переменные разных типов в условии for?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Наверное, потому что нельзя инициализировать таким образом переменные и вне цикла for.
    Вы же не можете написать:
    int a, double d
    Но можете вот так:
    int a; double d;
    А в цикле точка-запятая уже будет разделением блока.
    Если вам так уж приспичело итерироваться по двум переменным, можно это обойти так:
    int i = 1;
    double j = 1.0;
    for(; i<=10, j<=9.99; i++, j++) {}
    Ответ написан
    7 комментариев
  • Что лучше подходит для хранения больших файлов?

    zagayevskiy
    @zagayevskiy Куратор тега Android
    Android developer at Yandex
    Если данных действительно много, то зависит от их структуры. Если структура есть(это много одинаковых записей), то, конечно, БД. Если это просто большой бинарь(аудио, видео, etc), то, конечно, файл во внешнем хранилище.
    Bundle не подходит ни под каким соусом, это абстракция для короткого хранения состояния(например между открытиями экранов или смене конфигурации).
    Ответ написан
    Комментировать
  • Java junior, серверное ПО, какие задачи решать, чтоб понять устройство системы?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Хороший код приходит с опытом, проблематично целенаправленно учиться писать хороший код, это все равно как целенаправленно учить опыт.
    В этом плане нужно просто понимать почему что делается.

    А так - направление это совместная работа. Понимать весь цикл разработки. Как предсказуемо оценивать сроки задачи, как их правильно дробить, как взаимодействовать с другими разработчиками или командами.
    Все инструменты, с которыми сталкиваешься - старайся добиться, чтобы работало, потом интересуйся как это работает. Таже кафка - что она вообще умеет. Тот же ELK стек - можно научиться парсить логи чтобы искать нужные вещи, а можно в самом приложении поправить логгер, чтобы он в ЕЛК отправлял более удобные для парсинга данные. И так с каждым сервисом/технологией - ты как разработчик и со стороны приложения можешь менять и со стороны сервиса можешь смотреть что от него взять можно.
    Ответ написан
    Комментировать
  • Как выбрать случайным образом объект?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    public enum RockPaperScissors {
    
        ROCK,
        PAPER,
        SCISSORS;
    
        public RockPaperScissors getRandomValue() {
           int random = (int) (Math.random() * RockPaperScissors.values().length);
           return RockPaperScissors.values()[random];
        }
    }
    Ответ написан
    1 комментарий
  • VisualVM или IDEA?

    @acwartz
    Тут должна быть ваша реклама.
    Дальше я хочу при помощи дебаггера IDEA разобраться, а что происходит, почему число объектов растет. И тут сюрприз - коллекция где живут объекты имеет размер 15. Число объектов MyClass в памяти равно 15.

    Сборщик мусора бастует, пните его через System.gc()
    Ответ написан
    3 комментария