Как вы оказались на этом канале? 🧑💻
Anonymous Poll
11%
Я нашел его в JavaRush 🎮
31%
Я натолкнулся на него в YouTube 🎬
0%
Я пришел из RuTube 🚩
13%
Мне посоветовали друзья 👙
24%
Я нашел канал через Телеграм 💭
18%
Я не помню!🍸
2%
Мой вариант в комментариях
👍1
Что Вам нравится в канале? (несколько вариантов) 🧑💻
Anonymous Poll
71%
Подробность рассматриваемых тем
53%
Последовательность в рассмотрении тем
53%
Разнообразность постов
50%
Прагматичный подход без смайлов и идиотизма
71%
Отсутствие инфо-цыганства, мне никто ничего не продает
50%
Отсутствие рекламы
0%
Мой вариант в комментариях!
👍1
Что Вам не нравится на канале (несколько вариантов) 🧑💻
Anonymous Poll
9%
Слишком подробный разбор, хотелось бы лаконичную выжимку
52%
Слишком много контента. Не успеваю читать
0%
Админ сам ничего не умеет, а пытается учить
9%
Бесполезные встречи. Можно просто делать видео о рассматриваемом вопросе
30%
Лишние посты о биографиях и фактах
17%
Отсутствие обучающих постов в выходные. Мне нужно каждый день!
9%
Мой вариант в комментариях!
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Сеньор-инфоцыган, который не согласился на офферы в Google, Amazon и Uber, чтобы обучить ТЕБЯ
https://t.me/Java_for_beginner_dev
#Mems
https://t.me/Java_for_beginner_dev
#Mems
👍2😁2❤1
Ну а теперь, давайте подведем итоги под этим постом.
Несмотря на ранее написанные комментарии выше, я хотел бы, чтобы ВЫ поделились именно тут вашим итоговым мнением о канале.
Делитесь мнениями, я все прочитаю и учту!
Спасибо
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
А вы знали, что термин "файл " был заимствован из французского языка в 16 веке?
В английский язык слово "Файл", попало из французского примерно в 1520-е годы и сразу приобрело значение «нить или тросик, на котором крепятся документы». Сто лет спустя слово немного изменило смысл и стало означать аккуратно собранные бумажные документы, среди которых можно быстро найти нужный. И лишь в 1954 году слово file пришло в мир информационных технологий.
#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
"Интернет — это зеркало экономики."
Мэри Микер, аналитик технологий, сказала это в 2010 году в ежегодном отчете Internet Trends.
Почитать короткую биографию
И ее история успеха
#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
Wikipedia
Mary Meeker
American venture capitalist and securities analyst
🔥3
Jackson
Ключевые аннотации для сериализации.
Jackson предоставляет богатый набор аннотаций для управления тем, как Java-объекты сериализуются в JSON. На практике чаще всего используются три основные аннотации: @JsonProperty, @JsonIgnore и @JsonInclude.
@JsonProperty
Аннотация @JsonProperty позволяет задать имя поля в итоговом JSON независимо от имени переменной в Java-классе. Это особенно полезно, если требуется соблюдать определенные соглашения об именовании в JSON (например, использовать snake_case).
Пример:
При сериализации объект будет выглядеть так:
@JsonIgnore
Аннотация @JsonIgnore используется для исключения полей из сериализации и десериализации. Если поле не должно попадать в JSON-вывод или не должно учитываться при чтении JSON, достаточно добавить эту аннотацию.
Пример:
Результат сериализации:
@JsonInclude
Аннотация @JsonInclude позволяет управлять включением полей в JSON в зависимости от их значения. Например, можно настроить сериализацию так, чтобы поля с null не попадали в итоговый JSON.
Пример:
Если email будет null, результат сериализации будет таким:
#Java #Training #Medium #Jackson #JsonProperty #JsonIgnore #JsonInclude
Ключевые аннотации для сериализации.
Jackson предоставляет богатый набор аннотаций для управления тем, как Java-объекты сериализуются в JSON. На практике чаще всего используются три основные аннотации: @JsonProperty, @JsonIgnore и @JsonInclude.
@JsonProperty
Аннотация @JsonProperty позволяет задать имя поля в итоговом JSON независимо от имени переменной в Java-классе. Это особенно полезно, если требуется соблюдать определенные соглашения об именовании в JSON (например, использовать snake_case).
Пример:
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("user_name")
private String name;
private int age;
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
// Геттеры и сеттеры
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
При сериализации объект будет выглядеть так:
{"user_name":"Alice","age":25}
Без @JsonProperty имя поля в JSON было бы "name", но аннотация позволила задать собственное имя.
@JsonIgnore
Аннотация @JsonIgnore используется для исключения полей из сериализации и десериализации. Если поле не должно попадать в JSON-вывод или не должно учитываться при чтении JSON, достаточно добавить эту аннотацию.
Пример:
import com.fasterxml.jackson.annotation.JsonIgnore;
public class User {
private String name;
@JsonIgnore
private String password;
public User() {}
public User(String name, String password) {
this.name = name;
this.password = password;
}
// Геттеры и сеттеры
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Результат сериализации:
{"name":"Alice"}
Поле password полностью исключено из JSON.
@JsonInclude
Аннотация @JsonInclude позволяет управлять включением полей в JSON в зависимости от их значения. Например, можно настроить сериализацию так, чтобы поля с null не попадали в итоговый JSON.
Пример:
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class User {
private String name;
private String email;
public User() {}
public User(String name, String email) {
this.name = name;
this.email = email;
}
// Геттеры и сеттеры
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Если email будет null, результат сериализации будет таким:
{"name":"Alice"}
Без @JsonInclude поле email также попало бы в JSON с null значением.
#Java #Training #Medium #Jackson #JsonProperty #JsonIgnore #JsonInclude
👍2
Что выведет код?
#Tasks
import java.util.*;
public class Task050525 {
public static void main(String[] args) {
TreeMap<String, Integer> tree = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
tree.put("Apple", 1);
tree.put("banana", 2);
tree.put("APPLE", 3);
System.out.println(tree.size() + " " + tree.get("aPpLe"));
}
}
#Tasks
👍2
👍2❤1
Не, ну а че, на кулачках решать какой фреймворк лучше - вариант? 🥴 💪 😄
https://t.me/Java_for_beginner_dev
#Mems
https://t.me/Java_for_beginner_dev
#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3✍1
Вопросы с собеседования 👩💻
Что такое аннотация в Java?
Что такое аннотация в Java?
Anonymous Quiz
9%
Комментарий в коде
87%
Метаданные для классов, методов или полей
0%
Оператор для циклов
4%
Тип данных
🔥2
Jackson
Аннотации Jackson для десериализации и изменения структуры JSON
Иногда структура входящего JSON не совпадает напрямую с полями Java-объекта. Для корректной десериализации в таких случаях Jackson предлагает ряд аннотаций, среди которых особенно важны @JsonCreator, @JsonSetter и @JsonAlias.
@JsonCreator
Аннотация @JsonCreator позволяет указать, какой именно конструктор или фабричный метод должен использоваться для создания объекта из JSON.
Особенно полезна в случаях, когда объект должен быть создан через специфический конструктор, а не через пустой и геттеры/сеттеры.
Пример:
При десериализации Jackson использует указанный конструктор, а не требует пустой конструктор и сеттеры:
@JsonSetter
Аннотация @JsonSetter указывается на методе и сообщает Jackson, что данный метод должен использоваться для установки значения при десериализации.
Это полезно, когда метод сеттера отличается по названию от поля или нужно выполнить какую-то дополнительную обработку значения.
Пример:
JSON:
@JsonAlias
Аннотация @JsonAlias позволяет указывать альтернативные имена полей, которые могут приходить в JSON. Это особенно полезно для работы с нестабильными или изменяющимися API.
Пример:
Теперь следующий JSON будет корректно обработан:
или
Пример нестандартного маппинга
Иногда API может менять структуру данных или использовать разные названия для одного и того же поля. Комбинируя @JsonCreator, @JsonProperty и @JsonAlias, можно добиться правильной обработки даже самых нестандартных случаев.
Например:
#Java #Training #Medium #Jackson #JsonCreator #JsonSetter #JsonAlias
Аннотации Jackson для десериализации и изменения структуры JSON
Иногда структура входящего JSON не совпадает напрямую с полями Java-объекта. Для корректной десериализации в таких случаях Jackson предлагает ряд аннотаций, среди которых особенно важны @JsonCreator, @JsonSetter и @JsonAlias.
@JsonCreator
Аннотация @JsonCreator позволяет указать, какой именно конструктор или фабричный метод должен использоваться для создания объекта из JSON.
Особенно полезна в случаях, когда объект должен быть создан через специфический конструктор, а не через пустой и геттеры/сеттеры.
Пример:
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
private final String name;
private final int age;
@JsonCreator
public User(@JsonProperty("name") String name,
@JsonProperty("age") int age) {
this.name = name;
this.age = age;
}
// Только геттеры
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
При десериализации Jackson использует указанный конструктор, а не требует пустой конструктор и сеттеры:
String json = "{\"name\":\"Alice\",\"age\":30}";
User user = objectMapper.readValue(json, User.class);
@JsonSetter
Аннотация @JsonSetter указывается на методе и сообщает Jackson, что данный метод должен использоваться для установки значения при десериализации.
Это полезно, когда метод сеттера отличается по названию от поля или нужно выполнить какую-то дополнительную обработку значения.
Пример:
import com.fasterxml.jackson.annotation.JsonSetter;
public class Product {
private String name;
public Product() {}
public String getName() {
return name;
}
@JsonSetter("product_name")
public void setName(String name) {
this.name = name.toUpperCase();
}
}
JSON:
{
"product_name": "laptop"
}
При десериализации будет вызван метод setName, а имя продукта будет автоматически приведено к верхнему регистру: "LAPTOP".
@JsonAlias
Аннотация @JsonAlias позволяет указывать альтернативные имена полей, которые могут приходить в JSON. Это особенно полезно для работы с нестабильными или изменяющимися API.
Пример:
import com.fasterxml.jackson.annotation.JsonAlias;
public class Customer {
@JsonAlias({"user_name", "login"})
private String username;
public Customer() {}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
Теперь следующий JSON будет корректно обработан:
{ "user_name": "admin" }
или
{ "login": "admin" }
И в обоих случаях значение попадет в поле username.
Пример нестандартного маппинга
Иногда API может менять структуру данных или использовать разные названия для одного и того же поля. Комбинируя @JsonCreator, @JsonProperty и @JsonAlias, можно добиться правильной обработки даже самых нестандартных случаев.
Например:
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonAlias;
public class Employee {
private final String id;
private final String fullName;
@JsonCreator
public Employee(@JsonProperty("id") String id,
@JsonProperty("full_name") @JsonAlias({"name", "fullname"}) String fullName) {
this.id = id;
this.fullName = fullName;
}
public String getId() {
return id;
}
public String getFullName() {
return fullName;
}
}
Теперь Jackson корректно обработает JSON, где имя сотрудника приходит под разными ключами: full_name, name или fullname.
#Java #Training #Medium #Jackson #JsonCreator #JsonSetter #JsonAlias
👍4
А вы знали, что термин "firewall" пришёл из строительства?
Фаервол, или брандмауэр, были заимствованы из иностранных языков и означают одно и то же: «противопожарный щит/стена» — в переводе с английского («firewall») и немецкого («brandmauer»), соответственно.
В IT этот термин начали использовать в 1980-х для обозначения системы защиты сетей от угроз.
Proof
#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3