Крупные галантереи, путь к восхождению Java-инженеров

Java

эта статьяGitHub.com/smile Arch IT…Записано.
JavaMap — это карта знаний Java, предназначенная для того, чтобы разработчики могли учиться, не теряясь! Изучение Java, пожалуйста, ищите JavaMap.

Как стать архитектором?

В глазах всех статус "архитектор" высок и непреодолим.На самом деле это не так сложно как себе представляли.Знаю архитектора небольшого предприятия.Проработал 9 лет,но его уровень эквивалентен Али Р6 , до уровня P7.

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

Без лишних слов давайте возьмем в качестве примера язык Java, чтобы рассказать о том, как только что окончивший курс шаг за шагом совершенствуется и, наконец, взлетает.

Мастер ведет дверь, а практика в индивидуальном порядке

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

Этап 1: Очищение Ци

Очищение ци - собственно соответствующая запись.На этом этапе вам необходимо освоить:

1. Java: широко известен как JavaSE. Это относится не только к синтаксису Java, но и к использованию JDK и пониманию исходного кода. Эти знания очень сложны и очень важны. Чтобы хорошо их изучить, требуется несколько лет. Рекомендуемый способ обучения:

(1) «Эффективная Java» позволяет вам почувствовать изгибы и повороты в Java, не такие глупые и приятные, как простая грамматика.

(2) Экзамен OCJP, это официальный сертификационный экзамен Oracle, который позволяет вам полностью понять особенности Java, что очень важно.

(3) Многоядерный ЦП «Практика параллельного программирования» поставляется с кешем L2, но совместно использует память и потоки, сложные блокировки, строка кода Java компилируется в несколько строк машинных инструкций, а ЦП может переключать потоки между любыми машинными инструкциями. Столкнувшись с такой сложной аппаратной средой, как Java разработан, чтобы гарантировать правильность программы.

2. Алгоритмы и структуры данных

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

(2) «Введение в алгоритмы», этой книги достаточно для прочтения, надеюсь, вы ее поймете.

Этап 2: Строительство фундамента

С самого начала каждый кирпич и плитка является фундаментом. Обучение так же важно, как и создание фундамента. Фундамент определяет ваш будущий рост. То же самое и с восхождением к бессмертным.На этом этапе нужно освоить:

1. Шаблоны проектирования: «Шаблоны проектирования», Gang Of Four. Режим проектирования четырех старых орудий научит вас некоторым фиксированным движениям, чтобы справиться с различными классическими сценами.

2. JVM: «Углубленное понимание виртуальной машины Java». В первые годы, если вы говорили, что понимаете принципы JVM, то вы были лучшим талантом в Java в Китае.Теперь знание JVM прогнило, и это стало обязательным эссе для интервью. Вам нужно понять, как JVM использует память, как GC, как настроить параметры запуска, как просмотреть файлы дампа.

3. Сетевое программирование. Вам необходимо понимать протоколы HTTP и TCP/IP, а также понимать, как сетевой кабель соединяет всю сеть.

4. Различное промежуточное ПО для распределенных систем

(1) Dubbo, один из самых известных проектов с открытым исходным кодом в Китае, найдите даббо-книгу от Али и прочтите. Ядро децентрализованной распределенной архитектуры заменяет продукты SOA от IBM (централизованные архитектуры подвержены узким местам в производительности).

(2) ZooKeeper, рекомендуется прочитать Красную книгу ZooKeeper. ZK — это инструмент координации согласованности данных для распределенных систем. В одномашинном процессе выполнение кода считается полностью надежным.Или выполнение выполняется успешно, или выполнение не выполняется.В распределенной системе сетевые вызовы между процессами часто истекают по тайм-ауту, что создает проблемы, когда происходит тайм-аут.Успех или не удалось?Простое суждение. Понимание CAP Понимание непротиворечивости данных распределенной системы является гарантией того, что распределенные системы не будут давать сбоев.

(3) Кафка, порекомендуйте "Полное руководство по Кафке". Чтобы понять, почему это так быстро, так надежно и так много места для хранения. Это также наиболее удобная система для понимания идемпотентности.

(4) MySQL, притворяясь промежуточным программным обеспечением, рекомендует «Высокая производительность MySQL», «Инсайдер технологии MySQL: механизм хранения InnoDB». Чтобы понять реализацию красно-черных деревьев и индексов, а также понять принцип работы механизма хранения InnoDB, вы можете лучше понять различные эхо-результаты после объяснения sql, что поможет вам лучше настроить SQL. Кстати, MyISAM заброшен, можно читать на одну книгу меньше и получать удовольствие.

(5) нгинкс. Причина, по которой могут существовать множественные идемпотентные существования, полностью зависит от него. Узнайте о его однопоточной технологии, очевидно, что она однопоточная, но может обеспечить высокую производительность. nginx: Мне просто не нравится ваша многопоточность, что не так? Только по-настоящему поняв принципы работы компьютеров, мы сможем вернуться к основам.

(6) Нетти, порекомендуйте «Полное руководство по Netty». До 2002 года многие системы блокировали ввод-вывод, а в последующие годы компьютерная сеть резко ускорилась.Почему? JDK1.4 был выпущен в 2002 году, а Netty появилась в 2004. Раньше производительность многих компьютерных сетей блокировалась при вводе-выводе и не освобождалась, после появления NIO эффективность ввода-вывода значительно повысилась. Я предполагаю, что после того, как JDK поддержит NIO, веб-контейнеры, такие как Tomcat, вскоре появятся и обновятся, поэтому возможности параллельного ответа веб-сайтов по всему миру были значительно улучшены без изменения аппаратных ресурсов.

(7) Flume, система сбора и передачи бревен.

(8) Protobuf, сериализация также позволяет сосредоточиться на производительности.

(9) Tomcat, слишком известный, изучите идею дизайна загрузчика классов.

5. JavaEE, стандарт разработки корпоративного уровня, существующий только по названию, от большинства из которых отказались в отрасли, но по-прежнему полезные знания, такие как сервлет, JMX и т. д. Конец эпохи, увы.

6. Принцип компиляции и операционная система: я предполагаю, что вы изучали ее, когда учились в колледже.Если вы не изучали ее, вам следует хотя бы прочитать операционную систему и порекомендовать учебники для бакалавров Университета Цинхуа.

7. Архитектура распределенной базы данных требует освоения подтаблиц подбазы данных, гетерогенных индексов, главной и резервной базы данных и т. д. Рекомендуется прочитать книгу Ali Ocean Base, «Крупномасштабная распределенная система хранения: анализ принципов и практика архитектуры». Кроме того, рекомендую книгу «Проектирование систем, интенсивно использующих данные», которую можно назвать общей историей проектирования систем хранения.

8. Spring и Mybatis, осваивайте и пользуйтесь, лучше уметь читать исходники.

9. Моделирование UML, рекомендуем "Руководство пользователя UML".

Этап 3: Преображение божества

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

На этом этапе вы обнаружите, что кривая обучения становится все круче и круче.

1. Методология проектирования архитектуры, рекомендуем «Проектирование архитектуры программного обеспечения», чтобы научить вас правилам ведения дел.

2. Дизайн, ориентированный на предметную область. Я рекомендую «Дизайн, управляемый предметной областью» Эрика, который очень неясен и непрост для понимания. Программное обеспечение — это виртуальное отображение реального мира в компьютере, и необходимо научиться делать программное обеспечение более тесно связанным с реальным миром.

3. Чжунтай: Слово Чжунтай стало очень популярным в последние годы.Это слово было впервые предложено Али.Рекомендуется прочитать книгу Али.

4. Настройка высокой производительности: Только по-настоящему поняв сущность компьютера, можно выполнить настройку производительности.Рекомендуется прочитать «Вершина производительности».

5. Стабильность конструкции: рекомендуем Али «Вверх по течению», это не роман, в нем в основном рассказывается об истории технологии, стоящей за славой Alibaba Group, и рассказывается о некоторых типичных случаях наступления на яму.

6. Построение системы аварийного восстановления в двух местах и ​​трех центрах: В основном это зависит от практического опыта.

7. Стресс-тест полного канала: определение узких мест производительности системы и контроль QPS системы.

8. Большие данные: Hadoop для автономного хранения больших объемов данных и вычислений, Hive для упрощения использования Hadoop, Flink для потоковых вычислений, ELK для собственного набора, особенно ElasticSearch.

9. Хранилище данных: я изучил большие данные, а также, кстати, узнал о хранилище данных.

10. Сетевая безопасность: я не участвовал в этом и ничего с этим не делаю.

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

Стадия 4: преодоление скорби

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

1. Детали реализации промежуточного ПО: при быстром развитии бизнеса некоторые промежуточные ПО с открытым исходным кодом не могут полностью соответствовать требованиям, и может потребоваться трансформировать промежуточное ПО или даже перестроить колесо.Вам необходимо хорошо знать детали реализации промежуточного ПО. .

2. Чтобы расширить область, такую ​​как область ИИ, вам нужно иметь математическую основу, и вам нужно понимать реализацию различных статей и алгоритмов.

3. Он также может развиваться в направлении IOT.С развитием 5G я продолжаю с оптимизмом смотреть в эту область.

Суммировать

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

-- END --

Не будь проституткой, ставь лайк, пополняй~

Об авторе:
☕Я читаю книги уже несколько лет: окончил Хуачжунский университет науки и технологий со степенью магистра;
😂 Проехал мимо нескольких крупных заводов: Huawei, NetEase, Baidu...
😘 Я всегда верил, что технологии могут изменить жизнь, я готов сохранить первоначальный замысел и давай техников!

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

Наконец, я рекомендую проект с открытым исходным кодом,GitHub.com/smile Arch IT… 
JavaMap — это карта знаний Java, позволяющая разработчикам учиться, не теряясь! Изучение Java, пожалуйста, ищите JavaMap.
Завершение базовых знаний JAVA (283 страницы, очень подробно) бесплатно.