Telegram Web Link
Основы Kotlin — руководство

Подборка статей по Kotlin, которая будет полезна не только новичкам, но и тем, кто уже освоил основы языка. Категории:

— Основы для начинающих, статьи для разработчиков с опытом и профессионалов.
— Библиотеки для Android.
— Инструменты.
— Советы и фишки:

https://androidgeek.co/mastering-kotlin-a-comprehensive-guide-c70220318962

#kotlin

@javatg
#вопросы_с_собеседований
Как одной строкой преобразовать HashSet в ArrayList?

Ответ на картинке.

@javatg
Codename One - Cross Platform Native Apps with Java or Kotlin

Кроссплатформенный фреймворк для создания нативных мобильных приложений на Java или Kotlin. Поддержка Write Once Run Anywhere для iOS, Android, Desktop и Web.

🖥 Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Многоязычность на Kotlin-бэкэнде

Язык программирования Kotlin часто ассоциируется с мобильной разработкой для Android и это неудивительно, учитывая что он принят Google как официальный язык разработки, и принес множество необходимых и удобных языковых конструкций и кооперативной многозадачности, при этом сохраняя совместимость на уровне байт-кода с ранними версиями JVM.

Но применимость языка существенно выше и имеющиеся библиотеки (как созданные для Java, так и разработанные специально для Kotlin) позволяют создавать обычные приложения (например, на JavaFX или с использованием платформенных графических библиотек и Kotlin Native), а также создавать код для бэкэнда c подключениям к базам данных, кэшам, очередям сообщений и т.д.

При этом, если для мобильной разработки проблем с поддержкой многоязычных сообщений не возникает (благодаря механизму ресурсов, в том числе строк, которые могут быть переопределены для конкретной локали), то для бэкэнда это становится нетривиальной задачей. В этой статье мы обсудим несколько подходов для создания бэкэнда с поддержкой нескольких языков.

Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Развёртывание API Spring Boot 3.0 с использованием Jenkins Pipeline и Docker

В этой статье мы объясним, как развернуть Spring boot-приложение с помощью Jenkins Pipeline и Docker шаг за шагом.

Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Kotlin: модификаторы видимости

Модификаторы видимости — это ключевые слова, которыми определяется уровень доступности элементов: классов, объектов, интерфейсов, конструкторов, функций, свойств и их сеттеров.

В Kotlin имеется четыре модификатора видимости. А в Java их три: недоступен internal. В Kotlin видимость по умолчанию —  public, в Java —  private.

Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Kotlin Bootcamp для разработчиков

Для Android-разработчиков и начинающих, кто хочет писать код на Kotlin у Android Developers есть бесплатный курс по основам. Материалы курса включают в себя и домашние задания. В зависимости от ваших знаний вы можете проходить программу, выбирая только те разделы, которые интересны вам:

https://developer.android.com/courses/kotlin-bootcamp/overview

#kotlin

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Top it channels

🖥 Linux
@linux -топ фишки, гайды, уроки по работе  с Linux.
@linux_read - бесплатные книги linux
@linux chat - чат linux для обучения и помощи.
@linuxacadd - linux с нуля

🖥 SQL базы данных

@sqllib - библиотека баз данных
@sqlhub - повышение эффективности кода с грамотным использованием бд.
@chat_sql - чат изучения бд.
databooks - лучшие бесплатные книги по базам данных

🖥 Python

@pythonl - гайды по Python.
@pro_python_code – Python практика.
@python_job_interview – подготовка к Python собеседованию.
@python_testit - проверочные тесты на python
@pythonlbooks - современные книги Python
@python_djangojobs - работа для Python программистов
@python_django_work - чат обсуждения вакансий

🖥 Java
@javatg - выучить Java с senior разработчиком по профессиональной методике.
@javachats - чат для ответов на вопросы по Java
@java_library - библиотека книг Java
@android_its - Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит

👣 Golang
@Golang_google - восхитительный язык от Google, мощный и перспективный.
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@golangtests - интересные тесты и задачи GO
@golangl - чат изучающих Go
@GolangJobsit - отборные вакансии и работа GO
@golang_jobsgo - чат для ищущих работу.
@golang_books - полезные книги Golang
@golang_speak - обсуждение языка Go

⭐️ Нейронные сети
@data_analysis_ml - data science
@vistehno - chatgpt ведет блог, решает любые задачи и отвечает на любые ваши вопросы.
@aigen - сети для генерации картинок. видео, музыки и многого другого.
@neural – погружение в нейросети.

🖥 Machine learning
@ai_ml – погружение в нейросети, ai, Chatgpt, midjourney, машинное обучение.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседованию.
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml
@Machinelearning_Jobs - чат работы мл

🖥 Javascript / front

@react_tg - - 40,14% разработчиков сайтов использовали React в 2022 году - это самая популярная библиотека для создания сайтов.
@javascript -канал для JS и FrontEnd разработчиков. Лучшие практики и примеры кода. Туториалы и фишки JS
@Js Tests - каверзные тесты JS
@hashdev - погружение в web разработку.
@javascriptjobjs - отборные вакансии и работа FrontEnd.
@jsspeak - чат поиска FrontEnd работы.

👷‍♂️ IT работа

@hr_itwork - кураторский список актуальных ит-ваканнсии

🤡It memes
@memes_prog - ит-мемы

⚙️ Rust
@rust_code - Rust избавлен от болевых точек, которые есть во многих современных яп
@rust_chats - чат rust

#️⃣ c# c++
C# - объединяет лучшие идеи современных языков программирования
@csharp_cplus чат
С++ - Универсальность. Возможно, этот главный плюс C++.

📓 Книги

@programming_books_it - большая библиотека. программиста
@datascienceiot -ds книги
@pythonlbooks - python библиотека.
@golang_books - книги Golang
@frontendbooksit - front книги
@progersit - ит-шпаргалки
@linux_read - Linux books
@java_library - Java books

🖥 Github
@github_code - лучшие проекты с github
@bigdatai - инструменты по работе с данными

🍏🖥Mobile dev

@mobdevelop

🖥 Android

@android_its

🖥 Devops
Devops - специалист общего профиля, которому нужны обширные знания в области разработки.

📢 English for coders

@english_forprogrammers - Английский для программистов

🔢 Math

@dsmath - математика программиста

💡 ChatGpt bot

@Chatgpturbobot - бесплатный бот ChatGpt
Please open Telegram to view this post
VIEW IN TELEGRAM
Глубокое погружение в лямбда-выражения на Java

Это руководство полностью посвящено освоению лямбда-выражений на Java. Вы узнаете всё, что вам нужно знать, от основ создания и работы до более продвинутых тем, таких как функциональные интерфейсы и ссылки на методы. Независимо от того, новичок вы или опытный разработчик, это руководство поможет вам повысить уровень вашей лямбда-игры. Итак, давайте погрузимся в мир функционального программирования с помощью Java-лямбд!

Бонус: В конце статьи есть несколько практических вопросов, которые помогут вам подготовиться к следующему собеседованию и оценить свои знания.

TL; DR: Лямбда-выражения – это мощный инструмент для Java-разработчиков, который включает парадигмы функционального программирования и предоставляет способ работы с коллекциями и потоками в Java. Освоив лямбда-выражения, вы, как разработчик, будете писать лучший код, работать эффективнее и создавать более удобные в обслуживании и масштабируемые приложения.

Читать

@javatg
🖥 Альтернатива Java 8: что умеет VAVR

VAVR, который много лет назад назывался JavaSlang, — это Java API, который привносит возможности функционального программирования в код, а также предоставляет отличный API для неизменяемых коллекций. В этой статье рассмотрим обычный код на Java и его эквивалент с VAVR, чтобы вы увидели, как приятно работать с этой библиотекой.

Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Пять задач, которые приходится решать при трудоустройстве начинающим Java-разработчикам

В процессе подбора кандидатов работодатель хочет понять, насколько ему подходит тот или иной соискатель — насколько он комфортен в общении и работе, обладает необходимым опытом и, что самое важное, техническими навыками для предстоящей работы.

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

Читать

@javatg
🖥 Java Multithreading Madness: Приготовьтесь раскачать свои потоки!

В этой статье мы погрузимся в Java Multithreading на практике.

Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 QuestDB

База данных временных рядов с открытым исходным кодом для быстрой загрузки и SQL-запросов.

🖥 Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🌕 Проверка идентификационных номеров: реализация алгоритма Луны на Java

public static boolean validateNumber(String number){
/*
Validation of user input: blank spaces are removed from the
numeric string. Also, the code ensures that the input is numeric
*/
number = number.replaceAll(" ", "");

try{
Long.parseLong(number);
} catch (NumberFormatException e){
System.out.println("Invalid input");
return false;
}

int sum = 0;
boolean alternateDigit = false;

/*
Starting from the right of the string, the code loops through each
digit and multiplies every second digit by 2.
*/

for(int i = number.length()-1; i >= 0; i--){
int digit = Integer.parseInt(number.substring(i, i+1));
if(alternateDigit){
digit *= 2;
if(digit > 9){
digit = 1 + (digit % 10);
}
}
sum += digit;
alternateDigit = !alternateDigit;
}

return (sum % 10 == 0);
}

