In-depth analysis of the whole process of Java programmers from entering the industry to being laid off

Many years ago, I joined an e-commerce start-up company with a monthly salary of 2000. The whole company only had a boss who could draw cakes and me who knew nothing.

Everything starts from scratch.

On the first day of employment, the boss said that we first need a web page.

So I learned and sold HTML, CSS, and JavaScript, and the interface I made probably looks like this⬇️

The boss said that you are too ugly. Is there any ready-made framework for rapid development?

So I learned JQuery and Bootstrap to beautify the webpage, and the boss was very satisfied.

The next day, the boss said that our webpage needs some dynamic data, and it can’t be written in the front end, which is too bad, so I learned about the separation of front and back ends, and learned Spring, SpringBoot, MyBatis, MySQL, Maven, Tomcat, Ajax, Json wait.

The boss saw that the workload was a bit heavy, so he recruited a new employee. He finished the function development and handed it over to me for integration, so every day either I was copying his code or he was copying mine. The boss said that obviously we need a project Management tools, so we used Git.

Very good, it solved the problem of copying every day. It took a month or two for us to communicate and cooperate very nicely. The website is almost built.

But soon a new problem appeared, that is, the steps of packaging the code online every day are too cumbersome and time-consuming. It would be great if there was an automated packaging and building tool, so I learned Docker and Jenkins.

In this way, a complete project development management framework was constructed, and the project was quickly completed and launched.

The boss also said that in order to ensure the normal operation of the website after it goes online and quickly catch problems, we need to build a monitoring and logging system for the website, so I went to learn Log4j, Logback, Prometheus, Grafana, ElasticSearch, Kibana .

With the continuous increase of website users, through the monitoring system, we found that the pressure on several services is increasing, and they may go down at any time, so the boss bought a few more servers, let us think about how to relieve the pressure on the servers, so We introduced Nginx for load balancing, MyCat and ShardingSphere for sub-database and sub-table, and Redis to cache information about some popular products. In this way, the service pressure went down, and the website began to run stably again.

One day, the boss asked if it was possible to change the order status and notify the user of the change message, so I made a selection in the message queues such as RabbitMQ, Kafka, RocketMQ and chose the most suitable technology stack.

Another day, the boss actually said that he wanted to refactor. Now that distributed microservices are popular, let's refactor, shall we? ? ?

So we were forced to learn the SpringCloud microservice framework and a lot of distributed components such as Dubbo, Zookeeper, Netty, Nacos, Sentinel, Feign, and Gateway.

Under tremendous pressure, the website was restructured and achieved high-performance operation, and the company's performance also increased steadily. The boss was very happy, counting the money every day until he was soft, so he recruited a lot of young people. I am very pleased. And teach these young people the experience of learning and structuring.

Until one day, I found that the business seemed to have encountered a bottleneck, the growth of users basically stagnated, and many websites and apps similar to ours appeared on the market. Except for a slight difference in the UI, the functions were almost exactly the same, and the price was even lower. Volume, price wars to plunder users, and in order to let the rural working people also use their website and APP, they named it "sinking market", and began to launch and develop in a targeted manner, and more and more people divided the cake , the profitability of most companies began to continue to decline, so it was logical to issue layoff letters...

So I had to start the interview again, but suddenly found out why the interview is completely different now N years ago? ? ? Why is it now a computer network and an operating system, and I have asked a lot of low-level questions, all of which are fundamental questions. After writing the code, one side is over and there are two sides, three sides and four sides. I am directly confused and can't stand it.

Looking back at my career as a programmer, I found that I was led by technology and unwarranted business every day, anxious every day, forced to learn new technologies every day, and dealt with all kinds of messy bugs every day. At the end of my career, I realized that these didn't seem to have much value and significance.

End.

Having said that, the joke is a joke. As migrant workers in the new era, programmers must spare time to improve their skills in addition to completing their own duties. Recently, Ali has ushered in another milestone. It is the first to launch Java Architecture Technology Growth Notes, which combines both theory and practice. It has been rated as "Diamond Level" by the industry. It can be said that it is a must for programmers!

The following content is mainly to write the main outline content of this "Java Technology Growth Notes". The outline content includes Xmind mind map + actual combat documents + interview gift package. For those who need to download the completed version, there is a way to obtain it at the end of the article

1. Necessary skills for building foundations

1. Advanced concurrent programming: thread sharing and collaboration + actual combat of concurrent tools + operating CAS on the shoulders of giants + explicit locks and AQS frequently asked in interviews with Ali + concurrent container source code analysis and application combat + only using thread pools is not enough +Concurrency security solutions that architects should know+Practice performance optimization+Collection of concurrent programming interview questions

​2. In-depth tuning of JVM performance: 15 ways to write efficient and elegant Java programs + in-depth analysis of Java memory areas + garbage collectors and memory allocation strategies + JVM execution subsystems you must know + JVM class loading mechanism and execution engine Principle + JVM performance optimization practice + JVM interview tips

3. Network programming and efficient IO: http/tcp/udp network protocol principle dialysis + native JDK network programming + Netty application quick start + Netty sticky packet/half packet problem solving actual combat + Netty advanced and actual combat + Netty source code in-depth analysis + Netty Collection of frequently asked interview questions

