Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Rooster

Программирование, т. 8

  

315 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

omegalul


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

объясни

Поделиться сообщением


Ссылка на сообщение

только если без слака

Nikki Sixx понравилось это

65881.png

Поделиться сообщением


Ссылка на сообщение

8гб оперативки на ноуте хватит для фонтенд хуйни чи не? 

нод жс сервер, вс код, браузер, +спотифай, дискорд, видосики на ютубе

да должно. у меня 16 но даже при большем кол-ве запущенного софта и задач - 8 не набирается. и да у меня линукс под работу.

Поделиться сообщением


Ссылка на сообщение

angular-cli + webstorm + opera = почти все 8 заняты, хуй что еще откроешь

Поделиться сообщением


Ссылка на сообщение

+хром + Стим + телега trollface

Поделиться сообщением


Ссылка на сообщение

https://i.imgur.com/lmOdB0d.png

Поделиться сообщением


Ссылка на сообщение

8гб оперативки на ноуте хватит для фонтенд хуйни чи не?

нод жс сервер, вс код, браузер, +спотифай, дискорд, видосики на ютубе

Хватит, ещё 3-4 останется. Тут зависит от того, сколько вкладок в браузере и на какой операционке.

Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение

сделайте зарплатный опрос в новой теме, хочу самоутвердиться 

Поделиться сообщением


Ссылка на сообщение

Занес тебя в список ебучих буржуев


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

Да у него 1 сироп в офисе, вот и пытается за счет зарплаты выехать.

Nikki Sixx понравилось это

 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

Поделиться сообщением


Ссылка на сообщение

Есть в топане уважаемые фронтендеры с опытом разделения билда на версию для старых браузеров и версию для браузеров с поддержкой модулей?


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

 

 

только если без слака

:xd:  


Скрытый текст

 

OMGVERYLONGNAME написал 08.06.2018 в 12:50:
потому что ты не игрок, ты мразь на любой роли
ZombBomb написал 05.12.2018 в 19:27:
лол
Fint написал 19.07.2019 в 15:49:
Ок, я ошибся

 

 

NaniQue- написал 30.07.2019 в 10:37:
висп вроде норм игрок

 

 

Поделиться сообщением


Ссылка на сообщение

 

Ну вот. Правда здесь по другому расписано, но ситуация та же.  

Там не могу изменить поле другого класса, хз почему. Но при этому существует функция получения координаты касания по экрану, а затем по этим координатам рисуется прямоугольник - там все ок передается. ХЗ  biblethump 

 

 

 (разве что создание объектов в методе отрисовки будет пожирать тебе память, заставлять активно работать gc и всё будет плохо)

бред


 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

 

(разве что создание объектов в методе отрисовки будет пожирать тебе память, заставлять активно работать gc и всё будет плохо)

бред

 

Эх, если бы это было не правдой. Даже тупо обычный форич в методе отрисовки напрягает gc (создание итератора на каждый форич).

Поделиться сообщением


Ссылка на сообщение
(изменено)

 

 

 

Ну вот. Правда здесь по другому расписано, но ситуация та же.  

Там не могу изменить поле другого класса, хз почему. Но при этому существует функция получения координаты касания по экрану, а затем по этим координатам рисуется прямоугольник - там все ок передается. ХЗ  biblethump 

 

если предположить что твой код написан в принципе более менее корректно и не допущено простых ошибок (например что действительно фукнция 1, которая изменяет параметры в каком-то другом объекте, отрабатывает перед другой функцией в которой эти измененные параметры используются - возможно это просто не так, попробуй тамштамп печатать в логи которые печатают значения этих параметров в разных функций. либо может быть у тебя в принципе инициальизирующая функция по каким-то причинам не вызывается), то скорее всего проблема с разными потоками.

как я понял ты используешь какой-то фреймворк который сам инициализирует твои объекты а потом как-то сам вызывает вышеописанные функции. - во первых кто гарантирует что фреймворк их вызывает в том порядке в каком ты думаешь, а во вторых кто гарантирует что делается это однопоточно/последовательно

для того чтобы что-то гарантировать сделай выполнение нужных кусков однопоточным - делается это через лок на монитор какого-то одного объекта, для простоты можешь создать новый класс с названием ru.debil.myproject.MyLock и делать synchronize по "объекту класса", т.е. помоему в джаве это будет выглядеть так - "synchronize(ru.debil.myproject.MyLock.getClass()) { ... }

