Click “like” to see again, form a habit, wechat search [Three prince Aobing] to pay attention to the Internet tools of survival.
This article has been included in GitHub github.com/JavaFamily, there are a line of large factory interview complete test sites, information and my series of articles.
preface
I have wanted to write this issue for a long time, but it has been delayed until now because of time. I thought I could finish it in one or two days, but as a result, it took me almost a week from conception to material sorting and then to writing.
You also know c c has been the creation don’t come, so I’m sure I won’t write formal, I think for the breakthrough point, the final decision with a complete electricity system as the breakthrough point, with a look, we need to learn what, I even supporting video and information collection, sunshine boy stone hammers, this period is bloody work, don’t fuck white.
The body of the
Before writing this article, I spent some time imagining an e-commerce system, which is basically a sparrow though it is small, I will use it today, step by step analysis, I will talk about the technology stack we may contact may not be complete, but enough, and finally give a learning route.
Take a look at each point and see where you’re familiar with and what stacks you’re not familiar with. I think it’s pretty comprehensive. Leave me a comment if you have any suggestions.
I don’t know if you’ve all taken a look, but now we’re going to cook up some food. I’m going to analyze it from top to bottom.
The front end
You may be wondering why there is a front end when you are talking about the back-end learning route, but I can only tell you that it is stupid and superficial.
We can’t do this behind closed doors. Who told you the back end doesn’t learn something about the front end?
Front end now many also understand the back-end stack of technology, you want us to go to a website, the first contact, the first to see what is?
Yes, it is the front end. In university, if you can’t find a dedicated front end student, you must do the front end by yourself to build a system. Then I think you should be familiar with and understand the most basic technology stack.
Here I’ve listed the stack of technologies that I think are relatively simple and that we can understand at the back end, which are fairly basic.
As a backend, it is necessary to understand part of the front-end knowledge. In the future development, the company has a front-end that can help you connect to the front and back ends more smoothly. If you do not have a front-end, you can also top a simple page.
HTML, CSS, JS, Ajax I think is must master the point, looking simple in fact, there are a lot of things to explore or to operate, other as an extension of interest can understand, anyway, simple entry, but it is very difficult to master.
There are Http protocols and servlets in this layer. Request, Response, cookies, and sessions will be with you throughout your technical career, and understanding them will benefit you in the future.
Tip: I finally left out JSP related techniques here. Personally, I don’t think it’s necessary to learn them. Many companies don’t use them in new projects except old ones.
In my opinion, the front end is more difficult than the back end. Technology iteration is faster, and there seems to be no specific system of knowledge. Therefore, many friends in the front end of the interview say that it is difficult, not because the technology is difficult, but because the knowledge is more and complex, and there is no complete system.
The gateway layer:
With the development of the Internet, many Internet companies have emerged, and many versions of technology have been updated and iterated. From the single machine era in the early stage to the super-large Internet era, hundreds of millions of people participated in the Spring Festival travel rush and the Double Eleven with hundreds of billions of transaction scale, countless Internet predecessors have created the brilliance of the Internet now.
Microservices, distributed, load balancing, all of those terms that we talk about a lot are behind the scenes.
If a single machine can not stand, we will find more servers, but how to evenly hit the flow to these servers?
Load balancing, LVS
Our machines are IP access, so how to request to the server through the domain name we apply for?
DNS
How do we ensure that douyin, B station, Kuaishou and other video service providers can provide fast experience for users all over the country?
CDN
We have so many systems and services, we have so many middleware scheduling how to manage scheduling and so on?
zk
So many servers, how to access external unified, you may need to know the reverse proxy server.
Nginx
This layer does reverse load, service routing, service governance, traffic management, security isolation, service tolerance, etc., and your company’s Intranet isolation is also done at this layer.
I have also come into contact with some interesting projects before. All external interfaces are encrypted, and dozens of services will decrypt through the gateway and find the real route before making requests.
Zk is a layer of distributed transactions, distributed locks, and a lot of middleware. Let’s move on.
Service layer:
This layer is a little thing, is the core of the framework, if you like I ShuaiBing after all from the later development of words, we basically the whole technology career, most of the time in dealing with a layer of technology stack, all kinds of full of beautiful things in the middleware, basic computer knowledge, the Linux operating, algorithm, data structure, architecture framework, research tools and so on.
I think everyone who is reading this article must have learned the basics of computer science. If you didn’t learn it well in college, I think it is necessary to look at it again.
You may learn about HTTP, TCP, three-way handshake, four-way wave.
There are processes, threads, coroutines, memory barriers, instruction out of order, branch prediction, CPU compatibility, etc. Later in your programming career, if you can master these things, you will be able to get to the point when you encounter a lot of problems rather than running around like a headless fly.
After understanding these computer knowledge, you need to get in touch with programming languages. The C language foundation in college will make you learn any language faster. I chose object-oriented JAVA, but I don’t know why there is no object now.
Is just as important, the basis of JAVA object-oriented (including classes, objects, methods, inheritance, encapsulation, abstraction, polymorphism, message parsing, etc.), common API, data structure, the collections framework, design patterns (including creating type, structural, behavioral type), multithreading and concurrent I/O Stream, Stream, you need to know about network programming.
Once the code is written, you should start to learn some frameworks that will help you to standardize your system. SSM can make your development easier and more structured.
When writing code, you will find that the Eclipse you used in college is no longer available in the company, and you will use IDEA like everyone else. What is it on the first day? A week later, it smells great, but it is a little expensive, so the free VSCode is really a good choice.
When writing code, you will contact the repository management tools maven and Gradle, and when submitting code, you will write the project version management tool Git.
After the code submission, after the release you will find a lot of things need to go to the server to check, then the Knowledge of Linux can be used flexibly in the inside, view the process, view files, all kinds of Vim operations and so on.
System optimization of the space of the optimization of a lot of places, you may try from algorithm, or optimizing the data structure to optimize, you see the source code of a HashMap, want to go to understand the red-black tree, and then in the online saw the binary tree search algorithm tree and the algorithm of various common problems, more brush, you can also sums up the essence of what a greedy, partition, dynamic programming, etc.
With all these services, you find that HTTP requests are starting to get a little bit too much for your needs, and you want to make it easier to access remote services as if they were local services, so we went to Dubbo, Spring Cloud.
While learning about Dubbo, you discovered the essence of RPC, which led you to the high-performance NIO framework, Netty.
The code is written and the service can communicate, but you find that your code links are long and all coupled together, so you get to the message queue, which is very asynchronous.
It can also help you buffer with queues in the event of a burst of traffic, but when you discover the distributed situation, the transaction is difficult to manage, and you learn about distributed transactions, such as two-segment, three-segment, TCC, XA, Ali’s global transaction service GTS, etc.
You’ll want to get to know RocketMQ when it comes to distributed transactions, because it comes with distributed transaction solutions, and you see Kafka in the big data scenario.
I mentioned ZK above. Middleware like Dubbo, Kafka, and others use it as a registry, so a lot of technology stacks end up forming a body of knowledge that you can’t connect until you know everyone in the system.
The interactions of services have gone from in-process communication to remote communication, so performance is bound to suffer somewhat.
In addition, due to many uncertain factors, such as network congestion, Server downtime, excavator cutting off optical fiber in the machine room and so on, many additional functions and measures are needed to ensure the smooth and stable operation of micro-services.
Spring Cloud has Hystrix fuses, Ribbon client load balancers, Eureka registries, and many more microservices components designed to solve these problems.
You feel that you have learned enough. You find some cutting-edge technologies emerging in major forums and blogs, such as containerization. You may want to learn about containerization, such as Docker, Kubernetes (K8s), etc.
One of the important reasons for the rapid development of microservices is the development of containerization technology and the maturity of container management system.
In fact, this layer of things far more than these, I will not repeat, write more like a counselor, but you do not need to panic, most of the technology is slowly contact, slowly to understand, to go deep in the work.
All right, let’s go down the graph. What’s next?
Data layer:
Database may be the most valuable part of the whole system, the day before I code text, just happened to micro alliance programmer delete library run operation, delete library run is actually our most commonly used joke on the Internet, did not expect or according to the reality.
Here also mention, 36 hours of fault, actually should be a joke in the Internet company, access control not ready like the rm – rf, fdisk, drop and so on high-risk command can be real-time intercepting off, backup, full capacity backup, incremental backup, backup, delay disaster beyond all should not consider this, A public company is still a little bit shouldn’t.
Basic transaction isolation levels for databases, indexes, SQL, master/slave synchronization, read/write separation, etc.
Above we mentioned security, do not put eggs in one basket of truth we should all know that the significance of the branch database is very obvious, and then you will find that the table data for a long time, you will think of to contact the branch table, what TDDL, SHARing-JDBC, DRDS plug-ins will be exposed to.
When you find that there is a lot of traffic, or hot data to the database is still a little bit difficult to hold, the pressure is too big, then non-relational database comes into play, Redis is of course the first choice, but MongoDB and memcache also have their own application scenarios.
When Redis is used, it smells good and is fast, but you will start to worry about the security problem mentioned at the beginning. It is fast because it operates in memory. What if the data is lost when the breakpoint is broken? You start reading official documentation, learning about persistence mechanisms like RDB and AOF, and running into cache avalanche and penetration issues when using them online.
If you are not satisfied with the single machine, you will use the cluster mode. If you use the cluster, you may also worry about the health status of the cluster, so you have to understand the sentry, his master-slave synchronization, and after a long time, you have to understand the memory elimination mechanism.
He has problems with mass storage, you may need to know about Pika… .
Well, it’s far from over, I’ve touched each of these points, but it’s going to take a long time to get to each of these points, so let’s move on.
Real-time/offline/big data
When you put several relational non-relational database knowledge points, sorting out the clear, you will find that the data is still big ah, and the data scene is more and more diversified, that the big data of all kinds of middleware you have to understand.
You will find many scenarios, which do not need real-time data. For example, if you check your Alipay bill of last year and last month, these data will not change, so there is no need for real-time data. Then you may contact middleware like ODPS to do offline data analysis.
Then you might get into something related to Hadoop, such as Hive, a data warehouse tool for Hadoop (HDFS), HBase, a distributed column-oriented database built on top of the Hadoop file system.
Write a lot of scenarios, good for some simple queries, but a little overqualified to use them, Cassandra is perfect.
Offline data analysis can not meet some real-time common, similar to risk control, then Flink you have to know something about, his window idea is still very interesting.
After data exposure, you can’t let go of Spark.
Search engine:
Traditional relational database and NoSQL non-relational data can not solve some problems, such as when we search things in Baidu, Taobao, are often a few keywords together to search things, in the database unless the results of several times do intersection, or it is difficult to achieve.
So the full text search engine is born, solves the search problem, you have to think about how to synchronize database stuff to ES in real time, so you might think about Logstash to run script synchronization on a regular basis, or you might want to get in contact with Canal disguised as a MySQL slave service, who subscribes to the binlog of the main MySQL service, It then parses itself to manipulate the data in Es.
All of these are done, then how to solve the visual background query? Kibana, he is a visualization platform, even the HEALTH management of Es cluster have done visualization, many companies log query system is done with it.
Learning path
See so long are you found that ShuaiBing just has been introduced technology stacks of each level, and didn’t say to a specific route, that is because I want you to have a cognitive or literacy first, as I head figure collect all the way, if the picture is platform 2 pressure, can go to the public, “route”.
Information/learning sites
JavaFamily: GitHub maintained by a man who lives and dies on the Internet
CodeGym: An online Java programming course that is 80% practice for beginners.
Wibit Online Java Courses: a very interesting programming learning website, a variety of vivid animation images can let people forget the boring learning. Online video learning is perfect for zero-based learning.
Stanford CS106A: Programming Methodology. If you want to learn the Java language and have absolutely no Programming experience, check out this course.
Bloombenc: An online interactive learning platform where teachers can modify their teaching methods based on your learning ability and pace, and code on the platform.
Imooc: That’s where I read the C language in college
CodeAcademy: A practical Java online course that focuses on technical skills that are useful when looking for a job.
PLURALSIGHT: PLURALSIGHT integrates many Java video courses, some are free, some are paid, you can choose according to your needs.
Lynda Online Java Training Videos: Advanced Java Training Videos, including how to use JDBC to integrate MySQL database, Reflection API, manage files and directories, etc.
Chapter 9 Basic Algorithm class (Java) : Chinese online interactive course, start learning at any time.
BeginnersBook: Java BeginnersBook: Java BeginnersBook: Java BeginnersBook: Java BeginnersBook: Java BeginnersBook: Java BeginnersBook: Java BeginnersBook
Docs.oracle.com/javase/tuto… : Official Java guide, very helpful for understanding almost all Java technology features.
JournalDev: Java tutorials and Q&A
JavaWorld: The first Java site with weekly Java technology articles.
developer.com/java: Java technology articles website maintained by Gamelan.com.
IBM Developerworks: Developerworks is the developer’s Java technology home page
Tip: There are a lot of materials that I prepared for this column, but they are all external links, or inappropriate sharing methods. My sister who runs the blog reminds me, so please go to the official account and reply [route].
omg
If you want to go to a good company, but the current hard strength is not enough, I think it is necessary to try, the level of technical ability can determine how far you go, the level of platform can determine your height.
If you’ve worked your way into the company of your choice, don’t slack off. Career growth is like learning new technology.
C c found that the people around me in the work is really the stronger the strength of the more hard, the highest level of self-discipline, enjoy loneliness (weekend crooked brother).
conclusion
I mentioned a technology stack that you want to know all about. I think a few months is enough for you to know it, know what it does and how to use it. I don’t mean to know its underlying principles, understand its common problems, be familiar with the solution of the problem, etc.
If you want to achieve the latter, you basically have to rely on the accumulation of time, or constantly try to accumulate experience, there is no such thing as a quick fix, haste makes waste, as we all know.
The road of technology, to be honest, is very boring, very hard, but the pay will be higher than some other basic positions.
Place the truth my university learns this is for interest, I am right to electron as a child, love to computer quite, but now burnish, be for money now, be very realistic? Who would wander from place to place if his family were rich?
But because third third does software at least, changed the embarrassment of family, oneself day also steps toward well-off step by step.
It would be an exaggeration to say that being a programmer changed my life and that of my family, but I always have the illusion that my off-hours life will change because I chose to take this path.
I am Aobing, a tool to survive on the Internet.
Creation is not easy, this hardcore, do not want to be white piao, you “three even” is the biggest power of creation of C c, we will see you next time!
[Information] [interview] [resume] I prepared the interview materials and resume template, this article GitHub github.com/JavaFamily has been included, there are big factory interview complete test site, welcome Star.