Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 3 months ago
Новые и перспективные Web3 игры с добычей токенов.
Чат: https://t.me/Crypto_Wolf_Chat
Правила чата смотрите в описании чата.
Все свои вопросы направляйте в чат или главному модератору чата: @Exudna_118
По теме сотрудничества: @Zombini
Last updated 2 months, 2 weeks ago
Интересный вопрос:
Почему char[] предпочтительнее String для хранения пароля?
Актуалочка в ваши ушки от Java AI FM ?
Безудержного вам веселья и крепкого здоровья ✊
Задачка
Поделюсь примером того, чем приходится заниматься 40 часов в неделю ?
Представим, что у вас есть ендпоинт, который возвращает набор всех координат конкретного транспорта за определенный промежуток времени. Он нужен для того, чтобы фронт отрисовывал трек - путь, который транспорт проделал за выбранный временной интервал.
Представим также, что фронты пожаловались, что им приходит большое количество координат, и попросили уменьшить объем передаваемых данных, но так, чтобы трек все еще можно было отрисовать ?
Одно из предложенных решений - передавать в фильтре дополнительный временной интервал - количество минут. Его задача отсеивать лишние координаты следующим образом:
Допустим, что у нас есть координаты транспорта за каждую секунду. Если значение этого фильтра равно 2, тогда передается первая координата, затем та, которая идет минимум через 2 минуты, затем та, которая идет минимум за 2 минуты и тд.
Т.е. в результате должен получиться список, в котором координаты идут минимум через 2 минуты друг за другом
?️?️?️
Для упрощения представим, что у нас есть класс с координатой x (другие опустим для упрощения), а также меткой времени, в которое эта координата измерена.
Необходимо реализовать тело метода filterCoordinates
```
class Scratch {
public static void main(String[] args) {
List coordinates = getCoordinates();
List filtered = filterCoordinates(coordinates, 1);
}
static class Coordinate {
int x;
LocalDateTime dateTime;
Coordinate(int x, LocalDateTime dateTime) {
this.x = x;
this.dateTime = dateTime;
}
}
static List<Coordinate> filterCoordinates(
List<Coordinate> coordinates,
int minutesInterval) {
// TODO реализовать фильтрацию
return coordinates;
}
static List<Coordinate> getCoordinates() {
List<Coordinate> coordinates = new ArrayList<>();
LocalDateTime now = LocalDateTime.now();
for (int i = 1; i <= 300; i++) {
coordinates.add(new Coordinate(i, now.plusSeconds(i)));
}
return coordinates;
}
}
```
Короче, что не так с ООП?
Во-первых, мне приятно, что я своим вопросом, судя по комментариям, будто немного задел чувства верующих.
Контент, который вызывает эмоции - крутой контент. ?
Никогда не встречали блогеров, которые в противоборстве мужчин и женщин занимают чью-то одну позицию и несут ахинею вроде женщина должна готовить, убирать и при этом выглядеть будто собралась на свадьбу к бывшему?
Как правило у таких блогеров в комментах развергается преисподняя, и цепная реакция взрывающихся пуканов наших прекрасных (конкретно в этом случае) дам, используется как топливо для продвижения блога в алгоритмах соц сетей. ?
Это все круто, но с ООП то что не так?
Ну во первых, минусов у него так мало, что пол поста приходится говорить о взрывающихся пердаках.
А во вторых, в ООП количество ссылок на объекты распределенных по всей системе растет такими же темпами, как количество разрывающихся от негодования пуканчиков в постах из примера выше.
По просту говоря - взрывными темпами.
Из-за чего возникают проблемы с потреблением ресурсов.
В моей практике было 2 опыта решения этой проблемы, разительно отличающихся друг от друга.
В первом варианте обратить внимание на эту особенность пришлось тогда, когда пуканы стали взрываться у всех от нестабильной работы приложения.
Оно потребляло всю память и умирало, его реанимировали, а оно снова падало. Из-за огромного размера кодовой базы вырезать опухоль оперативно было невозможно. Приходилось судорожно прикладывать подорожники, слушая во сколько тысяч долларов обходятся минуты простоев ?.
Второй опыт был эталонным примером обращения внимания на эту проблему ?.
Я работал в команде харденинга. От английского закаливать (а может и нет, уже хз). Все что делала эта команда - получала один из существующих сервисов и занималась только одним. Оптимизацией. Конкретно в моем случае мы разгружали память приложения вынося его кэш в Reddis.
Какая у всего этого мораль?
Одной из самых сложных для меня тем на собесах (когда собесят меня) является потребление памяти.
Если вдруг почувствуете, что ваш пукан взрывается от потребления какого-то контента, знайте, скорее всего вами манипулируют.
Затушите огонь благого гнева изучением Java Memory Model, почитайте про различные сборщики мусора и алгоритмы их работы и получите +100 к привлекательности на собесах ??❤️?
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 3 months ago
Новые и перспективные Web3 игры с добычей токенов.
Чат: https://t.me/Crypto_Wolf_Chat
Правила чата смотрите в описании чата.
Все свои вопросы направляйте в чат или главному модератору чата: @Exudna_118
По теме сотрудничества: @Zombini
Last updated 2 months, 2 weeks ago