внутри таких блоков у тебя будет однопоточность.

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

затем залоггируй что там в них происходит + таймштамп лога

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

 

если после вышеуказанного теста всё работает корректно, а без критических секций нет - то либо надо указать volitile в объявлении переменных (потому что иначе нет гарантии того что считанное во втором потоке значение переменной выдаст значение которое было до этого сохранено в первом потоке - просто так между потоками данные не переходят, точнее это не гарантируется), либо гарантировать последоватлеьность вызовов функций при многопоточном исполнении, либо гарантировать то что у тебя инициализирующая функция у тебя вызывается в принципе в твоем фреймворке


PS

попробовал загуглить тупо текст эксепшны который автор описывает на стековерфлоу

и, О ЧУДО, кажется я нашел ответ на проблему https://ru.stackoverflow.com/questions/514856/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-attempt-to-invoke-virtual-method-on-a-null-object-reference

 

 


Если я не ошибаюсь, то в жабе synchronize всегда на каком то объекте, если synchronize просто на методе - то на объекте, который вызывает этот метод, если на статическом методе - на объекте метакласса.
И ключевое слово volatile неоч объяснил, я бы не понял, вряд ли оно поможет бтв.
Суть такова - у каждого потока есть свой кеш, куда они сохраняют переменные для ускорения обработки - у каких то реальное пространство в кеше, у каких то в оперативе, но это вас ебать не должно - это проблема ОС. Ну так вот, делая переменную volatile вы запрещаете кешировать потокам значение этой переменной. В чем смысл - поток может изменить значение переменной НО У СЕБЯ В КЕШЕ, все остальные потоки об этом не узнают, volatile запрещает потокам это делать, но на практике это не решает проблему состояния гонки, зато существенно замедляет работу с этой переменной, я даж сходу не могу придумать реальный пример, где volatile реально помогло.
Кеш это супер важная хуйня - если сравнивать скорость работы кеша 1-2 лвл, кеша 3лвл и оперативы, то кеш 1-2 уровня будет феррари, кеш 3 уровня запорожец, а оператива - велосипедист.


Изменено пользователем Matriarch

Поделиться сообщением


Ссылка на сообщение

 

 

 

Ну вот. Правда здесь по другому расписано, но ситуация та же.  

Там не могу изменить поле другого класса, хз почему. Но при этому существует функция получения координаты касания по экрану, а затем по этим координатам рисуется прямоугольник - там все ок передается. ХЗ  biblethump 

 

 

если предположить что твой код написан в принципе более менее корректно и не допущено простых ошибок (например что действительно фукнция 1, которая изменяет параметры в каком-то другом объекте, отрабатывает перед другой функцией в которой эти измененные параметры используются - возможно это просто не так, попробуй тамштамп печатать в логи которые печатают значения этих параметров в разных функций. либо может быть у тебя в принципе инициальизирующая функция по каким-то причинам не вызывается), то скорее всего проблема с разными потоками.

как я понял ты используешь какой-то фреймворк который сам инициализирует твои объекты а потом как-то сам вызывает вышеописанные функции. - во первых кто гарантирует что фреймворк их вызывает в том порядке в каком ты думаешь, а во вторых кто гарантирует что делается это однопоточно/последовательно

для того чтобы что-то гарантировать сделай выполнение нужных кусков однопоточным - делается это через лок на монитор какого-то одного объекта, для простоты можешь создать новый класс с названием ru.debil.myproject.MyLock и делать synchronize по "объекту класса", т.е. помоему в джаве это будет выглядеть так - "synchronize(ru.debil.myproject.MyLock.getClass()) { ... }

внутри таких блоков у тебя будет однопоточность.

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

затем залоггируй что там в них происходит + таймштамп лога

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

 

если после вышеуказанного теста всё работает корректно, а без критических секций нет - то либо надо указать volitile в объявлении переменных (потому что иначе нет гарантии того что считанное во втором потоке значение переменной выдаст значение которое было до этого сохранено в первом потоке - просто так между потоками данные не переходят, точнее это не гарантируется), либо гарантировать последоватлеьность вызовов функций при многопоточном исполнении, либо гарантировать то что у тебя инициализирующая функция у тебя вызывается в принципе в твоем фреймворке

