Full stack dev
61 subscribers
356 photos
50 videos
4 files
99 links
"Full Stack Dev & Computer Science" – Канал для разработчиков, которые хотят
расширить свои знания в Full Stack и углубиться в основы и новейшие тренды Computer Science.
Здесь вы найдете материалы по frontend и backend разработке, работе с базами данных,
Download Telegram
👁‍🗨Все темы на канале:

🔍#memes
🔍#task
🔍#frontend
🔍#backend
🔍#python
🔍#algorithms
🔍#data
🔍#github
🔍#rust
🔍#c
🔍#java
🔍#js
🔍#framework
🔍#lib
🔍#technology
🔍#article
🔍#service
🔍#computerSince
🔍#vscode
🔍#CSharp
🔍#web
🔍#Linux
🔍#cpp
🔍#job
🔍#books
🔍#go
🔍#soft
🔍#articles
🔍#devOps
Forwarded from Timur
Задачка по Go

📚Условие:
Напишите функцию, которая принимает список
email-адресов и возвращает уникальные домены
из этого списка. Домен — это часть адреса после символа
@.

🔍Нюанс:
Если эту задачу решать на Golang, то структуру данных Set придётся
самому писать (что я и сделал).


💡Решение:
Сверху есть картинка кода реализации структуры данных Set.
И так же есть картинка с решением задачи.


👁‍🗨Пример:

« ["user1@example.com", "user2@test.com", "user3@example.com", "user4@sample.com"]
» {"example.com", "test.com", "sample.com"}

#task #go
Forwarded from Timur
Задача на Go «Perfect Squares»

📚Дано целое число n, верните наименьшее число идеальных
квадратных чисел, сумма которых равна
n.

💡Идеальный квадрат - это целое число, равное квадрату
целого числа
(например, 1, 4, 9 и 16).

💡Подсказка:
Для решение задачи, можно использовать
алгоритм
<<Динамическое программирование>>.

👁‍🗨Пример №1:
« n = 12
» 3
// 12 = 4 + 4 + 4

👁‍🗨Пример №2:
« n = 13
» 2
// 13 = 4 + 9


#task #go
Forwarded from Timur
🟢Алгоритм сортировки слиянием (Merge Sort) на Golang

📚Описание:
Сортировка слияниемэто один из эффективных алгоритмов
сортировки, основанный на принципе разделяй и властвуй.
Алгоритм состоит из двух этапов:


1. Разделение массива на подмассивы mergeSort().
2. Слияние подмассивов в отсортированном порядке mergeTwoSlice().

Предположим, у нас есть массив: [5, 3, 8, 6, 2, 7, 4, 1].
- Разделяем массив на 2 части left = [5, 3, 8, 6]; right = [2, 7, 4, 1]
- И так рекурсивно делим массив до одного элемента в нём
- Дальше Соединяем обратно [5] и [3] -> [3, 5], [8] и [6] -> [6, 8] и т.д

📉Сложность:
⌚️Время: O(n log n)
💾Память: O(n)

#algorithms #go
Forwarded from Timur
Алгоритм QuickSort(Быстрая сортировка) на Golang

💡Объяснение:

📚QuickSort - это алгоритм быстрой сортировки элементов в массиве.
Принцип работы основан на методологии "Разделяй и властвуй".


🔵Алгоритм имеет 3️⃣ этапа:
1. На вход поступает не отсортированный массив.
2. Мы должны выбрать pivot element (опорный элемент), есть много вариантов как мы
будем выбирать этот элемент, но мы воспользуемся самым простым, а именно будем брать
последний элемент массива.

3. Берём pivot и все элементы которые меньше pivot, располагаем слева от pivot,
все элементы которые больше pivot располагаем справа.


🔄И повторяем действия 2 и 3 пункт рекурсивно,
до тех пор пока массив не будет отсортирован.


⚙️Уточнение:
параметры maxIndex и minIndex это диапазон сортировки массива.
slice - можно воспринимать как array, просто в golang
slice это динамический массив.


👁‍🗨Пример:
« [9, 12, 9, 2, 17, 1, 6]
» [1, 2, 6, 9, 9, 12, 17]

