170 похожих чатов

Привет, у меня есть самописный LFU кэш со сложностью

O(1). Там в основе лежит хэшмапа для хранения значений, и массив хэш сетов для хранения связанных нод и метаинформации о частоте использования объекта в кэше (индекс массива -> частота вызова сета объектов). То есть при вызове объекта из хешмапы, идёт перемешаете ноды слева направо по массиву. При eviction по размеру дропаются ноды слева. И все было ок, но сейчас мне нужно сделать кэш thread safe и при этом не потерять в эффективности. Возможно, посоветуете что есть почитать, посмотреть на эту тему. Как сделать структуру данных потоко безопасной и и.д.? Спасибо 🧐

10 ответов

8 просмотров

Почему именно самописное?

И что, при удалении элемента ближе к краю будет весь массив двигаться?

Mykyta-Berehulia Автор вопроса
Etki
И что, при удалении элемента ближе к краю будет ве...

Нет, не двигаются, просто наименее использованные, будут слева и дропнутся

Mykyta Berehulia
Нет, не двигаются, просто наименее использованные,...

Почему они должны дропаться, когда я удаляю один ключ?

Mykyta-Berehulia Автор вопроса
Etki
Почему они должны дропаться, когда я удаляю один к...

При переполнении кэша стоит eviction factor в 1%, когда в кэш вставится элемент который превышает максимальный лимит, то 1% наименее используемых объектов из него удалится

Почему бы не взять caffeine просто?

Mykyta-Berehulia Автор вопроса
Костя
Почему бы не взять caffeine просто?

Да, я смотрю его и Guava как пример, так поставлена задача 🤓

Mykyta-Berehulia Автор вопроса

Минимально инвазивно можно просто массив ридврайтлоков добавить

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта