powered by simpleCommunicator - 2.0.31     © 2024 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / java reflectoion
13 сообщений из 38, страница 2 из 2
java reflectoion
    #40130182
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f9n6001,
Дерево причем к той фразе ТЗ от тебя?))
...
Рейтинг: 0 / 0
java reflectoion
    #40130209
f9n6001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
PetroNotC Sharp
Вероятно вам надо очередь

нет, там сначала поиск объекта по uuid, а потом обработка объекта с последующим удалением из списка.
...
Рейтинг: 0 / 0
java reflectoion
    #40130221
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f9n6001
PetroNotC Sharp,
PetroNotC Sharp
Вероятно вам надо очередь

нет, там сначала поиск объекта по uuid, а потом обработка объекта с последующим удалением из списка.


сначал ищем в Map по key, а потом удалем по ключю ?
...
Рейтинг: 0 / 0
java reflectoion
    #40130222
f9n6001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
PetroNotC Sharp
Дерево причем


А, собственно, какие у нас варианты остаются?
Все коллекции в Java строятся либо на массиве (аррэйлист, вектор, стек), либо на связных списках (линкедлист), либо на их симбиозе (хешмэп, хешсет), либо на красно-черном дереве (тримэп, трисет).

Вот, если не аррэйлист на массиве, то на чём?
...
Рейтинг: 0 / 0
java reflectoion
    #40130223
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чет мутная история с чего вдруг arraylist будет удлинять до милиона если всего 100 элеметов будет в нем.
добавление с удалением если чередуется. Если не черезуется то возникает вопрос как поможет вообще что либо если нужно хранить милион объектов.
Если понимается типа заполнить милионов и обработывать потихоньку удаляю и имеется ввиду что структура хранения сжимается потихоньку по мере удаления.
...
Рейтинг: 0 / 0
java reflectoion
    #40130226
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
f9n6001
PetroNotC Sharp,
пропущено...

нет, там сначала поиск объекта по uuid, а потом обработка объекта с последующим удалением из списка.


сначал ищем в Map по key, а потом удалем по ключю ?
+1
Аффтар! Ты теоретик или практик?
ТЗ наконец внятно будет?
Счас напишешь велосипед и потом его в мусорку
...
Рейтинг: 0 / 0
java reflectoion
    #40130270
f9n6001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,


PetroNotC Sharp
Ты теоретик или практик?


Теория без практики мертва и бесплодна. Практика без теории невозможна и пагубна. Для теории нужны знания, для практики сверх того, и умения. © М.В.Ломоносов.

Прежде чем строить систему, надо уметь абстрагироваться, сложить у себя в уме модель и определиться, из каких, собственно, кирпичей, будем эту систему строить. На сколько я понимаю, именно этим и занимаются "архитекторы" в IT-компаниях. Вообще, способность к абстрактному мышлению - это именно то, что отличает человека от обезьяны.

Вот интересная статья (не про обезьян)
...
Рейтинг: 0 / 0
java reflectoion
    #40130274
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется что структуру данных надо подбирать под конкретный бизней-кейс.
Нет смысла обсуждать недостатки ArrayList в вакууме. Нам нужна задача
на которой ArrayList повел себя плохо. Например делал ненужные аллокации
или копирования.
...
Рейтинг: 0 / 0
java reflectoion
    #40130287
f9n6001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,


mayton
Нет смысла обсуждать недостатки ArrayList в вакууме.


Пока вот так написал. Потом посмотрю, на практике, надо ли оно вообще окажется.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    protected void resizeStorage() throws NoSuchFieldException, IllegalAccessException {
        Field capacityField = storageReflection.getDeclaredField("elementData");
        capacityField.setAccessible(true);
        int currentCapacity =  ((Object[]) capacityField.get(storage)).length;

        if (currentCapacity > storage.size()*3){
            List<Resume> tmpStorage = new ArrayList<>(storage.size()+ storage.size()/2);
            tmpStorage.addAll(storage);
            storage = tmpStorage;
            tmpStorage = null;
            System.gc();
        }
    }
...
Рейтинг: 0 / 0
java reflectoion
    #40130289
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f9n6001,
Меня не слушаешь, mayton послушай.
А так, ты как стас споришь против всех.
Удачи!
...
Рейтинг: 0 / 0
java reflectoion
    #40130297
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f9n6001

Пока вот так написал. Потом посмотрю, на практике, надо ли оно вообще окажется.

Код: java
1.
2.
3.
4.
    protected void resizeStorage() throws NoSuchFieldException, IllegalAccessException {
        Field capacityField = storageReflection.getDeclaredField("elementData");
        capacityField.setAccessible(true);
        int currentCapacity =  ((Object[]) capacityField.get(storage)).length;


Я не знаю где ты это собрался использовать но мне кажется что бегать рефлексией по системным
библиотекам по скрытым полям - это путь в никуда.

Точно также и данный вызов

Код: java
1.
System.gc();



в зависимости от конкретной модели GC может не делать вообще ничего. Послушай лекции Шипилева на эту тему.
...
Рейтинг: 0 / 0
java reflectoion
    #40130340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f9n6001

Собственно из чего возник вопрос.
Имеем лист, в который заносятся определенные данные. Поток этих данных может быть большим. Скажем, миллион записей. Дальше эти записи обрабатываются и по мере обработки удаляются из листа как неактуальные. В результате мы имеем под капотом листа массив на 2 млн ячеек, из которых реально заполнено 100. Когда случится следующий поток с данными - неизвестно, а массив в памяти бултыхается.

Усекать его не имеет смысла?
Поймите правильно, я действительно спрашиваю вас как более опытных в программировании специалистов. Наплевать и забыть или все-таки как-то обрабатывать эту ситуацию?

По данному бизнес-кейсу.

Попробуй использовать ArrayDeque https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayDeque.html

Она поддерживает интерфейс очереди Queue. Для обычных сценариев его должно хватить.

Ну почти всем хватало. Особенно если ты хранишь не Integer/Long а какие-то осмыслленные бизнес объекты.

Только высокочастотные трейдеры чего-то там другое искали и делали свои очереди с большей скоростью
обработки. Но .... использовать их крайне неудобно. Вобщем стадартная Кьюшка или Дек (это по сути одно и тоже
только в Дек можно пихать данные с двух сторон... ага как Газопровод по Украине)
...
Рейтинг: 0 / 0
java reflectoion
    #40130488
f9n6001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
mayton
бегать рефлексией по системным
библиотекам по скрытым полям - это путь в никуда.


Да я понимаю, что это - плохое решение. И в реальном проекте скорее всего не пройдет, любой тимлид его забракует. А вот, например, в с# capacity доступен вполне себе легальными средствами . То есть в MS понимают, что штука так-то нужная. Но проработка вопроса - это в любом случае полезное дело для общего развития.

mayton, Андрей Панфилов, вадя, lleming спасибо за конструктив. Тред (что логично) превращается в холивар, потому до новых встреч. :))
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / java reflectoion
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]