Крис программист на Clojure в основном. А на лиспе редко бывают слишком большие методы.
В самом начале это подразумевалось как концепт редактора именно для Clojure — в этом контексте с ним все прекрасно. Но потом похоже захотелось срубить денег, были примешаны куча всего, и уже появились сомнения.
Насчет ключей, я интересовался, какой функциональный смысл они несут — ведь можно использовать обычные лонги, которые возвращает allocateMemory() и подобные методы.
Логика сериализации — имеется ввиду обычные путы/геты с оффсетом для каждого класса?
Просто есть возможность работать с произвольными классами, читая в рантайме карту класса. Под картой я имею ввиду бинарное представление. Но тут уже не будет удобного статического API для работы с полями.
Пишу диплом на такую тему.
Пробовал ByteBuffer, но отказался в пользу Unsafe из-за проблем с разметкой памяти. Мне показалось, что операционная система должна лучше справиться.
Возможность обновления и выборки отдельных полей объекта — отличная возможность, сам не заметил почему-то.
Расскажите поподробнее про ключи и выборки.
Еще интересует ваш подход к сериализации — вы используете заранее описанную логику для каждого класса? Или смотрите скелет класса в рантайме и по нему кладете данные (позволяет работать с произвольными объектами)?
Сделал форк для перевода на русский: github.com/kondratovich/the-little-redis-book
В папке ru лежит копия английской версии для редактирования. Желающие помочь — присылайте пулл реквесты. Гитхаб позволяет редактировать документ прямо с веб-страницы.
Выше описанным путем мне удавалось поменять байткод уже загруженных методов классов, меняя значения байт инструкций в памяти. Если будет время, дополню статью.
Насчет SM — я ничего не поверял, но я не думаю, что он вообще позволить лезть в память.
В самом начале это подразумевалось как концепт редактора именно для Clojure — в этом контексте с ним все прекрасно. Но потом похоже захотелось срубить денег, были примешаны куча всего, и уже появились сомнения.
Логика сериализации — имеется ввиду обычные путы/геты с оффсетом для каждого класса?
Просто есть возможность работать с произвольными классами, читая в рантайме карту класса. Под картой я имею ввиду бинарное представление. Но тут уже не будет удобного статического API для работы с полями.
Пробовал ByteBuffer, но отказался в пользу Unsafe из-за проблем с разметкой памяти. Мне показалось, что операционная система должна лучше справиться.
Возможность обновления и выборки отдельных полей объекта — отличная возможность, сам не заметил почему-то.
Расскажите поподробнее про ключи и выборки.
Еще интересует ваш подход к сериализации — вы используете заранее описанную логику для каждого класса? Или смотрите скелет класса в рантайме и по нему кладете данные (позволяет работать с произвольными объектами)?
Автор хачерит.
В папке ru лежит копия английской версии для редактирования. Желающие помочь — присылайте пулл реквесты. Гитхаб позволяет редактировать документ прямо с веб-страницы.
Насчет SM — я ничего не поверял, но я не думаю, что он вообще позволить лезть в память.
В свое время руководствовался этим текстом.
Не хорошо.
Мне не стыдно.