Take a look: in the software circle, the essence of breaking ten thousand "volumes" is undoubtedly returning to the original?

In the past two years, the entire software industry has been swept by the term involution, and you should have a deep understanding of it.

So what is involution for programmers? Is it a must-have interview essay? Is the 35-year-old crisis? Is it the overtime culture of 996? Or your thinning hair?

Speaking of the essence, as a technical person, it is still based on the lack of technology or ability. Let's analyze the reasons below, and

Why involute?

Simply put, the factors that cause involution basically stem from their own reasons.

  • own education and status.
  • reasons for self-knowledge.
  • self-improvement ability.

For now, your education doesn't really matter. Not to mention big factories, in many emerging Internet companies, unicorn companies, even if you are a secondary school or high school, there are still many code farmers who are struggling.

And the status needs to be compensated by the two points I will say next:

  • self-awareness
  • As a java programmer, I have only two paths, technology and management. This is also the choice faced by the vast majority of programmers.
  • From a technical point of view, both depth and breadth are very important, only in this way can we not be eliminated by the trend of the times. Be willing to settle, be innovative, and be able to accept new affairs. This is the direction of improving technology.
  • In terms of management, conversations, just reserves, the overall situation, and even contacts are all you need to keep improving.
  • In addition to these, maybe you have to wait patiently for a little opportunity.
  • self-improvement
  • We all know a truth, the survival of the fittest. When your abilities go up, you will have a bigger stage.
  • The method is very simple. When others are having fun, you read a source code, learn an algorithm, and quietly read some books that improve cognition.
  • The improvement of ability is reflected in the little bit and the millimeter.

How to get back to basics?

From the perspective of java programmers, there are some technologies that you must learn in 2022. If you know them, you must understand their principles and implementation processes. If you want to get rid of involution, you must look at the essence through the phenomenon:

A frequently heard sentence: What is the use of source code? Totally useless at work. But it is really useful, you have to go back to basics. This way you will unconsciously feel its presence when you write code.

Next, let me talk about the new year, as a java programmer, you must know the technology or principle to help you return to nature and get rid of the environment of involution.

  • JVM
  • I believe you have seen it in various training institutions and interview questions, so is it necessary to learn JVM? The answer, of course, is yes, it is very important. I will simply mention a few points, if you feel it is used or happened in your work:
    • Heap and Stack: Do you understand that concurrency is the reason why data atomicity is not guaranteed?
    • Memory overflows and memory leaks: causing your system to freeze or even unusable?
    • The relationship between throughput and response time: depends on your jdk version, what kind of gc is it, does it prefer throughput or response speed?
    • Have you ever heard of the DCL problem? Why does it appear?
    • Why does your server CPU often hit 100%?
    • Why does your server often fail to register with the gateway? Is it really a gateway problem? Is it possible that your code is causing the GC?
  • Are the above problems closely related to daily work? So the JVM is one of the essential cores of java workers.

  • concurrent programming in java
  • It is a fact that many students have only heard of this part and have not actually used it in their work. But is this part really unnecessary?
  • At present, microservices are very popular, and it is true that this knowledge is rarely used in writing business code, let alone understanding its principles.
  • But if you think about it, these are still deeply ingrained in your coding:
    • When you are happy to use java8's CompletableFuture to make asynchronous calls, you have ever wondered what happens when your code blocks.
    • When you are still using Synchronized to face microservice scenarios, you don't know what your leaders will think of you.
    • Are your global variable definitions safe? Even if you are not using multithreading?
    • When you use a thread pool, how do you define its size? What are the advantages of being IO intensive? What is computer intensive?
    • What problem is the singleton pattern designed to solve?
  • What I have mentioned is just the tip of the iceberg. Concurrent programming can be called a discipline. The importance is self-evident. Have you not learned it yet?

  • Spring usage and some principles
  • Spring is the first brother of the framework for java development. I say that there should be no objection. Whether it is springboot and springcloud that appear later, they all rely on its foundation. Although it is rarely used now, its core still surrounds our programs all the time.
  • Such as the following questions:
    • Have you ever seen a circular dependency error? How to deal with it? Why is this happening?
    • Why can't your bean be found after starting the service? Or is it not being dependency injected?
    • Why did your @Transaction not take effect?
    • Why is @Transaction rarely mentioned in the context of microservices? Is it really useless?
    • Are you designing your code with Dependency Inversion in mind?
    • Can I use aop way to complete this function?
  • If you haven't really studied spring carefully, you probably won't consider the above questions.

  • lambdas starting with java8
  • Are you still typing your code line by line? Time to think about lambda expressions. It has a more concise syntax, clearer semantics, and makes your code more elegant.
  • More and more components have begun to embrace lambdas:
    • Our commonly used mybatis-plus has begun to introduce lambda in the new version.
    • Other languages ​​such as; JS, python, etc. are supported one after another.
  • What are you waiting for?

 

