основная версия |
Время обновления |
Примечание |
v1.0 |
2015-08-01 |
Начальная версия |
v1.1 |
2018-03-12 |
Расширьте знания о новых технологиях и улучшите систему знаний |
v2.0 |
2019-02-19 |
Структурная перестройка, более подходящая от входа до мастерства, дальнейшее совершенствование системы знаний, новые технологические дополнения; |
1
Основы
01объектно-ориентированный
→ Что такое ориентация объекта
объектно-ориентированный, процессно-ориентированный
Три основные характеристики и пять основных принципов объектной ориентации
→ Независимость от платформы
Как Java реализует независимость от платформы
Какие еще языки поддерживает JVM (Kotlin, Groovy, JRuby, Jython, Scala)
→ пройти по значению
передача по значению, передача по ссылке
Почему Java работает только по значению?
→ Инкапсуляция, наследование, полиморфизм
Что такое полиморфизм, переопределение и перегрузка методов
Наследование и реализация в Java
Конструктор против конструктора по умолчанию
Переменные класса, переменные-члены и локальные переменные
переменная-член и область действия метода
02 Основы Java→ основные типы данных
7 основных типов данных: Integer, Float, Boolean, Character
Диапазон значений byte, short, int и long в целочисленном типе
Что такое тип с плавающей запятой? Что такое одинарная и двойная точность? Почему сумма не может быть представлена числом с плавающей запятой?
→ Автоматическая распаковка
Что такое типы упаковки, что такое примитивные типы, что такое автораспаковка
Целочисленный механизм кэширования
→ Строка
неизменность строк
Принцип и отличие подстроки в JDK 6 и JDK 7,
replaceFirst, replaceAll, замена разницы,
Перегрузка строки "+", несколько способов и отличия склейки строк
Разница между String.valueOf и Integer.toString,
переключить поддержку String
Пул строк, постоянный пул (постоянный пул времени выполнения, постоянный пул класса), стажер
→ Знаком с различными ключевыми словами в Java
Принцип и использование переходного процесса, instanceof, final, static, volatile, synchronized, const
→ Класс коллекции
Использование общих классов коллекций, разница между ArrayList и LinkedList и Vector, разница между SynchronizedList и Vector, разница между HashMap, HashTable, ConcurrentHashMap,
В чем разница между набором и списком? Как Set гарантирует, что элементы не повторяются?
Связанное использование потока в Java 8, использование класса инструментов обработки коллекций Apache, разница между реализацией HashMap в разных версиях JDK и причины
Разница между коллекцией и коллекциями
На что следует обратить внимание при использовании списка, полученного с помощью Arrays.asList
Разница между перечислением и итератором
отказоустойчивый и отказоустойчивый
CopyOnWriteArrayList, ConcurrentSkipListMap
→ перечислить
Использование перечисления, реализация перечисления, перечисление и синглтон, класс Enum
Как сравниваются перечисления Java
переключить поддержку перечислений
Как реализовать сериализацию перечисления
Проблемы безопасности потоков с перечислениями
→ ИО
поток символов, поток байтов, входной поток, выходной поток,
Синхронная, асинхронная, блокирующая, неблокирующая, Linux 5 моделей ввода-вывода
Разница между BIO, NIO и AIO, использование и принципы трех IO, netty
→ отражение
Отражение и заводской режим, какая польза от отражения
Класс класса, java.lang.reflect.*
→ Динамический прокси
статический прокси, динамический прокси
Связь между динамическим прокси и отражением
Несколько реализаций динамических прокси
AOP
→ сериализовать
Что такое сериализация и десериализация, почему сериализация, базовый принцип сериализации, сериализация и одноэлементный режим, protobuf, почему сериализация небезопасна
→ Примечания
Мета-аннотации, пользовательские аннотации, использование общих аннотаций в Java, сочетание аннотаций и рефлексии
Весенние общие аннотации
→ JMS
Что такое служба сообщений Java, модель обмена сообщениями JMS
→ JMX
java.язык.управление.*, javax.управление.*
→ Дженерики
Дженерики и наследование, стирание типов, значение объекта KTVE? в дженериках, различные варианты использования дженериков
Квалифицированные и неквалифицированные подстановочные знаки, квалификаторы верхней и нижней границы расширяют и супер
Разница между списком и списком примитивных типов?
В чем разница между List> и List
→ модульные тесты
junit, mock, mockito, база данных в памяти (h2)
→ регулярные выражения
java.lang.util.regex.*
→ Часто используемые библиотеки инструментов Java
commons.lang, commons.*..., библиотеки гуавы, netty
→ API и SPI
Взаимосвязь и разница между API, API и SPI
Как определить принцип реализации SPI и SPI
→ ненормальный
Типы исключений, правильная обработка исключений, пользовательские исключения
Ошибка и исключение
Цепочка исключений, попытка с ресурсами
Порядок выполнения наконец и возврата
→ Обработка времени
Часовые пояса, зимнее и летнее время, метки времени, API времени в Java
Значение и взаимосвязь нескольких общих времен, таких как среднее время по Гринвичу, CET, UTC, GMT, CST.
Проблемы безопасности потоков с SimpleDateFormat
Обработка времени в Java 8
Как получить американское время на компьютере в Восточном восьмом округе
→ Метод кодирования
Юникод, зачем тебе UTF-8 с Юникодом
Разница между ГБК, ГБ2312, ГБ18030
Разница между UTF8, UTF16, UTF32
Кодирование URL, Big Endian и Little Endian
Как исправить искаженные символы
→ синтаксический сахар
Принцип синтаксического сахара в Java, решение синтаксического сахара
Синтаксический сахар: переключатель поддерживает String и перечисление, дженерики, автоупаковку и распаковку, параметры переменной длины метода, перечисление, внутренние классы, условную компиляцию, утверждения, числовые литералы, for-each, try-with-resource, лямбда-выражения
03 Читать исходный код
Строка, Целое, Длинное, Перечисление,
BigDecimal, ThreadLocal, ClassLoader и URLClassLoader,
ArrayList и LinkedList,
HashMap и LinkedHashMap и TreeMap и CouncurrentHashMap, HashSet и LinkedHashSet и TreeSet
04 Параллельное программирование на Java→ Параллелизм и параллелизм
Что такое параллелизм и что такое параллелизм
Разница между параллелизмом и параллелизмом
→ Что такое поток и отличие от процесса
Реализация потока, статус потока, приоритет, планирование потока, несколько способов создания потока, потоки демона
разница между потоком и процессом
→ пул потоков
Создайте свой собственный пул потоков, submit() и execute(), принцип пула потоков
Почему нельзя создавать пулы потоков с Executors
→ потокобезопасность
Тупик, как устранить взаимоблокировку, взаимосвязь между потокобезопасностью и моделью памяти
→ замок
CAS, оптимистичные блокировки и пессимистичные блокировки, механизмы блокировки, связанные с базой данных, распределенные блокировки, предвзятые блокировки, облегченные блокировки, тяжелые блокировки, монитор,
Оптимизация блокировки, устранение блокировки, огрубление блокировки, спин-блокировка, реентерабельная блокировка, блокирующая блокировка, взаимоблокировка
→ тупик
что такое тупик
Как решить тупик
→ синхронизированный
Как реализована синхронизация?
Связь между синхронизацией и блокировкой, как реализовать потокобезопасный синглтон без синхронизации
Связь между синхронизацией и атомарностью, видимостью и упорядоченностью
→ летучий
происходит раньше, барьеры памяти, переупорядочивание инструкций компилятора и переупорядочивание инструкций ЦП
Принцип реализации volatile
Связь между volatile и атомарностью, видимостью и упорядоченностью
Зачем вам volatile с symchronized
→ спать и ждать
→ ждать и уведомить
→ уведомить и уведомить всех
→ ThreadLocal
→ Написать заблокированную программу
→ Напишите код для решения проблемы производитель-потребитель
→ Параллельный пакет
Thread, Runnable, Callable, ReentrantLock, ReentrantReadWriteLock, Atomic*, Semaphore, CountDownLatch, ConcurrentHashMap, Executors
2
Нижний слой
01 JVM→ Структура памяти JVM
формат файла класса, область данных времени выполнения: куча, стек, область методов, прямая память, постоянный пул времени выполнения,
разница между кучей и стеком
Обязательно ли объекты в Java размещаются в куче?
→ Модель памяти Java
Модель памяти компьютера, когерентность кэша, протокол MESI
Видимость, атомарность, последовательность, «происходит до»,
Барьеры памяти, синхронизированные, энергозависимые, окончательные, блокировки
→ Вывоз мусора
Алгоритмы GC: развертка пометки, подсчет ссылок, репликация, уплотнение пометки, сбор по поколениям, пошаговый сбор
Параметры GC, определение выживаемости объектов, сборщики мусора (CMS, G1, ZGC, Epsilon)
→ Параметры и настройка JVM
-Xmx, -Xmn, -Xms, Xss, -XX:Коэффициент выживания,
-XX:PermSize, -XX:MaxPermSize, -XX:MaxTenuringThreshold
→ Объектная модель Java
oop-klass, заголовок объекта
→ Горячая точка
Своевременный компилятор, оптимизация компиляции
→ Инструменты мониторинга производительности виртуальных машин и устранения неполадок
jps, jstack, jmap, jstat, jconsole, jinfo, jhat, javap, btrace, TProfiler
Arthas
02 механизм загрузки классов
classLoader, процесс загрузки классов, родительское делегирование (уничтожить родительское делегирование), модульность (модули jboss, osgi, jigsaw)
03 Компиляция и декомпиляция
Что такое компиляция (front-end компиляция, back-end компиляция), что такое декомпиляция
JIT, оптимизация JIT (анализ экранирования, выделение в стеке, скалярная замена, оптимизация блокировок)
Компилятор: javac
Инструменты декомпиляции: javap, jad, CRF
3
Передовой
01 Базовые знания Java→ Байт-код, формат файла класса
→ Кэш ЦП, L1, L2, L3 и ложное совместное использование
→ хвостовая рекурсия
→ битовая операция
Сложение, вычитание, умножение, деление и получение остатка с помощью побитовых операций
02 Шаблоны проектированияШесть принципов шаблонов проектирования:
Принцип открытия-закрытия, принцип подстановки Лискова, принцип обращения зависимости
Принцип разделения интерфейса, принцип Деметры (принцип наименьшего знания) (принцип Деметры), принцип повторного использования композита
→ Узнайте о 23 шаблонах проектирования
Шаблоны создания: шаблон singleton, абстрактный шаблон factory, шаблон строителя, шаблон factory, шаблон прототипа.
Структурные шаблоны: шаблон адаптера, шаблон моста, шаблон украшения, шаблон композиции, шаблон внешнего вида, шаблон легковеса, шаблон прокси.
Поведенческие шаблоны: шаблон метода шаблона, шаблон команды, шаблон итератора, шаблон наблюдателя, шаблон посредника, шаблон меморандума, шаблон интерпретатора (шаблон интерпретатора), шаблон состояния, шаблон стратегии, шаблон цепочки ответственности (шаблон цепочки ответственности), режим пользователя доступа.
→ Будет использовать общие шаблоны проектирования
Семь способов написать синглтон: ленивый человек — потокобезопасный, ленивый человек — потокобезопасный, голодный человек, голодный человек — вариант, статический внутренний класс, перечисление, блокировка с двойной проверкой
Шаблон фабрики, шаблон адаптера, шаблон стратегии, шаблон метода шаблона, шаблон наблюдателя, шаблон внешнего вида, шаблон прокси и т. д.
→Реализовать поточно-ориентированный одноэлементный шаблон без синхронизации и блокировки
→ Внедрить АОП
→ Реализовать МОК
→ схемы проектирования нио и реакторов
03 Знание сетевого программирования→ Общие протоколы, такие как tcp, udp, http, https
Трехстороннее рукопожатие и четырехкратное закрытие, управление потоком и контроль перегрузки, семиуровневая модель OSI, привязка и распаковка tcp
→ Разница до http/1.0 http/1.1 http/2
Разница между get и post в http
Коды состояния, возвращаемые обычными веб-запросами
Что означают 404, 302, 301 и 500?
→ http/3
→ Java RMI, сокет, HttpClient
→ куки и сеансы
куки отключены, как реализовать сессию
→ Напишите простой HTTP-сервер для статических файлов на Java
→ Понять характеристики серверов nginx и apache и построить соответствующий сервер
→ Внедрение протоколов FTP и SMTP с помощью Java
→ Способ межпроцессного взаимодействия
→ Что такое CDN? Если реализовано?
→ DNS
Что такое DNS, типы записей: записи A, записи CNAME, записи AAAA и т. д.
Разрешение доменных имен, корневой сервер доменных имен
Загрязнение DNS, перехват DNS, общедоступный DNS: 114 DNS, Google DNS, OpenDNS
→ обратный прокси
Прямой прокси, обратный прокси
обратный прокси-сервер
04 Базовые знания→ Сервлет
жизненный цикл
вопросы безопасности потоков
фильтр и слушатель
Общие конфигурации и функции в web.xml
→ Спящий режим
Что такое OR Mapping
Ленивая загрузка в Hibernate
Механизм кэширования Hibernate
Разница между Hibernate/Ibatis/MyBatis
→ Весна
Инициализация бина
Принципы АОП
Реализация Spring IOC
Четыре метода внедрения зависимостей Spring
→ Весенний МВК
Что такое МВК
Разница между Spring mvc и Struts mvc
→ Весенняя загрузка
Spring Boot 2.0, стартовые зависимости, автоматическая настройка,
Стартерный принцип Spring Boot, реализуйте стартер самостоятельно
→ Весенняя безопасность
→ Весеннее облако
Открытие и регистрация сервисов: Eureka, Zookeeper, Consul
Балансировка нагрузки: Feign, Spring Cloud Loadbalance
Конфигурация службы: Spring Cloud Config
Ограничение рабочего тока и автоматический выключатель: Hystrix
Отслеживание служебных ссылок: Dapper
Сервисный шлюз, безопасность, обмен сообщениями
05 Знание сервера приложений→ ДжейБосс
→ кот
→ причал
→ Веблогика
06 инструмент→ git и svn
→ maven и градиент
→ Интеллидж ИДЕЯ
Распространенные плагины: Maven Helper, FindBugs-IDEA, Alibaba Code Specification Detection, GsonFormat.
Плагин Lombok, .ignore, плагин Mybatis
4
Передовой
01 новая технология→ Ява 8
лямбда-выражения, Stream API, Time API
→ Ява 9
Jigsaw, Jshell, реактивные потоки
→ Ява 10
Вывод типа локальной переменной, параллельный полный сборщик мусора G1, механизм рукопожатия ThreadLocal
→ Ява 11
ZGC, Эпсилон, Расширенный вариант
→ Весна 5
реактивное программирование
→ Весенняя загрузка 2.0
→ HTTP/2
→ HTTP/3
02 Оптимизация производительностиИспользуйте синглтон, используйте шаблон Future, используйте пул потоков
Выберите готовность, уменьшите переключение контекста, уменьшите детализацию блокировки, сжатие данных, кэширование результатов
03 онлайн анализ проблем→ дамп получить
Дамп потока, дамп памяти, ситуация с gc
→ анализ дампа
Анализ взаимоблокировок и анализ утечек памяти
→ инструменты анализа и получения дампа
jstack, jstat, jmap, jhat, Артас
→ Пишите различные программы outofmemory, stackoverflow самостоятельно
HeapOutOfMemory, Молодой OutOfMemory,
MethodArea OutOfMemory, ConstantPool OutOfMemory,
DirectMemory OutOfMemory, стек OutOfMemory Stack Overflow
→ Артас
Связанный с JVM, связанный с классом/загрузчиком классов, связанный с мониторингом/наблюдением/трассировкой,
опции, каналы, фоновые асинхронные задачи
Документация: https://alibaba.github.io/arthas/advanced-use.html
→ Общие идеи решения проблем
Переполнение памяти, взаимоблокировка потока, конфликт загрузки классов
→ Используйте инструменты, чтобы попытаться решить следующие проблемы и написать резюме
Как найти проблемы, когда программа Java медленно отвечает
Как решить проблему, когда в Java-программе частый FullGC
Как просмотреть журналы сборки мусора
Как решить, когда OutOfMemory возникает в приложении Java
Как определить, возникает ли взаимоблокировка
Как узнать, есть ли утечка памяти
Используйте Arthas для быстрого устранения проблем с приложением Spring Boot 404/401
Используйте Arthas для устранения проблем с полным журналом онлайн-приложений
Использование Arthas для устранения неполадок приложения Spring Boot NoSuchMethodError
04 Знание принципа компиляции→ Компиляция и декомпиляция
→ Компиляция и декомпиляция кода Java
→ Декомпилятор Java
javap, jad, CRF
→ Своевременный компилятор
→ Процесс компиляции
Лексический анализ, синтаксический анализ (алгоритм LL, алгоритм рекурсивного спуска, алгоритм LR)
Семантический анализ, среда выполнения, промежуточный код, генерация кода, оптимизация кода
05 Знание операционной системы→ Общие команды в Linux
→ Межпроцессное взаимодействие
→ Синхронизация процессов
Проблема производителя-потребителя, проблема обедающего философа, проблема читателя-писателя
→ переполнение буфера
→ Сегментация и пагинация
→ Виртуальная память и основная память
→ Управление виртуальной памятью
→ алгоритм подачи страницы
06 Знание баз данных→ Механизм выполнения MySQL
→ План выполнения MySQL
Как просмотреть план выполнения и как оптимизировать SQL на основе плана выполнения
→ Индекс
Хэш-индекс, индекс дерева B (дерево B+ и дерево B, дерево R)
Обычный индекс, уникальный индекс
Покрывающий индекс, принцип крайнего левого префикса, проталкивание индекса вниз
→ SQL-оптимизация
→ Транзакции базы данных и уровни изоляции
Уровень изоляции транзакции и независимо от того, может ли транзакцию реализовать функцию блокировки
→ блокировка базы данных
Блокировки строк, блокировки таблиц, оптимистическая блокировка с использованием блокировок базы данных,
→ Подключить
внутреннее соединение, левое соединение, правое соединение
→ Активная и резервная база данных
→ бинлог
→ перелог
→ База данных в памяти
h2
→ Подбиблиотека и подтаблица
→ разделение чтения-записи
→ Обычно используемая база данных NoSql
редис, memcached
→ Используйте блокировки базы данных и NoSql для реализации распределенных блокировок соответственно
→ Настройка производительности
→ Пул соединений с базой данных
07 Знание структуры данных и алгоритмов→ Простая структура данных
стек, очередь, связанный список, массив, хеш-таблица,
Сходства и различия между стеками и очередями
Две структуры хранения, обычно используемые стеками
→ дерево
Двоичное дерево, словарное дерево, сбалансированное дерево, отсортированное дерево,
B-дерево, B+ дерево, R-дерево, многоканальное дерево, красно-черное дерево
→ куча
большая куча, маленькая куча
→ Рисунок
Ориентированный граф, неориентированный граф, топология
→ Алгоритм сортировки
Стабильная сортировка: пузырьковая сортировка, сортировка вставками, коктейльная сортировка, сортировка ведра, сортировка подсчетом, сортировка слиянием, сортировка слиянием на месте, сортировка бинарным деревом, сортировка по ячейкам, сортировка по основанию, сортировка гномов, сортировка библиотекой, блочная сортировка
Нестабильная сортировка: сортировка выбором, сортировка холма, алгоритм сортировки клевера, сортировка гребнем, сортировка кучей, гладкая сортировка, быстрая сортировка, сортировка самоанализа, сортировка терпения
Различные алгоритмы сортировки и временная сложность
→ Два стека реализуют очереди, а две очереди реализуют стеки
→ Поиск в глубину и в ширину
→ Полная перестановка, жадный алгоритм, алгоритм KMP, хэш-алгоритм
→ Массовая обработка данных
Разделяй и властвуй, хеш-карта, сортировка кучей, раздел с двумя сегментами, фильтр Блума, растровое изображение, индекс базы данных, mapreduce и т. д.
08 Знание больших данных→ Смотритель зоопарка
Основные понятия и общее использование
→ Solr, Lucene, ElasticSearch
Развертывание solr, solrcloud в Linux, добавление, удаление, запрос индексов
→ Storm, потоковые вычисления, понимание Spark, S4
Разверните Storm на Linux, координируйте свои действия с zookeeper, запускайте Storm Hello World, запускайте и отлаживайте топологию Storm в локальном и удаленном режиме.
→ Hadoop, автономные вычисления
HDFS, MapReduce
→ Распределенный сбор логов flume, kafka, logstash
→ интеллектуальный анализ данных, погонщик
09 Знание сетевой безопасности→ XSS
Защита от XSS
→ CSRF
→ Инъекционная атака
SQL-инъекция, XML-инъекция, CRLF-инъекция
→ Уязвимость при загрузке файлов
→ Шифрование и дешифрование
Симметричное шифрование, Асимметричное шифрование, Алгоритм хеширования, Алгоритм соленого хеширования
MD5, SHA1, DES, AES, RSA, DSA
радужный стол
→ ДДОС-атака
DOS-атака, DDOS-атака
Почему memcached может привести к DDos-атакам и что такое отражающий DDoS
Как провести DOS-атаку с хеш-коллизией
→SSL, TLS, HTTPS
→ Подпишите сертификат с помощью openssl и разверните его на apache или nginx.
5
Архитектура
01 распределенныйНепротиворечивость данных, управление услугами, деградация услуг
→ Распределенные транзакции
2PC, 3PC, CAP, BASE, надежная согласованность сообщений в конечном итоге, уведомление о максимальных усилиях, TCC
→ Даббо
Регистрация службы, обнаружение службы, управление службами
http://dubbo.apache.org/zh-cn/
→ Распределенная база данных
Как построить распределенную базу данных, когда нужна распределенная база данных,
мой кот, выдра, HBase
→ Распределенная файловая система
мфс, фастдфс
→ Распределенный кеш
Когерентность кэша, частота попаданий в кэш, избыточность кэша
→ Снижение текущего лимита
Хайстрикс, Страж
→ Алгоритмы
Алгоритм консенсуса, протокол Raft, алгоритм Paxos и алгоритм Raft,
Византийские задачи и алгоритмы, 2ПК, 3ПК
02 МикросервисыSOA, закон Конвея
→ Сервисная сетка
sidecar
→ Докер и Кубернетес
→ Весенняя загрузка
→ Весеннее облако
03 Высокий параллелизм→ Подбиблиотека и подтаблица
→ Технология CDN
→ очередь сообщений
ActiveMQ
04монитор
→ что мониторить
ЦП, память, дисковый ввод-вывод, сетевой ввод-вывод и т. д.
→ Средства мониторинга
Мониторинг процессов, семантический мониторинг, мониторинг машинных ресурсов, колебания данных
→ Мониторинг сбора данных
журнал, журнал
→ щеголеватый
05 балансировки нагрузкибалансировка нагрузки tomcat, балансировка нагрузки Nginx
Балансировка нагрузки уровня 4, балансировка нагрузки уровня 7
06 DNSПринцип DNS, дизайн DNS
07 CDNсогласованность данных
6
Расширение
01 облачные вычисленияIaaS, SaaS, PaaS, технология виртуализации, openstack, Serverlessess
02 поисковый движокSolr, Lucene, Nutch, Elasticsearch
03 управление полномочиямиShiro
04 Блокчейн
Алгоритм хеширования, дерево Меркла, алгоритм шифрования с открытым ключом, алгоритм консенсуса,
Протокол Raft, алгоритм Paxos и алгоритм Raft, византийская проблема и алгоритм, код аутентификации сообщения и цифровая подпись
→ Биткойн
Майнинг, Механизм консенсуса, Lightning Network, Сайдчейны, Горячие вопросы, Вилки
→ Эфириум
→ Гиперледжер
05 искусственный интеллект
Математическая основа, машинное обучение, искусственная нейронная сеть, глубокое обучение, сценарии применения.
→ Общие рамки
TensorFlow, DeepLearning4J
06 много 07 квантовые вычисления 08 дополненная и виртуальная реальность 09 Другие языки
Groovy, Python, Go, NodeJs, Swift, Rust
7
Рекомендуемые книги
«Углубленное понимание виртуальной машины Java» «Эффективная Java» «Углубленный анализ инсайдерской веб-технологии Java» «Технологическая архитектура крупных веб-сайтов» «Путь к чистому коду» «Путь к чистой архитектуре» «Первые шаблоны проектирования» "maven Actual Combat" "Принцип цепочки блоков, дизайн и применение" "Практика параллельного программирования на Java" "Частная кухня Brother Bird на Linux" "От Paxos до Zookeeper" "Архитектура - это будущее"
Добро пожаловать на общедоступный номер: Hollis (ID: hollischuang),
Закулисный диалог ответил: «Стать проводником Бога»,
Вы можете получить ментальную карту пути к тому, чтобы стать богом.
Серия статей о том, как стать Java-инженером
В обновлении GitHub добро пожаловать в подписку, добро пожаловать в звезду.
Столкнувшись с проблемой Java 206: что такое Stream в Java 8
Дорога к Богу, выпуск 015: Шаблоны проектирования: одноэлементный шаблон
Углубленная проблема параллелизма 006: правильное использование пулов потоков Java
- ЕЩЕ | Другие интересные статьи -
Если вам понравилась эта статья,
Пожалуйста, нажмите и удерживайте QR-код, чтобы следовать Hollis.
Пересылка его в круг друзей - это самая большая поддержка для меня.