Круг разработчиков программного обеспечения очень интровертирован? Возвращение к основам — суть технологии

Java задняя часть
Круг разработчиков программного обеспечения очень интровертирован? Возвращение к основам — суть технологии

"Что загорится в 2022 году? Чему научиться? Эта статья участвует«Поговорим о технологических тенденциях 2022 года»Требуют документов"

За последние два года вся индустрия программного обеспечения内卷Эта лексика отметается, у вас должно быть глубокое понимание.

Так что же такое инволюция для программистов? является обязательным面试八股文? да35岁危机? да996культура сверхурочной работы? Или ваши редеющие волосы?

Если говорить о сути, то как технический человек, он все же основан на отсутствии технологий или способностей.Давайте разберем причины ниже, и

Почему эвольвентный?

Проще говоря, факторы, вызывающие инволюцию, в основном вытекают из собственных причин.

  • собственное образование и статус.
  • причины самопознания.
  • способность к самосовершенствованию.

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

И статус нужно компенсировать двумя моментами, о которых я скажу дальше:

  • самосознание

    У меня, как у Java-программиста, есть только два пути.技术и管理. Это также выбор, с которым сталкивается подавляющее большинство программистов.

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

    С точки зрения управления, разговоры, просто резервы, общая ситуация и даже контакты - все, что вам нужно, чтобы продолжать улучшаться.

    Помимо этого, возможно, вам придется терпеливо ждать небольшой возможности.

  • самосовершенствование

    Мы все знаем истину, что выживает сильнейший. Когда ваши способности повысятся, у вас будет большая сцена.

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

    Улучшение способности отражается в мелочах и миллиметрах.

Как вернуться к истокам?

С точки зрения Java-программистов, есть некоторые технологии, которые вы должны изучить в 2022 году. Если вы их знаете, вы должны понимать их принципы и процессы реализации. Если вы хотите избавиться от инволюции, вы должны смотреть на сущность через явление:

Часто можно услышать фразу:源码有什么用?工作中完全用不上啊. Но это действительно полезно, вы должны вернуться к основам. Таким образом, вы будете неосознанно ощущать его присутствие при написании кода.

Далее, позвольте мне рассказать о новом году, как java-программист, вы должны знать технологию или принцип, который поможет вам вернуться к природе и избавиться от среды инволюции.

  • JVM

    Я полагаю, вы видели это в различных учебных заведениях и на собеседованиях, так нужно ли изучать JVM? Ответ, конечно, да, это очень важно. Я просто упомяну несколько моментов, если вы чувствуете, что вы использовали это или произошло в вашей работе:

    • Куча и стек: понимаете ли вы, что параллелизм является причиной того, что атомарность данных не гарантируется?
    • Переполнение памяти и утечка памяти: что приводит к зависанию системы или даже к ее непригодности?
    • Взаимосвязь между пропускной способностью и временем отклика: зависит от вашей версии jdk, что это за gc, предпочитает ли он пропускную способность или скорость отклика?
    • Вы когда-нибудь слышали о проблеме DCL? Почему оно появляется?
    • Почему ЦП вашего сервера часто достигает 100%?
    • Почему ваш сервис часто не может зарегистрироваться на шлюзе? Это действительно проблема шлюза? Возможно ли, что ваш код вызывает GC?

    Тесно ли вышеперечисленные проблемы связаны с повседневной работой? такJVM是java工作者的必会核心один.

  • параллельное программирование в java

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

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

    Но если подумать, они все еще глубоко укоренились в вашем коде:

    • Когда вы счастливы использовать CompletableFuture java8 для выполнения асинхронных вызовов, вы когда-нибудь задумывались, что происходит, когда ваш код блокируется.

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

    • Безопасны ли ваши определения глобальных переменных? Даже если вы не используете многопоточность?

    • Когда вы используете пул потоков, как вы определяете его размер? Каковы преимущества интенсивного ввода-вывода? Что требует больших вычислительных ресурсов?

    • Какую проблему призван решить шаблон singleton?

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

  • Использование Spring и некоторые принципы

    Spring - первый брат фреймворка для разработки на java.Я сказал, что возражений быть не должно.Будь то springboot или springcloud, который появится позже, он основан на нем. Хотя сейчас он редко используется, его ядро ​​все еще постоянно присутствует в наших программах.

    Например, следующие вопросы:

    • Вы когда-нибудь видели ошибку циклической зависимости? Как с этим бороться? Почему это происходит?
    • Почему ваш бин не может быть найден после запуска службы? Или это не инъекция зависимости?
    • Почему ваша @Transaction не вступила в силу?
    • Почему @Transaction редко упоминается в контексте микросервисов? Это действительно бесполезно?
    • Вы разрабатываете свой код с учетом инверсии зависимостей?
    • Могу ли я использовать способ aop для выполнения этой функции?

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

  • лямбды, начинающиеся с java8

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

    Все больше и больше компонентов начинают использовать лямбда-выражения:

    • Наш часто используемый mybatis-plus начал вводить лямбду в новой версии.
    • Другие языки, такие как JS, python и т. д., поддерживаются один за другим.

    Чего же ты ждешь?

  • Индексный принцип mysql

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

    Например, следующие знания, вы должны знать один или два:

    • Как хранится дерево B+? Как узнать? Почему это может повысить эффективность?

    • Почему стоит выбрать дерево B+, каковы его преимущества по сравнению с другими, такими как дерево B?

    • Помимо индексов дерева B+, есть ли в mysql другие индексы? Для чего это используется?

    • Каков самый левый принцип соответствия? Почему такое заявление?

    • Что такое блокировка строки? Что такое блокировка таблицы? Если вы обновите часть данных, не вызовет ли это взаимоблокировку?

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

  • Использование Elasticsearch и некоторые принципы

    Как java-программист, вы должны понимать работу и понимать ее принципы.

    Его можно использовать как хорошее руководство для изучения индексации, например:

    • Что такое инвертированный индекс?
    • В чем разница между инвертированным индексом и индексом mysql, почему бы не использовать здесь дерево B+?
    • Для каких сценариев подходит Elasticsearch? Больше писать или читать?
    • Шардинг под кластером, что значит реплика?

    Когда освоишь, я считаю, что улучшение должно быть не малым.

  • Часть микросервисной инфраструктуры

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

    • Фреймворк микросервисов: springCloud, springbCloudAlibaba, Dubbo
    • Центр регистрации: Nacos (рекомендуется), eureka, zookeeper (не рекомендуется)
    • Промежуточное ПО для сообщений: RocketMq, RabbitMq, kafka
    • Кэш: Redis (рекомендуется), MongoDB
    • Каркас уровня сохраняемости: Mybatis, Mybatis-plus
    • Распределенные транзакции: seata (рекомендуется)
  • Компоненты мониторинга

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

    • Мониторинг ссылок: SkyWalking (рекомендуется), ZipKin
    • Мониторинг ресурсов: Прометей + Гранфана
    • Мониторинг службы: SpringBootAdmin
  • Облако в моде

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

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


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

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