Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1👏1
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Клифф Клик — CTO компании Cratus (IoT сенсоры для улучшения процессов), основатель и сооснователь нескольких стартапов (включая Rocket Realtime School, Neurensic и H2O.ai) с несколькими успешными экзитами. Клифф написал свой первый компилятор в 15 лет (Pascal для TRS Z-80)! Наиболее известен за работу над С2 в Java (the Sea of Nodes IR).
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1👍1👏1
Leetcode. Задача. #325 (Maximum Size Subarray Sum Equals k). (easy)
Дан массив целых чисел nums и целое число k. Необходимо найти длину самой длинной непрерывной подстроки, сумма элементов которой равна k.
Пример:
👨💻 Алгоритм:
Алгоритм решения:
1️⃣ Использовать хэш-таблицу для хранения сумм префиксов и их индексов.
2️⃣ Пройтись по массиву, вычисляя текущую сумму.
3️⃣ Если текущая сумма равна k, обновить максимальную длину.
4️⃣ Если разница между текущей суммой и k уже есть в хэш-таблице, обновить максимальную длину.
😎 Решение:
🖥 Java Developer | Backend | #⃣ #задача #java
Дан массив целых чисел nums и целое число k. Необходимо найти длину самой длинной непрерывной подстроки, сумма элементов которой равна k.
Пример:
Вход: nums = [1, -1, 5, 2, -2, 3], k = 3
Выход: 4
Объяснение: Подстрока [1, -1, 5, 2] имеет сумму 3.
Алгоритм решения:
import java.util.HashMap;
public class MaxSubarraySum {
public int maxSubArrayLen(int[] nums, int k) {
HashMap<Integer, Integer> sumIndices = new HashMap<>();
sumIndices.put(0, -1); // Сумма 0 на позиции -1 (перед началом массива)
int maxLength = 0;
int currentSum = 0;
for (int i = 0; i < nums.length; i++) {
currentSum += nums[i];
if (sumIndices.containsKey(currentSum - k)) {
maxLength = Math.max(maxLength, i - sumIndices.get(currentSum - k));
}
// Сохраняем индекс текущей суммы только если она еще не встречалась
if (!sumIndices.containsKey(currentSum)) {
sumIndices.put(currentSum, i);
}
}
return maxLength;
}
public static void main(String[] args) {
MaxSubarraySum solution = new MaxSubarraySum();
int[] nums = {1, -1, 5, 2, -2, 3};
int k = 3;
int length = solution.maxSubArrayLen(nums, k);
System.out.println("Длина самой длинной подстроки с суммой " + k + ": " + length); // Вывод: 4
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2👏1
Optional в Java и зачем он нужен?Ответ -
Optional — это контейнер, который может содержать значение или быть пустым (null). Он используется для избежания NullPointerException и улучшения читаемости кода. Вместо того чтобы возвращать null, методы могут возвращать Optional, позволяя разработчикам явно обрабатывать случаи отсутствия значения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Данная статья есть компиляция мыслей и идей, полученных из выступлений других людей на данную тему, плюс эпизодического опыта изучения WebAssembly в течение нескольких месяцев.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2👏1
Java – один из самых популярных и востребованных языков программирования в мире. Он используется в веб-разработке, разработке мобильных приложений, научных вычислениях и многих других областях.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥2
Ответ -
Потокобезопасность означает, что несколько потоков могут безопасно взаимодействовать с объектами без риска повреждения данных. Достичь потокобезопасности можно с помощью ключевых слов synchronized, volatile, а также с использованием классов из пакета java.util.concurrent, таких как ConcurrentHashMap, CopyOnWriteArrayList и других.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👏3🔥2👍1
Ответ -
Аннотации метаданных — это специальные конструкции, которые добавляют метаданные к элементам программы (классам, методам и т.д.). Они могут использоваться для конфигурации фреймворков, генерации кода и валидации. Например, аннотация
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥2
Ответ -
Spring Framework — это мощный фреймворк для разработки корпоративных приложений на Java. Он предоставляет контейнер внедрения зависимостей и различные модули для работы с различными аспектами разработки приложений. Основные модули включают:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👏3👍2
Ответ -
SOLID — это набор пяти принципов проектирования:
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2👍1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3😁2❤1
Сборка мусора (Garbage Collection) в Java — это автоматический процесс управления памятью. JVM отслеживает объекты, которые больше не используются, и освобождает память, чтобы предотвратить утечки. Это позволяет разработчикам сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.
Куча (Heap)
Куча - это область памяти JVM, где хранятся все объекты Java и связанные с ними данные. Выделение памяти в куче происходит динамически во время выполнения программы.
Стек (Stack)
Каждый поток в Java имеет собственный стек, который содержит информацию о вызовах методов и локальных переменных. Стек устроен по принципу LIFO (last-in, first-out) и используется для управления выполнением методов и их локальными переменными.
Когда в Java создается новый объект (например, через оператор new), JVM выделяет для него память в куче (heap). Размер выделяемой памяти зависит от структуры объекта, включая его поля и связанные объекты.
После создания объект активно используется приложением. Это означает, что на объект существуют активные ссылки из других частей кода.
Обычные ссылки в Java являются сильными ссылками. Пока на объект есть хотя бы одна сильная ссылка, он остается в памяти.
Правильное применение GC в JVM может значительно улучшить производительность приложений, снизить задержки, предотвратить утечки памяти и улучшить общее управление ресурсами. В конечном итоге, это приводит к созданию более надежных, эффективных и высокопроизводительных приложений, способных удовлетворять самые разнообразные требования и условия эксплуатации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Ответ -
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Паттерн проектирования "Мост" (Bridge) используется для разделения абстракции и реализации, что позволяет изменять их независимо друг от друга. Этот паттерн особенно полезен, когда у вас есть множество возможных реализаций и абстракций, которые могут изменяться независимо, что делает систему более гибкой и расширяемой.
interface Engine {
void setEngine();
}
abstract class Car {
protected Engine engine;
public Car(Engine engine){
this.engine = engine;
}
abstract public void setEngine();
}
class SportCar extends Car {
public SportCar(Engine engine) {
super(engine);
}
public void setEngine() {
System.out.print("SportCar engine: ");
engine.setEngine();
}
}
class UnknownCar extends Car {
public UnknownCar(Engine engine) {
super(engine);
}
public void setEngine() {
System.out.print("UnknownCar engine: ");
engine.setEngine();
}
}
class SportEngine implements Engine {
public void setEngine(){
System.out.println("sport");
}
}
class UnknownEngine implements Engine {
public void setEngine(){
System.out.println("unknown");
}
}
public class BridgeTest {
public static void main(String[] args) {
Car sportCar = new SportCar(new SportEngine());
sportCar.setEngine();
System.out.println();
Car unknownCar = new UnknownCar(new UnknownEngine());
unknownCar.setEngine();
}
}Таким образом, паттерн "Мост" является мощным инструментом для создания гибких и расширяемых систем с четким разделением ответственности между абстракцией и реализацией.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Мы разберём страхи, останавливающие разработчика перед тем, чтобы начать, наконец, писать тесты. Выявим очевидные преимущества. Рассмотрим основные правила разработки через тестирование. И подкрепим всё это реальными примерами.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
При работе с базами данных в Java, использование
PreparedStatement является предпочтительным методом по сравнению с обычным Statement. Это связано с тем, что PreparedStatement помогает предотвратить SQL-инъекции и улучшает производительность за счет предварительной компиляции SQL-запросов.Пример использования PreparedStatement
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcPreparedStatementExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3000/mydatabase";
String user = "username";
String password = "password";
String sql = "INSERT INTO users (username, password) VALUES (?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "newuser");
pstmt.setString(2, "securepassword");
pstmt.executeUpdate();
System.out.println("User added successfully!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Использование
PreparedStatement не только защищает ваше приложение от SQL-инъекций, но и улучшает читаемость кода. Это особенно важно при работе с пользовательскими данными.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3