Как понять Java-проект?

Java задняя часть

Давайте сначала поговорим о ситуации большинства новичков: просто стучишь Java-проект перед видео, баги, встречающиеся в нем, еще можно решить, но каждый раз, когда заканчиваешь стучать по проекту, чувствуешь себя очень пустым, а знания очки в проекте кажутся понятыми, но я, кажется, не понимаю, как я могу освоить очки знаний, используемые в проекте?

Поделимся опытом хорошего друга Дина Вэя, автора книги «RocketMQ Technology Insider». Он никогда не сталкивался с промежуточным программным обеспечением сообщений до того, как попытался изучить RocketMQ, но благодаря своим собственным усовершенствованным методам обучения он в конечном итоге стал отличным евангелистом в сообществе RocketMQ. Это дало ему очень привлекательную репутацию, что значительно повысило его конкурентоспособность на рабочем месте.

Его вывод состоит из следующих четырех пунктов:

  • Поймите варианты использования для этого проекта и обязанности, которые будут приняты на себя при проектировании архитектуры.
  • Ищите официальную документацию, чтобы понять философию дизайна этого проекта в целом.
  • Создайте собственную среду разработки и отладки, запустите официальные демо-примеры и заложите основу для последующих углубленных исследований.
  • Сначала основной процесс, а затем ответвленный процесс, обратите внимание на вырезание и разбейте их один за другим.

Я думаю, это имеет смысл. Помню, когда я только начал работать, после того, как мне организовал проект руководитель, я был очень растерян, я не знал, как начать, и я не знал, что делать. Иди спроси у лидера, лидер сказал, что нет времени, я хочу сначала провести исследование, что исследовать?

Сначала, конечно, не было никакой зацепки, но потом я потихоньку додумался до идеи.

Начните с документа требований проекта, сначала поймите, для чего проект, и не паникуйте. Затем запустить исходный код этого проекта локально, "запустить", это легко сказать, но на деле сделать это достаточно сложно, я помню, что на запуск первого проекта у меня ушло почти неделю, т.к. различия между окружением и требованиями проекта, что привело ко многим проблемам.

Есть две проблемы, которые меня очень впечатлили: первая — это искаженные символы, как на картинке ниже.

Второй — ошибка компиляции, причина очень проста, версия JDK не та.

Хотя эти две проблемы просты, они очень распространены, с ними в основном столкнутся новички. Когда я впервые столкнулся с этим, я сильно запаниковал, потому что с исходным кодом точно не будет проблем, а проблема должна быть в моей собственной среде разработки.

После более чем недели метаний проект наконец стартовал.

Я позволяю себе испытать роль теста, то есть нажать все кнопки, которыми можно управлять, и испытать, какие проекты были разработаны, а какие нет. Мне не потребовалось много времени, чтобы обнаружить две или три новые ошибки, которые в основном были вызваны какими-то нетрадиционными операциями.Хотя я не мог ее решить, лидер все равно был удивлен, сообщив об этом лидеру.Он посмотрел на меня с маленькие глаза. , Слегка посмотрев на Амона У Ся: «Молодой человек, прогресс есть!»

Потом, вместо того, чтобы спешить с заданием, поставленным руководителем разработки, я пошел посмотреть код, который доделал мой коллега.Конечно, я прочитал его с вопросами.Почему он так написал? Какая польза от написания таким образом? Если бы это был я, что бы я сделал? Разница в том, что я сам об этом не думаю?

Конечно, я не буду слишком много читать, потому что часть содержания выходит за рамки моих технических возможностей, а то, что я не могу понять, может быть только «прогулкой».

Вот напоминание о том,Никогда не увязайте в технических деталях, особенно в начале проекта, потому что я в бизнесе не разбираюсь, да и технический уровень может быть не на высоте, легко умереть при изучении технических деталей.

Другое дело, что базовые навыки должны быть твердыми, даже не вникая в общий контекст кода, это будет очень сложно.У меня есть учебник по Java с более чем 115 000 звезд на GitHub, который охватывает все аспекты знаний о Java, включая синтаксис Java, структуру сбора данных Java, Java IO, параллельное программирование на Java и виртуальную машину Java..

На GitHub собрано более 115 000 руководств по Java, очень хардкорно!

Постарайтесь уделить немного времени укреплению фундамента и не позволяйте себе быть слишком пассивным. Если вы столкнулись с незнакомой вам информацией, проявите инициативу, чтобы проверить ее.

При просмотре исходного кода добавьте несколько журналов, добавьте несколько точек останова и приступайте к работе. Иногда, если вы просто посмотрите на исходный код без добавления точек останова, вы можете упустить из виду некоторые ключевые технические детали, потому что Java полиморфна.В некоторых местах вы можете увидеть иерархическую связь между классами и классами, только просмотрев исходный код, но Не то, как подкласс переписывает метод родительского класса или как реализующий класс реализует интерфейс, можно ясно увидеть при отладке.

Также есть некоторые операторы ветки, если вы просто посмотрите на исходный код, то можете не понять, каковы условия входа в эту ветку. Есть также некоторые более важные технические детали.Вы можете не знать, просто взглянув на исходный код.Вы можете понять все это, шаг за шагом следуя точкам останова.

В качестве примера возьмем StringBuilder.append()метод. Внутренняя часть StringBuilder реализована в виде массива символов (Java 8), если длина вновь добавляемой строки превышает длину массива, его необходимо расширить. После добавления точки останова вы можете увидеть, как JDK расширяется, когда его необходимо расширить, как показано на следующем рисунке.

Вообще говоря, проект относительно большой, и код будет относительно большим.В настоящее время лучше всего сосредоточиться только на одном модуле, то есть на модуле, который вы знаете больше всего из документа с требованиями или читаете исходный код, и попытайтесь понять общую логику этого модуля.Если руководитель просто упорядочит бизнес-код этого модуля для вас, то ваши трудности с началом работы будут значительно уменьшены!

Подводя итог еще раз:

  • Получив проект, не спешите его делать, сначала посмотрите документы, особенно документы требований.
  • Запустите исходный код проекта локально.
  • Проведите некоторое тестирование, чтобы увидеть, сможете ли вы обнаружить некоторые пограничные ошибки.
  • Сосредоточьтесь на модуле и изучите исходный код, но не слишком углубляйтесь в технические детали.

Позвольте мне порекомендовать вам два отличных проекта с открытым исходным кодом Java.Если вы не участвовали в работе, вы можете использовать эти два проекта в качестве практических проектов.

  • Полная система электронной коммерции SpringBoot Mall: включая клиентскую систему торгового центра и серверную систему управления, основанную на реализации SpringBoot + MyBatis.
  • vhr: Micro HR — это система управления человеческими ресурсами с отдельными интерфейсом и сервером, проект разработан с помощью SpringBoot+Vue.

Проект электронной коммерции, который я делал раньше, также использовал торговый центр в качестве базовой структуры! Учебное пособие по торговому центру очень всеобъемлющее.Автор непосредственно сделал онлайн-сайт, и в основном используемые методы объясняются очень четко!

В настоящее время vhr имеет 20,8 тыс. звезд на GitHub, что является очень сильным показателем.

Стек серверных технологий

  • Spring Boot
  • Spring Security
  • MyBatis
  • MySQL
  • Redis
  • RabbitMQ
  • Spring Cache
  • WebSocket

...

Стек передовых технологий

  • Vue
  • ElementUI
  • axios
  • vue-router
  • Vuex
  • WebSocket
  • vue-cli4

...

В основном используются основные фронтенд и бэкэнд технологии. Автор специально записал видеоурок по развертыванию проекта для начинающих, очень интимный~

Документация очень обширна, поэтому я кратко перечислю ее.

  • Дизайн базы данных привилегий
  • Построение серверной среды
  • Динамически обрабатывать взаимосвязь между ролями и ресурсами
  • Пароль зашифрован и соленый
  • Унифицированная обработка исключений на стороне сервера
  • инкапсуляция запросов axios, унифицированная обработка исключений запросов
  • Привязать метод запроса к Vue
  • Сохраните статус входа
  • Динамически загружать компоненты после успешного входа в систему
  • Управление взаимоотношениями с ролевыми ресурсами
  • Управление отношениями ролей пользователей

По сути, у каждой точки знаний есть соответствующий документ, и если документ будет полным, это будет отличным подспорьем для понимания проекта.

Ну и последний момент,Когда вы делаете проект по тренировке рук, вы должны помнить о том, чтобы делать заметки.. Я встречал эту точку зрения во многих местах: «Пожалуйста, прекратите писать комментарии, потому что только плохой код нуждается в комментариях». Семья Мо любит и без отца. Без отца и без правителя она зверь».

Автор исходного кода Java, безусловно, лучший программист в мире, и они даже комментарии пишут.Те, кто призывает «пожалуйста, перестаньте писать комментарии», будут бить по морде, пока не опухнут.

Возьмем для примера String.Чтобы понять этот класс, достаточно посмотреть непосредственно аннотацию класса, которая написана очень подробно.

Хороший Java-проект тоже должен быть таким, аннотации должны быть на месте, иначе другие не поймут. Все, что я могу сказать, это автор исходного кода Java, yyds (Мастер Инь и Ян, ххх).

Я второй брат, как насчет лайка?