Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.64K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
JOIN - оператор языка SQL, который является реализацией операции соединения реляционной алгебры. Предназначен для обеспечения выборки данных из двух таблиц и включения этих данных в один результирующий набор.

Особенностями операции соединения являются следующее:
☕️ в схему таблицы-результата входят столбцы обеих исходных таблиц (таблиц-операндов), то есть схема результата является «сцеплением» схем операндов;
☕️ каждая строка таблицы-результата является «сцеплением» строки из одной таблицы-операнда со строкой второй таблицы-операнда;
☕️ при необходимости соединения не двух, а нескольких таблиц, операция соединения применяется несколько раз (последовательно).
Spring 5 Recipes: A Problem-Solution Approach (2017)
Авторы: Marten Deinum, Daniel Rubio, Josh Long
Количество страниц: 870

Рецепты в Spring 5 Recipes охватывают основы Spring, такие как контейнер Spring IoC, Spring AOP / AspectJ и другие. Книга поможет при старте нового проекта, она написана для опытных разработчиков.

Во время чтения книги вы:
✔️Изучите повторно используемые рецепты кода и фрагменты для ядра Spring, аннотации и другие инструменты разработки;
✔️Поработаете с Spring REST и микросервисами для разработки веб-сервисов и интеграции в ваши корпоративные Java-приложения;
✔️Используете Spring Batch, NoSQL и большие данные для создания и интеграции различных сервисов и ресурсов облачных вычислений;
✔️Интегрируете Java Enterprise Edition и другие API Java для использования в Spring;
✔️Используете код Grails.

Скачать книгу
Что такое «каналы»?

Каналы (channels)
– это логические (не физические) порталы, абстракции объектов более низкого уровня файловой системы (например, отображенные в памяти файлы и блокировки файлов), через которые осуществляется ввод/вывод данных, а буферы являются источниками или приёмниками этих переданных данных. При организации вывода, данные, которые необходимо отправить, помещаются в буфер, который затем передается в канал. При вводе, данные из канала помещаются в заранее предоставленный буфер.

Каналы напоминают трубопроводы, по которым эффективно транспортируются данные между буферами байтов и сущностями по ту сторону каналов. Каналы – это шлюзы, которые позволяют получить доступ к сервисам ввода/вывода операционной системы с минимальными накладными расходами, а буферы – внутренние конечные точки этих шлюзов, используемые для передачи и приема данных.
OCA Java SE 8 Programmer I Certification Guide (2017)
Автор: Mala Gupta
Количество страниц: 704

OCA Java SE 8 Programmer I Certification Guide готовит Java-разработчиков к экзамену 1Z0-808 с подробным раскрытием тех тем Java, которые обычно встречаются на экзамене. Каждая глава начинается со списка целей экзамена, сопоставленных с номерами разделов, за которыми следуют примеры вопросов и упражнений. Вы будете готовиться с помощью разных способов, в том числе используя запоминающиеся аналогии, диаграммы, блок-схемы и хорошо прокомментированный код. Вы также узнаете о типичных ошибках на экзамене и способах избежать ловушек.

Скачать книгу
В каких пакетах расположены классы потоков ввода/вывода?

java.io, java.nio. Для работы с потоками компрессированных данных используются классы из пакета java.util.zip
#вопросы_с_собеседований
Что такое «денормализация»? Для чего она применяется?
Денормализация базы данных — это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных, за счет увеличения избыточности данных.
#vacancy #вакансия #удаленнаяработа #удаленка #remotly #remote #Java #fulltime
О компании:
Американская компания Xim Inc. https://ximxim.com/ очень ищет Senior/Principal Java Engineer 💎
Ссылка на проект Optiva https://optiva.com/

Зарплатная вилка
От 3500 USD - 6000 USD

Full time, remote

What is the opportunity?