​4. In-depth Tomcat bottom layer: 10 minutes to get familiar with Tomcat architecture + Tomcat container and application mechanism + Tomcat core component source code interpretation + Tomcat advanced + Tomcat interview questions sorting

​5. MySQL in-depth optimization: Mysql storage engine selection and precautions + interpretation of Mysql shared locks and exclusive locks + Mysql transactions and isolation levels + 30 minutes in-depth understanding of execution plans + interpretation of BTree and B+Tree indexes + slow Sql Query configuration and analysis + Sql optimization strategy and actual combat + Mysql interview questions summary

6. Necessary Linux for architecture foundation: Linux installation guide + Linux basic commands + user and user group series operations + file and permission series operations + shell script basics that architects should master

2. Interpretation of open source framework by design thinking

​1. Six principles: single responsibility principle + opening and closing principle + Liskov substitution principle + dependency inversion principle + interface isolation principle + Dimiter's law

2. Structural mode: bridge mode + adapter mode + decorator mode + proxy mode + combination mode

3. Creational mode: builder mode + singleton mode + abstract factory mode + factory method mode + static factory mode

4. Behavioral mode: template method mode + strategy mode + observer mode + responsibility chain mode + command mode + visitor mode

​5. Spring5 source code interpretation: 5 minutes to quickly understand the core process of Spring + master the common annotations and pitfalls of Spring work + post-processing source code interpretation + IOC container source code interpretation + AOP source code interpretation + declarative transaction source code interpretation + Spring source code interview questions summary

6. SpringMVC framework source code interpretation: Servlet3.0+ performance combat + handwritten SpringMVC combat

​7. Interpretation of the source code of MyBatis framework: 5 minutes to master the configuration and use of MyBatis + in-depth explanation of dynamic SQL, cache and associated query + 10 minutes to master the integration of Mybatis and Spring + Mybatis plug-in development and source code analysis + multi-level correlation + handwriting MyBatis framework combat + Mybatis common interview questions collection

3. Efficient storage enables project performance to take off

​1. Redis: Redis installation under Linux in 5 minutes + String, List, Hash, Set, Zset type usage scenarios + timeline, queue application scenario design practice + shopping cart development and design practice + Redis and Lua simulation to grab red envelopes+ Website voting design and development practice + Lua+Redis joint development guide + Redis slow operation optimization + Redis sentinel mechanism and underlying mechanism analysis + 10 minutes to build a Redis high-availability cluster practice + dynamic expansion, cluster node reduction practice + Redis common interview questions summary

2. Actual combat of cache solutions: 15 minutes to master the usage of SpringCache in the project + cache consistency strategy (update and invalidation processing mechanism) + cache avalanche solution + cache penetration scheme

3. mongoDB: Mongodb usage scenario analysis + 20 minutes to play with adding, deleting, modifying and checking + things you should pay attention to when developing MongoDB + security settings and storage engine analysis guide + performance tuning and index practice + replication architecture analysis practice + MongoDB partition practice

​4. MySQL high availability: Mysql master-slave replication, read-write separation high-availability solution + Mysql, Keepalived to achieve dual-master high-availability solution + Mysql to achieve sub-database and table high-performance solutions

5. Mycat: Introduction to Mycat and its usage + Realization of Mysql read and write separation based on Mycat + Realization of database segmentation based on Mycat + Analysis of global tables, ER tables, and fragmentation mechanisms

6.Sharding-Sphere:Sharding-JDBC+Sharding-Proxy

7. Fastdfs: actual combat of file storage + actual combat of file synchronization + actual combat of file query + actual combat of distributed deployment

4. Distributed expansion to microservice architecture

​1. Starting from RPC: service registration and publishing + dynamic proxy + serialization and reflection + handwritten RPC framework combat

​2.DUBBO: Learn how to use Dubbo in 10 minutes + actual combat of dependency division between projects + traditional project dismantling distributed actual combat + Dubbo spi expansion actual combat + in-depth interpretation of Dubbo source code + Dubbo interview question guide

3. Spring Boot: SpringBoot quick start + core component analysis + performance optimization + jta + atomikos distributed transaction + SpringBoot core source code interpretation + handwritten SpringBoot actual combat + SpringBoot interview summary

​4. Spirng Cloud Netflix: Zuul routing gateway detailed explanation and source code analysis + Ribbon client load balancing principle and algorithm detailed explanation + Feign declarative service call method implementation + Hystrix service fuse and service downgrade combat + Eureka registry component analysis + Config configuration service Center and svn, git rapid integration + BUS message bus technology + Sleuth call link tracking + Stream message-driven microservices + SpringCloud interview topic summary

5. Spring Cloud Alibaba: Nacos+SkyWalking+Sentinel current limiting+Seata distributed transactions

6.Docker: 5 points to understand the installation and use of Docker + basic operations of Docker + rapid advancement of Docker File + things about Docker network and storage + advanced usage of DockerCompose + integration of microservices and Docker to achieve dynamic expansion

