Now the salary of Java-related positions is getting higher and higher, and the increase is getting bigger and bigger.
It can be viewed through the data of the staff. Take Beijing Java related positions as an example. Among them, [20k-30k] Java engineers with salaries account for 30.8% of the total practitioners!
"Salary Income Level" of Beijing Java Engineer
If you are in a small and medium-sized company, in fact, around 20K is almost the limit, and it is very difficult for you to continue to increase your salary. In Alibaba P7 level Java technical personnel, the salary can easily reach 30K-50K, which is not counted as shares and year-end bonus.
But is it really difficult to become an Ali P7 level programmer? In fact, it may not be.
Technologies that Java architects need to master:
1. Be proficient in using various frameworks and know the principles of their implementation.
2. Principles and tuning of jvm virtual machine, knowing jvm allows you to write code with better performance;
3. Pool technology, what kind of object pool, connection pool, thread pool... Java reflection technology, the necessary technology for writing frameworks, when encountering serious performance problems, alternatives to java bytecode technology;
4. nio, there is nothing to say, it is worth noting the characteristics of "direct memory" and usage scenarios; java multi-threaded synchronization and asynchronous; the realization principle of various collection objects in java. Understanding these will allow you to choose the right data when solving problems. Structure, efficient problem solving, such as the implementation principle of hashmap, many people with more than five years of experience can’t figure it out, and why are there performance problems during expansion? If you don’t figure out these principles, you can’t write efficient code. I think I did it right;
In a word, the more basic things are more important. Many people think that they can use them to write code. In fact, they only know how to call the API, which is far from being able to use them.
5. Proficiency in using various data structures and algorithms, such as arrays, hashes, linked lists, sorting trees... In a word, it is either time for space or space for time. It can be said that there are a lot of things to expand here, and some application experience is required. Used to solve various performance or business problems.
6. Familiar with Linux operating system, essential, nothing to say.
7. Familiar with the tcp protocol, creating the whole process of three-way handshake for connection and four-way handshake for disconnection. If you don’t understand, you cannot optimize high-concurrency network applications. Familiar with the http protocol, especially the http header, I have found a lot of work for more than five years They can't figure out the life cycle of session and cookie and the relationship between them.
7. System clustering, load balancing, reverse proxy, dynamic and static separation, static website. Distributed storage systems nfs, fastdfs, tfs, Hadoop understand their advantages and disadvantages, and applicable scenarios. Distributed caching technology memcached, redis, is necessary to improve system performance. In a word, put the content on the hard disk into the memory to speed up, and by the way, mention an algorithm consistency hash.
8. The necessary skills for the tool nginx are super easy to use, high-performance, basically a server that will not hang up, and many functions to solve various problems.
9. Database design capabilities, mysql essential, basic database tools, free and easy to use, optimization of its basic parameters, slow query log analysis, master-slave replication configuration, at least half a mysql dba. Other nosql databases such as mongodb.
10. There are also queue middleware. For message push, you can first write the message to the database, push it to the queue server, and then the push server will go to the queue for processing, so that the message can be put in the database and queue and directly feedback to the user. The push process is performed by the push server and queue. Server completion, benefits of asynchronous processing, alleviating server pressure, and decoupling the system.
The above are purely commonly used techniques, and there are a lot of them to explore slowly; because there are so many things to know, so to become a qualified architect, you must have a strong self-learning ability, no one will teach you hand-in-hand everything.
If you want to become an architect, you don’t need to know a lot of technologies. These are the basis and tools for solving problems. How to provide solutions if you don’t understand these? This is a necessary condition for becoming an architect.
Architects must put forward design solutions that can solve problems and low cost according to business characteristics and system performance requirements to be qualified. A system with hundreds of users will not have a large amount of access and a small amount of data. You can cluster and upload to others. Distributed storage and high-end servers are constructed for the sake of architecture. This is very nonsense. The role of the architect is to meet business needs and use low hardware network costs and technical maintenance costs.
Architects also need to foresee in advance the solution to the next stage of system architecture according to the business development stage, and consider the upgrade and expansion of the architecture when designing the current architecture, so that it is easy to upgrade; otherwise, the system bottleneck will come, and problems will occur. Going to the plan again, or the existing architecture cannot be extended, throw away and redo, or expand a lot of troublesome problems, which will cause losses to the enterprise.
Ali P7 corresponds to the learning technology stack
- Multithreading and high concurrency programming
- Introduction and detailed explanation of spring and ioc
- Simple construction of maven, spring AOP
- Explanation of circular dependency and proxy mode in spring
- SpringBoot mvc project structure development hot deployment
- SpringBoot web project integrates data sources, Thymeleaf
- Project development-Thymeleaf, Jpa, Bootstrap
- mybatis integrates SpringBoot, mybatis-generator
- Role, process, and task allocation in enterprise project development
- pageHelper, page turning, Example usage, asynchronous form
- Development-RBAC, table design, YAML, project configuration
- Development-RBAC front and back end, mybatis multi-table, thymeleaf
- Development-Odata, Restful, SpringBoot file upload
- Development-Authorization, Icheck, Mybatis plus
- Tengine principle, comparison, deployment, configuration, virtual host
- Tengine reverse proxy, load balancing, session sharing, etc.
- Tengine dynamic and static separation https SSL asymmetric encryption
- Nginx OpenSSL self-signed certificate xca FastDFS introduction
- FastDFS deployment principle integrates Nginx JavaAPI
- High Concurrency Load Balancing: Principles of Network Protocols
- High concurrent load balancing: derivation of LVS's DR, TUN, and NAT models
- High concurrency load balancing: DR model test construction of LVS
- Principles of Spring Environment
- High-concurrency load balancing: LVS high-availability construction based on keepalived
- Spring listener
- FastDFS keepalived high availability zookeeper
- dubbo demo, role, RPC, principle, RMI
- Project microservice split registration center, dubbo admin
- WeChat public account project under dubbo
- Spring AOP principle
- dubbo core configuration aggregation project construction
- Multi-level cache architecture solution for billions of traffic, openresty Lua
- Multithreading and high concurrency programming one
- Redis string type & bitmap
- redis的list、set、hash、sorted_set、skiplist
- Redis message subscription, pipeline, transaction, modules, bloom filter, cache LRU
- Redis persistent RDB, fork, copyonwrite, AOF, RDB&AOF mixed use
- Redis cluster: master-slave replication, CAP, PAXOS, cluster shard cluster 01
- Redis cluster: master-slave replication, CAP, PAXOS, cluster sharded cluster 02
- Redis development: spring.data.redis, connection, serialization, high/low api
- Zookeeper introduction, installation, shell cli use, basic concept verification
- Knowledge of zookeeper principles, paxos, zab, role functions, API development basis
- Zookeeper case: distributed configuration registration discovery, distributed lock, ractive mode programming
- 100 million-level traffic, multi-level cache, and high-concurrency system architecture
- Spring Cloud microservice overview and registration center construction
- Multithreading and high concurrency programming 6
- 100 million-level traffic, multi-level cache, high-concurrency system architecture, actual combat IV
- Calling and fuse degradation between microservices
- Use of microservice gateway, link tracking, and configuration center
- 100 million-level traffic, multi-level cache, high-concurrency system architecture, actual combat five
- Multithreading and high concurrency programming seven
- 100 million-level traffic, multi-level cache, high-concurrency system architecture, actual combat 6
- Spring source code summary
- Online car-hailing project combat 1: Passenger user functions
- Current limit of billion-level flow system architecture
- Online car-hailing project actual combat 2: interface security design and distributed locks
- Expansion of billion-level flow system architecture
- Downgrading of billion-level flow system architecture
- JVM entry and class file format
- Java NIO
- Distributed transaction principle of billion-level flow system architecture
- The actual traffic distribution layer of the billion-level traffic system architecture
- Car-hailing project actual combat 3: message queue application
- Explain the Class loading process in detail
- The actual domain name and https of the billion-level traffic system architecture
- E-commerce system details page PLAN A
- Static file generation-rsync
- NIO之ByteBuffer
- Online car-hailing project actual combat 4: project summary
- Java memory model
- Static document generation business process and technology selection solutions
- Arica develops actual CRUD
- Netty's NIO selector
- Memory barriers and JVM instructions
- Static file generation
- html synchronization, home page generation, batch generation, health check
- Single machine transaction, concurrent lock, stress test
- Netty's memory management
- Java runtime data area and common instructions
- Application scenarios of html architecture, capacity expansion, implementation of static paging
- Paging logic 2, dynamic and static, lua access mysql
- resty_template, implementation of static file compensation mechanism
- Summary of high-concurrency projects with billions of traffic
- Proficient in mysql tuning master class
- Essential theoretical knowledge for JVM tuning-GC Collector-Three-color mark
- PS+PO tuning actual combat
- Netty course summary
- JVM tuning actual combat
- Blockchain-Bitcoin, mining, and speculation principles
- Blockchain-Ethereum principle
- Blockchain-ghost protocol, pow, pos
- JVM actual combat tuning 2
- Blockchain-DPOS consensus protocol, solidity smart contract development
- Blockchain-solidity handwritten cryptocurrency
- Messaging Middleware-ActiveMQ
- Garbage collection algorithm talk
- apache dubbo
- spring cloud
- Learning and thinking of service mesh microservice design
- JIRA sum findbugs
- jenkins+code inspection
Atlas of the seven systems:
Need a more detailed map to see the welfare package at the end of the article
1. Multithreading and high concurrency
2. Case-based practical guidance for JVM tuning
3. Analysis of operating system principles that are often asked
4. Interpretation of network principles from the bottom up
5. Case-style in-depth analysis of 23 design patterns
6. Design a prototype
7. No dead angle analysis netty at the source code level
Fan benefits:
Explaining welfare resources for fans: Specially explain free tutorials to teach you how to learn, source code, distributed, microservices, performance optimization, multi-threaded concurrency, from 0 to 1, to show you the essence of the bottom layer.
Click here to get it for free! !
Electronic source code book series
Redis series
Fan benefits:
Explaining welfare resources for fans: Specially explain free tutorials to teach you how to learn, source code, distributed, microservices, performance optimization, multi-threaded concurrency, from 0 to 1, to show you the essence of the bottom layer.
Click here to get it for free! !
Redis series
Spring source code analysis