Size: a a a

2020 February 21

z

zeo in Java & Co
Т.е. перехватить их каким-то образом, привести к дате и пихнуть в объект
источник

e

elendili in Java & Co
Привет!
Пытаюсь решить задачу из яндекс контеста на Java 8.
Код функционально корректен, но превышает память на полмегабайта из заявленного лимита в 20Мб.

Алгоритм для слияния кучки сортированных массивов для получения одного массива:
чтение побайтно, трансформация байтов в инт (без String), и заполнение массива частотой встречаемости определенной цифры. Затем трансляция словаря частот в оутпут , тем самым получая на выходе сортированный массив, без хранения оного в памяти.

Весь код написан используя byte (где возможно), чтение из System.in (без буферизации (предпологаю что она тоже память ест)), максимально большой объект в коде это массив int[101]. Просмотр jvisualvm показывает, что сама Java 8 отжирает много места своими стрингами, но исправить это я не могу, или не знаю как.

Посоветуйте какие оптимизации или алгоритм можно погуглить.
Стартовые параметры JVM мне недоступны, ибо код исполняется на стороне Яндекса 🙁

https://pastebin.com/D77gWYNz
источник

RG

Roman Golubkov in Java & Co
elendili
Привет!
Пытаюсь решить задачу из яндекс контеста на Java 8.
Код функционально корректен, но превышает память на полмегабайта из заявленного лимита в 20Мб.

Алгоритм для слияния кучки сортированных массивов для получения одного массива:
чтение побайтно, трансформация байтов в инт (без String), и заполнение массива частотой встречаемости определенной цифры. Затем трансляция словаря частот в оутпут , тем самым получая на выходе сортированный массив, без хранения оного в памяти.

Весь код написан используя byte (где возможно), чтение из System.in (без буферизации (предпологаю что она тоже память ест)), максимально большой объект в коде это массив int[101]. Просмотр jvisualvm показывает, что сама Java 8 отжирает много места своими стрингами, но исправить это я не могу, или не знаю как.

Посоветуйте какие оптимизации или алгоритм можно погуглить.
Стартовые параметры JVM мне недоступны, ибо код исполняется на стороне Яндекса 🙁

https://pastebin.com/D77gWYNz
Мне кажется впихнуть в 20мб хз сколько данных - изначально порочно - поэтому наверное надо создать индексы на все это говно и потому уже по ним сформировать out, а не держать все это в памяти
источник

e

elendili in Java & Co
Roman Golubkov
Мне кажется впихнуть в 20мб хз сколько данных - изначально порочно - поэтому наверное надо создать индексы на все это говно и потому уже по ним сформировать out, а не держать все это в памяти
я и не держу в памяти, только словарь частот размера int[101] заполняется.
источник

C

Cyclone in Java & Co
Ребята, есть удобный способ попросить Spring Boot (Jackson) отдавать даты из БД в часовом поясе UTC?
Я добавил в конфиг Jackson2ObjectMapperBuilderCustomizer кастомный сериалайзер и вручную конверчу даты из локального часового пояса в UTC, но блин, столько кода... а попроще не?
https://pastebin.com/T5Cd9bN7

Если этого не делать, то даты (LocalDateTime) отдаются без часового пояса, и браузер в каком-нибудь США решит, что это даты в локальной зоне, а это не так.
источник

VS

Vitaly Sirotkin in Java & Co
Cyclone
Ребята, есть удобный способ попросить Spring Boot (Jackson) отдавать даты из БД в часовом поясе UTC?
Я добавил в конфиг Jackson2ObjectMapperBuilderCustomizer кастомный сериалайзер и вручную конверчу даты из локального часового пояса в UTC, но блин, столько кода... а попроще не?
https://pastebin.com/T5Cd9bN7

Если этого не делать, то даты (LocalDateTime) отдаются без часового пояса, и браузер в каком-нибудь США решит, что это даты в локальной зоне, а это не так.
ZonedDateTime?
источник

VS

Vitaly Sirotkin in Java & Co
А вообще можно системную таймзону ютц поставить
источник

C

Cyclone in Java & Co
Vitaly Sirotkin
ZonedDateTime?
Делал вариант с ZDT. В принципе.... ну да, часовой пояс указывается, московский. Это корректно. Я тут не уверен, но чувство прекрасного говорит мне, что прграммные интерфейсы должны обмениваться датами в UTC.
источник

VS

Vitaly Sirotkin in Java & Co
Ну я тоже так считаю. Обычно я ставлю на сервере ютц и все
источник

C

Cyclone in Java & Co
Vitaly Sirotkin
А вообще можно системную таймзону ютц поставить
Это за пределами возможности.
источник

VS

Vitaly Sirotkin in Java & Co
Cyclone
Это за пределами возможности.
Неа. -Duser.timezone=UTC
источник

C

Cyclone in Java & Co
Vitaly Sirotkin
Неа. -Duser.timezone=UTC
У меня тут не 2к20, я так сделать не могу. )
источник

VS

Vitaly Sirotkin in Java & Co
Тогда костыляй через зонед, выставляя в нем ютц
источник

C

Cyclone in Java & Co
Да накостылял вон, по ссылке. Но как-то дофига кода для такой, вроде, тривиальной задачи.

На самом деле всё вызвано тем, что я решил выпилить Йоду. А Йода сама сериализовалась в UTC.
Причём в спргбуте у jackson есть свойства про таймзону.
spring.jackson.serialization.time-zone=UTC - казалось бы! Но выставление этого свойства у меня ни на что не влияет (не выяснил, почему).
источник

IE

Ivan Efimov in Java & Co
Roman
Всем привет. Кто то читал книгу java threads? Можете подсказать стоит ли тратить свое время? Что можно почитать для углубления в многопоточность на Java, прям профильно именно по этой теме?
лучше прочитай про event architecture
источник

H

Human in Java & Co
Ivan Efimov
лучше прочитай про event architecture
Лол а как это связано с многопоточностью в джаве)
источник

H

Human in Java & Co
Еще можно посоветовать переписать все на микросервисы
источник

VS

Vitaly Sirotkin in Java & Co
Cyclone
Да накостылял вон, по ссылке. Но как-то дофига кода для такой, вроде, тривиальной задачи.

На самом деле всё вызвано тем, что я решил выпилить Йоду. А Йода сама сериализовалась в UTC.
Причём в спргбуте у jackson есть свойства про таймзону.
spring.jackson.serialization.time-zone=UTC - казалось бы! Но выставление этого свойства у меня ни на что не влияет (не выяснил, почему).
А у тебя нигде там обжект маппер не переопределен?
источник

VS

Vitaly Sirotkin in Java & Co
Может у него какая настройка есть
источник

C

Cyclone in Java & Co
Vitaly Sirotkin
А у тебя нигде там обжект маппер не переопределен?
Сделал пустое приложение с этим свойством. И LDT и ZDT всё равно в московском поясе.
источник