7. K8S (Kubernetes): Introduction to Kubernetes and installation and configuration + core principles of Kubernetes + actual combat of Kubernetes cluster management solutions

​8. Service Mesh: 10-minute quick start and introduction + core component analysis + how to deploy Istio with Helm + quick analysis of Istio’s common functions + application of Mixer adapter + http traffic management practice + Istio security hardening practice

5. Straight-line performance improvement

​1. Distributed architecture thinking: evolution process of large-scale Internet architecture + distributed knowledge that architects should have + detailed explanation of mainstream distributed architecture design

2. ZooKeeper: 5 minutes to complete Zookeeper installation and command analysis + native client, zkclient, curotor rapid development practice + Zookeeper application practice + Zookeeper underlying protocol interpretation + Zookeeper interview data sorting

​3. Nginx: 5 minutes to realize Nginx distribution of your project + Nginx installation and basic use + Nginx process model and configuration detailed explanation + location rules and rewrite analysis + dynamic and static separation combat + reverse proxy combat + cross-domain configuration combat + cache configuration And Gzip configuration actual combat + https security authentication actual combat + LVS high availability actual combat + Nginx those interview questions summary

4. Overview of message middleware: the difference between message middleware and RPC + message middleware usage scenario introduction + ActiveMQ, RabbitMQ, RocketMQ, Kafka comparison + message middleware chronicle

5.ActiveMQ: Quick installation of ActiveMQ in 3 minutes + JMS specification interpretation + native ActiveMQ API programming + ActiveMQ advanced features and usage + time-limited order practice + user registration asynchronous processing practice + enterprise-level high-availability cluster deployment practice

6. RabbitMQ: Installation and configuration under Linux + message publishing and consumption trade-off + how to solve message rejection + control queue and message attributes + integrate with Spring to complete application decoupling combat + clustering and mirror queue combat + summary of RabbitMQ common interview questions

​7.RocketMQ: Rapid installation and configuration of RocketMQ + Interpretation of message sending and consumption process + RocketMQ message storage, message filtering and transaction information + RocketMQ high-availability actual combat + overall Spring completes the asynchronous processing of user registration actual combat + integrates Spring to complete time-limited order actual combat + RocketMQ interview questions collection

8. Kafka: Kafka quick installation and deployment + open Kafka cluster mode + Kafka producers and consumers + Kafka advanced feature interpretation + Kafka internal mechanism analysis of processing requests + integration of Spring to complete peak-shaving and valley-filling combat + Kafka interview questions collection

9.elastic: ElasticSearch+Logstash+Kibana+ELK common interview questions summary

6. Distributed solution team collaboration tool

1. Distributed transaction solution: transaction and lock + standard distributed transaction + two-phase commit + BASE theory and flexible transaction + TCC scheme + compensatory scheme + asynchronous guarantee type and best effort type

2. Single sign-on solution: single sign-on problem background + page cross-domain problem + session cross-domain sharing solution + session extension

3. Distributed task scheduling scheme: Quartz scheduling usage + Elastic-Job example + distributed scheduling difficulties + Quartz cluster customized distributed scheduling

4. Maven: installation and configuration + getting started + coordinates and dependencies + aggregation and inheritance + life cycle and plug-ins + warehouse and version management + private server-Nexus + handwritten Maven plug-in combat

5. Jenkins: Jenkins remote testing + Jenkins continuous deployment + Jenkins automatic deployment + Jenkins distributed build + Jenkins management + Jekins installation

6. Git: comparison with SVN + basic operation process + common operations and problem handling of Git

7. Workplace soft skills that architects should possess

​As an architect, solid technical ability is fundamental, but it is not enough to only understand technology. You should also have certain soft skills in the workplace, which includes two aspects:

1. Self-cultivation

As an architect, you must first have a clear understanding of yourself. The so-called self-cultivation is to be clear about your career development, understand your current situation and future positioning, and understand that you are not just a programmer. As a member, you must know how to spread value.

2. Project management

Architects, in a project, in addition to having development capabilities, they also need to manage the project to a certain extent. They need to improve their management capabilities, know how to manage the overall situation in the project, and work together.

Eight, Alibaba interview clearance cheats

1. Alibaba interview clearance manual:

  • Interview Experience and Skills: Interviewer Proverbs + Interview Experience Exchange + Enterprise Interview Strategies

  • Interview techniques: Java basics + Java Web + database principles + design patterns + data structures and algorithms + massive data processing + source code interpretation, etc.

Summarize

Every programmer has a big factory dream in his heart. Whether it is Ali or Tencent, the technical requirements for programmers are relatively high. Regardless of academic qualifications, has your technical level met Ali's standards and requirements? If you have a large technical gap with other peers, and you have no idea of ​​changing the status quo, it is only a matter of time before you are eliminated by the market.

Therefore, no matter whether you want to enter a big factory or have a satisfactory salary, you need to take yourself seriously. I can provide you with the above Java technology growth notes for free. I hope that while I help you, you will also take the initiative to help yourself.

Online acquisition of Java technology growth notes: click on the small card below~

Guess you like

Origin blog.csdn.net/Javatutouhouduan/article/details/131123218