Forwarded from Библиотека Go-разработчика | Golang
🗃️ Анатомия SQL-запроса: как работают запросы к базе данных
❓ Как разработчику эффективно работать с базами данных?
Один из ключевых навыков — понимание, как именно выполняются SQL-запросы. В этой статье разобраны все этапы работы запросов с базой данных: от парсинга до оптимизации.
Это поможет не только улучшить производительность приложений, но и избежать частых ошибок при взаимодействии с БД.
📎 Погружаемся в анатомию SQL-запросов по ссылке!
❓ Как разработчику эффективно работать с базами данных?
Один из ключевых навыков — понимание, как именно выполняются SQL-запросы. В этой статье разобраны все этапы работы запросов с базой данных: от парсинга до оптимизации.
Это поможет не только улучшить производительность приложений, но и избежать частых ошибок при взаимодействии с БД.
📎 Погружаемся в анатомию SQL-запросов по ссылке!
👍1
❓ Как контексты используются для отмены операций в многозадачных приложениях?
Контексты в Go предоставляют механизм для отмены операций в многозадачных приложениях за счет передачи сигнала отмены через объект context.Context. Это особенно полезно в сценариях, где горутины выполняют связанные задачи, такие как обработка HTTP-запросов или долгие вычисления.
Принцип работы:
1. Создаётся контекст с функцией отмены (context.WithCancel или context.WithTimeout).
2. Все горутины получают этот контекст и периодически проверяют ctx.Done().
3. Когда вызвана отмена (например, через cancel()), канал ctx.Done() закрывается.
4. Каждая горутина обрабатывает сигнал отмены, например, освобождая ресурсы и завершая выполнение.
Контексты в Go предоставляют механизм для отмены операций в многозадачных приложениях за счет передачи сигнала отмены через объект context.Context. Это особенно полезно в сценариях, где горутины выполняют связанные задачи, такие как обработка HTTP-запросов или долгие вычисления.
Принцип работы:
1. Создаётся контекст с функцией отмены (context.WithCancel или context.WithTimeout).
2. Все горутины получают этот контекст и периодически проверяют ctx.Done().
3. Когда вызвана отмена (например, через cancel()), канал ctx.Done() закрывается.
4. Каждая горутина обрабатывает сигнал отмены, например, освобождая ресурсы и завершая выполнение.
👍8
❓ Что такое uintptr, когда его следует использовать?
uintptr — это тип в Go, который представляет собой целое число, используемое для хранения значений указателей как чисел, то есть для представления адресов памяти в виде целых чисел. Он позволяет выполнять низкоуровневые операции с указателями, такие как арифметика указателей или преобразование указателя в числовое значение и обратно
Когда следует использовать uintptr:
🛠️ Низкоуровневые операции: uintptr используется, когда необходимо работать с указателями на уровне адресов, например, для выполнения арифметики указателей (сдвиг по памяти) или для взаимодействия с C-библиотеками через cgo, где указатели часто обрабатываются как целые числа.
🛠️ Преобразование указателя в целое число: иногда необходимо преобразовать указатель в целочисленное значение (например, для передачи в системные вызовы или манипуляции с памятью). В таких случаях uintptr может быть полезен для хранения числового представления указателя.
🛠️ Взаимодействие с аппаратным обеспечением: в некоторых случаях работы с аппаратным обеспечением или низкоуровневыми системами можно использовать uintptr для работы с памятью напрямую.
uintptr — это тип в Go, который представляет собой целое число, используемое для хранения значений указателей как чисел, то есть для представления адресов памяти в виде целых чисел. Он позволяет выполнять низкоуровневые операции с указателями, такие как арифметика указателей или преобразование указателя в числовое значение и обратно
Когда следует использовать uintptr:
🛠️ Низкоуровневые операции: uintptr используется, когда необходимо работать с указателями на уровне адресов, например, для выполнения арифметики указателей (сдвиг по памяти) или для взаимодействия с C-библиотеками через cgo, где указатели часто обрабатываются как целые числа.
🛠️ Преобразование указателя в целое число: иногда необходимо преобразовать указатель в целочисленное значение (например, для передачи в системные вызовы или манипуляции с памятью). В таких случаях uintptr может быть полезен для хранения числового представления указателя.
🛠️ Взаимодействие с аппаратным обеспечением: в некоторых случаях работы с аппаратным обеспечением или низкоуровневыми системами можно использовать uintptr для работы с памятью напрямую.
👍7
Подготовься к собеседованию на позицию Data Scientist!
Профессия Data Scientist становится все более востребованной, и компании ищут специалистов, способных превращать данные в ценные инсайты. Но как успешно пройти техническое собеседование?
Мы собрали 10 типичных задач, которые могут встретиться на собеседовании, и эффективные подходы к их решению:
1. Внешнее и тензорное произведение
2. One-hot кодировка
3. Мониторинг осадков
4. Симуляция бросков кубиков в «Монополии»
5. Бурение скважин для добычи золота
6. Вычисление свертки
7. Бэктестинг торговой стратегии
8. Прогноз оттока клиентов с помощью логистической регрессии
9. Обнаружение спама с использованием дерева решений
10. Предсказание цен на квартиры с помощью линейной регрессии
Чтобы начать решать задачи, достаточно ответить на четыре простых вопроса по этой ссылке и получить доступ к вводным занятиям курса Математика для Data Science и 10 задачам.
Профессия Data Scientist становится все более востребованной, и компании ищут специалистов, способных превращать данные в ценные инсайты. Но как успешно пройти техническое собеседование?
Мы собрали 10 типичных задач, которые могут встретиться на собеседовании, и эффективные подходы к их решению:
1. Внешнее и тензорное произведение
2. One-hot кодировка
3. Мониторинг осадков
4. Симуляция бросков кубиков в «Монополии»
5. Бурение скважин для добычи золота
6. Вычисление свертки
7. Бэктестинг торговой стратегии
8. Прогноз оттока клиентов с помощью логистической регрессии
9. Обнаружение спама с использованием дерева решений
10. Предсказание цен на квартиры с помощью линейной регрессии
Чтобы начать решать задачи, достаточно ответить на четыре простых вопроса по этой ссылке и получить доступ к вводным занятиям курса Математика для Data Science и 10 задачам.
👍1
⚡️Самые полезные каналы по Go в одной папке
В ней:
➖ канал для подготовки к собеседованиям
➖ интересные задачи
➖ основной канал (этот)
➖ книги по Go
➖ лучшие вакансии из сферы
➖ и наш чат, в котором можно общаться и задавать вопросы
Добавляйте 👉 тык сюда
В ней:
Добавляйте 👉 тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
❓ Почему использование uintptr может быть опасным?
❗ Потеря информации о типе: преобразование указателя в uintptr теряет информацию о типе, что может привести к ошибкам при неправильном доступе к памяти, если указатель используется с другим типом данных.
❗ Сборщик мусора: go использует сборщик мусора, который не отслеживает указатели, преобразованные в uintptr. Это может привести к ошибкам, если память была освобождена или перемещена.
❗ Низкоуровневый доступ: uintptr представляет собой «сырой» адрес памяти, что делает операции с ним небезопасными, так как компилятор не может проверять правильность обращения к памяти.
❗Гонки данных: в многозадачных приложениях использование uintptr может привести к гонкам данных, поскольку не обеспечивается синхронизация или безопасность типов.
❗ Потеря информации о типе: преобразование указателя в uintptr теряет информацию о типе, что может привести к ошибкам при неправильном доступе к памяти, если указатель используется с другим типом данных.
❗ Сборщик мусора: go использует сборщик мусора, который не отслеживает указатели, преобразованные в uintptr. Это может привести к ошибкам, если память была освобождена или перемещена.
❗ Низкоуровневый доступ: uintptr представляет собой «сырой» адрес памяти, что делает операции с ним небезопасными, так как компилятор не может проверять правильность обращения к памяти.
❗Гонки данных: в многозадачных приложениях использование uintptr может привести к гонкам данных, поскольку не обеспечивается синхронизация или безопасность типов.
👍3
❓Что такое defer в Go и какие варианты использования существуют?
defer в Go — это ключевое слово, которое используется для отложенного выполнения функции. Функция, указанная в defer, будет выполнена непосредственно перед тем, как функция, содержащая defer, завершит свое выполнение
Как его можно использовать?
🎯 defer часто используется для освобождения ресурсов, таких как закрытие файлов, соединений с базой данных или освобождение памяти.
🎯 defer полезен для выполнения кода, который должен быть выполнен независимо от того, произошла ли ошибка в функции или нет.
defer в Go — это ключевое слово, которое используется для отложенного выполнения функции. Функция, указанная в defer, будет выполнена непосредственно перед тем, как функция, содержащая defer, завершит свое выполнение
Как его можно использовать?
🎯 defer часто используется для освобождения ресурсов, таких как закрытие файлов, соединений с базой данных или освобождение памяти.
🎯 defer полезен для выполнения кода, который должен быть выполнен независимо от того, произошла ли ошибка в функции или нет.
👍6🥱1
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
💾 CDC vs Outbox: как решить проблему двойной записи в распределенной системе
В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.
Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.
Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.
🔗 Читать статью
🔗 Зеркало
В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.
Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.
Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.
🔗 Читать статью
🔗 Зеркало
❓ Как slice устроен под капотом?
В Go slice — это структура данных, представляющая собой динамически изменяемый массив. Slice строится на основе массива, но в отличие от массива, его размер может изменяться в процессе работы программы. Под капотом slice включает три основных компонента:
Указатель (pointer):
Это указатель на первый элемент массива, на основе которого создаётся slice. Это может быть любой внутренний массив или часть массива.
Длина (length):
Длина slice определяет количество элементов, доступных для работы в slice. Эта длина может изменяться в процессе добавления или удаления элементов.
Ёмкость (capacity):
Ёмкость slice — это максимальное количество элементов, которые могут быть размещены в текущем выделенном массиве без перераспределения памяти.
Когда slice расширяется (например, при добавлении новых элементов), если ёмкость превышена, Go автоматически увеличивает ёмкость, выделяя новый массив и копируя туда элементы старого массива.
В Go slice — это структура данных, представляющая собой динамически изменяемый массив. Slice строится на основе массива, но в отличие от массива, его размер может изменяться в процессе работы программы. Под капотом slice включает три основных компонента:
Указатель (pointer):
Это указатель на первый элемент массива, на основе которого создаётся slice. Это может быть любой внутренний массив или часть массива.
Длина (length):
Длина slice определяет количество элементов, доступных для работы в slice. Эта длина может изменяться в процессе добавления или удаления элементов.
Ёмкость (capacity):
Ёмкость slice — это максимальное количество элементов, которые могут быть размещены в текущем выделенном массиве без перераспределения памяти.
Когда slice расширяется (например, при добавлении новых элементов), если ёмкость превышена, Go автоматически увеличивает ёмкость, выделяя новый массив и копируя туда элементы старого массива.
😁6👍4
❓Что происходит, если между пакетами есть циклические зависимости?
Циклические зависимости возникают, когда два или более пакета зависят друг от друга напрямую или косвенно. Например, пакет A импортирует пакет B, а пакет B импортирует обратно пакет A.
Циклические зависимости недопустимы в Go. Компилятор обнаружит их и выдаст ошибку. Это сделано для упрощения структуры кода и предотвращения сложных проблем с порядком инициализации.
Циклические зависимости возникают, когда два или более пакета зависят друг от друга напрямую или косвенно. Например, пакет A импортирует пакет B, а пакет B импортирует обратно пакет A.
Циклические зависимости недопустимы в Go. Компилятор обнаружит их и выдаст ошибку. Это сделано для упрощения структуры кода и предотвращения сложных проблем с порядком инициализации.
👍13😁1🥱1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
❓ Что делает _ — импорт?
В Go _-импорт используется для подключения пакета только ради выполнения его побочных эффектов (например, функций init()) без дальнейшего использования самого пакета в коде.
Таким образом, компилятор не будет требовать обращения к пакетным функциям или переменным, но все действия в init() будут выполнены. Этот подход часто используется для регистрации драйверов, плагинов или настройки глобальных зависимостей.
В Go _-импорт используется для подключения пакета только ради выполнения его побочных эффектов (например, функций init()) без дальнейшего использования самого пакета в коде.
Таким образом, компилятор не будет требовать обращения к пакетным функциям или переменным, но все действия в init() будут выполнены. Этот подход часто используется для регистрации драйверов, плагинов или настройки глобальных зависимостей.
👍13❤1
❓ Что будет, если использовать пакет из _ импорта?
Если попытаться использовать функции, переменные или типы из пакета, который импортирован с помощью _, это вызовет ошибку компиляции.
Пустой идентификатор (_) означает, что пакет подключён исключительно для выполнения побочных эффектов (например, init()). Сам пакет становится «неактивным» для остального кода программы.
Если попытаться использовать функции, переменные или типы из пакета, который импортирован с помощью _, это вызовет ошибку компиляции.
Пустой идентификатор (_) означает, что пакет подключён исключительно для выполнения побочных эффектов (например, init()). Сам пакет становится «неактивным» для остального кода программы.
👍2
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤1
package main
import "fmt"
func main() {
i := 0
defer fmt.Println("Result:", i)
i++
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍4
Forwarded from Библиотека Go-разработчика | Golang
🦫 Самоучитель по Go для начинающих. Часть 18. Протокол HTTP. Создание HTTP-сервера и клиента. Пакет net/http
Погружаемся в мир сетевых технологий с Go! В этой части самоучителя рассматриваются основы работы с HTTP в Go: устройство HTTP-запросов и ответов, ключевые способы взаимодействия клиента и сервера. Также подробно разбираются возможности пакета net/http, включая отправку запросов, обработку ответов и настройку параметров HTTP-сервера для веб-приложений.
📎 Читать новую часть самоучителя
Погружаемся в мир сетевых технологий с Go! В этой части самоучителя рассматриваются основы работы с HTTP в Go: устройство HTTP-запросов и ответов, ключевые способы взаимодействия клиента и сервера. Также подробно разбираются возможности пакета net/http, включая отправку запросов, обработку ответов и настройку параметров HTTP-сервера для веб-приложений.
📎 Читать новую часть самоучителя
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Please open Telegram to view this post
VIEW IN TELEGRAM
👏9🥱2
❓ Чем отличаются crypto/rand и math/rand? Когда использовать каждый из них?
Цель и применение:
✅ crypto/rand: Предназначен для генерации криптографически стойких случайных чисел. Используется в задачах, связанных с безопасностью, где важно исключить возможность предсказания результата.
✅ math/rand: Предоставляет генератор псевдослучайных чисел, который быстрее, но менее стойкий к предсказанию. Используется в сценариях, где безопасность не критична, например, для симуляций, тестов или игровых алгоритмов.
Генератор случайных чисел:
⚙️ crypto/rand: Использует системный источник случайности (например, /dev/urandom в Linux или CryptGenRandom в Windows). Это делает его надежным, но медленным.
⚙️ math/rand: Использует алгоритм генерации псевдослучайных чисел, который основывается на фиксированном начальном значении (seed). Повторение одинакового сида приводит к генерации одинаковой последовательности чисел.
Предсказуемость:
⚙️ crypto/rand: Случайные числа практически невозможно предсказать.
⚙️ math/rand: Если известен seed, последовательность чисел легко воспроизвести.
Цель и применение:
✅ crypto/rand: Предназначен для генерации криптографически стойких случайных чисел. Используется в задачах, связанных с безопасностью, где важно исключить возможность предсказания результата.
✅ math/rand: Предоставляет генератор псевдослучайных чисел, который быстрее, но менее стойкий к предсказанию. Используется в сценариях, где безопасность не критична, например, для симуляций, тестов или игровых алгоритмов.
Генератор случайных чисел:
⚙️ crypto/rand: Использует системный источник случайности (например, /dev/urandom в Linux или CryptGenRandom в Windows). Это делает его надежным, но медленным.
⚙️ math/rand: Использует алгоритм генерации псевдослучайных чисел, который основывается на фиксированном начальном значении (seed). Повторение одинакового сида приводит к генерации одинаковой последовательности чисел.
Предсказуемость:
⚙️ crypto/rand: Случайные числа практически невозможно предсказать.
⚙️ math/rand: Если известен seed, последовательность чисел легко воспроизвести.
👍9❤1🔥1
❓ Как работать с временно неиспользуемыми переменными?
Если переменная временно не используется, её можно явно игнорировать с помощью _ (пустого идентификатора). Это указывает на то, что разработчик осознанно отказывается от значения.
Если переменная временно не используется, её можно явно игнорировать с помощью _ (пустого идентификатора). Это указывает на то, что разработчик осознанно отказывается от значения.
👍3