The index principle of mysql

  • Because mysql is the most popular database in the world, and it is free and open source, it is the best example of learning indexing.
  • For example, the following knowledge, you should know one or two:
    • How is the B+ tree stored? How to inquire? Why can it improve efficiency?
    • Why choose B+ tree, what are the advantages compared to other such as B tree?
    • In addition to B+ tree indexes, does mysql have other indexes? What is it used for?
    • What is the leftmost matching principle? Why is there such a statement?
    • What is a row lock? What is a table lock? If you update a piece of data, will it not cause deadlock?
  • The above is part of the content, but when you learn it, you will find that it opens the door to a new world. and will always be remembered.

  • Elasticsearch usage and some principles
  • As a java programmer, you must understand the work and understand its principles.
  • It can be used as a good direction to take you to learn about indexing, such as:
    • What is an inverted index?
    • What is the difference between inverted index and mysql index, why not use B+ tree here?
    • What scenarios is Elasticsearch suitable for? Write more or read more?
    • Sharding under the cluster, what does replica mean?
  • When you master it, I believe that the improvement must be not small.

  • Part of the microservice framework
  • This part of the framework is a must. Familiarity with the source code will not be discussed for the time being, but the part I mentioned is recommended to master one of them as soon as possible.
    • Microservice framework: springCloud, springbCloudAlibaba, Dubbo
    • Registration Center: Nacos (recommended), eureka, zookeeper (not recommended)
    • Message middleware: RocketMq, RabbitMq, kafka
    • Cache: redis (recommended), MongoDB
    • Persistence layer framework: Mybatis, Mybatis-plus
    • Distributed transactions: seata (recommended)
  • Monitoring components
  • This part of the content maintains the efficient and stable operation of the entire microservice, which is necessary in a high-traffic environment. You are not required to be proficient, but at least be able to deploy and use.
    • Link monitoring: SkyWalking (recommended), ZipKin
    • Resource Monitoring: Prometheus + Granfana
    • Service monitoring: SpringBootAdmin
  • Cloud native in vogue
  • Cloud native has been at the forefront of industry technology in recent years, and it is constantly improving. Large and medium-sized enterprises have chosen to use the cloud to save labor costs and improve system availability.
  • There is no doubt that K8s is the most popular at present. No matter what your enterprise environment is, I think it is necessary for you to understand and even master this technology. As time progresses, it will have more potential and development.

I only listed about half of the above, as the basic knowledge to be mastered by java programs. I believe that if you master all of them in the next year, you will be able to get rid of the involution and return to the basics.

No matter how the future technology develops, the above content is still what you should understand and learn as a java programmer, and will not be abandoned for a long time. What are you waiting for?


Author: I can't stand you
. Link: https://juejin.cn/post/7057405916424962061
Source: Rare Earth Nuggets
The copyright belongs to the author. For commercial reprints, please contact the author for authorization, and for non-commercial reprints, please indicate the source.

Guess you like

Origin blog.csdn.net/wdjnb/article/details/124364308