PS

попробовал загуглить тупо текст эксепшны который автор описывает на стековерфлоу

и, О ЧУДО, кажется я нашел ответ на проблему https://ru.stackoverflow.com/questions/514856/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-attempt-to-invoke-virtual-method-on-a-null-object-reference

 

 

 

Если я не ошибаюсь, то в жабе synchronize всегда на каком то объекте, если synchronize просто на методе - то на объекте, который вызывает этот метод, если на статическом методе - на объекте метакласса.

И ключевое слово volatile неоч объяснил, я бы не понял, вряд ли оно поможет бтв.

Суть такова - у каждого потока есть свой кеш, куда они сохраняют переменные для ускорения обработки - у каких то реальное пространство в кеше, у каких то в оперативе, но это вас ебать не должно - это проблема ОС. Ну так вот, делая переменную volatile вы запрещаете кешировать потокам значение этой переменной. В чем смысл - поток может изменить значение переменной НО У СЕБЯ В КЕШЕ, все остальные потоки об этом не узнают, volatile запрещает потокам это делать, но на практике это не решает проблему состояния гонки, зато существенно замедляет работу с этой переменной, я даж сходу не могу придумать реальный пример, где volatile реально помогло.

Кеш это супер важная хуйня - если сравнивать скорость работы кеша 1-2 лвл, кеша 3лвл и оперативы, то кеш 1-2 уровня будет феррари, кеш 3 уровня запорожец, а оператива - велосипедист.

ну volatile поможет в том случае если запись в такую переменную реально происходит перед последующим его чтением в других потоках. без volatile нет никаких гарантий, с volatile есть семантика happens-before на read/write переменной

вы правы в том что проблему состояния гонки волатайл не решает. про волатайл я вообще не объяснял - я предложил впилить в код и протестировать

пример с кэшем занятный, но не до конца корректный. на разных процах и ОС это всё работает по разному, более того зачастую дело может быть вообще не в кешах а в других оптимизациях, в т.ч. на уровне байткода компилятором. лучше не думать о том что volatile выключает кэш, а думать ровно то что написано в спеке при этом надо понимать что действительно это вызывает выключение различных механизмов оптимизации

 

 

(разве что создание объектов в методе отрисовки будет пожирать тебе память, заставлять активно работать gc и всё будет плохо)

бред

 

Эх, если бы это было не правдой. Даже тупо обычный форич в методе отрисовки напрягает gc (создание итератора на каждый форич).

 

обоснуй

у меня есть 2 контраргумента -

- я пихаю создание объектов на каждый чих каждой функции и у меня ничего не тормозит и гц работает нормально (речь про бекенд)

- современные оптимизации в jvm могут отработать так что форич скаляризуется до интов на стеке

есть какая-то статья или что-то еще в подтверждение твоих слов?


 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
(изменено)

В JVM несколько видов GC это раз.
Стековые объекты (созданные в функциях и отработавшие без сохранения ссылок на них) умирают сразу же.
Свежие объекты не которые не сохранилось ссылок умирают тоже быстро.

создание итератора на каждый форич

Создание итератора не затратнее автобоксинга. И то и то создание объекта.

Итератор уже за пределами foreach цикла может быть утилизирован GC

Плюс итератор занимает хуйню места сам по себе.
 
А вот такая хуйня

private static long sum() {
Long sum = 0L;
for (long i = 0; i <= Integer.MAX_VALUE; i++)
  sum += i;
return sum;
}

Создаст хуилиард иммутабельных Лонгов и несколько раз вызовет stop the world


Изменено пользователем Index

Поделиться сообщением


Ссылка на сообщение
(изменено)

что такое "стековые объекты"? объекты, созданные внутри метода не умирают сразу же, умирают только ссылки на них (т.к на стеке хранятся только примитивы и ссылки на объекты, сами объекты в любом случае всегда хранятся в хипе). соответственно созданный внутри метода объект умрет тогда, когда gc решит его подчистить (естественно при отсутствии каких либо ссылок на объект), а удаление фрейма со стека (завершение метода) почистит только ссылку на объект (но не сам объект), которая создалась в ходе работы метода


Изменено пользователем AskMe-
choojoykin понравилось это

Лишь ощутив баттхерт до конца, мы обретаем свободу

bf4ffc239860.png

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...