Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Система переменных игрока
#31
Donatte Написал:FastList -> ArrayList
FastMap -> HashMap

Javolution это пережиток. Избавляйтесь от него.

+1
И ещё обязательно следует учитывать потоко-безопасные варианты коллекций.

Вот например в стандартных коллекциях, имплементации которых не предназначены для конкурентных операций бросают исключение ConcurrentModificationException. Этот же треклятый Javolution - нет.
В конкурентной среде, коллекции Javolution себя ведут неадекватно и неопределенно.
У FastMap есть возможность сделать его "потоко-безопасным", посредством вызова метода shared(), и это нам хорошо видно. Вместо такого следует ставить ConcurrentHashMap (или аналог).

У FastList конечно-же такого нет, по понятным причинам. На все сто я не уверен, есть ли в нём копирование при записи, но как-то ему удается иногда сохранять работоспособность в конкурентной среде. А порой он отмачивал ещё те приколы, выводя из строя полсервера.
Так вот, трудность в случае замены FastList (FastMap без shared туда же) заключается в необходимости дополнительного анализа кода. Как этот лист используется, кем и откуда. Необходимо установить факт конкурентного доступа и в этом случае предпринять меры (локи, синхронизация, CopyOnWriteArrayList или аналог).
Ну или забить на это и ожидать возбуждений CME. ;D

Ну в общих чертах примерно так. Работы не мало, но избавляться от этого экскремента нужно.
Ответ
#32
SouthBridge Написал:+1
И ещё обязательно следует учитывать потоко-безопасные варианты коллекций.

Вот например в стандартных коллекциях, имплементации которых не предназначены для конкурентных операций бросают исключение ConcurrentModificationException. Этот же треклятый Javolution - нет.
В конкурентной среде, коллекции Javolution себя ведут неадекватно и неопределенно.
У FastMap есть возможность сделать его "потоко-безопасным", посредством вызова метода shared(), и это нам хорошо видно. Вместо такого следует ставить ConcurrentHashMap (или аналог).

У FastList конечно-же такого нет, по понятным причинам. На все сто я не уверен, есть ли в нём копирование при записи, но как-то ему удается иногда сохранять работоспособность в конкурентной среде. А порой он отмачивал ещё те приколы, выводя из строя полсервера.
Так вот, трудность в случае замены FastList (FastMap без shared туда же) заключается в необходимости дополнительного анализа кода. Как этот лист используется, кем и откуда. Необходимо установить факт конкурентного доступа и в этом случае предпринять меры (локи, синхронизация, CopyOnWriteArrayList или аналог).
Ну или забить на это и ожидать возбуждений CME. ;D

Ну в общих чертах примерно так. Работы не мало, но избавляться от этого экскремента нужно.

Полностью поддерживаю.
Так же добавлю (самому подсказали недавно), что лучше намного написать свою карту через массивы, если оно будет использоваться локально, что бы не напрягаться на счет CME и не переделывать тонны кода после этих FastMap.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#33
Pointer*Rage Написал:Так же добавлю (самому подсказали недавно), что лучше намного написать свою карту через массивы, если оно будет использоваться локально

Звучит весьма интересно, но кажется я не до конца уловил эту мысль.
Можно чуть подробнее?
Ответ
#34
SouthBridge Написал:Звучит весьма интересно, но кажется я не до конца уловил эту мысль.
Можно чуть подробнее?

К примеру, у нас есть какой-то лоад. Мы пихаем ништяки в карту, затем начинаем итерировать ее и во время итерации удалять элементы из нее. С обычной картой мы получим CME, хотя никакими множественными тридами тут и не пахнет. Для этого дела можно написать отдельную коллекцию, которая нормально это все воспринимает, но только для работы в локальном потоке.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#35
Pointer*Rage;384439 Написал:что лучше намного написать свою карту через массивы
Написал я как-то свою мапу по образу и подобию HashMap с хэш-функцией для более равномерного раскидывания по корзинам... Говнище знатное получилось. С тех пор использую где можно тров, а где нельзя нативные коллекции.

Добавлено через 58 секунд
Pointer*Rage;384442 Написал:К примеру, у нас есть какой-то лоад. Мы пихаем ништяки в карту, затем начинаем итерировать ее и во время итерации удалять элементы из нее.
Прекрасно делается через итератор с it.remove()
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Ответ
#36
Johnson Написал:Прекрасно делается через итератор с it.remove()

Тут задача в другом - не менять код х) Ибо менять его придется много где.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#37
Я от первых тридиков оттолкнусь ибо все не читал -
Перевести на атомар однозначно here/afk/unloaded
Кешировать.... ну сложновато , много все возвести на процедурах по типу here/afk/uloaded. Дампить состояние чара опять же в силу его активности - по алгоритму "кешеда" далеко не дураки его описывали.
Примерно ту же схему юзал на айтемах - получил профит не только по скорости , но и по защите в дополнительном размере довольно не плохо.
Имхо нужно идти от меньшего к большему - начните с макросов , потом выше и выше, а так бросаться глобально, ну почему нет. Только последствия не контролируемы.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Не пропадает опыт после смерти игрока Magican 1 1,211 04-07-2020, 06:41 PM
Последний пост: Magican
  заставить игрока подобрать айтем slayer48 9 2,519 08-05-2015, 02:13 PM
Последний пост: Gawric
  Система достижений Map 2 1,516 03-06-2015, 02:05 PM
Последний пост: ProDev
  Система достижений в Альт+Б itcry 7 2,339 02-14-2015, 05:41 PM
Последний пост: Donatte
  [ШАРА]Система рейтинга GOD для HF (частичные сурсы/компил) OneThunder 0 1,403 08-05-2014, 11:34 AM
Последний пост: OneThunder
  Смерть игрока Map 7 2,068 06-30-2014, 03:41 PM
Последний пост: Map
  Система аванпостов L2J 0 1,060 04-16-2014, 03:24 PM
Последний пост: L2J
  Система Атрибутов Auri 15 2,839 01-28-2014, 05:50 PM
Последний пост: Auri
  Система тиккетов (Support) Frozenn 8 2,534 03-14-2013, 07:49 PM
Последний пост: KilRoy
  удалить предмет у игрока mego4el 0 1,129 08-25-2012, 11:42 PM
Последний пост: mego4el

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)