Skip to content

Conversation

@sofiiakulish
Copy link
Owner

@sofiiakulish sofiiakulish commented Jul 9, 2022

Домашнее задание №4 «LRU-кэш»

Чек-лист студента (Что это?)

Критерии оценки

  • Пайплайн зелёный - 4 балла
  • Добавлены новые юнит-тесты для списка - 1 балл
  • Добавлены новые юнит-тесты для кэша (включая тест на логику
    выталкивания из кэша редко используемых элементов) - до 3 баллов
  • Понятность и чистота кода - до 2 баллов

Зачёт от 7 баллов

func (cache *lruCache) Clear() {
cache.mu.Lock()
defer cache.mu.Unlock()

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Отличное решение по очистке кеша за О(1)!

}

func (l *list) Remove(i *ListItem) {
l.len--
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link

@Remneva Remneva Jul 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для того, чтобы это было возможно реализовать, стоит завязать проверку условий ( l.len > 1 и l.len == 1) для добавления элемента в список не на текущую длину списка l.len (текущее количество элементов в кеше), а на проверку наличия элементов l.firstNode и l.lastNode

cache.mu.Lock()
defer cache.mu.Unlock()

var result interface{}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

здесь можно немного упростить код и обойтись без введения дополнительной переменной result, просто вернув nil, false если !ok

@Remneva
Copy link

Remneva commented Jul 10, 2022

Здравствуйте, София!
Спасибо за выполненную работу, решение отличное!
Можно немного пооптимизировать - упростить реализацию (см. комментарии к ПР).

10 из 10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants