- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws Exception {
Class cache = Integer.class.getDeclaredClasses()[0];
Field c = cache.getDeclaredField("cache");
c.setAccessible(true);
Integer[] array = (Integer[]) c.get(cache);
array[132] = array[133];
System.out.printf("%d",2 + 2);
}
}
bormand 25.06.2014 18:21 # +1
kegdan 25.06.2014 18:31 # 0
BJlADuMuPCKuu_nemxy 19.11.2019 21:20 # 0
Lure Of Chaos 25.06.2014 18:51 # +4
а то вдруг дети увидят польется говно ща "ааа, дырявая жаба!", а это просто Тарас стал жабу изучать, открыл для себя рефлексию.
bormand 25.06.2014 18:58 # +2
Как это неоправданное? Без него же не поменяешь кеш Integer'ов. Так что setAccessible() применено по назначению.
Lure Of Chaos 25.06.2014 19:01 # 0
я понимаю, если бы это было использовано для какого-нибудь DI там...
BJlADuMuPCKuu_nemxy 19.11.2019 21:23 # 0
kegdan 25.06.2014 19:33 # +8
kegdan 25.06.2014 19:36 # +3
bormand 25.06.2014 18:59 # +6
Через тернии к звездам. Через крестоблядство в жабоблядство.
Lure Of Chaos 25.06.2014 19:08 # +2
kegdan 25.06.2014 19:34 # +6
Lokich 27.06.2014 13:56 # 0
kegdan 27.06.2014 14:34 # 0
bormand 27.06.2014 15:17 # 0
TarasB 25.06.2014 21:24 # +1
3.14159265 01.07.2014 13:38 # +1
А у меня есть отлинчый пример про числа
Угадайте, что напечатает этот код:
http://ideone.com/gfm7J9
wvxvw, который говорил об "уг. полиморфизме" тоже должно понравиться.
kegdan 01.07.2014 13:49 # 0
3.14159265 01.07.2014 14:05 # 0
Всего 1 символ поменять:
http://ideone.com/i5kvbo
bormand 01.07.2014 14:53 # 0
3.14159265 01.07.2014 15:25 # 0
С equals-то можно сравнивать любые типы, HashSet is ok. Тем более оба Numbers.
bormand 01.07.2014 16:15 # +1
Ну да, на ideone подсмотрел бектрейс.
3.14159265 01.07.2014 16:44 # 0
>Программа сравнила несравнимое и будет завершена?
bormand 01.07.2014 16:49 # 0
Чтобы сделать вид, что я догадался до этого сам.
kegdan 01.07.2014 17:54 # 0
3.14159265 26.06.2014 14:11 # +2
Ну там SecurityManager быстро запретит подобную херню.
bormand 25.06.2014 19:17 # 0
Elvenfighter 26.06.2014 14:38 # +2
3.14159265 25.06.2014 19:26 # +6
wvxvw 25.06.2014 22:18 # 0
bormand 25.06.2014 22:21 # 0
О какой именно херне идет речь?
Soul_re@ver 25.06.2014 22:24 # +1
wvxvw 25.06.2014 22:43 # 0
3.14159265 26.06.2014 14:13 # 0
По факту плохих решений и лени Java работает на порядки быстрее CL.
wvxvw 26.06.2014 14:48 # +1
Более того, запомни, а лучше запиши: языки не могут быть быстрее или медленнее друг друга, у них нет такого понятия, как скорость языка. Быстрее могут быть конкретные реализации на конкретных задачах. Если мы будем сравнивать Аллегро с его длинной арифметикой - там любая существующая реализация Явы останется далеко позади. Если мы будем сравнивать какие-нибудь проблемы, где выгодно динамический подход / нет возможности решить типы во время компиляции - у Явы есть все шансы проиграть, но если мы будем сравнивать какие-нибудь хорошо реализованые в Яве фишки, типа тех же коллекций, то вполне вероятно, что выиграет Ява.
При чем, опять же, если какой-нибудь из Лиспов не поленится запилить аналогичную реализацию таких структур данных, то этого преимущества не будет.
Лиспы традиционно лучше компилируются в минималистичные наборы инструкций, типа для РИСК процессоров, я не уверен что то же самое верно для Явы. CCL очень быстро работает на АРМах - а как там Ява?
myaut 26.06.2014 15:00 # +1
На АРМах ведроид (Dalvik и теперь ART).
А как у Лиспов кода на высоком уровне - например, в Java возможна такая штука: http://www.azulsystems.com/blog/cliff/2010-04-08-inline-caches-and-call-site-optimization
wvxvw 26.06.2014 15:07 # 0
По поводу вопроса: Лиспы совсем по-другому компилируются. Компилятор может и заинлайнить вообще вызов метода, не просто статическим его сделать.
Но, опять же, ссылка не имеет отношения к Яве. Она про работу конкретного компилятора. С этой точки зрения никакой разницы между Лиспом и Явой нет. Они тут оба не при делах.
3.14159265 26.06.2014 15:17 # 0
HotSpot так не умеет. Инлайн методов - это недоступное никому кроме лисперов чудо.
wvxvw 26.06.2014 15:36 # 0
Упоминание о РИСК наборе инструкций и ЦИСК к тому, что нужно сравнивать сравнимые вещи. Арлекин, например, написали замечательные компиляторы для процессоров Моторолы с РИСК инструкциями, но не писали компиляторы для ЦИСК. В Лисп машинах некоторые базисные функции Мак Лиспа были зашиты в железо, так же как Ява на АРМ или были даже какие-то реализации Питона в железе - если мы будем это сравнивать с интерпретацией или эмуляцией, то конечно разница будет большой. Т.е. такое сравнение не имеет смысла.
3.14159265 26.06.2014 15:40 # +2
Не становится. Инлайнятся даже виртуальные методы.
И крестокомпиляторам ни исключения, ни всякие RTTI не мешают инлайнить.
>предположим, в заинлайненом коде случилась ошибка
Если инфа о стектрейсе не юзается, а thrower и catcher заинлайнились вместо, то try-catch компилируется в goto.
Если fillInStackTrace юзается происходит деоптимизация и откат к интерпретации кода.
wvxvw 26.06.2014 15:42 # 0
Какой стак-трейс. Если заинлайнили, то фреймы на стеке тоже другие будут. О чем же и речь.
Виртуальные методы никого не ебут, т.как разработчик все-равно не видит в редакторе таблицу виртуальных методов. Там как раз очень удобно инлайнить. А вот цикл - хуй, нужно с ним очень аккуратно, построчно, чтобы инфа оставалась, чтобы можно было найти откуда она пришла. В Лиспе цикл - это одна форма, т.е. по аналгии с Явой - это как если бы в Яве цикл всегда писался в одну строчку.
3.14159265 26.06.2014 15:45 # 0
И что?
>Телл ас моар.
Хотелось бы услышать моар про инструкции "специально для Явы"?
wvxvw 26.06.2014 15:50 # 0
- чревато ошибками
- на определенном этапе становится не выгодно, т.как имеенно изза нее не оправываются затраты на инлайн.
3.14159265 26.06.2014 15:58 # 0
В хорошо написанном коде - это редкость. Если код сделан так что частью его нормальной работы являются исключения, грех жаловаться на его скорость.
Вся теория о проблеме инлайна основана на предположении:
>предположим, в заинлайненом коде случилась ошибка
А теперь вопрос. Нужна ли высокая скорость исполнения коду в котором постоянно случаются ошибки?
3.14159265 26.06.2014 15:48 # +2
Лолшто? Как это их "очень удобно инлайнить", если они виртуальные, то бишь полиморфные?
На этапе компиляции кода практически невозможно сказать какой метод выполнится.
wvxvw 26.06.2014 15:53 # 0
Но чтобы это понять нужно сначала попробовать подебажить Лисп, а еще лучше - МЛ / ОКамл, или Хаскель. Без опыта это не объяснить.
3.14159265 26.06.2014 15:55 # 0
Я спрашивал совсем не это. Я спрашивал, каким образом "очень удобно" можно заинлайнить виртуальный метод?
>Но чтобы это понять нужно сначала попробовать подебажить Лисп, а еще лучше - МЛ / ОКамл, или Хаскель. Без опыта это не объяснить.
Причем тут дебаг лиспа, окамла и хаскеля?
wvxvw 26.06.2014 16:02 # 0
При том, что об этом тут речь уже на протяжении десятка постов - о чем же и спрашивал. Вместо того, чтобы отвечать, не сочти за труд, прочитай уже полученые ответы.
wvxvw 26.06.2014 15:58 # 0
Опять же, пиздеж :) Практически всегда можно, очень редко когда нельзя (нужно чтобы код откуда-то извне загружался или что-то такое), компиляторы Лиспа как-правило разруливают это, более того, если не могут разрулить, то, например, в том же SBCL будут предупреждения от компилятора.
3.14159265 26.06.2014 16:06 # +2
Какой виртуальный метод будет вызван определяется строго в рантайме. В этом главная суть подобных методов.
Вот есть мультиметод, как заранее определить какой код будет вызван?
wvxvw 26.06.2014 16:16 # 0
Но для того, чтобы это понять нужно хотя бы раз это увидеть. А для того, чтобы это увидеть, нужно хотя бы раз скомпилировать програму на языке в котором это происходит более наглядно. Например, Лисп и SBCL - и поэксперементировать с (declare (type ...)) и посмотреть, что получится.
3.14159265 26.06.2014 16:17 # 0
Если сможет. А если не сможет? Если мы в коде используем полиморфизм с разными типами объектов - это ведь главная суть и польза виртуальных методов.
Ответьте на один простой вопрос - диспатч женерик методов в CLOS происходит в рантайме или в компайл-тайме?
wvxvw 26.06.2014 16:24 # 0
- :compile-toplevel
- :load-toplevel
- :execute
Искать ли конкретный метод, или не искать и на каком этапе зависит от разработчика и возможности найти этот метод. Если разработчик настаивает, что нужно выбрать какой-то конкретный метод, то он может даже запороть програму и получить сегфолт потому, что был выбран неправильный метод. А может согласиться на то, что правильный метод будет найден во время компиляции / загрузки / выполнения.
3.14159265 26.06.2014 16:28 # +1
>- :execute
Всё понятно.
kegdan 26.06.2014 17:06 # 0
грустный хохол
wvxvw 26.06.2014 22:01 # 0
3.14159265 27.06.2014 22:12 # +4
Вот вы любитель изъебнуться с терминологией. С таким подходом лисп абсолютно все проверки и расчёты будет производить в компайл-тайме - идеальный язык!
Хотя execution, то есть исполнение созвучно рантайму.
Жаба тоже компилирует в рантайме (да и не только жаба, а всё что имеет JIT), формально и даже фактически JIT тоже можно считать этапом компиляции. Компиляции байт-кода в нативный код, однако программист уже никакого участия не принимает и обратной связи с компилятором нету.
bormand 26.06.2014 15:02 # +1
Кстати, некоторые армы умеют в аппаратное ускорение жабы. Х.з. правда, чего именно они там ускоряют, я не изучал.
wvxvw 26.06.2014 15:11 # 0
Казалось бы, один и тот же язык, как жеж так то ли быстрый, то ли медленный?
eth0 26.06.2014 21:03 # 0
3.14159265 26.06.2014 15:12 # 0
Можно поподробнее какие это инструкции "специально для Явы"?
bormand 26.06.2014 15:15 # +1
kegdan 26.06.2014 15:50 # 0
kegdan 26.06.2014 15:57 # +5
3.14159265 26.06.2014 15:15 # 0
Ява абсолютна не совместима с RISC-процессорами, очевидно же.
guest 27.06.2014 11:21 # 0
guest 27.06.2014 11:40 # +2
bagrinho 29.10.2019 07:07 # 0
bagrinho 29.10.2019 07:15 # 0
https://itnan.ru/post.php?c=1&p=328120
Как работает в JDK 11+, не в курсе.
laMer007 25.06.2014 22:34 # 0
wvxvw 25.06.2014 22:45 # +1
bormand 25.06.2014 23:02 # +6
kegdan 26.06.2014 08:21 # +1
bormand 26.06.2014 08:27 # 0
kegdan 26.06.2014 08:29 # 0
1024-- 26.06.2014 08:44 # 0
kegdan 26.06.2014 09:38 # 0
bormand 26.06.2014 10:04 # 0
kegdan 26.06.2014 10:18 # 0
kegdan 26.06.2014 09:36 # 0
bormand 26.06.2014 10:06 # 0
kegdan 26.06.2014 16:39 # −1
someone 26.06.2014 22:47 # 0
А до Java 5 и сахарка не было.
kegdan 27.06.2014 00:00 # −1
brutushafens 27.06.2014 00:28 # −3
kegdan 27.06.2014 00:50 # −1
brutushafens 27.06.2014 00:54 # −2
kegdan 27.06.2014 00:55 # −1
brutushafens 27.06.2014 00:58 # −2
kegdan 27.06.2014 01:05 # −1
brutushafens 27.06.2014 01:08 # −2
1024-- 27.06.2014 07:07 # +1
Весело. (относительно шести последних сообщений)
Господа! Ну вроде бы образованные люди же...
Кто хочет спамить и троллить - выбирайте тему поинтереснее, чем пи-пи-писечки. О перфомансе что-ли поспорьте, об обёртках и неприкрытых системных вызовах. Хотя бы эпиграммы пишите...
1024-- 27.06.2014 08:15 # −1
bormand 27.06.2014 08:18 # +1
Да ну, воспринимаются два варианта - "программы" и "виста". Второй вариант отбрасываем, т.к. программы из-за мерзостной висты в бсод не падают. Все однозначно и понятно ;)
kegdan 27.06.2014 08:16 # +2
Беспозвоночную змею
И та, лишившись в миг рассудка,
На пони кинулась мою
bormand 27.06.2014 07:25 # +2
> Целуй пипиську страуструпа
Предлагаешь ему переучиться на кресты?
kegdan 27.06.2014 08:04 # −1
Это все исключительно в пародийных целях
bormand 27.06.2014 08:16 # 0
А кто это? Какой-то авторитет?
kegdan 27.06.2014 08:20 # −1
http://www.youtube.com/watch?v=nHYBB6VLW5c
brutushafens 27.06.2014 10:38 # −1
bormand 27.06.2014 10:51 # 0
brutushafens 27.06.2014 11:01 # −1
bormand 27.06.2014 11:23 # 0
Поставь мой юзерскрипт чтобы смотреть, кто кому отвечает и чтобы я мог спиздить твой пароль и писать всякий бред от твоего имени ;)
brutushafens 27.06.2014 11:35 # −1
1024-- 27.06.2014 12:21 # +1
Тогда можно написать свой прокси сервер, который будет из http://govnokod.ru/css/style.css?v=4 вырезать
kegdan 27.06.2014 12:44 # −1
brutushafens 27.06.2014 13:03 # −1
1024-- 27.06.2014 14:44 # +1
kegdan 27.06.2014 14:51 # −1
http://download.hdd.tomsk.ru/preview/sxcrzkfw.jpg
Вот так у меня ГК выглядит
guest 27.06.2014 15:06 # 0
kegdan 27.06.2014 15:10 # −1
1024-- 27.06.2014 20:09 # +2
А у меня комментарии все одной ширины, которая зависит только от исходной ширины поста. (где-то дядя Дефекейт показывал, как это выглядит)
bormand 27.06.2014 20:30 # +1
+1. Глаза вытекают. Куда столько контраста?
У мну вот так: http://rghost.ru/56610551.view
kegdan 27.06.2014 20:34 # +1
bormand 27.06.2014 20:44 # 0
А если я смотрю на чужой моник с 80-90% яркости - у меня уже минут через 10 глаза слезиться и болеть начинают :(
eth0 27.06.2014 20:44 # +1
bormand 27.06.2014 20:45 # +3
bormand 27.06.2014 20:50 # +8
Читаемей же, чем белые буквы? :)
brutushafens 27.06.2014 20:52 # 0
bormand 27.06.2014 21:17 # +8
Ну да, ты прав, синие ссылки неудачно смотрятся на черном фоне. Их надо посветлее сделать, имхо.
> Черный фон тоже не айс.
Ну это дело привычки. В той же консольке годно смотрится.
bormand 27.06.2014 21:27 # +5
kegdan 27.06.2014 21:29 # −1
bormand 27.06.2014 21:30 # +6
Эта галочка тоже есть в моём юзерскрипте. Только она заодно и саму цифру убирает.
Поставь, поиграйся. Исходники открыты, лицензия свободная ;)
kegdan 27.06.2014 21:37 # −1
bormand 27.06.2014 21:46 # +3
kegdan 27.06.2014 21:56 # 0
в JS полный профан
bormand 27.06.2014 21:57 # +3
Аналогично, если чо ;) В резюме совесть не позволит вписать "знание javascript".
kegdan 27.06.2014 22:03 # −1
bormand 27.06.2014 22:04 # +3
kegdan 27.06.2014 22:12 # 0
вообще не нужно писать то, что к должности не относится - а то еще отправят херней заниматься
1024-- 27.06.2014 22:17 # +1
Какое-нибудь sqr x = x * x покрывает как минимум 3 упомянутых языка.
3.14159265 19.11.2019 21:12 # 0
А куда оно делось?
BJlADuMuPCKuu_nemxy 19.11.2019 21:16 # 0
eth0 28.06.2014 17:36 # 0
Я себе свой запилил, пока только добавил сверху индикатор комментариев на странице и копию пагинатора, чтобы каждый раз не крутить вниз.
Здорово сокращает время на поиск новых комментариев.
bormand 28.06.2014 17:42 # 0
Эм, а я делаю так: все свежие комменты лежат в стоке. Тыкаем средней кнопкой на все новые комменты... и всё. На каждой открывшейся странице они внизу (за счет сортировки), и она уже проскроллена как раз к концу. Надо только чуть-чуть вверх покрутить, если много насрали.
1024-- 28.06.2014 17:59 # 0
У меня Ctrl+клик вручную, всё никак не автоматизирую это дело.
Чёрт, только сейчас пришла в голову мысль: можно ж по комментариям перемещаться в хронологическом порядке! Надо будет добавить в свой юзерскрипт.
brutushafens 27.06.2014 21:34 # −1
kegdan 27.06.2014 21:39 # −1
bormand 27.06.2014 21:43 # +1
Да из меня дизайнер как из медведя пианист ;) Еще, имхо, подчеркивания на ссылках мешают, привлекая лишнее внимание.
http://rghost.ru/56611951.view
P.S. Сорри за минус, я тыкал в него правой кнопкой, чтобы исследовать элемент, а он понял это как клик :(
brutushafens 27.06.2014 21:46 # 0
kegdan 27.06.2014 21:54 # 0
Добро пожаловать в клуб ненависти Стертора
bormand 27.06.2014 21:55 # +4
А за что мне его ненавидеть?
kegdan 27.06.2014 21:57 # 0
bormand 27.06.2014 22:00 # +1
Почему в будущем времени? Ты пропустил какие тут были холивары и вайпы минусами? :)
А сейчас стертор очень даже адекватен и спокоен.
brutushafens 27.06.2014 22:01 # −2
bormand 27.06.2014 22:03 # +6
Да без проблем :) Въебал минус.
brutushafens 27.06.2014 22:04 # −1
kegdan 27.06.2014 22:04 # 0
Vasiliy 01.07.2014 10:26 # +3
kegdan 01.07.2014 11:06 # +1
bormand 01.07.2014 11:30 # 0
Из параллельной вселенной.
kegdan 01.07.2014 11:42 # 0
bormand 01.07.2014 12:07 # 0
Что за доктор? Хаус?
roman-kashitsyn 01.07.2014 12:11 # +1
Тырса.
Наверное, Who
kegdan 01.07.2014 12:39 # 0
bormand 01.07.2014 13:03 # 0
Аааа! Я Догадался! Ты посмотрел пять сезонов доктора Айболита!
kegdan 01.07.2014 13:06 # 0
brutushafens 27.06.2014 21:58 # 0
brutushafens 28.06.2014 23:45 # 0
brutushafens 29.06.2014 00:21 # +1
kegdan 29.06.2014 16:08 # 0
Все что меня касается...
eth0 29.06.2014 16:37 # 0
brutushafens 29.06.2014 16:40 # 0
kegdan 29.06.2014 16:52 # +2
brutushafens 29.06.2014 16:59 # 0
eth0 29.06.2014 19:11 # 0
kegdan 27.06.2014 20:55 # −1
1024-- 27.06.2014 20:55 # 0
Я так и не придумал, что же делать, если я случайно перезагружу страницу с непрочитанными новыми комментариями или кто-то понапишет новых комментариев, пока я пишу свой.
bormand 27.06.2014 21:14 # +7
Да, новые комменты всегда внизу, а при наведении на >>237623 всплывает окошко с соотв. комментом (как на бордах). Ради этого скрипт и мутился (ну и ради лулзов в духе "все анонимы").
brutushafens 27.06.2014 01:23 # −2
bagrinho 29.10.2019 07:23 # 0
https://ideone.com/1g4aEK
У кого есть возможность, проверьте в новых JRE.
bagrinho 29.10.2019 10:05 # 0
Почему атрибут скопировался с поля "theUnsafe" в поле "cache"?
nemyx_pycu4 19.11.2019 22:58 # 0