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
Self-study/learning route this issue I want to write for a long time, because I always want to write a full point of the core point so delayed now, I believe that this issue is still in school or work students are helpful, whether it is the front end or the back end OF the wall I suggest you finish reading, This will give you a taste of the technology stack in the Internet space where you work.
You also know AoBing I am a devil of a genius, the breakthrough point of the conventional also is not my style, I after graduation are electricity field of main contact, so this issue before I get to know the current technology stack with the experience of the electricity system assume a complete system of electricity, you will see a lot of familiar technology stack I believe will see I did not contact technology stack, I will also mention the main technical points of each stack, but the details will be left to my history and future articles.
This period is a work of painstaking effort, don’t go for nothing.
The body of the
Let me introduce the front end
The front end
My readership is based on the back-end. If there are friends who haven’t started learning in college, I think the screen is full of question marks at this time. Why do we back-end programmers need to learn the front-end? All I can tell you is, stupid, shallow.
If it is a programmer who has graduated from university, I believe that every back-end programmer will be simple front-end, and even many back-end programmers are familiar with the latest technology of the front-end. We can not be closed, who told you that the back-end does not learn some front-end? And it helps that you know that the front end may have a better idea of what to do later in the process.
We first come into contact with the Internet is certainly not after the series of things, but the mobile client and front page, all kinds of fancy style is not what we want to understand, but the basic language of web pages and layout from 0 to 1 this process is that we should get to know, you see the brilliant page layout, links, text, images, events, etc., It’s all tags, class styles, and JS events.
Technology idea behind is actually each other, so as the back-end side as the beginning of our programmers learn is completely OK (only for has not yet started sprouting new apes), I believe in your university front foundation courses are also arranged, and whether to go to school or after graduation I believe after you will contact a little bit of front-end.
In university is generally used to exercise technology project, that the project there may well be you a person from the front to the back end is written, I was at university, now work for us a lot of content system simple front is our own to develop, because in order to simple page and logic to waste the resources of the front end is not very necessary.
Here I have listed the stack of technologies that I feel are relatively simple and accessible to the back end, which are relatively basic and necessary.
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.
VUE and React support plug-and-play plugins that will make it easier to create beautiful web pages.
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 of the technology, but because of the knowledge and complexity, 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, cloud native — the terms we often use — are all 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, but we are online domain name access, then 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.
In fact, there are many knowledge points in this layer. You will learn to discover distributed transactions, distributed locks, and many middleware are inseparable from Zookeeper in this layer. Next is the most complex part of the whole learning system, the server side.
Service layer:
This layer is a little thing, is the core of the framework, if you like AoBing 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, HTTPS, TCP, three-way handshake, four-way wave, man-in-the-middle attack, etc.
There are processes, threads, coroutines, memory barriers, instruction out of order, branch prediction, CPU affinity, and so on. Later in your programming career, if you can master these things, you will get to the point where you have a lot of problems rather than running around like a headless fly. So I’ve been catching up on operating systems and networking.
After understanding these computer knowledge, you need to get in touch with programming languages. The C language foundation in college will help you learn any language faster. After the embedded internship, I chose Object-oriented JAVA, but I don’t know why THERE is no object yet.
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 have access to the repository management tools maven and Gradle, and when submitting code, you will learn the project version management tool Git.
After submitting the code, you will find that a lot of things need to go to the server to check in person, then the Knowledge of Linux can be used flexibly inside, through the jumper to access the server to view the process, view files, Vim operation instructions and so on.
When you develop your own system for distribution, you find that many commands can be written as a script and executed with a single click, and the Shell will do much more with less effort.
System level optimization will be a lot of time is limited, 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, etc.
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 in the burst of traffic with queue buffer, but you find distributed situation, transaction is not easy to manage, you know distributed transaction, such as two-stage, three-stage, TCC, XA, Ali Cloud global transaction service GTS and so on.
RocketMQ comes with a distributed transaction solution, but it’s not suitable for scenarios with large data volumes. Kafka will come to your attention.
I mentioned ZK above, and middleware like Dubbo and Kafka use it as a registry (Kafka will remove ZK later). Many technology stacks end up forming a body of knowledge, and you can’t connect them until you know each one of them.
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 the learning is almost done, you find the major forum blog emerged some cutting-edge technologies, such as containerization, cloud native, you may learn about such technologies as **Docker, Kubernetes (K8s) **, you will find how convenient they provide for enterprise applications.
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.
Here still want to say that I often mentioned that sentence, the more you know, the more you don’t know, all areas are in this way, once you understand the technical details, derived the disadvantages of new knowledge and he will let you find your ignorance, but that you don’t learn to progress ceaselessly will let you walk on the way to study further.
All right, let’s go down the graph. What’s next?
Data layer:
Database is probably the most valuable part of the whole system, it also happened this year micro library run programmers to delete, delete library run is our most commonly used on the Internet jokes, but we should get the thinking behind this joke is that the data is the core of the entire enterprise is the most important thing, I now in the company’s big data team.
If you are interested in big data, I think I can also find an opportunity to publish a separate issue about the big data technology stack.
Basic transaction isolation levels for databases, indexes, SQL, master/slave synchronization, read/write separation, etc.
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 over time the table data is large, you will think of to contact the branch table, what TDDL, SHARing-JDBC, DRDS plug-ins will be exposed to.
When you find yourself with a lot of traffic, or when hot data hits the database and the pressure is too great, then non-relational databases come into play. Redis is of course the first choice, but memcache has its 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.
Single machine does not satisfy you to use, his cluster mode, with the cluster may also worry about the health of the cluster, so have to understand sentry, his master from synchronization, time long Key much, have to understand the memory elimination mechanism……
The boss lets you design daily check-in and UV, PV statistics at the lowest cost you will be exposed to: bitmap and HyperLogLog, high-speed filtering you will consider: Bloom Filter, nearby people will use: GeoHash has problems with his mass storage, you may want to check out 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 data warehouse/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 contact, you can’t let go of the computing engine Spark……
Algorithms/Machine Learning/artificial Intelligence:
Data is the most valuable part of the whole e-commerce system and even the whole Internet, but how to give full play to their value, data in the database can not give full play to its due value, algorithm has been more and more attention in the last 10 years. Machine learning, deep learning, artificial intelligence, automatic driving and other fields also frequently reported the news of high offers, so I think there is also a chance to learn about algorithms.
I don’t know if you have used the image search function with search engines or shopping websites, but this is the image search function of the algorithm. After we input the corresponding keywords in the search bar, the algorithm will go through natural language processing, and then fall into the recommendation system to give the best search results, and the hot search that you see. The default search recommendations are calculated by the algorithm for your personal optimal recommendation, the recommendation you are most interested in.
For example, when I recently watched the video related to “Long King And Superfluou” in B station, my default search recommendation appeared the default search recommendation of “Painting website Superfluou”, which is calculated according to recent hot spots and your personal preference, you can go in and try refreshing.
With such a large domestic population, there should be more garbage content, but people can almost always browse to the green and healthy network environment, thanks to risk control, algorithm students will also use risk control to screen pornography, politics and other related content.
You should know that every action you take will be analyzed as soon as you enter the app, and then you will be tagged one by one. The algorithm will work out your favorite content and feed it to you. Haven’t you found that the more You read the content, the more you like it? Taobao you more shopping recommended goods you want to buy?
Thanks to the combination of big data and algorithms, different training models are constantly improved to feed users their favorite content. Many training models are even updated with hourly update frequency.
There is a difference between internal and external user data, because many platforms won’t give you complete data, but algorithms will try to capture every potential feature of the user and then feed you the ads that best suit you.
In fact, every company has its own basic professional ethics. Normal companies will not sell any of their users’ data, but there are also black industries selling user data in the market.
Born in this era of big data is a good thing, technology is always two sides to everything and I have been stressed, such technology will make you all the information that is transparent, as much as possible, this time we will pay attention to protect our own data privacy, and don’t covet petty gain to full fill in your real information, phone number, id number, etc., you never know the value of your data, And what they might be using your data for.
Algorithms I mentioned search engines here, and I’m going to talk about them separately, because there’s something to be said for the technology side.
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
The above is all the technology stack of the whole system. At this time, you will have a look at the e-commerce project map I started. Will you feel more comfortable? Have you found that to be the case, and have learned a lot about the status of the technology stack in a system?
As for the technical route map, it is enough to use my previous diagram. It is not necessary to strictly follow this to learn, but to give you a reference.
Information/learning sites
JavaFamily: GitHub maintained by a man who lives and dies on the Internet
B website: www.bilibili.com
Chinese University MOOC website: www.icourse163.org
The IMOOC website: www.imooc.com
Geektime: time.geekbang.org
The Geek Academy website: www.jikexueyuan.com
Netease Cloud Classroom website: Study.163.com
Baidu/Google website: www.baidu.com www.google.com
Zhihu website: www.zhihu.com
GitHub: github.com
I want to study by myself. The website is www.51zxw.net
W3school, cainiao tutorial website: www.w3school.com.cn www.runoob.com
Douban, wechat reading, dangdang website: www.douban.com weread.qq.com book.dangdang.com
CSDN website at www.csdn.net
The nuggets website juejin.cn
Blog Park website: www.cnblogs.com
Segmentfault: Segmentfault.com
Stackoverflow website: stackoverflow.com
Open source China website: www.oschina.net
V2ex website: www.v2ex.com
InfoQ website: www.infoq.cn
Youdao Dictionary website: www.youdao.com
Evernote website: www.yinxiang.com
9, Netease Youdao Cloud, Netease Graphite
ProcessOn, XMIND website: www.processon.com www.xmind.cn
Jiumo search website: www.jiumodiary.com
Script House website: www.jb51.net/books
Niuke.com school recruitment website: www.nowcoder.com
LeetCode, LintCode: leetcode-cn.com www.lintcode.com
Data structure simulation website: www.cs.usfca.edu
BOSS and hook website: www.zhipin.com www.lagou.com
The Denver nuggets: juejin. Cn
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 the family, oneself day also moves toward well-off step by step past, without classics a cold biting bone, how get plum blossom tangy?
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, we will see you next time!
This article is constantly updated, you can search “Santaizi Aobing” on wechat for the first time to read, reply [information] I prepared the interview materials and resume template, GitHub github.com/JavaFamily has included this article, there is a complete test site for the interview of big factory, welcome Star.