Ответьте на 3 вопроса, чтобы получить вводные занятия к курсу «Алгоритмы и структуры данных»
🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/10107764
На вводной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/10107764
🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/10107764
На вводной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 В какой момент выполняется defer в Go?
В Go, оператор
Иструкции внутри блока
Это означает, что хотя возвращаемые значения функции уже определены к моменту выполнения
В Go, оператор
defer
используется для гарантии выполнения определённого кода непосредственно перед выходом из функции, независимо от того, как происходит выход: из-за return
, достижения конца тела функции или в результате возникновения паники.Иструкции внутри блока
defer
выполняются после того, как функция вычислит возвращаемые значения, но до момента фактического возвращения управления вызывающему коду.Это означает, что хотя возвращаемые значения функции уже определены к моменту выполнения
defer
, defer
позволяет модифицировать эти возвращаемые значения, если они определены как именованные возвращаемые параметры в сигнатуре функции.👍11
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣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-разработчиков
👾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++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣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-разработчиков
👾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++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Forwarded from Библиотека Go-разработчика | Golang
return early, return often
✅ Вместо глубоко вложенного кода, Go призывает разработчиков обрабатывать условия (особенно ошибки) и возвращать управление как можно скорее.
✅ Это делает код более читабельным и простым в сопровождении.
#go #tip by Matt Boyle
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥱3
💬 Каков минимальный и максимальный вес горутин?
Минимальный вес горутины в Go составляет ~2 КБ, что является начальным размером стека для каждой горутины. Этот размер может динамически увеличиваться и уменьшаться в зависимости от потребностей программы.
Максимальный размер стека горутины зависит от архитектуры системы: 1 ГБ для 64-разрядной архитектуры, 250 МБ — для 32-разрядной.
Минимальный вес горутины в Go составляет ~2 КБ, что является начальным размером стека для каждой горутины. Этот размер может динамически увеличиваться и уменьшаться в зависимости от потребностей программы.
Максимальный размер стека горутины зависит от архитектуры системы: 1 ГБ для 64-разрядной архитектуры, 250 МБ — для 32-разрядной.
🔥19
Forwarded from Библиотека Go-разработчика | Golang
🔗 pkg.go.dev
Здесь вы можете найдете пакеты по различным критериям и получите информацию о версии, лицензии и многом другом.
🔗 GitHub
Вводите в поисковую строку
language:go
+ свой запрос и анализируете результаты.🔗 Awesome Go
Один из самых старых и самых поддерживаемых кураторских списков по Go.
🔗 Libhunt.com
Коллекция Go-проектов, отфильтрованных по количеству упоминаний, звезд или другим критериям.
🔗 go-recipes
Тщательно подобранный список полезных Go-инструментов, разделенных на категориям.
#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
pkg.go.dev
Go Packages - Go Packages
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
🔥7❤3⚡2👍2
💬 Как получить из среза массив и для чего это может быть нужно?
1. С использованием
2. С использованием
Такое преобразование может потребоваться, когда мы хотим использовать срез как ключ в типе
Поскольку в Go ключи мапы должны быть comparable, мы можем использовать массив с фиксированным размером вместо среза.
1. С использованием
unsafe
:package main
import (
"fmt"
"unsafe"
)
func main() {
slice := []int{1, 2, 3}
arrayPtr := (*[3]int)(unsafe.Pointer(&slice[0]))
fmt.Println(*arrayPtr)
}
2. С использованием
copy
:package main
import "fmt"
func main() {
slice := []int{1, 2, 3}
var array [3]int
copy(array[:], slice)
fmt.Println(array)
}
Такое преобразование может потребоваться, когда мы хотим использовать срез как ключ в типе
map
. Поскольку в Go ключи мапы должны быть comparable, мы можем использовать массив с фиксированным размером вместо среза.
🤔9👍3
💬 Что такое inode в Linux?
🔸 Inode (Index Node) — это структура данных, используемая файловой системой для хранения информации о файле или директории, включая права доступа, информацию о владельце, группе, размере, временных метках создания и изменения, а также указатели на блоки данных на диске, где хранится само содержимое файла.
🔸 Директории — это тоже inode типа директория, в которых вместо содержимого файла содержится список имён файлов и номера их inode. Корневая директория в Ext4 имеет номер inode — 2.
🔸 Inode имеют ограниченный размер, поэтому количество файлов или каталогов, которые могут быть созданы в файловой системе, ограничено.
🔸 Inode (Index Node) — это структура данных, используемая файловой системой для хранения информации о файле или директории, включая права доступа, информацию о владельце, группе, размере, временных метках создания и изменения, а также указатели на блоки данных на диске, где хранится само содержимое файла.
🔸 Директории — это тоже inode типа директория, в которых вместо содержимого файла содержится список имён файлов и номера их inode. Корневая директория в Ext4 имеет номер inode — 2.
🔸 Inode имеют ограниченный размер, поэтому количество файлов или каталогов, которые могут быть созданы в файловой системе, ограничено.
❤6🥱5🔥3👍2
💬 Что такое шардирование и для чего оно предназначено?
Шардирование (или шардинг) — это разделение хранилища на несколько независимых частей, шардов. Шардирование — это не репликация, в случае которой выделенные экземпляры базы данных являются не составными частями общего хранилища, а копиями друг друга.
🔹 Виды шардинга: вертикальное и горизонтальное.
🔹 Методы шардинга: хешированное, диапазонное, круговое и динамическое.
🔹 Способы шардирования: средствами БД, надстройками к БД и клиентскими средствами.
Шардирование (или шардинг) — это разделение хранилища на несколько независимых частей, шардов. Шардирование — это не репликация, в случае которой выделенные экземпляры базы данных являются не составными частями общего хранилища, а копиями друг друга.
🔹 Виды шардинга: вертикальное и горизонтальное.
🔹 Методы шардинга: хешированное, диапазонное, круговое и динамическое.
🔹 Способы шардирования: средствами БД, надстройками к БД и клиентскими средствами.
👍5
💬 Как в Go обрабатываются операции ввода-вывода файлов?
В Go для работы с файлами и операциями ввода-вывода используется пакет
📌 Открытие и чтение файла
Для чтения файла сначала его нужно открыть с помощью функции
📌 Создание, запись в файл и добавление данных в файл
Для создания файла используется функция
В Go для работы с файлами и операциями ввода-вывода используется пакет
os
для открытия, создания, чтения, записи и закрытия файлов, а также пакет io
или bufio
для более эффективного ввода-вывода с буферизацией.📌 Открытие и чтение файла
Для чтения файла сначала его нужно открыть с помощью функции
os.Open()
, а затем можно использовать io
или bufio
для чтения содержимого:package main
import (
"bufio"
"fmt"
"log"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}
📌 Создание, запись в файл и добавление данных в файл
Для создания файла используется функция
os.Create()
, а для записи — метод Write()
или WriteString()
из пакета os.
Чтобы дополнить файл, его нужно открыть с опциями os.O_APPEND
и os.O_WRONLY.
👍5❤2
💬 Что такое context switching в Go?
Это процесс, при котором Go-планировщик переключает выполнение с одной горутины на другую, позволяя множеству горутин эффективно выполняться конкурентно.
Планировщик Go использует модель M:N, где множество горутин (G) распределяются на меньшее количество потоков операционной системы (M), привязанных к логическим процессорам (P), и опирается на кооперативный планировщик для переключения контекста на основе явных событий, таких как синхронизация, системные вызовы и операции ввода-вывода.
Это обеспечивает эффективное использование ресурсов и способствует более высокой производительности и масштабируемости приложений на Go, минимизируя задержки и оверхед, связанные с переключением контекста.
👉 Подробнее
Это процесс, при котором Go-планировщик переключает выполнение с одной горутины на другую, позволяя множеству горутин эффективно выполняться конкурентно.
Планировщик Go использует модель M:N, где множество горутин (G) распределяются на меньшее количество потоков операционной системы (M), привязанных к логическим процессорам (P), и опирается на кооперативный планировщик для переключения контекста на основе явных событий, таких как синхронизация, системные вызовы и операции ввода-вывода.
Это обеспечивает эффективное использование ресурсов и способствует более высокой производительности и масштабируемости приложений на Go, минимизируя задержки и оверхед, связанные с переключением контекста.
👉 Подробнее
Ardan Labs
Scheduling In Go : Part II - Go Scheduler
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
👍7❤1
💬 Какие кейсы использования default в select?
Использование
📌 Это особенно полезно для:
☑️ Реализации таймаутов или опроса с немедленным возвратом, когда операции с каналами не готовы.
☑️ Создания циклов обработки событий, где
Использование
default
в select
в Go обеспечивает неблокирующую операцию. Если все другие каналы в select
блокированы, выполнение сразу переходит к default,
позволяя программе продолжить выполнение без ожидания. 📌 Это особенно полезно для:
☑️ Реализации таймаутов или опроса с немедленным возвратом, когда операции с каналами не готовы.
☑️ Создания циклов обработки событий, где
default
может обрабатывать фоновые задачи или проверки состояния, не прерывая основной поток выполнения.🔥8
💬 Что такое NaN и почему NaN не равно NaN?
NaN означает "Not a Number" (не число) и представляет собой специальное значение во многих системах с плавающей запятой, используемых в языках программирования, включая Go, для обозначения результата операций, которые не могут быть определены в терминах числового значения.
Примерами таких операций являются деление нуля на ноль, извлечение квадратного корня из отрицательного числа в контексте вещественных чисел, или любые другие операции, результат которых не может быть представлен в рамках обычной числовой системы.
Согласно стандарту IEEE 754, который определяет арифметику плавающей запятой, любая операция, возвращающая NaN, не должна быть равна никакому числу, включая само NaN. Это правило подчеркивает тот факт, что NaN обозначает неопределенность или результат, который не является числовым значением, и следовательно, сравнение на равенство (или неравенство) с другими числами или даже с самим NaN не имеет смысла, так как неопределенность не может быть равна (или не равна) чему-либо конкретному.
NaN означает "Not a Number" (не число) и представляет собой специальное значение во многих системах с плавающей запятой, используемых в языках программирования, включая Go, для обозначения результата операций, которые не могут быть определены в терминах числового значения.
Примерами таких операций являются деление нуля на ноль, извлечение квадратного корня из отрицательного числа в контексте вещественных чисел, или любые другие операции, результат которых не может быть представлен в рамках обычной числовой системы.
Согласно стандарту IEEE 754, который определяет арифметику плавающей запятой, любая операция, возвращающая NaN, не должна быть равна никакому числу, включая само NaN. Это правило подчеркивает тот факт, что NaN обозначает неопределенность или результат, который не является числовым значением, и следовательно, сравнение на равенство (или неравенство) с другими числами или даже с самим NaN не имеет смысла, так как неопределенность не может быть равна (или не равна) чему-либо конкретному.
👍17❤2
💬 Если в функции Go есть return, обязательно ли она вернет то, что указано в операторе?
🔸 Если в функции указан
🔸 В Go можно использовать именованные возвращаемые значения в сигнатуре функции. В таком случае, функция может использовать
🔸 Если функция не имеет возвращаемых значений (то есть, её сигнатура не включает возвращаемые типы), использование
🔸 Если в функции указан
return
, то она должна вернуть значение(-я), соответствующие её сигнатуре.🔸 В Go можно использовать именованные возвращаемые значения в сигнатуре функции. В таком случае, функция может использовать
return
без явного указания возвращаемого значения, в результате чего будут возвращены текущие значения именованных возвращаемых переменных. Это не меняет факта, что функция возвращает значения, но позволяет не указывать их явно в операторе return
.🔸 Если функция не имеет возвращаемых значений (то есть, её сигнатура не включает возвращаемые типы), использование
return
просто завершает выполнение функции. В таком случае, return
не возвращает никакого значения.👍6🤔6⚡1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
💬 Для чего предназначены tickers в Go и как их реализовать?
Tickers в Go предназначены для выполнения повторяющихся действий через равные промежутки времени.
Tickers используют каналы Go для отправки сигнала по истечении каждого интервала времени.
Реализовать ticker на Go можно с использованием пакета
В примере создаётся
Tickers в Go предназначены для выполнения повторяющихся действий через равные промежутки времени.
Tickers используют каналы Go для отправки сигнала по истечении каждого интервала времени.
Реализовать ticker на Go можно с использованием пакета
time
. Простой пример использования:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
fmt.Println("Tick at", time.Now())
// ...
}
}
}
В примере создаётся
ticker
, который «тикает» каждую секунду. В бесконечном цикле программа ожидает сигнала от ticker.C
, канала тикера. Каждый раз, когда тикер отправляет сигнал в свой канал (то есть каждую секунду), программа выполняет код внутри case <-ticker.C
, в данном случае печатая текущее время.👍25
-35% на полугодовой курс по алгоритмам!
🌟 Алгоритмы и структуры данных🌟
23 390 рублей35 990 рублей до 1 апреля
Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/5a72cc41
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻
🌟 Алгоритмы и структуры данных🌟
23 390 рублей
Курс для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/5a72cc41
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