Зачем читать исходный код JDK
Конечно, не для притворства, ведь кому нечего ругать себя...
1,Не могу запустить интервью. Теперь, пока вы проводите собеседования на должности, связанные с Java, вы определенно будете в большей или меньшей степени затрагивать вопросы, связанные с исходным кодом JDK.
2,Не паникуйте, если вы понимаете принцип. Как пользователи JDK, хотя мы и говорим, что очень рады использовать его каждый день, но иногда нам все же приходится следить за базовым исходным кодом, чтобы увидеть, сталкиваемся ли мы с проблемами, чтобы помочь нам лучше понять принцип.
3.Изучайте хороший код, идеи и шаблоны. В конце концов, JDK — это отличная кодовая база. Мы используем ее каждый день, и в ней находится исходный код. Будучи начинающим программистом, чтение исходного кода также может позволить нам усваивать больше отличных идей и шаблонов.
4.Гипноз перед сном. Гм... но это работает (забавно).
Исходный код сложный?
Ерунда, конечно сложно, иначе я бы до сих пор не закончила, а я часто забываю, когда читаю, плачу...
В конце концов, исходный код, такой как JDK, отличается от нашей обычной практики рукописного написания небольших примеров и написания бизнес-кода.библиотека классов,дляпредставление,стабильность,общность,РасширяемостьУчитывая другие факторы, многиевспомогательный код,Дженерики, и немногоШаблоны проектированияУчитывая вышесказанное, это, конечно, не кажется таким уж простым,Не могу видеть сквозь это.
Так что это должно быть долгосрочным процессом, я лично предлагаю (включая себя), иногда сталкиваюсь с некоторыми проблемами, вы можете просмотреть исходный код некоторых компонентов или частей до конца, а затем сделать некоторые заметки, написать некоторые заметки и т. д., чтобы он мог постепенно проникать в большое количество контента.
Но у нас должно быть достаточно уверенности, я твердо верю, что все написали код, я не верю, что не могу его понять!
Как читать исходный код
1,Способ 1: Чтение по запросу. Если вы заинтересованы в компоненте, синтаксисе или функции, или если у вас есть какие-либо вопросы или сомнения, вы можете следить за базовым исходным кодом, чтобы просмотреть его по запросу.Это также более эффективный способ чтения, который может быстро укрепить доверие. .
2,Метод 2: систематическое чтение. Конкретное содержание чтения и рекомендации по порядку подробно описаны ниже.
3.множественная отладка: Если просто смотреть на это глазами, а потом мозгом отлаживать экран, то это все равно довольно сложно.Лучше использовать IDE для отладки вручную, и вы это узнаете в два шага.
4.Не просто читайте, не забудьте оставить что-то после прочтения. Я не думаю, что имеет значение, сколько вы читаете, важно то, сколько вы можете вывести.
Поэтому ниже мы собираемся создать среду чтения и отладки исходного кода Java.по прихоти,когда у тебя проблемы,В случае сомнений,скучающийВ любой момент вы можете открыть проект, чтобы посмотреть исходный код, сделать пометки и комментарии.
Создайте среду чтения и отладки исходного кода
Я лично считаю, что глядя на исходный код, мы должны завести отдельный Java-проект, поместить в него исходный код, а в него поместить тестовый код.Централизованная отладка,сосредоточиться на коде,Сосредоточьтесь на написании заметокболее удобный.
1. Создайте проект чтения исходного кода
Просто выберите наиболее распространенный базовый проект Java:
2. Создайте два каталога
Они есть:
-
source
: Поместите исходный код JDK позже. -
test
: Разместите тестовый код, в котором вы также можете создавать иерархические подкаталоги по мере необходимости.
3. Импортируйте исходный код JDK
Многие друзья спрашивалиГде исходный код JDK?
Далеко в небе, только перед тобой, на самом делеКаталог установки JDKможно найти ниже.
В каталоге установки JDK есть файл с именемsrc.zip
Сжатый пакет, это исходный код JDK!
Разархивируйте его и скопируйте в указанный выше проект.source
каталог, чтобы исходный код JDK был импортирован.
У некоторых друзей будут вопросы,Зачем импортировать копию исходного кода JDK в этот проект?На самом деле, главная причина заключается в том, чтобы облегчить нам чтение, отладку и создание заметок и комментариев в исходном коде.
Что касается того, как использовать этот исходный код JDK, далее будет объяснено следующее.
4. Отлаживайте и запускайте
мы можемtest
В директорию можно написать кусок тестового кода по желанию.
Например, здесь яHashMap
Например, вtest
Создайте подкаталог в каталогеhashmap
, а затем создайте тестовый файл основной записи внутриTest.java
, и поместите кусок тестового кода по желанию:
public static void main( String[] args ) {
Map<String,Double> hashMap = new HashMap<>();
hashMap.put( "k1", 0.1 );
hashMap.put( "k2", 0.2 );
hashMap.put( "k3", 0.3 );
hashMap.put( "k4", 0.4 );
for ( Map.Entry<String,Double> entry : hashMap.entrySet() ) {
System.out.println( entry.getKey() +":" + entry.getValue());
}
}
Затем приступайте к отладке.
Тем не менее, будет несколько проблем, которые необходимо решить одну за другой.
Вопрос 1: Сборка сообщает об ошибке при запуске отладки, указывающей на недостаточность системных ресурсов
Решение:увеличиватьBuild process heap size
.
Метод настройки:Preferences --> Build,Execution,Deployment --> Compiler
, по умолчанию будет700
Увеличьте значение , например, я установил его как1700
:
Вопрос 2. Я хочу выполнить пошаговую отладку из внешнего кода F7 в исходный код JDK, но не могу войти.
Это связано с тем, что при отладке исходный код JDK защищен, и обычно одноэтапная отладка не допускается, но ее можно настроить.
Решение::
Preferences --> Build,Execution,Deployment --> Debugger --> Stepping
Вопрос 3: Как аннотировать исходный код JDK?
После отладки в исходном коде JDK обнаруживается, что комментарии не могут быть сделаны.Каждый файл имеет небольшой значок замка.Это связано с тем, что связанный исходный код - это не исходный код, только что скопированный в наш проект, а каталог установки JDK.src.zip
Архив только для чтения.
Решение:Повторно свяжите путь исходного кода JDK с этим исходным кодом JDK в пути проекта.
Таким образом, мы можем успешно отлаживать и аннотировать исходный код JDK.
Структура исходного кода и порядок чтения
В конце концов, исходный код JDK слишком велик, и все нереально, мы все еще готовы откопать важный контент в соответствии с частотой ежедневного использования и осмотром интервью.
Если у вас нет специального плана, вы можете следовать предложенному порядку чтения, как показано ниже:
Конкретное содержание выглядит следующим образом:
1,java.lang
На самом деле это основной синтаксис Java, такой как различные основные типы упаковки (Integer
,Long
,Double
д.), базовые классы (Object
,Class
,Enum
,Exception
,Thread
)так далее...
2,java.lang.annotation
Содержит исходный код, относящийся к основным элементам аннотаций Java.
3.java.lang.reflect
Содержит код, связанный с основными элементами отражения Java.
4.java.util
Здесь собраны все основные инструменты Java, самые типичные и часто используемые — это различные контейнеры и коллекции (List
,Map
,Set
)
5.java.util.concurrent
Знаменитый пакет JUC содержит код, связанный с параллелизмом Java и многопоточным программированием.
6.java.util.function
+java.util.stream
Содержит общие интерфейсы и код для функционального программирования на Java.
7.java.io
Содержит исходный код, относящийся к традиционному вводу-выводу Java, в основном байтовый и потоковый ввод-вывод.
8,java.nio
Содержит исходный код, связанный с неблокирующим вводом-выводом Java, в основном ввод-вывод для буферов, каналов и селекторов.
9,java.time
Содержит код, связанный с новой датой и периодом Java, наиболее типичным из которых являетсяLocalDateTime
,DateTimeFormatter
Ждать
10.java.math
В основном содержит некоторые вспомогательные классы данных для высокоточных операций.
11.java.net
В основном включает сетевое взаимодействие Java (обычно такое, как:Socket
связь) соответствующий исходный код.
взаимное поощрение
Посмотрите на исходный код, торопиться нельзя, быстрее быть медленнее! взаимное поощрение.