🔥Подборка лучших обучающих каналов для программистов.
➡️Делитесь с коллегами и Сохраняйте себе, чтобы не потерять
⚡Машинное обучение
Machine Learning - полезные статьи новости гайды и разбор кода
Ml Собеседование - подготовка к собеседовению мл, алгоритмам, кодингу
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
☕ Java
Java вакансии
Java чат
Java вопросы с собеседований
Java книги
Java академия
🚀 Data Science
Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data
🏆 Golang
Golang - подробные гайды, разбор кода, лучшие практики, заметки
Golang собеседование
Golang вакансии
Golang книги
Golang задачи и тесты
Golang чат
Golang news - новости go
#️⃣C#
С# академия
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа
🐍 Python
Python/django
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги
💻 C++
C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии
💥 Хакинг Kali Linux
Kali linux
linux_kal - kali чат
Информационная безопасность
🐧 Linux
Linux academy
🦀 Rust
Rust программирование
Rust чат
🛢Базы данных
Sql базы данных
Библиотека баз данных
SQL чат
📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки
🖥 Javascript/React/PHP
Javascript академия
React программирование
PHP
Книги frontend
Задачи frontend
🇬🇧 Английский для программистов
🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence
🔥 DevOPs
Devops для программистов
Книги Devops
🌟 Docker/Kubernets
Docker
Kubernets
📓 Книги
Библиотеки Книг для программситов
💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
➡️Делитесь с коллегами и Сохраняйте себе, чтобы не потерять
⚡Машинное обучение
Machine Learning - полезные статьи новости гайды и разбор кода
Ml Собеседование - подготовка к собеседовению мл, алгоритмам, кодингу
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
☕ Java
Java вакансии
Java чат
Java вопросы с собеседований
Java книги
Java академия
🚀 Data Science
Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data
🏆 Golang
Golang - подробные гайды, разбор кода, лучшие практики, заметки
Golang собеседование
Golang вакансии
Golang книги
Golang задачи и тесты
Golang чат
Golang news - новости go
#️⃣C#
С# академия
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа
🐍 Python
Python/django
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги
💻 C++
C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии
💥 Хакинг Kali Linux
Kali linux
linux_kal - kali чат
Информационная безопасность
🐧 Linux
Linux academy
🦀 Rust
Rust программирование
Rust чат
🛢Базы данных
Sql базы данных
Библиотека баз данных
SQL чат
📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки
🖥 Javascript/React/PHP
Javascript академия
React программирование
PHP
Книги frontend
Задачи frontend
🇬🇧 Английский для программистов
🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence
🔥 DevOPs
Devops для программистов
Книги Devops
🌟 Docker/Kubernets
Docker
Kubernets
📓 Книги
Библиотеки Книг для программситов
💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
https://spring.io/blog/2024/01/19/spring-boot-3-2-2-available-now/
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Здесь представлены лучшие репозитории GitHub для
изучения Java и ссылки на них:
1. Awesome Java: https://github.com/akullpp/awesome-java
2. Modern Java - A Guide to Java 8: https://github.com/winterbe/java8-tutorial.
3. Java Design Patterns: https://github.com/iluwatar/java-design-patterns
4. Spring Framework: https://github.com/spring-projects/spring-framework
5. Алгоритмы: https://github.com/TheAlgorithms/Java
6. Самоучитель по Spring Boot: https://github.com/RameshMF/spring-boot-tutorial
7. Учебники по Java и Spring: https://github.com/eugenp/tutorials
8. Руководства по стилю Google: https://github.com/google/styleguide
9. Netflix - Open Source Java Projects: https://github.com/Netflix
10. Ultimate Java Resources: https://github.com/dubesar/Ultimate-Java-Resources
В этих хранилищах вы найдете множество ресурсов для тех, кто хочет научиться или улучшить свои навыки программирования на Java.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Совет по Java🚀
Профилирование производительности
VisualVM. Анализируйте использование памяти, потребление процессора и поведение потоков для оптимизации вашего приложения.
https://visualvm.github.io
#Java #JavaMonitoring
@javatg
Профилирование производительности
Java
с помощью VisualVM. Анализируйте использование памяти, потребление процессора и поведение потоков для оптимизации вашего приложения.
https://visualvm.github.io
#Java #JavaMonitoring
@javatg
🚀 Юнит-тестирование вашей Java-архитектуры 🚀
https://archunit.org
#ArchUnit #Java #Тестирование
@javatg
@archtests
- это мощная библиотека Java, которая позволяет писать модульные тесты для обеспечения соблюдения архитектурных ограничений и правил в вашем коде.https://archunit.org
#ArchUnit #Java #Тестирование
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Базы данных NoSQL (not only SQL — не только SQL) значительно отличаются от традиционных реляционных систем управления базами данных (РСУБД). Если в РСУБД для хранения данных используются таблицы, строки и столбцы, то базы данных NoSQL предназначены для хранения и управления большими объемами неструктурированных, полуструктурированных или по-разному структурированных данных.
Рассмотрим все особенности баз данных NoSQL, изучим их типы, характеристики и причины, по которым они становятся все более предпочтительными в некоторых приложениях.
Что такое базы данных NoSQL?
Базы данных NoSQL возникли как решение проблем, связанных с большими данными и веб-приложениями, работающими в режиме реального времени. Отличаясь высокой скоростью и гибкостью, они особенно хорошо справляются с большими наборами распределенных данных.
Ключевой особенностью баз данных NoSQL является их бессхемность, которая позволяет хранить данные в формате, не требующем предопределенной схемы. Такая гибкость позволяет вносить изменения в базу данных по ходу работы, что является значительным преимуществом в приложениях, где требования постоянно меняются.
Типы баз данных NoSQL
Базы данных NoSQL можно разделить на четыре основных типа, каждый из которых обладает уникальными характеристиками и возможностями использования.
1. Документо-ориентированные базы данных (MongoDB)
Документо-ориентированные базы данных хранят данные в JSON-подобных форматах, известных как документы. Эти документы могут содержать разнообразные и вложенные структуры данных, что позволяет создавать более сложные и иерархические хранилища данных. Этот формат особенно полезен для приложений, работающих с данными, которые не помещаются в таблицы и строки, например для систем управления контентом и платформ электронной коммерции.
Ключевые особенности:
📌 Читать
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет 🚀 JUnit 5 🚀
Повторяющиеся тесты с помощью
Используйте
https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepeatedTest.html
#JUnit5 #Java
@javatg
Повторяющиеся тесты с помощью
@RepeatedTest
Используйте
@RepeatedTest
для запуска одного и того же теста несколько раз, каждый раз с разными входными данными или условиями, что особенно полезно для тестирования. 🔥https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepeatedTest.html
#JUnit5 #Java
@javatg
Kotlin изнутри: как работают inline-функции
Часто проводя технические собеседования, я пришел к выводу, что многие разработчики не понимают, в чем польза inline-функций, зачем нужен crossinline и как работает reified. Причина распространенных заблуждений насчет inline-функций отчасти заключается в неточном их описании, ранее опубликованном на сайте kotlinlang.org. Хочу развенчать эти заблуждения и наглядно показать, как работают inline-функции (встраиваемые) и в чем преимущество их использования.
Заблуждение 1-е: inline-функции экономят стек
Допустим, вы пытаетесь создать такую inline-функцию:
В этом случае компилятор выдаст предупреждение: “Expected performance impact from inlining is insignificant. Inlining works best for functions with parameters of functional types” (“Ожидаемое влияние встраивания на производительность незначительно. Встраивание лучше всего работает для функций с параметрами функциональных типов”). Это примерно означает, что JIT-компилятор сам прекрасно справляется с встраиванием кода и не нужно пытаться ему в этом помочь.
Inline-функции следует использовать только при передаче в функцию параметров функционального типа.
📌 Продолжение
@javatg
Часто проводя технические собеседования, я пришел к выводу, что многие разработчики не понимают, в чем польза inline-функций, зачем нужен crossinline и как работает reified. Причина распространенных заблуждений насчет inline-функций отчасти заключается в неточном их описании, ранее опубликованном на сайте kotlinlang.org. Хочу развенчать эти заблуждения и наглядно показать, как работают inline-функции (встраиваемые) и в чем преимущество их использования.
Заблуждение 1-е: inline-функции экономят стек
Допустим, вы пытаетесь создать такую inline-функцию:
private inline fun warningInlineFun(a: Int, b: Int): Int {
return a + b
}
В этом случае компилятор выдаст предупреждение: “Expected performance impact from inlining is insignificant. Inlining works best for functions with parameters of functional types” (“Ожидаемое влияние встраивания на производительность незначительно. Встраивание лучше всего работает для функций с параметрами функциональных типов”). Это примерно означает, что JIT-компилятор сам прекрасно справляется с встраиванием кода и не нужно пытаться ему в этом помочь.
Inline-функции следует использовать только при передаче в функцию параметров функционального типа.
📌 Продолжение
@javatg
Байт-код Java: назначение, структура и использование
Байт-код Java — это промежуточное представление Java-кода, которое выполняется виртуальной машиной Java (JVM). При компиляции Java-программы компилятор Java (javac) преобразует ее в байт-код, представляющий собой набор инструкций, которые JVM может понять и выполнить. Этот байт-код является платформонезависимым, то есть одна и та же Java-программа может выполняться на различных устройствах и в различных операционных системах, следуя принципу “пиши один раз, выполняй везде” (WORA).
Особенности байт-кода Java
Байт-код Java является важнейшим элементом в сфере программирования на Java. Он служит связующим звеном между высокоуровневым Java-кодом и низкоуровневыми операциями, выполняемыми в виртуальной машине Java (JVM). Рассмотрим подробно, что такое байт-код Java, как он устроен и зачем необходим Java-программам.
Что такое байт-код Java?
Байт-код Java — это продукт процесса компиляции исходного Java-кода. Когда вы пишете Java-программу и компилируете ее, компилятор Java (javac) не преобразует код непосредственно в машинный. Вместо этого он переводит его в промежуточную форму, называемую байт-кодом. Этот байт-код представляет собой набор инструкций, которые не являются человекочитаемыми, как Java-код, но менее сложны, чем машинный код.
Структура байт-кода
Длина каждой инструкции в байт-коде Java равна одному байту (откуда и происхождение термина “байт-код”). Однако за некоторыми инструкциями следуют дополнительные байты, представляющие собой операнды для инструкций. Инструкции байт-кода, разработанные для компактности и эффективности, работают на основе стековой архитектуры. В этом их отличие от большинства физических архитектур процессоров, основанных на регистрах.
Вот более подробный обзор структуры байт-кода.
📌 Читать
@javatg
Байт-код Java — это промежуточное представление Java-кода, которое выполняется виртуальной машиной Java (JVM). При компиляции Java-программы компилятор Java (javac) преобразует ее в байт-код, представляющий собой набор инструкций, которые JVM может понять и выполнить. Этот байт-код является платформонезависимым, то есть одна и та же Java-программа может выполняться на различных устройствах и в различных операционных системах, следуя принципу “пиши один раз, выполняй везде” (WORA).
Особенности байт-кода Java
Байт-код Java является важнейшим элементом в сфере программирования на Java. Он служит связующим звеном между высокоуровневым Java-кодом и низкоуровневыми операциями, выполняемыми в виртуальной машине Java (JVM). Рассмотрим подробно, что такое байт-код Java, как он устроен и зачем необходим Java-программам.
Что такое байт-код Java?
Байт-код Java — это продукт процесса компиляции исходного Java-кода. Когда вы пишете Java-программу и компилируете ее, компилятор Java (javac) не преобразует код непосредственно в машинный. Вместо этого он переводит его в промежуточную форму, называемую байт-кодом. Этот байт-код представляет собой набор инструкций, которые не являются человекочитаемыми, как Java-код, но менее сложны, чем машинный код.
Структура байт-кода
Длина каждой инструкции в байт-коде Java равна одному байту (откуда и происхождение термина “байт-код”). Однако за некоторыми инструкциями следуют дополнительные байты, представляющие собой операнды для инструкций. Инструкции байт-кода, разработанные для компактности и эффективности, работают на основе стековой архитектуры. В этом их отличие от большинства физических архитектур процессоров, основанных на регистрах.
Вот более подробный обзор структуры байт-кода.
📌 Читать
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Spring Совет 🚀
Распределенные системы должны проектироваться с учетом отказов. В настоящее время в мире приняты микросервисы, и эти сервисы в основном зависят от других удаленных сервисов. Эти удаленные службы могут не реагировать вовремя по различным причинам, таким как сеть, загрузка приложений и т.д. В большинстве случаев, реализация повторных попыток должна быть способна решить проблемы.
Но иногда могут быть серьезные проблемы, такие как деградация служб или полный отказ служб сам по себе. Бессмысленно продолжать повторные попытки в таких случаях. В этом случае может быть полезна модель автоматического выключателя (Circuit Breaker).
Если вы используете API шлюзы или прокси–серверы вроде Envoy, то это может быть достигнуто на самом прокси–уровне.
Примечание: Очень важно, чтобы было реализовано достаточное количество логов и предупреждений, когда цепь открыта, чтобы отслеживать запросы, полученные в течение этого времени, и чтобы операционная команда знала об этом.
Вы также можете реализовать автоматический выключатель с разомкнутой наполовину цепью, чтобы продолжать обслуживать клиентов с ослабленным обслуживанием.
Когда стоит использовать этот паттерн
Когда служба зависит от другого удаленного сервиса, и в некоторых сценариях она, скорее всего, откажет.
Когда служба имеет очень сильную зависимость (например, службы master data).
Когда не стоит использовать этот паттерн
Когда вы имеете дело с локальными зависимостями — автоматический выключатель может создать накладные расходы.
Reselience4J, позволяет реализовывать этот шаблон очень легко.
🔥
https://resilience4j.readme.io
@javatg
Распределенные системы должны проектироваться с учетом отказов. В настоящее время в мире приняты микросервисы, и эти сервисы в основном зависят от других удаленных сервисов. Эти удаленные службы могут не реагировать вовремя по различным причинам, таким как сеть, загрузка приложений и т.д. В большинстве случаев, реализация повторных попыток должна быть способна решить проблемы.
Но иногда могут быть серьезные проблемы, такие как деградация служб или полный отказ служб сам по себе. Бессмысленно продолжать повторные попытки в таких случаях. В этом случае может быть полезна модель автоматического выключателя (Circuit Breaker).
Если вы используете API шлюзы или прокси–серверы вроде Envoy, то это может быть достигнуто на самом прокси–уровне.
Примечание: Очень важно, чтобы было реализовано достаточное количество логов и предупреждений, когда цепь открыта, чтобы отслеживать запросы, полученные в течение этого времени, и чтобы операционная команда знала об этом.
Вы также можете реализовать автоматический выключатель с разомкнутой наполовину цепью, чтобы продолжать обслуживать клиентов с ослабленным обслуживанием.
Когда стоит использовать этот паттерн
Когда служба зависит от другого удаленного сервиса, и в некоторых сценариях она, скорее всего, откажет.
Когда служба имеет очень сильную зависимость (например, службы master data).
Когда не стоит использовать этот паттерн
Когда вы имеете дело с локальными зависимостями — автоматический выключатель может создать накладные расходы.
Reselience4J, позволяет реализовывать этот шаблон очень легко.
🔥
https://resilience4j.readme.io
@javatg
💥 Spring Boot and Thymeleaf library for htmx
Этот проект предоставляет аннотации, вспомогательные классы и синатксис Thymeleaf, чтобы упростить работу с htmx в приложении Spring Boot.
Более подробную информацию о htmx можно найти на в доккументации.
▪Github
@javatg
Этот проект предоставляет аннотации, вспомогательные классы и синатксис Thymeleaf, чтобы упростить работу с htmx в приложении Spring Boot.
Более подробную информацию о htmx можно найти на в доккументации.
▪Github
@javatg
«Я вообще нифига не понимаю. И скоро это поймут»: умелец устроился на работу Senior java-разработчиком на ₽300,000 сразу после курсов.
Он наврал в резюме, а теперь ищет спеца, на которого скинет всю работу за 50% от зарплаты.
Ждем курса от умельца, как устроиться Senior разработчиком без навыков и опыта.
@javatg
Он наврал в резюме, а теперь ищет спеца, на которого скинет всю работу за 50% от зарплаты.
Ждем курса от умельца, как устроиться Senior разработчиком без навыков и опыта.
@javatg
🚀 Spring совет 🚀
Служебный класс для работы с веб-задачами, такими как извлечение параметров запроса, обработка составных запросов и управление файлами cookie. 🔥
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/WebUtils.html
#Spring #java
@javatg
WebUtils
Служебный класс для работы с веб-задачами, такими как извлечение параметров запроса, обработка составных запросов и управление файлами cookie. 🔥
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/WebUtils.html
#Spring #java
@javatg