Optiva is a leading company in telco industry and telco products, covering the full lifecycle of telecom billing system experience, including that of real-time and offline charging systems, together with CDR mediation and Policy Control;
Senior Software Engineer handles high complexity software cases, designing, developing, testing and releasing quality software, taking into account industry-level development and documentation practices;
As a software engineer, you will be working in a team of mixed skills professionals (business analysts, system integration, QA, Ops teams) on Optiva’s innovative solutions for OSS/BSS;
You will investigate issues by reviewing/debugging code, providing fixes and reviewing changes for operability to maintain existing software solutions;

What will you do?

💎Develop software solutions by studying information needs; checking with users; studying systems flow, data usage and work processes; investigating problem areas; following the software development lifecycle;
💎Determine operational feasibility by evaluating analysis, problem definition, requirements, solution development and proposed solutions;
💎Document and demonstrate solutions by developing documentation, flowcharts, layouts, diagrams, charts, code comments and clear code;
💎Prepare and install solutions by determining and designing system specifications, standards and programming;
💎Improve operations by conducting systems analysis; recommending changes in policies and procedures
💎Update job knowledge by studying state-of-the-art development tools, programming techniques and computing equipment; participating in educational opportunities; reading professional publications; maintaining personal networks; participating in professional organizations;
💎Protect operations by keeping information confidential;
💎Provide information by collecting, analyzing and summarizing development and service issues;
💎Accomplish engineering and organization mission by completing related results as needed;
💎Support and develop software engineers by providing advice, coaching and educational opportunities;
💎First and foremost, developing software our users need;
💎Mentor junior and mid-level engineers;
💎Collaborate with team to brainstorm and create new products;
💎Grow engineering teams by interviewing, recruiting and hiring;
💎Make informed decisions quickly and taking ownership of services and applications at scale;
💎Work collaboratively with others to achieve goals;
💎Be a persistent, creative problem ­solver;
💎Remain cool and effective in a crisis;
💎Stay on the leading edge of development practices;
💎Passionate about great technologies, especially open source;
💎Understand business needs and know how to create the tools to manage them;

What do you need to succeed?
🚀More than 6 years developing software using Java (Spring/Spring Boot, Microservice architectures, REST) or .NET (Dynamics CRM experience would be a plus);
🚀Knowledge of Corba/Soap;
🚀Automation knowledge: Ansible, Terraform;
🚀DB Knowledge: Oracle, MySQL, PostgreSQL, Redis;
🚀Unit and Integration tests experience;
🚀Excellent OOP skills;
🚀Experience working with CICD, GIT, Jira, Jenkins;
🚀Should possess excellent debugging skills, should be able to analyse threads dumps, GC, Memory leaks.
🚀Excellent communication in English;
🚀Knowledge of Agile methodology;
🚀Very good soft skills, Teamwork and adaptability to challenges;

We offer:
🇺🇸Work for the USA compony
🔥Remote work
💵Official employment
☀️Flexible working hours
💊Medical insurance
🏖Paid vacation days
🎓Partial compensation for English classes

Отклики и рекомендации направляйте, пожалуйста, сюда 👉 @VBHRIT
Java: 2021 Beginners Programming Guide. 33 Best Java Tips and Tricks (2021)
Автор: Richard McGuire
Количество страниц: 366

Java - это язык программирования и вычислительная платформа, разработанная Sun Microsystems в 1995 году. Каждый день создается все больше и больше программ и веб-сайтов, совместимых с Java. Она считается надежным, быстрым и безопасным языком для создания больших программных приложений. Автор книги научит основам программирования на этом языке.

Скачать книгу
Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?

Непосредственно вызов finalize() происходит в отдельном потоке Finalizer (java.lang.ref.Finalizer.FinalizerThread), который создаётся при запуске виртуальной машины (в статической секции при загрузке класса Finalizer). Методы finalize() вызываются последовательно в том порядке, в котором были добавлены в список сборщиком мусора. Соответственно, если какой-то finalize() зависнет, он подвесит поток Finalizer, но не сборщик мусора. Это в частности означает, что объекты, не имеющие метода finalize(), будут исправно удаляться, а вот имеющие будут добавляться в очередь, пока поток Finalizer не освободится, не завершится приложение или не кончится память.

То же самое применимо и выброшенным в процессе finalize() исключениям: метод runFinalizer() у потока Finalizer игнорирует все исключения выброшенные в момент выполнения finalize(). Таким образом возникновение исключительной ситуации никак не скажется на работоспособности сборщика мусора.
Книги по Java - канал, где вы можете бесплатно КАЧАТЬ книги по Java программированию в два клика.

- качай книги
- читай
- становись программистом.
- зарабатывай 100-400 тысяч рублей.

Все книги 2016-2020 годов. Много русскоязычных.
Java Foundations: Introduction to Program Design and Data Structures (2019)
Авторы: John Lewis, Peter DePasquale, Joe Chase
Количество страниц: 1104

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

Скачать книгу
Что такое литералы?

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

 Test {
int a = 0b1101010110;
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
В этом классе “Hello world!” — литерал.

Переменная a - тоже литерал.

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

Как мы вас себе представляем: вы живете в Москве или около, программируете на Java на уровне миддла и имеете опыт публичных выступлений.

Что потребуется?
⁃ Участвовать в записи онлайн-видеокурсов, уроков по теории и практике программирования на Java.
⁃ Проверка домашних работ учащихся.

Условия. Загрузка от 5 часов в неделю. Оплата — от 2500 рублей за час съемки. Оплата сдельная, возможен вариант фиксированного заработка в рамках курса или роялти с продаж. Работа в профессиональной студии по удобному графику.

Отклики присылайте в Telegram @vlad_proglib
#вопросы_с_собеседований
Какие уровни изоляции транзакций поддерживаются в JDBC?
Уровень изолированности транзакций — значение, определяющее уровень, при котором в транзакции допускаются несогласованные данные, то есть степень изолированности одной транзакции от другой. Более высокий уровень изолированности повышает точность данных, но при этом может снижаться количество параллельно выполняемых транзакций. С другой стороны, более низкий уровень изолированности позволяет выполнять больше параллельных транзакций, но снижает точность данных.

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

«грязное» чтение (dirty read) — чтение данных, добавленных или изменённых транзакцией, которая впоследствии не подтвердится (откатится);

неповторяющееся чтение (non-repeatable read) — при повторном чтении в рамках одной транзакции ранее прочитанные данные оказываются изменёнными;

фантомное чтение (phantom reads) — ситуация, когда при повторном чтении в рамках одной транзакции одна и та же выборка дает разные множества строк.

Уровни изоляции транзакций определены в виде констант интерфейса java.sql.Connection:

TRANSACTION_NONE – драйвер не поддерживает транзакции;

TRANSACTION_READ_UNCOMMITTED – позволяет транзакциям видеть несохраненные изменения данных: разрешает грязное, непроверяющееся и фантомное чтения;

TRANSACTION_READ_COMMITTED – любое изменение, сделанное в транзакции, не видно вне неё, пока она не сохранена: предотвращает грязное чтение, но разрешает непроверяющееся и фантомное;

TRANSACTION_REPEATABLE_READ – запрещает грязное и непроверяющееся, фантомное чтение разрешено;

TRANSACTION_SERIALIZABLE – грязное, непроверяющееся и фантомное чтения запрещены.

NB! Сервер базы данных может не поддерживать все уровни изоляции. Интерфейс java.sql.DatabaseMetaData предоставляет информацию об уровнях изолированности транзакций, которые поддерживаются данной СУБД.

Уровень изоляции транзакции используемый СУБД можно задать с помощью метода setTransactionIsolation() объекта java.sql.Connection. Получить информацию о применяемом уровне изоляции поможет метод getTransactionIsolation().
#вопросы_с_собеседований
Какими свойствами обладает порождаемое equals() отношение эквивалентности?
☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.

Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.