Сначала метод выполняет проверку данных: он удаляет все пробелы, которые часто добавляются, чтобы сделать номера кредитных карт более читаемыми. Он также проверяет, что строка состоит только из цифр, без лишних символов, и обрабатывает любое возникающее исключение NumberFormatException.

Затем код перебирает каждую цифру, начиная справа, чтобы выполнить действия, описанные в разделе выше. Каждая вторая цифра умножается на 2, и в тех случаях, когда в результате получается число больше 9, эти две цифры суммируются вместе, чтобы вычислить однозначное число.

На каждой итерации цикла полученное число суммируется с переменной sum, которая используется для отслеживания общей суммы. После завершения цикла метод возвращает true, если сумма делится на 10.

Полный код можно найти на Github.

Отправляйте свою реализацию в комментарии
👇

@javatg
🖥 Класс данных в Kotlin

Иногда в программах приходится создавать классы исключительно для хранения данных, а затем — функции определенных стандартов внутри этих классов.

В Kotlin все эти проблемы решаются с помощью классов данных, создаваемых с той же целью, но функции определенных стандартов в них содержатся автоматически:

data class Person(val name: String, val surname: String)

Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Задача с leetcode. Max Area of Island

Максимальная площадь острова

Сложность: Средняя

Условие задачи: Условие задачи:

Дан двумерный массив размера m x n. "1" отвечает за сушу, "0" - за океан. Необходимо опеределить максмимальную площадь острова из островов, расположенных на карте.

Островом считается территория, образованная из "1", расположенных сверху, справа, снизу и слева относительно друг друга.

Пример:

Ввод:
grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]

Вывод: 6

Ввод: grid = [[0,0,0,0,0,0,0,0]]

Вывод: 0

Решение

Временная сложность: O(m*n)
Пространственная сложность: O(m*n)

class Solution {
public int maxAreaOfIsland(int[][] grid) {
int maxArea = 0;
for(int i = 0; i < grid.length; i++) {
for(int j = 0; j < grid[0].length; j++) {
if(grid[i][j] == 1) {
maxArea = Math.max(maxArea, findArea(grid, i, j));
}
}
}
return maxArea;
}

private int findArea(int[][] grid, int row, int col) {
if(row < 0 || row >= grid.length || col < 0 || col >= grid[0].length || grid[row][col] == 0) {
return 0;
}

grid[row][col] = 0;
int count = 1;

count += findArea(grid, row, col-1);
count += findArea(grid, row, col+1);
count += findArea(grid, row-1, col);
count += findArea(grid, row+1, col);

return count;
}
}


Пишите свое решение в комментариях👇

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Бесплатный курс по информатике от MIT

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

Каждый урок подкреплён практикой с заданиями для проверки усвоения материала и заданиями:

https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.005.1x+3T2016/course/

#java

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 ActiveJ

Легкий асинхронный фреймворк, для разработки высокопроизводительных веб-приложений.

🖥 Github

#github #java

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Утилитные классы в Kotlin с точки зрения Java-разработчика

Одним из достоинств Kotlin, отличающих его от других языков, в том числе Java, является подход к реализации утилитных классов. Утилиты могут быть полезными инструментами в разработке программного обеспечения, хотя и не всегда являются лучшим выбором при проектировании объектно-ориентированных систем.

Как Java-разработчику, вам будет полезно рассмотреть различные способы реализации утилитных классов в Kotlin и узнать, что делается в этом языке “под капотом”. Kotlin предлагает целый ряд различных способов, упрощающих переход от Java, начиная от сокращения стереотипного кода и заканчивая улучшением читаемости кода.

Понимание различий в реализации утилитных классов в Kotlin и Java — важный шаг в освоении такого мощного языка, как Kotlin. Будь вы опытный Java-разработчик, желающий расширить спектр своих навыков, или новичок в программировании, уделите внимание этому аспекту.

Как вам известно, создать утилитный класс в Java довольно просто. Процесс включает следующие шаги.

Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Задача. Слияние двух бинарных деревьев

Сложность: Лёгкая

Условие задачи: Даны два бинарных дерева, необходимо осуществить их наложение друг на друга и вывод результатов в новом дереве.

Примечание: Наложение представляет из себя суммирование соответствующих значений из узлов двух деревьев.

Пример:

Ввод:
root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
Вывод:
[3,4,5,5,4,null,7]

Ввод:
root1 = [1], root2 = [1,2]
Вывод:
[2,2]

Решение

class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (root1==null && root2==null) return null;
if (root1==null) return root2;
if (root2==null) return root1;
root1.val = root1.val+root2.val;
root1.left = mergeTrees(root1.left, root2.left);
root1.right = mergeTrees(root1.right, root2.right);
return root1;
}
}

Пишите свое мнение в комментариях👇

@javatg
2024/10/03 02:36:48
Back to Top
HTML Embed Code: