Автор: Брат Сяофу
Блог:bugstack.cn - 原创系列专题文章
Осаждайте, делитесь, растите и позвольте себе и другим что-то получить! 😄
Введение
哪个架构师没造过轮子?
Думали ли вы о таком?Нужно ли сначала иметь возможность устроиться на позицию, или сначала устроиться на позицию, а потом учиться?🤬Какие? Проходи через заднюю дверь, ты выходишь!
Точно так же, как наши школьные экзамены, экзамены по тхэквондо и защита при повышении, у всех нас есть возможность быть компетентным для предыдущего этапа, прежде чем нам дадут соответствующие должности. Таким образом, архитекторы начинают строить колеса, будучи программистами, но они могут создавать более качественные колеса на стадии архитектора.
Учитывая актуальность реального развития бизнеса, вам не разрешат строить колеса. Но создание колес — это лучший способ почти для каждого программиста преодолеть техническое узкое место. Никогда из-за одной фразы,Не изобретайте велосипедОправдание, дайте себе повод не учиться!
2. Колеса, которые я сделал
我可能是痴迷于造轮子!
Поклонники, которые знают Сяо Фу, возможно, знают, что моя первая работа была написана за два года.C#
, но чтобы не отпускать написанноеJava
, используйте его вне работыJava
Язык использует все проекты, до которых я могу дотянутьсяJava
Я написал это снова, в том числе; обслуживание принтера с последовательным кодом, стыковка повторителя, сбор данных ПЛК и т. д.
После официального входа в Интернет для меня, кажется, открылась новая дверь.Знание, к которому я могу получить доступ, слишком няо, так что отпусти его!Подойди, посмотри на колеса, которые я сделал.
1. Коммуникационные компоненты RPC
- статья:Рукописная структура RPC Глава 3 «Промежуточное ПО RPC»
- Исходный код:GitHub.com/заместитель комиссара/…
- Сложность: ⭐⭐⭐
- Когда я вышел в Интернет в начале 2015 года, я был удивлен, обнаружив, что связь RPC все еще может использоваться между двумя проектами.В прошлом компания использовала http или веб-сервис, поэтому эта часть знаний оказала на меня большое влияние. Чтобы понять это более четко, я нашел в git некоторые исходные коды, такие как Dubbo и gRPC, для изучения. Научитесь учиться, начните реализовывать это самостоятельно и узнайте много знаний в процессе практики, в том числе: разработка промежуточного программного обеспечения с помощью Spring, пользовательская конфигурация, аннотация основного определения, перехват аспектов, связь Netty, кодек, формирование трафика и т. д. Подождите. . Эти знания также заложили хорошую основу для моей последующей разработки другого промежуточного программного обеспечения.
2. Напишите виртуальную машину JVM
- статья:Реализация виртуальной машины JVM на Java
- Исходный код:GitHub.com/заместитель комиссара/…
- Сложность: ⭐⭐⭐⭐⭐
- Это непригодное колесо, и в то же время сделать это может быть немного сложно: на запуск нескольких простеньких HelloWorld ушел целый месяц написания и сотни тысяч строк кода.но, потому что я не хочу слушать, как другие выбрасывают какие-то теоретические слова, чтобы одурачить мою карьеру программиста, и я не хочу читать несколько книг, которые не могут быть практичными и казаться изученными. Поэтому я готов потратить много времени на практику.Хотя я не могу полностью скомпилировать JVM, которую можно использовать в производстве, я изучил основные функции JVM благодаря такому обучению: поиск и разбор классов и байт-кодов, набор инструкций, область данных времени выполнения, стек виртуальной машины, игла стека, таблица локальных переменных, стек операндов, регистры и т. д., как шаг за шагом запускать код Java.
3. Промежуточное ПО распределенных задач на основе SpringBoot
- статья:Разработка промежуточного ПО для распределенных задач на основе SpringBoot DcsSchedule
- Исходный код:GitHub.com/заместитель комиссара/…
- Сложность: ⭐⭐⭐
- Что это за колесо? Короче говоря, его функция аналогична xxl-job.Задача, которую должен решить компонент, состоит в том, чтобы назначать запланированные задачи на разные машины для выполнения.В то же время он использует zookeeper в качестве реестра для расширения в распределенную систему планирования задач. . Метод доступа прост в использовании для приема заказов, единого управления запуском и остановкой, аварийного восстановления после простоя и т. д. И он может автоматически определять: количество развертываний, общее количество задач, количество успехов, количество сбоев, время выполнения и другую информацию.
4. Промежуточное ПО для управления услугами
- статья:Унифицированный белый список для проверки промежуточного программного обеспечения управления услугами
- Исходный код:GitHub.com/заместитель комиссара/…
- Сложность: ⭐⭐⭐
- Что такое управление услугами? На самом деле управление услугами включает в себя много контента, например, от уровня развертывания, уровня управления, уровня приложений, уровня шлюза и т. д., а управление услугами здесь относится к уровню приложений. имеют много сервисных систем. , внешний уровень каждой службы нуждается в белом списке, так что мне делать? Маловероятно, что каждая система будет многократно развивать аналогичные функции, что также сложно в управлении. Поэтому мы надеемся выделить основные основные функции небизнес-логики в бизнес-системе и превратить их в унифицированные бизнес-компоненты, чтобы помочь отделить службы и заставить бизнес-системы больше заботиться о разработке бизнес-процессов. Так что это одна из ролей управления услугами.
5. Netty — имитация настольной версии WeChat.
- статья:Битва Netty+JavaFx: имитация десктопной версии чата WeChat
- Исходный код:GitHub.com/заместитель комиссара/…
- Сложность: ⭐⭐⭐⭐
- Этот проект представляет собой имитацию настольной версии WeChat, созданную автором Сяо Фу с использованием таких технологических стеков, как JavaFx, Netty4.
6. Было построено много колес.
- ПО промежуточного слоя для маршрутизации подтаблиц базы данных
- ПО промежуточного слоя кэша Redis для чтения и записи
- ES + Ibatis в сочетании с промежуточным ПО
- Полноценный мониторинг бизнес-процессов
Кроме, из них сделано еще много колес, а остальные не перечислены по одному. Я, конечно, не только колеса строю, но и разные гаджеты, и даже калькулятор хэш-роутинга, написанный на js. Короче говоря, я могу идти дальше и дальше по пути создания колес, потому что я слишком одержим 🧐!
3. Является ли строительство колеса продвижением по службе и повышением зарплаты?
造轮子本身不一定升职加薪,如果你第一次造,也许会被扣薪。
Если это построение колеса, используемое в бизнес-системе, отличной от CRUD, часто необходимо понимать часть исходного кода Spring или SpringBoot, а также такие знания, как динамический прокси и отражение. И дизайн, и реализацию тоже стоит рассматривать очень комплексно, иначе в аварии будет не одна система, а все системы, использующие ваше колесо, нужно будет модернизировать и запускать вместе с вами. Поэтому строительство колес не обязательно означает продвижение по службе и повышение зарплаты!
Тем не менее, строительные колеса могут позволить вам всесторонне расширить свой личный стек технологий, а также могут позволить вам преодолеть существующие технологические узкие места на определенном этапе. Потому что, чтобы построить колесо, нужно изучить чужие колеса, исходный код компонентов, расширенный стек технологий и более комплексное мышление 🤔.
В конце концов, колесо, которое вы создаете, должно выдерживать проверки, а также адаптироваться к потребностям бизнеса и расширяться, и это может быть работой, отличной от вашей повседневной разработки бизнес-системы. Сможете ли вы выдержать этот тест, определит, сколько знаний вы сможете получить. И этот, которого нет ни у когознаниеЭто ваш козырь для повышения зарплаты!也是你能留下的本事和走出去的能力!
4. Кто-то возражает против того, чтобы вы делали колеса?
不要重复造轮子、不要重复造轮子、不要重复造轮子
Часто ли вы слышите эту фразу и тушите огонь в своем сердце? На самом деле это предложение не обязательно время от времени неверно, потому что проект нужно оценивать по временным затратам, качеству проекта и надежности от разработки до запуска Никто не осмеливается опрометчиво использовать новую функцию, которая не была проверена. , и не смею позволить вам держать тренировочную руку.
Конечно, иногда колеса, которые мы производим, не обязательно повторяются, но могут быть инновационными. Но этап этого колеса не должен начинаться с запуском нового проекта, по крайней мере, он должен быть написан заранее, проверен и запущен в производство до того, как вы решитесь его построить. Для текущей разработки, если она очень актуальна, лучше всего стремиться к стабильности и впитывать больше опыта в этом проекте. И подведите итог, если ваше колесо используется, как долго оно может поддерживать, нужно ли расширяться и не возникнет ли проблем.
Все это обучение, обобщение и применение могут в конечном итоге проложить путь к росту вашего стека технологий. Не сдавайтесь из-за противодействия других людей, не упрямьтесь и не настаивайте на том, чтобы делать то, что хотите, а расти и учиться с легкостью. Кто готов, тот всегда даст сил, когда надо 😎!
V. Резюме
- Нет предложения, которое могло бы прокомментировать правильность и неправильность изготовления колеса, даже если это уже существующее колесо, так что же вы делаете для обучения? Вы ориентированы на лучшее решение? Итак, если вы хотите создать его, вам просто нужно проверить его и использовать!
- Построение колес позволяет нам получить много знаний помимо разработки бизнес-систем.Эти знания могут расширить ваш технологический стек, отсканировать некоторые технические пробелы и проложить путь к вашей будущей защите продвижения по службе или собеседованию при смене работы, чтобы получить более высокую зарплату. .
- Если вы хотите построить колесо, вам нужно научиться читать исходный код, изучить миграцию технологий, изучить структуру данных, изучить алгоритм и изучить шаблоны проектирования.Сначала вы должны улучшить свое техническое зрение, чтобы вы могли иметь представление о строить колесо вместо жесткого строительства.
6. Рекомендации серии
- Почему интерфейс Mybatis не может реализовать класс для добавления, удаления, модификации и проверки?
- Интерпретация исходного кода всего процесса выполнения задачи Spring по времени Quartz
- Реализовать демо-версию Mybatis на основе jdbc
- Зачем? Срок действия вашей ИДЕИ истек! Добавление пакета Jar взломает его, почему?
- Написанные вручную основные функции mybait-spring