SlideShare uma empresa Scribd logo
1 de 41
ПИШЕМ САМЫЙ БЫСТРЫЙ
   хеш для кэширования данных



          Роман Елизаров
             Devexperts
   http://elizarov.livejournal.com
Преждевременная оптимизация!




                                            http://www.flickr.com/photos/lofink/4501610335/
                 http://odetocode.com/Blogs/scott/archive/2008/07/15/optimizing-linq-queries.aspx
Проблемы со скоростью?

                      Где?
        Почему?



                  Какие?




   Вам точно надо их решать?
Формулируем задачу




Четко. Кратко. Измеримо.
Пример задачи
1. Работаем с заявками



        2. Их много, они нужны часто
             3. Хотим их кэшировать в памяти
Моделируем нагрузку




      http://www.vsemayki.ru/product/19329/woman/
Пример нагрузки

~1М заявок в кэше
10М запросов getById
Геометрическое распределение id
Что будем измерять?



  Время    Память
Избежим типичных ошибок

Помним
• JIT компиляция и оптимизация кода
• Сборка мусора
Так что будем измерять?

Среднее время одной итерации
Пишем код для замеров
Ищем готовые решения




    http://gizmod.ru/2009/05/29/zweistil--universalnyj_velosiped_s_motorchikom/
Разные реализации хеш-таблиц
                   Время, нс на операцию
600
                                                    508
500              459

400

300
        216
200                                                           156
                             143
                                         101
100

 0
      HashMap   Guava   high-scale-lib   Trove   Javolution   HPPC
Не цифрами едиными! RTSL




        http://www.cafepress.com/researchit.640209934
Что мешает скорости?
                   Время, нс на операцию
600
           Функционал                     Гарантии real-time
500

400

300

200                     Thread-safety
100

 0
      HashMap   Guava    high-scale-lib   Trove   Javolution   HPPC
Вечный конфликт



Универсальность
                  Скорость
Дизайн своего решения


Производительность никогда
   не появляется случайно,
 только по замыслу авторов.
Из чего складывается скорость?



Алгоритм и
структуры    Реализация   Результат
 данных
Выбираем алгоритм

• Д. Кнут
  «Искусство программирования»
• Т. Кормен и др.
  «Алгоритмы: построение и анализ»
• С. Скиена
  «Алгоритмы. Руководство по
  разработке»
Хеш-таблицы
 Прямая
             Открытая адресация
адресация

              Линейное       Двойное
            исследование   хеширование
Хеш-таблицы
      И что работает быстрее?
 Прямая А это зависит от
              Открытая адресация
адресация
       реализации и железа

              Линейной       Двойное
            исследование   хеширование
Что используют другие?
                   Время, нс на операцию
600
         Прямая адресация
500      Открытая адресация

400

300

200

100

 0
      HashMap   Guava   high-scale-lib   Trove   Javolution   HPPC
Память – это новый диск




                  http://www.flickr.com/photos/gudlyf/6687607947/lightbox/
Меньше памяти занимает –
                   быстрее работает*




* При прочих равных
Проверим …
                   Занимая память x100 KB
800
700
600
500
400
300
200
100
 0
      HashMap   Guava   high-scale-lib   Trove   Javolution   HPPC
Меньше памяти использует –
                    быстрее работает*




* При прочих равных
Порядок оптимизации при дизайне

Занимаемая память

  Используемая память

     Другие детали
Выберем структуру данных




 Открытая адресация – один массив
Оценим потребление памяти
             Занимая память x100 KB
800
700
600
500
400
300
200
100
  0
Выберем алгоритм (1)
Линейное исследование     Двойное хеширование
• Проще                   • Больше кода
• Доступ к соседним       • В случае промаха прыгает
  ячейкам                   в новое место
• Более чувствительно к   • Требует две независимые
  качеству хеш-функции      хеш-функции
• High-scale-lib, HPPC    • Trove
Выберем алгоритм (2)
Хеш-функция умножением       Хеш-функция делением
• Быстрая                    • Медленней
• Работает с таблицами           – Но память еще медленней!
  размером 2K                • Лучше всего работает с
• Требует выбора               таблицами простого
  магического числа-           размера
  множителя                  • Trove



      High-scale-lib – не использует хеш-функцию
      HPPC – использует MurmurHash3
Как их комбинировать?

               Проще всего
  Линейное
исследование


  Двойное
хеширование

               Хеш-функция   Хеш-функция
               умножением     делением
Напишем же!
Магия золотого сечения

             5 1
              2

     Равномерно размазывает
последовательные числа по таблице
Замерим скорость
                  Время, нс на операцию
800
700
600                                508
500         459
400
300   216
200                 143                   156
                            101                 83
100
  0
Важно распределение
вероятности доступа к разным
         элементам


  Наиболее часто используемые
      заявки (последние)
       имеют соседние id
