It has been 3 years since I graduated from junior college in 2015. I worked in two companies during this period.

Many times to learn technology, it is a step towards the door, and then did not go down. The difference between Daniel and me is that others have read the source code, while I just know how to use it.

This is a note I made in December 2014, and the last thing I remember is how many design patterns there are


Just to get a systematic idea, it’s like this.


And then this


Lucky to read “deliberately practice” this book, the harvest of 3 skills

Step 1: Get out of your comfort zone

Step 2: Find mentors

Step 3: Practice deliberately

Java Programmer learning requirements:

Distributed, Spring MVC, Spring Boot, Spring Cloud, ZooKeeper, Kafaka, Redis, MQ.

Basically two moves:

1. Use which piece to learn which piece, it is difficult to learn fine, the first and second time enough to use on the line, any knowledge is not set to multi-purpose ah, after the third time one by one can be thoroughly understood. (Don’t rush, don’t ask too much, that’s my mentality)

2. Buy more basic books. I like to read more catalogs and reread the ones I don’t understand.

The most important thing now is to absorb the ideas of JAVA and deeply understand the advantages and disadvantages of JAVA enterprise development.

For, as retreat webs

The first one was a software company that outsourced ERP for yonyou Group. At that time, for most junior college students, graduation is not unemployed, it is considered on the right track.

Such companies engaged in ERP development have their own set of mature large software framework systems. Spring, Hibernate and other frameworks I learned in school did not get the opportunity to practice. On the contrary, because of the versatility of database SQL, I was assigned a job to write SQL according to the report requirements. In this way, I started my job smoothly after one month of orientation training.

At that time, I could only use “select * from EMp “, and I could use “group by”, which felt very deep. However, the demand of party A can not be so simple, all kinds of complex query “pa pa pa” have to hit the face. No one to take, no one to ask, in the face of the project manager’s daily scolding, only their own Internet search information. Stumbling, solve the table query, multi-field sorting, to heavy, merge and so on, feel their ability to grow a lot, a little small expansion, began to think “I want to play ten!!” . Party A did not live up to my inner thoughts, successfully completed the first few tasks, the workload began to become suddenly larger. In the following two months, CONTACT the manager of Party A every day to understand the business; Ask old colleagues, consult the data dictionary, understand the meaning of the field, so, completed the first project of life work.

Looking back on this work experience, I think my biggest gain is that I learned the ability to try to solve problems by myself, instead of facing problems and becoming overwhelmed. It’s not efficient, but it’s a first step. If further summary, there are still many deficiencies. For example: When their own skills are not qualified for the job requirements, except for the first time, learn key skills (you can consult others, search the Internet) to complete the job requirements. You should also review the knowledge points systematically after class. For example, if you buy a book and type the basic example on the computer, I believe that you will have a new understanding of what you already know. Those that don’t will be added to your skill tree.

After that, the team (about 10 people) led internal fights and formed groups, and there was not a lot of work to go to work every day. Compared with my peers, I thought that my ability and salary would not improve, so I offered to resign six months after joining the company.

The second company is a small start-up company (about 12 people), but the company is focused on hardware (embedded development: circuit board design, production, supporting drivers, etc.), and the software for its service is also based on. .net is given priority to. They hired me as a Java development engineer to fill a gap in Web development, and I’ve been with the company ever since.

After entering the company, I first took over a small Java SE server project, and the database I used changed from Oracle to MySQL. The technical points of the project include basic IO, thread, JDBC, JNA(connecting hardware c++ library), WebService(communicating with C# terminal to do RPC). Again, no one asked about this project because they didn’t understand it either. I learned about CSDN, Blog Park, Open Source China and other well-known websites during the search. After one and a half months, the first small version was successfully integrated. At that time, I felt full of sense of achievement and almost had no problem running for more than half a year.

What I have been doing is WEB development projects, from simple front-end pages to background application services, all completed by myself. For business reasons, they are all similar “XXX management systems “. Several projects have been maintained according to customer requirements since they were launched. Several projects were launched in succession, and no problems occurred, which allowed me to get an affirmation in the company. At that time, I was content with the status quo, living a life of “three lines”. At the beginning of this year, I became aware of the problem.

Since the company’s business and the current popular Internet technology (high concurrency, distributed processing, etc.) is completely incompatible, and “XXX management system “such software is not used by many people at the same time, the problem of concurrent access is almost non-existent. On the one hand, I usually browse websites like CSDN, and click on such lofty articles as “high concurrency”, “virtualization” and “XX solution “, only to find that I do not understand some of the keywords. On the one hand, I review my skills and only use SSM and database. I don’t have a lot of in-depth understanding of Linux, virtual machines, version control, engineering management, NoSQL, clustering and so on, which amplifies the sense of crisis again.

I thought about the problem I was facing and decided to calm down, put aside the feeling of “hurry” and start learning from the beginning. From the “Java Technology Core – Basic Knowledge” to check and fill the gaps, after the end of the Java Collection framework began to look at the source code, using UML tools to draw inheritance diagram. Start with the simplest ArrayList, and look at how each of these methods works, with the conclusion on the web that an ArrayList maintains an array. Seeing how I realized something I hadn’t thought of before, I gained confidence. Next, through learning the implementation process of Tomcat, I have a further understanding of servlet.

By chance, I saw Ma Ge’s “Understanding Java Introspection Mechanism” on the Internet. Introspection? What is? At that time, I had a face meng force, before the Java in vain? Click on it and see, wow, Java has this mechanism in addition to reflection! It was also this time that XIAO Ma’s ability to explain complex principles in a few words made me know Java again. Period from NIO to handwritten IOC. Although they will use, but every time there is a new harvest!

So how to learn to quickly get started and master it?

When it comes to learning, it is hard to avoid knowing where to start, which leads to low efficiency and affects the confidence to continue learning.

But the most important thing is that I don’t know which techniques need to be mastered, and I often step on the pit when learning, which ultimately wastes a lot of time. Therefore, it is very necessary to have a set of practical video courses to follow the learning.

In order to make learning easy and efficient, today we share a set of teaching resources taught by Ali architects for free. Help you navigate the path to becoming an architect.

This video course explains in detail (Spring, MyBatis, Netty source analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization, distributed architecture) and so on to become the architect necessary content!

Welcome to work for one to five years of Java engineer friends to join the Java architecture development: 685167672 this group provides free learning guidance architecture information and free answers to questions you do not know can be raised in this group after the career planning and interview guidance

Welcome to follow this official account, which will also share some interview experience and structure knowledge, to help you improve your interview skills