Отмена незавершенных операций с базой данных в Golang
Вы можете управлять незавершенными операциями с помощью Go context.Context. Контекст - это стандартное значение данных Go, которое может сообщать, была ли общая операция, которую он представляет, отменена и больше не нужна. Передавая context.Context между вызовами функций и сервисами в вашем приложении, они могут перестать работать раньше и возвращать ошибку, когда их обработка больше не требуется.
https://golang-blog.blogspot.com/2021/09/operations-cancelling.html
Вы можете управлять незавершенными операциями с помощью Go context.Context. Контекст - это стандартное значение данных Go, которое может сообщать, была ли общая операция, которую он представляет, отменена и больше не нужна. Передавая context.Context между вызовами функций и сервисами в вашем приложении, они могут перестать работать раньше и возвращать ошибку, когда их обработка больше не требуется.
https://golang-blog.blogspot.com/2021/09/operations-cancelling.html
Blogspot
Отмена незавершенных операций с базой данных в Golang
Управление подключениями к базе данных с пакетом database/sql в Golang
Для подавляющего большинства программ вам не нужно настраивать параметры пула соединений sql.DB по умолчанию. Но для некоторых продвинутых программ вам может потребоваться настроить параметры пула соединений или явно работать с соединениями. В этом посте объясняется, как это сделать.
Дескриптор базы данных sql.DB безопасен для одновременного использования несколькими горутинами (это означает, что дескриптор - это то, что другие языки могут назвать "потокобезопасным"). Некоторые другие библиотеки доступа к базе данных основаны на соединениях, которые могут использоваться только для одной операции за раз. Чтобы восполнить этот пробел, каждый sql.DB управляет пулом активных подключений к базе данных, создавая новые по мере необходимости для параллелизма в вашей программе Go.
https://golang-blog.blogspot.com/2021/09/db-connections-management.html
Для подавляющего большинства программ вам не нужно настраивать параметры пула соединений sql.DB по умолчанию. Но для некоторых продвинутых программ вам может потребоваться настроить параметры пула соединений или явно работать с соединениями. В этом посте объясняется, как это сделать.
Дескриптор базы данных sql.DB безопасен для одновременного использования несколькими горутинами (это означает, что дескриптор - это то, что другие языки могут назвать "потокобезопасным"). Некоторые другие библиотеки доступа к базе данных основаны на соединениях, которые могут использоваться только для одной операции за раз. Чтобы восполнить этот пробел, каждый sql.DB управляет пулом активных подключений к базе данных, создавая новые по мере необходимости для параллелизма в вашей программе Go.
https://golang-blog.blogspot.com/2021/09/db-connections-management.html
Blogspot
Управление подключениями к базе данных с пакетом database/sql в Golang
Как избежать риска внедрения SQL-кода с пакетом database/sql в Golang
Вы можете избежать риска внедрения SQL-кода, указав значения параметров SQL в качестве аргументов функции пакета sql. Многие функции в пакете sql предоставляют параметры для оператора SQL и значений, которые будут использоваться в параметрах этого оператора (другие предоставляют параметр для подготовленного оператора и параметров).
Код в следующем примере использует символ ? символ в качестве заполнителя для параметра id, который предоставляется как аргумент функции:
https://golang-blog.blogspot.com/2021/09/prevent-sql-injection.html
Вы можете избежать риска внедрения SQL-кода, указав значения параметров SQL в качестве аргументов функции пакета sql. Многие функции в пакете sql предоставляют параметры для оператора SQL и значений, которые будут использоваться в параметрах этого оператора (другие предоставляют параметр для подготовленного оператора и параметров).
Код в следующем примере использует символ ? символ в качестве заполнителя для параметра id, который предоставляется как аргумент функции:
// Правильный формат для выполнения оператора SQL с параметрами.
rows, err := db.Query("SELECT * FROM user WHERE id = ?", id)
https://golang-blog.blogspot.com/2021/09/prevent-sql-injection.html
Blogspot
Как избежать риска внедрения SQL-кода с пакетом database/sql в Golang
Разработка RESTful API с помощью Go и Gin
В этом посте представлены основы написания API RESTful веб-сервиса с помощью Go и Gin Web Framework (Gin).
Gin упрощает многие задачи кодирования, связанные с созданием веб-приложений, включая веб-сервисы. В этом руководстве вы будете использовать Gin для маршрутизации запросов, получения сведений о запросах и маршалинга JSON для ответов.
https://golang-blog.blogspot.com/2021/09/restful-api-gin.html
В этом посте представлены основы написания API RESTful веб-сервиса с помощью Go и Gin Web Framework (Gin).
Gin упрощает многие задачи кодирования, связанные с созданием веб-приложений, включая веб-сервисы. В этом руководстве вы будете использовать Gin для маршрутизации запросов, получения сведений о запросах и маршалинга JSON для ответов.
https://golang-blog.blogspot.com/2021/09/restful-api-gin.html
Blogspot
Разработка RESTful API с помощью Go и Gin
Пакет net/url в Golang
Пакет url анализирует URL-адреса и реализует экранирование запросов.
https://golang-blog.blogspot.com/2021/09/net-url-package-in-golang.html
Пакет url анализирует URL-адреса и реализует экранирование запросов.
https://golang-blog.blogspot.com/2021/09/net-url-package-in-golang.html
Blogspot
Пакет net/url в Golang
Пустой интерфейс в Golang
Пустой интерфейс может использоваться для хранения любых данных, и он может быть полезным параметром, поскольку может работать с любым типом.
https://golang-blog.blogspot.com/2021/10/empty-interface-in-golang.html
Пустой интерфейс может использоваться для хранения любых данных, и он может быть полезным параметром, поскольку может работать с любым типом.
https://golang-blog.blogspot.com/2021/10/empty-interface-in-golang.html
Blogspot
Пустой интерфейс в Golang
Go для Java разработчиков: Hello world пример
В постах Go для Java разработчиков будут представлены основные отличия Go для быстрого освоения Java разработчиками.
Начнем с небольшого, но полного примера. Он показывает, как реализовать и использовать простой абстрактный тип данных в Go.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-hello-world.html
В постах Go для Java разработчиков будут представлены основные отличия Go для быстрого освоения Java разработчиками.
Начнем с небольшого, но полного примера. Он показывает, как реализовать и использовать простой абстрактный тип данных в Go.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-hello-world.html
Blogspot
Go для Java разработчиков: Hello world пример
Go для Java разработчиков: основные отличия Go
Объектно-ориентированное программирование
* В Go нет классов с конструкторами. Вместо методов экземпляра, иерархии наследования классов и поиска динамических методов Go предоставляет структуры и интерфейсы.
* Go позволяет использовать методы любого типа; упаковка не требуется. Получатель метода, который соответствует this в Java, может быть прямым значением или указателем.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-go-diffs.html
Объектно-ориентированное программирование
* В Go нет классов с конструкторами. Вместо методов экземпляра, иерархии наследования классов и поиска динамических методов Go предоставляет структуры и интерфейсы.
* Go позволяет использовать методы любого типа; упаковка не требуется. Получатель метода, который соответствует this в Java, может быть прямым значением или указателем.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-go-diffs.html
Blogspot
Go для Java разработчиков: основные отличия Go
Go для Java разработчиков: синтаксис
Декларации
Синтаксис объявления обратный по сравнению с Java. Вы пишете имя, а затем тип. Объявления типов можно легко читать слева направо.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-syntax.html
Декларации
Синтаксис объявления обратный по сравнению с Java. Вы пишете имя, а затем тип. Объявления типов можно легко читать слева направо.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-syntax.html
Blogspot
Go для Java разработчиков: синтаксис
Go для Java разработчиков: константы, структуры, указатели
Константы
В Go константы могут быть нетипизированными. Это относится к
- числовым литералам,
- выражениям, использующим только нетипизированные константы,
- и объявлениям const, в которых тип не указан, а выражение инициализатора не типизировано.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-constants-structs-pointers.html
Константы
В Go константы могут быть нетипизированными. Это относится к
- числовым литералам,
- выражениям, использующим только нетипизированные константы,
- и объявлениям const, в которых тип не указан, а выражение инициализатора не типизировано.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-constants-structs-pointers.html
Blogspot
Go для Java разработчиков: константы, структуры, указатели
Go для Java разработчиков: срезы, создание значений
Срез - это концептуально структура с тремя полями:
* указатель на массив,
* длина,
* и емкость
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-slices.html
Срез - это концептуально структура с тремя полями:
* указатель на массив,
* длина,
* и емкость
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-slices.html
Blogspot
Go для Java разработчиков: срезы, создание значений
Go для Java разработчиков: методы и интерфейсы
Метод выглядит как обычное определение функции, за исключением того, что у него есть получатель. Получатель аналогичен ссылке this в методе экземпляра Java.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-methods-interfaces.html
Метод выглядит как обычное определение функции, за исключением того, что у него есть получатель. Получатель аналогичен ссылке this в методе экземпляра Java.
type MyType struct { i int }
func (p *MyType) Get() int {
return p.i
}
var pm = new(MyType)
var n = pm.Get()
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-methods-interfaces.html
Blogspot
Go для Java разработчиков: методы и интерфейсы
Go для Java разработчиков: ошибки, паника и восстановление
Там, где Java обычно использует исключения, Go имеет два разных механизма:
- большинство функций возвращают ошибки;
- только действительно невосстановимые условия, такие как индекс вне допустимого диапазона, создают исключения во время выполнения.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-errors-panic-recover.html
Там, где Java обычно использует исключения, Go имеет два разных механизма:
- большинство функций возвращают ошибки;
- только действительно невосстановимые условия, такие как индекс вне допустимого диапазона, создают исключения во время выполнения.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-errors-panic-recover.html
Blogspot
Go для Java разработчиков: ошибки, паника и восстановление
Go для Java разработчиков: горутины и каналы
Go позволяет запустить новый поток выполнения, горутину (goroutine), с помощью оператора go. Он запускает функцию в другой, недавно созданной горутине. Все горутины в одной программе используют одно и то же адресное пространство.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-goroutines-channels.html
Go позволяет запустить новый поток выполнения, горутину (goroutine), с помощью оператора go. Он запускает функцию в другой, недавно созданной горутине. Все горутины в одной программе используют одно и то же адресное пространство.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-goroutines-channels.html
Blogspot
Go для Java разработчиков: горутины и каналы
Релиз Go 1.18
Релиз Go, версия 1.18, является важным релизом, включающим изменения в языке, реализации цепочки инструментов, среды выполнения и библиотек.
https://golang-blog.blogspot.com/2022/04/release-golang-1-18.html
Релиз Go, версия 1.18, является важным релизом, включающим изменения в языке, реализации цепочки инструментов, среды выполнения и библиотек.
https://golang-blog.blogspot.com/2022/04/release-golang-1-18.html
Blogspot
Релиз Go 1.18
Релиз Go, версия 1.18
Введение в использование дженериков в Golang
В релизе Go 1.18 добавлена поддержка дженериков. Дженерики — это самое большое изменение, которое было внесено в Go с момента первого релиза с открытым исходным кодом. В этом посте вы познакомитесь с новыми функциями языка. Мы не будем пытаться охватить все детали, но затронем все важные моменты.
Дженерики — это способ написания кода, который не зависит от используемых конкретных типов. Функции и типы теперь могут быть написаны для использования любого набора типов.
https://golang-blog.blogspot.com/2022/05/generics-intro.html
В релизе Go 1.18 добавлена поддержка дженериков. Дженерики — это самое большое изменение, которое было внесено в Go с момента первого релиза с открытым исходным кодом. В этом посте вы познакомитесь с новыми функциями языка. Мы не будем пытаться охватить все детали, но затронем все важные моменты.
Дженерики — это способ написания кода, который не зависит от используемых конкретных типов. Функции и типы теперь могут быть написаны для использования любого набора типов.
https://golang-blog.blogspot.com/2022/05/generics-intro.html
Blogspot
Введение в использование дженериков в Golang
Начало работы с дженериками в Golang
В этом руководстве представлены основы дженериков в Go. С помощью дженериков вы можете объявлять и использовать функции или типы, которые написаны для работы с любым из набора типов, предоставляемых вызывающим кодом.
В этом руководстве вы объявите две простые неуниверсальные функции, а затем зафиксируете ту же логику в одной универсальной функции.
https://golang-blog.blogspot.com/2022/05/getting-started-generics.html
В этом руководстве представлены основы дженериков в Go. С помощью дженериков вы можете объявлять и использовать функции или типы, которые написаны для работы с любым из набора типов, предоставляемых вызывающим кодом.
В этом руководстве вы объявите две простые неуниверсальные функции, а затем зафиксируете ту же логику в одной универсальной функции.
https://golang-blog.blogspot.com/2022/05/getting-started-generics.html
Blogspot
Начало работы с дженериками в Golang
Начало работы с фаззингом в Golang
В этом посте представлены основы фаззинга в Go. При фаззинге случайные данные обрабатываются для вашего теста в попытке найти уязвимости или входные данные, вызывающие сбой. Некоторыми примерами уязвимостей, которые можно найти с помощью фаззинга, являются SQL-инъекции, переполнение буфера, отказ в обслуживании и атаки с использованием межсайтовых сценариев.
https://golang-blog.blogspot.com/2022/09/fuzzing-intro.html
В этом посте представлены основы фаззинга в Go. При фаззинге случайные данные обрабатываются для вашего теста в попытке найти уязвимости или входные данные, вызывающие сбой. Некоторыми примерами уязвимостей, которые можно найти с помощью фаззинга, являются SQL-инъекции, переполнение буфера, отказ в обслуживании и атаки с использованием межсайтовых сценариев.
https://golang-blog.blogspot.com/2022/09/fuzzing-intro.html
Blogspot
Начало работы с фаззингом в Golang
Релиз Go 1.19
Релиз Go, версия 1.19, выходит через пять месяцев после Go 1.18.
Большинство его изменений касаются реализации цепочки инструментов, среды выполнения и библиотек.
https://golang-blog.blogspot.com/2022/09/release-golang-1-19.html
Релиз Go, версия 1.19, выходит через пять месяцев после Go 1.18.
Большинство его изменений касаются реализации цепочки инструментов, среды выполнения и библиотек.
https://golang-blog.blogspot.com/2022/09/release-golang-1-19.html
Blogspot
Релиз Go 1.19
Релиз Go 1.19, заметки о релизе
Релиз Go 1.20
Релиз Go, версия 1.20, вышел через шесть месяцев после Go 1.19. Большинство его изменений касаются реализации цепочки инструментов, среды выполнения и библиотек.
Есть также четыре изменения в языке.
https://golang-blog.blogspot.com/2023/02/release-golang-1-19.html
Релиз Go, версия 1.20, вышел через шесть месяцев после Go 1.19. Большинство его изменений касаются реализации цепочки инструментов, среды выполнения и библиотек.
Есть также четыре изменения в языке.
https://golang-blog.blogspot.com/2023/02/release-golang-1-19.html
Blogspot
Релиз Go 1.20
Релиз Go 1.21
Go 1.21 добавляет в язык три новых встроенных модуля.
- Новые функции min и max вычисляют наименьшее (или наибольшее для max) значение фиксированного числа заданных аргументов.
- Новая функция clear удаляет все элементы с карты или обнуляет все элементы среза.
Большинство изменений релиза касаются реализации цепочки инструментов, среды выполнения и библиотек. Улучшена работа с универсальными типами (определенно Golang продолжает догонять Java с ее дженериками :)) )
Добавлены несколько новых пакетов: log/slog, testing/slogtest, cmp, slices, maps. Последние два пакета хотелось бы отметить отдельно - как прототипы Java Collections Framework для Golang.
https://golang-blog.blogspot.com/2023/08/release-golang-1-21.html
Go 1.21 добавляет в язык три новых встроенных модуля.
- Новые функции min и max вычисляют наименьшее (или наибольшее для max) значение фиксированного числа заданных аргументов.
- Новая функция clear удаляет все элементы с карты или обнуляет все элементы среза.
Большинство изменений релиза касаются реализации цепочки инструментов, среды выполнения и библиотек. Улучшена работа с универсальными типами (определенно Golang продолжает догонять Java с ее дженериками :)) )
Добавлены несколько новых пакетов: log/slog, testing/slogtest, cmp, slices, maps. Последние два пакета хотелось бы отметить отдельно - как прототипы Java Collections Framework для Golang.
https://golang-blog.blogspot.com/2023/08/release-golang-1-21.html
Blogspot
Релиз Go 1.21
Релиз Go 1.21, Golang 1.21