Каждая деталь имеет значение




                     http://car-interior-supplies.carinteriorss.co.uk/detail/
А если набор часто используемых
           id случаен?
                  Время, нс на операцию
800
700
600                                529
500         463
400
300   253
200                 162     125           158
                                                81
100
  0
Общий процесс


     Формулировка                   Модель      Готовые
        задачи                      нагрузки    решения




        Структура                              Проверка и
                                    Алгоритм
         данных                                 замеры*




* Повторить с начала по необходимости
Спасибо за внимание

      Роман Елизаров
 elizarov@devexperts.com

Специальная благодарность:
   Денису Кисловскому
Хотите знать больше?


Все подробности, код и обсуждение:
    http://elizarov.livejournal.com

Ваши комментарии важны для меня

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
 
SQL Server 入門
SQL Server 入門SQL Server 入門
SQL Server 入門
 
Automate Your Kafka Cluster with Kubernetes Custom Resources
Automate Your Kafka Cluster with Kubernetes Custom Resources Automate Your Kafka Cluster with Kubernetes Custom Resources
Automate Your Kafka Cluster with Kubernetes Custom Resources
 
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べたiOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
 
How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka...
How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka...How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka...
How we eased out security journey with OAuth (Goodbye Kerberos!) | Paul Makka...
 
Ajansız log toplama
Ajansız log toplamaAjansız log toplama
Ajansız log toplama
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 
Gateway deepdive
Gateway deepdiveGateway deepdive
Gateway deepdive
 
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
 
Log Yonetimi ve SIEM Kontrol Listesi
Log Yonetimi ve SIEM Kontrol Listesi Log Yonetimi ve SIEM Kontrol Listesi
Log Yonetimi ve SIEM Kontrol Listesi
 
Getting Started with Splunk
Getting Started with SplunkGetting Started with Splunk
Getting Started with Splunk
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ Programlama
 
OWASP ZAP
OWASP ZAPOWASP ZAP
OWASP ZAP
 
مقدمة في برمجة الشبكات network programming
مقدمة في برمجة الشبكات network programmingمقدمة في برمجة الشبكات network programming
مقدمة في برمجة الشبكات network programming
 
Tale of two streaming frameworks- Apace Storm & Apache Flink
Tale of two streaming frameworks- Apace Storm & Apache FlinkTale of two streaming frameworks- Apace Storm & Apache Flink
Tale of two streaming frameworks- Apace Storm & Apache Flink
 
Microservices Security
Microservices SecurityMicroservices Security
Microservices Security
 
Security testing
Security testingSecurity testing
Security testing
 
Getting Started with Splunk Enterprise
Getting Started with Splunk EnterpriseGetting Started with Splunk Enterprise
Getting Started with Splunk Enterprise
 
HTTP/3, QUIC and streaming
HTTP/3, QUIC and streamingHTTP/3, QUIC and streaming
HTTP/3, QUIC and streaming
 
Vault - Secret and Key Management
Vault - Secret and Key ManagementVault - Secret and Key Management
Vault - Secret and Key Management
 

Destaque

Многопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и ПрактикаМногопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и Практика
Roman Elizarov
 
Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)
Roman Elizarov
 
ACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems Review
Roman Elizarov
 
The theory of concurrent programming for a seasoned programmer
The theory of concurrent programming for a seasoned programmerThe theory of concurrent programming for a seasoned programmer
The theory of concurrent programming for a seasoned programmer
Roman Elizarov
 
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Roman Elizarov
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure java
Roman Elizarov
 
A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)
A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)
A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)
Nagesh Khandare
 

Destaque (20)

Многопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и ПрактикаМногопоточное Программирование - Теория и Практика
Многопоточное Программирование - Теория и Практика
 
Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)Многопоточные Алгоритмы (для BitByte 2014)
Многопоточные Алгоритмы (для BitByte 2014)
 
ACM ICPC 2016 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2016 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2016 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2016 NEERC (Northeastern European Regional Contest) Problems Review
 
ACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2013 NEERC (Northeastern European Regional Contest) Problems Review
 
Why GC is eating all my CPU?
Why GC is eating all my CPU?Why GC is eating all my CPU?
Why GC is eating all my CPU?
 
Wait for your fortune without Blocking!
Wait for your fortune without Blocking!Wait for your fortune without Blocking!
Wait for your fortune without Blocking!
 
The theory of concurrent programming for a seasoned programmer
The theory of concurrent programming for a seasoned programmerThe theory of concurrent programming for a seasoned programmer
The theory of concurrent programming for a seasoned programmer
 
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
 
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
Теоретический минимум для понимания Java Memory Model (для JPoint 2014)
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure java
 
Михаил Елизаров «Man in the middle в действии!»
Михаил Елизаров «Man in the middle в действии!»Михаил Елизаров «Man in the middle в действии!»
Михаил Елизаров «Man in the middle в действии!»
 
