Есть две JVM, которым нужно общаться друг с другом. Как открыть, а затем читать/писать в /dev/shm/foo понятно. Непонятно как уведомить читателя, что началась запись, и он может выйти из спячки и начать чтение?
Вот смотрю какие-то futex-ы есть, кто-то советует файл блокировать, какие еще есть методы? Что легковеснее?
Сгенерил RSA пару на 2048 битов через keytool. Взял SSLEngine и запустил клиент-сервер на 10-ой джаве на обычном ноутбуке с последним i5. По итогу на рукопожатие уходит 200 мс - это нормально? У сервера первая SSLEngine#getDelegatedTask() таска отрабатывает где-то за 80-100 мс. У клиента примерно также. Но там еще есть вторая таска, по итогу 200 мс на рукопожатие... Мне кажется что-то тут не так?
Посмотрел на джава опции есть какой-то -XX:+UseAESIntrinsics, оно есть в OpenJDK или это только оракловский хотспот?
Тут осознал нужность ЯП, который умеет одновременно в GC, а на узких местах без GC. Как та же джава с Unsafe#putX, но с гармоничным сожительством в без GC коде. И внезапно вспомнил, что D в этом плане могёт... Можете дать ссылок с примерами и комментариями по данному аспекту D?
Нужно сохранить простых POJO на пару гигов (порядка 30_000_000 объектов), но во время batch добавления, уже сохраненные POJO могут быть снова запрошены, увеличены в размере (ArrayList#add) и снова сохранены.
MapDB вроде норм, хотя она очень медленная, да еще на котлине сделана, по итогу в eclipse какие-то крякозябры, а не джава код.
Пробовал еще сериализацию, но она тоже очень медленная, да и как потом с данными работать, вытаскивать по ключам, добавлять, обновлять?
Транзакции не нужны, threadsafe не нужно. Нужно чтобы умела in-memory (offheap) и флушить на диск по итогу batch'а
Хочу хранение иерархий объектов, джоины, индексы, констрейны как в реляционке, транзакции, язык запросов в функциональном стиле или что-то близкое к SQL. Возможность встраивания прямо в приложение, чтобы без всяких IPC. Поддержка Android.
Зреет план создавать новую IDE для разработки на джаве. Основная идея вынести GUI на сторону веб-браузера Servo (может быть Chromium). И сделать упор на оптимизацию GUI, используя WebAssembly и прочее нативное API браузера, а не как в Eclipse Che затранспилили JDK через GWT в JavaScript.
Цель достигнуть реактивной работы GUI на слабых устройствах, в том числе на Android девайсах. Тестироваться будет на Onyx Boox Max 2 с E ink дисплеем.
Плюс куча сахарных фич, типа static final по желанию скрывать в const. Операции на BigDecimal и подобных разворачивать в арифметические операторы (методы типа gt, lt, eq - тоже самое). По желанию убирать фигурные скобки превращая блоки кода в питоноподобный синтаксис. Ну и там еще списочек подобных идей ) Конечно на результирующий *.java файл это ни как не будет влиять, в сыром виде всё будет по старому.
Тот же JavaDoc показывать над текстом классов и методов в отрендеренном виде, а не как HTML разметку. Сделать нормальный поиск зависимостей прямо из IDE, типа javalibs.com, но доработать и дать больше поисковых фич.
Если ли смысл идти с этим на краудфандинг или нафиг это не нужно всем хватает IDEA?
Вот скажем пилим мы сервер-сайд, куча эксепшенов - все дела. Если то же число не распарсилось или поле с формы в паттерн не зашло. Казалось бы красота, перехватываем ошибки в другом слое.
Но если разобраться, то сервер может обслуживать 100500 клиентов. И если для десктопного ПО можно забить на перформанс по пробрасыванию эксепшенов, то на сервер-сайде этот оверхед умножается на 100500 клиентов... И может быть нехило так отнимает ресурсы процессора? Или не стоит париться?
Так-то ерунда, но мой перфекционизм, дурной голове покоя не даёт )
Хочу сделать подъемник для монитора на электродвижке. Движок у китайцев присмотрел, осталось понять как перенести его мощность для вертикального подъема груза с необходимой мне скоростью. Существует ПО для расчета/симуляции таких вещей?
Хочу запускать Ubuntu на E Ink дисплее такого плана http://www.eink.com/product.html?type=productdetail&id=28 Но что потребуется еще, чтобы подключить его к Raspberry Pi? Там нужно что-то программировать для вывода на дисплей или есть готовые и оптимизированные решения для данной задачи?
Какие на сегодня есть решения для защиты сервера на колокейшене от вскрытия корпуса? Датчики для офисного ПК не предлагать.
В целом, мне бы хватило уничтожение (можно физическое) данных на HDD и RAM, при сверлении, выпиливании лобзиком, засовывании проволки в решетку вентиляции и прочими механическими воздействиями для проникновения внутрь к HDD или RAM. Разместить внутри ручную гранату не вариант )
Ночная сборка Сборка квантум фырфокса почти догнала, а кое-где обогнала хром https://youtu.be/YIywpvHewc0 Кушает на 30% меньше памяти. А вот вам нарезка с реддита, радости у всех полные штаны:
Хочу накидать пару простых тумбочек указав где бурить дырки под рафиксы. Поэтому не ищу убер сложную cad систему. Затем распечатать чертежи на обычном A4 принтере. Чем мне может помочь линукс или веб 2.0 (читай веб-приложения) работающий из под линукса?
В принципе LibreOffice Calc показывает нормально, но фильтр неудобный, нужно всё мышкой нажимать, когда мне нужно искать по условию substr1% AND substr2%, а затем опять нажимать мышкой, когда нужно искать просто substr1%
Тут потребовалось хранить в памяти кучу immutable, но прежде их нужно создавать сложным алгоритмом. Как итог подумываю воспользоваться Builder паттерном, но вот вручную это всё лень кодить. Может какие полезные плагины для IDE, библиотеки или еще чего есть?
На попмехе довольно интересная статья http://www.popmech.ru/weapon/348332-zhizn-dlinoyu-polchasa-skolko-zhivyot-pod... По сути можно создать симуляцию и примерно подсчитать за сколько будет вынесена та или иная страна. Пусть даже партизанская война, просто высчитать все вероятности на кластере... Наверное америкосы так давно делают?
void add(unsigned long long *first) {
unsigned long long v0 = first[0];
unsigned long long v1 = first[1];
first[2] = v0 + v1;
}
Но думаю проще сразу передавать i32, но как их эффективнее соединить в i64? Т.е. нужно что-то такое:
void add(long l0, long h0, long l1, long h1, long long *result) {
long long v0 = *((long long*)argc[0])
long long v1 = *((long long*)argc[2])
*result = v0 + v1;
}