А, это еще не жесть — у меня в первом коде под андроид новые объекты вообще не создавались,все методы в мейн, без параметров, переменные — глобальные статичные)
не «код передается» а, простым языком, ссылку на подпрограмму — которая никуда не перемещается при этом, подпрограммой и остается, даже на уровне jvm афаик. Сложно въехать в искусственно созданные сущности, не всегда удачно созданные, это да — сам через это прошел. Но всегда можно перевести понятным языком...
не обязательно ассом — достаточно просто знать другой подход. Или не знать: я первый проект под Андроид написал в си-подобном стиле — с ООП тогда только начинал разбирался. Потом подразобрался (включая исходники открытых jvm), многие знания породили многие горести)))
Спасибо, с моей стороны статистика выглядит оптимистично)
Написал в личку
Спасибо, почитаю
1. Не только лишь не все можно сделать через таблицы, а только то, что сервисникам менять доверили — например, таблицы адаптации можно только обнулить. Алгоритм коррекции по лямбда-зонду (а не пара переменных), аварийные режимы, много чего... Ну и, почему мне не могло быть просто интересно? Это НАСТОЛЬКО странно?)
Насчет ассемблера — не уверен, может подскажешь насчет такого в неиспользуемом куске прошивки «STACK:... ... .R...REG:... SP:. CP:.).ENTER — next dump row, A — new adress, ESC — reset ...User Call — .Stack Overflow.Stack Underflow.Proc. Error.NMI...Debugger» ?
Проц если че www.st.com/.../datasheet/CD00115717.pdf
2. Конкретный ответ — я любитель, самоучка, прочитал спеки, поковырял в IDA, примерно прикинул (и не факт, что правильно), дальше ниасилил, это сказалось на самооценке. Попытался выяснить, занимается ли кто-то в Киеве именно реверс-инженерингом автопрошивок (а не «+100500 лошадей в таблицах»), безуспешно... Ты хотел простебать мой скилл? Так я и не спорю!
Джава для меня не первый язык, возможно и не 10й (но первый чисто ООП, каюсь, избегал), якобы на нее спрос на рынке, но проблемы старта джунов в другую ветку.
Я бы хоть Кобол доучил (в юности хелловорлд на нем написал, имхо он проще Джавы)) — просто за 15 лет вусмерть за-ал финанализ, модели, риски, винтик в системе обоснования коррупции. Хочу реализовать юношескую мечту, сделать профессией то, что нравится, программировать. У меня один скилл, в котором я уверен — наличие мозга, в остальном очень сильно сомневаюсь... Сорри, наболело.
Официалы не могли отловить плавающую ошибку (машина изредка глохла, в городе это п-ц), автофорумы (вот же источники ереси) советовали сменить прошивку. Я сменил, затем выявил таки глючный датчик, а там как-то занесло, решил разобраться что внутри — были идеи насчет алгоритмов по лямбде и таблицам адаптации, ниасилил) Насчет увеличения мощности (в основном развод) могу говорить долго, но не хочу плодить оффтопик
Вкратце — ЭБУ это не одна микруха (та, которая по k-line шьется) а несколько, со своей логикой и протоколами связи, прошивка написана изначально на чем-то высокоуровневом (возможно, ООП)), в моем случае даже bootloop не по спецификации, ну и дизассемблировать спагетти код, где половина — безусловные дальние переходы (не только и не столько на таблицы, всё так написано) — удовольствие так себе) Что-то понял, но чтобы писать свое — недостаточно)
Если есть конкретные вопросы — задавайте, а так тема для многотомника (еще теория ДВС цепляется))
Певен що багатьом прикольніше знати, ніж не знати, якщо я правильно зрозумів суть)
Мені наприклад цікава друга реалізація, вона має міняти хеш-функцію, як я розумію. Де це реалізовано?
В мене подібна проблема — наприклад, кілька років тому дизасемблював ЕБУ свого авто, абсолютно ніхто з друзів мене не підтримував «дурнею займаєшся, ти ж не автомайстер, краще зароби і купи інше» — було вкрай важко пояснити просту річ, що мені справді цікаво, як це працює
Даже в массиве, transient Entry[] table, функционал ArrayList-а реализован отдельно и медленнее, созданием нового массива и копированием через итератор в обёртке(!!!). В этом массиве хранятся ссылки на связные списки типа Entry, цитирую из openjdk
275 static int indexFor(int h, int length) {
276 return h & (length-1);
277 }
386 public V put(K key, V value) {
387 if (key == null)
388 return putForNullKey(value);
389 int hash = hash(key.hashCode());
390 int i = indexFor(hash, table.length);
391 for (Entry<k,v> e = table[i]; e != null; e = e.next) {
392 Object k;
393 if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
394 V oldValue = e.value;
395 e.value = value;
396 e.recordAccess(this);
397 return oldValue;
398 }
399 }
400
401 modCount++;
402 addEntry(hash, key, value, i);
403 return null;
404 }
768 void addEntry(int hash, K key, V value, int bucketIndex) {
769 Entry<k,v> e = table[bucketIndex];
770 table[bucketIndex] = new Entry<k,v>(hash, key, value, e);
771 if (size++ >= threshold)
772 resize(2 * table.length);
773 }
grepcode.com/...ect,java.lang.Object,int
На первый взгляд проблем нет, при более-менее равномерном распределении хеш-функции, но копнем поглубже — в конечном итоге под хранение каждого отдельного значения создается отдельный объект — и это отдельный фрейм для GC...
Спасибо, дело в том, что я гуглил в печатном виде — цикл лекций по полтора часа это не самый быстрый путь изучения. Но нлпшник Шпилёв отличный (помимо основной темы)) Оракл хорошо выбрал)
в конце статьи — ссылки на исходники (ну и в Эклипсе можно глянуть), весьма понятно написаны, для меня стандартные библиотеки — образец стиля написания... но не логики)))
Ну, главное, что я выяснил — джавой занимаются люди, в среднем более гибкие и открытые к другой точке зрения, чем корпоративные фин.аналитики) Для меня это был важный социальный эксперимент, навидался в другой сфере)
А эйчары — да, проблема, для них резюме с банками — черная метка, но это в другую тему)
Спасибо, доклад сходу не нашел, ссылкой не поделитесь?
Я инфу по GC брал отсюда, глава 7.5. www.proklondike.com/...s/thobshee/compiler2.html
Вообще отличная книга для таких динозавров как я, которые когда-то знали Си и ассемблер, но новый альбом Моцарта уже не выйдет, и надо разбираться как работает то, на что переучиваешься, чисто для себя, чтоб полным кретином себя не чувствовать)
Любые инкапсулированые в объектах данные можно вынести в параллельные массивы (вместо баскетов), парсящиеся с любой логикой, читабельность несколько упадет, но производительность вырастет, об этом был мой первоначальный пост
ну хоть не купить Oracle предлагаете)))
1) Икзектли) Мне лично легче в своем классе их парсить и конвертить на выходе, чем выучить 10 чужих методов) Понимаю, что вредная привычка)
2) Спасибо, почитаю.
скажи сколько миллиардов операций тебе нужно — и дай секунду времениЯ Java с андроида начал, довольно дохлого смарта, МТК 6573 двухьядерник, для пробы начал делать векторный редактор, был в шоке — за секунду эта дохлятина достает из 4х массивов последовательно порядка 2 млн. интов и укладывает по координатам примитивы в кадровый буффер, итоговый фпс плавненький )
имея на борту 8 мегабайт памяти512 кб, Поиск-1
Основная задача java на сегодня — это банальнейшие операции: УСЛОВНЫЙ ПЕРЕХОД и МАНИПУЛЯЦИЯ ССЫЛКАМИТо-то байт-код состоит из if/goto чуть менее, чем наполовину)
столько раз, сколько он за весь свой жизненный цикл отработает — это время можно измерить суткамиНа том-же Поиске-1 написал пару говноигрушек (школьнег же) и графический редактор (без мыши, стрелками, шаг менялся нулем). Шах и мат, атеисты(ц) )))
Всё это — бюрократия. И служит единственной цели: чтобы тот, кто не умеет делать — мог опрашивать и ранжироватьСпасибо, теперь я знаю специфику айти-эйчаров)
Каюсь, гибрид, на одномерном массиве ссылок на объект Entry<key,value>. habrahabr.ru/post/128017 Что мешало сделать на двух массивах — теряюсь в догадках, надо покопать байткод, может там привели)
Я понимаю, что автор читал диссертацию (не знаю как в Штатах, а у нас там люди и покруче из**ться), но всё-же, зачем из простого делать сложное?
ОБРАЗЕЦ передачи состояний — и всё кагбэ попроще?
там их не так много, ШЕСТЬ, простое перечисление имхо куда лучше, чем «некоторое множество»
RESTful конечно размытое, но СУЩЕСТВУЮЩЕЕ понятие