What does it take to become a Java architect?

 What does it take to become a Java architect?

Since you are a java architect, first of all, if you are an advanced java siege corpse, you are proficient in using various frameworks and know how they are implemented. The principle and tuning of the jvm virtual machine, knowing the jvm can allow you to write code with better performance; pool technology, what object pool, connection pool, thread pool...:; java reflection technology, a necessary technology for writing frameworks, but There are serious performance problems, the alternative is java bytecode technology; nio, nothing to say, it is worth noting the characteristics of "direct memory", usage scenarios; java multi-threaded synchronization and asynchronous; java implementation principles of various collection objects, understand These can allow you to choose the appropriate data structure when solving problems, and solve problems efficiently, such as the implementation principle of hashmap, many people with more than five years of experience are not clear, and why there are performance problems when expanding? If you don’t understand these principles, you will not be able to write efficient code, and you will think that you are doing the right thing; in short, the more basic things are, the more important they are. Many people think that they will use them to write code, but they only know how to call It's just an api, and it's far from being usable.

Proficient in using various data structures and algorithms, arrays, hashes, linked lists, sorting trees.... In a word, it is either time for space or space for time. There is a lot to say here, and you need to have some application experience. Used to solve various performance or business problems; will be added when there is time.

Proficiency in using the linux operating system is a must, there is nothing to say.

Familiar with the tcp protocol, the entire process of creating a three-way handshake for connection and a four-way handshake for disconnection. If you don't understand it, you can't optimize high-concurrency network applications; familiar with the http protocol, especially the http header, I found that many people who have worked for more than five years have Can't figure out the life cycle of session and cookie and the relationship between them.

System clustering, load balancing, reverse proxy, dynamic and static separation, static website.

Distributed storage systems nfs, fastdfs, tfs, and Hadoop understand their advantages and disadvantages and apply to scenarios.

Distributed caching technology memcached, redis, is necessary to improve system performance, in a word, put the content on the hard disk into memory to speed up, by the way, mention the algorithm consistency hash.

The necessary skills of the tool nginx are super easy to use, high-performance, and basically a server that will not hang up. It has many functions and solves various problems.

Database design ability, mysql must, the most basic database tool, free and easy to use, optimization of its basic parameters, slow query log analysis, master-slave replication configuration, at least half of mysql dba. Other nosql databases like mongodb.

And queue middleware. For example, for message push, you can first write the message to the database, push it to the queue server, and the push server goes to the queue for processing. In this way, the message can be placed in the database and queue and then directly fed back to the user. The push process is performed by the push server and the queue. The server is completed, which benefits asynchronous processing, relieves server pressure, and decouples the system.

The above are purely common technologies, and there are many more to explore by yourself; because there are many things to know, to become a qualified architect, you must have a strong self-learning ability, and no one will teach you hand-to-hand. everything.

If you want to become an architect, you don’t need to understand a lot of technologies. These are the foundation and tools for solving problems. How can you come up with solutions if you don’t understand these? This is a must to become an architect.

The architect must also propose a design solution that can solve the problem with the lowest cost according to the business characteristics and system performance requirements. A system with hundreds of users has a small amount of access and a small amount of data. You can cluster and distribute it for others. This is the most nonsense. The role of the architect is to meet the business needs first, and the second lowest hardware network cost and technical maintenance cost.

The architect should also foresee the solution of the system architecture to the next stage according to the stage of business development, and take the upgrade and expansion of the architecture into consideration when designing the current architecture, so as to make it easy to upgrade; otherwise, there will be a problem when the system bottleneck comes. If the solution is out again, or the existing architecture cannot be expanded, it will be thrown away and redone, or there will be a lot of troublesome expansion problems, which will cause losses to the enterprise.



Reprinted: http://blog.csdn.net/admin1973/article/details/55190228 Thanks for sharing

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325982686&siteId=291194637