📉Сложность:
⌚️Время: O(n log n)

#algorithms #go
Forwarded from Timur
🟢Алгоритм Insertion Sort(Сортировка вставки) на Golang

⚙️Суть алгоритма:

💡Начинаем с того что в function insertionSort мы
принимаем не отсортированный массив. Потом
идёт проверка если массив пустой или имеет только
1 элемент, мы считаем его отсортированным и завершаем
работу функции (или возвращаем передаваемый массив, если
реализация не через указатель). Дальше пробегаемся по
всему массиву и на каждой итерации первого цикла, мы
вызываем 2 цикл, который уже от текущего элемента
(*(nums[i]))
до нулевого элемента(то есть начало массива). И при
этом сравниваем текущий элемент с предыдущим, и
если текущей элемент окажется меньше предыдущего, то меняем местами
их в массиве, в противном случаи выходим из 2 цикла, и так до конца всего
массива. На выходи получаем отсортированный массив.



📉Сложность:
⌚️Время: O(n**2)
💾Память: O(1)

#algorithms #go
Forwarded from Timur
Задача на Go:

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


👁‍🗨Примеры:

« "riley"
» "Hello Riley!"

« "JACK"
» "Hello Jack!"

« " "
» ""

#task #go
Задача для Golang:

📚Напишите функцию, которая принимает
массив строк в качестве аргумента и
возвращает отсортированный массив,
содержащий те же строки, упорядоченные от
самой короткой к самой длинной.


👁‍🗨Пример:

« ["Telescopes", "Glasses", "Eyes", "Monocles"]
» ["Eyes", "Glasses", "Monocles", "Telescopes"]

#task #go
👍2
Forwarded from Timur
🟢Задача на Go:

📚Задан массив целых чисел, найдите максимальное
произведение, полученное при умножении двух
соседних чисел в массиве.


👁‍🗨Пример:

« [1, 2, 3]
» 6
// 2∗3=6

« [5, 3]
» 15
// 5∗3=15

« []
» panic: В срезе должно быть минимум 2 элемента

#task #go
Forwarded from Timur
🟢Предобработка текстовых данных и создание
мешка слов
(Bag of Words) на Go

📚Напишите функцию, которая принимает список текстовых
строк и возвращает мешок слов (Bag of Words) в виде
словаря, где ключи — это уникальные слова, а значения —
их частота встречаемости в текстах. Функция должна выполнять
базовую предобработку текста: приведение к нижнему регистру,
удаление знаков препинания и стоп-слов.


👁‍🗨Пример:

« []string{
"I love data science!",
"Data science is amazing.",
"Machine learning is a part of data science."
}


» map[
amazing:1 data:3 learning:1
love:1 machine:1 part:1 science:3
]



#task #go
📦 go-logger-lib — лёгкая и удобная библиотека для логирования в Go.
Простая интеграция
Настраиваемые уровни логов
Поддержка вывода в консоль и файл

🔗 GitHub: github.com/Freyzan2006/go-logger-lib

#go #golang #lib
gRPC и Go (Golang)

📚Если REST уже стал привычным инструментом, самое время познакомиться с gRPCбыстрым и строгим способом общения сервисов между собой

Что такое gRPC?

gRPCэто RPC-фреймворк от Google, который:

* использует HTTP/2
* передаёт данные через Protocol Buffers
* отлично подходит для микросервисов
* быстрее и компактнее REST + JSON

⚙️Базовый флоу работы с gRPC в Go:
1️⃣Описываем контракт в .proto
2️⃣ Генерируем код:
protoc --go_out=. --go-grpc_out=. service.proto

3️⃣ Реализуем server (структура + методы)
4️⃣ Поднимаем gRPC-сервер
5️⃣ Пишем client и вызываем методы как обычные функции
Пример RPC-метода:
service UserService {
rpc GetUser (UserRequest) returns (UserResponse);
}

Когда стоит выбирать gRPC?
✔️ микросервисы
✔️ высокая нагрузка
✔️ строгие контракты между сервисами
✔️ внутренняя коммуникация

#web #backend #go
🤔1