I heard about programming languages, and 20% of the technologies in them are often used. In the language Java, what does this 20% include? It has been two months since I took part in the training, and there are still two months left. If I want to find a job as a junior Java programmer in two months, what are the things that I must master, and what can I learn and sell now? What are the specific modules of a complete Javaweb project, and what technologies are used in each module?
Commonly used APIs (String, StringBuffer/StringBuilder, etc.)
1. Collection class, thread class
2.Servlet (rarely used pure servlet writing, but you have to understand, because many frameworks are based on servlet encapsulation)
3.json, xml reading and writing
4. Database access (CRUD, transaction, connection pool)
5.http request (HttpClient)
6Others, including common frameworks, design patterns, object-oriented
Junior programmers will know these Then you can write the project. The problems encountered later will be much more complicated and will depend on the accumulation of various experiences and knowledge.
In addition to the 20% that must be mastered, what knowledge must be mastered to be able to do it with ease. Let me talk about the things I have come into contact with (used).
#Java is famous for its rich ecosystem of distributed applications, and it cannot escape the decision of CAP in distributed systems. Get to know some distributed consistency protocols paxos, raft, etc. early. Learn the principles and usage scenarios of zookeeper (metadata, distributed locks, leaderEletion... etc)
The RPC framework plays an important role in the SOA architecture. It is always beneficial to study it carefully. Here I recommend Alibaba's dubbo framework, and also netty, mina and other network libraries
Hadoop series Storm Spark and other offline\real-time computing framework
ElasticSearch\SolrCloud distributed search ELK log related things are more sensitive to these, of course There are also many
message queues kafka\MetaQ RabbitMQ using ES in more scenarios. Well, yesterday the author of ZeroMQ (not completely counted as MQ) chose euthanasia. May there be no pain in heaven
Then there are various basic knowledge, programming languages, network aspects, databases, data structures and algorithms. Don’t think that you are proficient in any one of them. I dare say there are a few Zhihu who are proficient in it.
Programmer Xiaobai joined the company in July 2015. He is growing and may not be accurate. He only shares his current growth process.
2015 May Xiaobai Bai (with a C background), because he was not interested in his university major, he crammed into learning Java for more than a month. Since joining JavaWEB development, he has worked on two big projects and independently developed n functions (big guys) You’re kidding me), I haven’t heard the 20% statement mentioned by the questioner yet.
Tell me about your feelings. When you first start working, you should not be allowed to start new projects independently. It should be allowed to work with projects under development
1. Learn to use eclipse, svn and other IDEs and tools (needless to say, it mainly depends on where you work. For example, if you use eclipse, you can use IntelliJ IDEA, but you must not understand a lot when you first start working. Don’t be unconventional just yet. If you have any questions, ask them. Of course, if you are an IDE master, please ignore them)
#6. I feel that those who are doing advanced algorithms for web project design may only encounter them if they are more advanced. , it is more about operations on strings and numerical formats, such as how to extract data from the database to the front desk in the background and display it, and how to save the data entered by the user into the database, so it is best to be familiar with the operations of strings, splitting and merging. , String to float, int, etc., date format and so on.
If the company has professional operation and maintenance, just leave server deployment to them. If not, it is best to learn about remote connections and some simple things about Linux. Commands, tomcat, etc.
First of all, I don’t know how to understand the 20% mentioned by the questioner. Next, I will list the techniques that I have often used in my work over the years.
1.html, css
2.java working principle (jvm)
3.java syntax, data structure and algorithm
4.java language features (encapsulation, inheritance, polymorphism, abstraction)
5.java design pattern (often used in development)
6.java reflection Mechanism (reflection mechanism is used in common frameworks)
http://7.io (file reading and writing)
8. Multi-threading
9. Network programming
10.javascript
11.jquery
12.Database (oracle, mysql, etc.)
13.servlet
14.JDBC
15.javabean
16.WEB project layered architecture
17. Front and backend interaction
18.ajax
19. Filters and filter principles
20. Commonly used frameworks (Struts, hibernate, spring, springMVC, i/mybatis)
21. Framework integration
22. Workflow ( Process engine working mechanism)
23.xml, properties, json
24. Commonly used pages and background plug-ins (tree, time, poi, etc.)
25.nosql database And application scenarios (mongoDB)
26. Cache database and mechanism (redis, memcached)
27. Third-party interface call
28.SDK
29. Web application server (tomcat, weblogic)
30.linux
31. Log
32. Database connection pool
33.maven
34.svn
35. Use of modeling tools (powerdesiner, axure)
36.TCP/IP