Connecting People
Connecting People Connecting People
Connecting People
 
A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)
A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)
A hands-on-guide-for-working-with-mapplets-130208025312-phpapp01 (2)
 
Geo
GeoGeo
Geo
 
The Ins and Outs of the R15 Grant
The Ins and Outs of the R15 GrantThe Ins and Outs of the R15 Grant
The Ins and Outs of the R15 Grant
 
BIMobject for manufacturers 2013
BIMobject for manufacturers 2013BIMobject for manufacturers 2013
BIMobject for manufacturers 2013
 
Онлайн магазин - Как и Защо?
Онлайн магазин - Как и Защо?Онлайн магазин - Как и Защо?
Онлайн магазин - Как и Защо?
 
Dealing fairly with interest-only customers; a good practice guide from HML -...
Dealing fairly with interest-only customers; a good practice guide from HML -...Dealing fairly with interest-only customers; a good practice guide from HML -...
Dealing fairly with interest-only customers; a good practice guide from HML -...
 
Antonio orozco
Antonio orozcoAntonio orozco
Antonio orozco
 
Attitudes AND persuation
Attitudes AND persuationAttitudes AND persuation
Attitudes AND persuation
 

Semelhante a Пишем самый быстрый хеш для кэширования данных

Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»
Yandex
 
Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)
Ontico
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
Aleksey Shipilev
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
Dmitry Buzdin
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использования
Alexey Kachayev
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: Personalization
Anton Gorokhov
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
Ontico
 
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Ontico
 

Semelhante a Пишем самый быстрый хеш для кэширования данных (20)

Java Performance
Java PerformanceJava Performance
Java Performance
 
Sivko
SivkoSivko
Sivko
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»
 
Developing highload servers with Java
Developing highload servers with JavaDeveloping highload servers with Java
Developing highload servers with Java
 
Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)Выжимаем из сервера максимум (Андрей Паньгин)
Выжимаем из сервера максимум (Андрей Паньгин)
 
[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использования
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: Personalization
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
CodeFest 2012. Липский Н. — JIT vs. AOT. Единство и борьба динамического и ст...
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
 
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
Анатомия веб-сервиса, Андрей Смирнов (ex-Skype)
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 

Mais de Roman Elizarov

Java Serialization Facts and Fallacies
Java Serialization Facts and FallaciesJava Serialization Facts and Fallacies
Java Serialization Facts and Fallacies
Roman Elizarov
 
ACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems Review
Roman Elizarov
 

Mais de Roman Elizarov (13)

Kotlin Coroutines in Practice @ KotlinConf 2018
Kotlin Coroutines in Practice @ KotlinConf 2018Kotlin Coroutines in Practice @ KotlinConf 2018
Kotlin Coroutines in Practice @ KotlinConf 2018
 
Deep dive into Coroutines on JVM @ KotlinConf 2017
Deep dive into Coroutines on JVM @ KotlinConf 2017Deep dive into Coroutines on JVM @ KotlinConf 2017
Deep dive into Coroutines on JVM @ KotlinConf 2017
 
Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017Introduction to Coroutines @ KotlinConf 2017
Introduction to Coroutines @ KotlinConf 2017
 
Fresh Async with Kotlin @ QConSF 2017
Fresh Async with Kotlin @ QConSF 2017Fresh Async with Kotlin @ QConSF 2017
Fresh Async with Kotlin @ QConSF 2017
 
Scale Up with Lock-Free Algorithms @ JavaOne
Scale Up with Lock-Free Algorithms @ JavaOneScale Up with Lock-Free Algorithms @ JavaOne
Scale Up with Lock-Free Algorithms @ JavaOne
 
Kotlin Coroutines Reloaded
Kotlin Coroutines ReloadedKotlin Coroutines Reloaded
Kotlin Coroutines Reloaded
 
Lock-free algorithms for Kotlin Coroutines
Lock-free algorithms for Kotlin CoroutinesLock-free algorithms for Kotlin Coroutines
Lock-free algorithms for Kotlin Coroutines
 
Introduction to Kotlin coroutines
Introduction to Kotlin coroutinesIntroduction to Kotlin coroutines
Introduction to Kotlin coroutines
 
Non blocking programming and waiting
Non blocking programming and waitingNon blocking programming and waiting
Non blocking programming and waiting
 
ACM ICPC 2015 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2015 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2015 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2015 NEERC (Northeastern European Regional Contest) Problems Review
 
DIY Java Profiling
DIY Java ProfilingDIY Java Profiling
DIY Java Profiling
 
Java Serialization Facts and Fallacies
Java Serialization Facts and FallaciesJava Serialization Facts and Fallacies
Java Serialization Facts and Fallacies
 
ACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2012 NEERC (Northeastern European Regional Contest) Problems Review
 

Último

ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 

Último (9)

ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 

Пишем самый быстрый хеш для кэширования данных