Java service-side Getting Started and advanced guide __java

Source: Internet
Author: User
Tags redis sublime text google guava
Author: Cheron
Link: https://www.zhihu.com/question/29581524/answer/44872235
Source: Know
Copyright belongs to the author, reprint please contact the author to obtain authorization.

Now the Internet is rich in resources, Java learning is not difficult. The introduction and Advanced Guide to the Java service side is for beginners in our group, including learning goals, skills and references that need to be mastered, and planning the learning phase and time in the hope of helping the main topic.
Objective

Welcome to join us. This is an introductory and advanced guide to service-side development for interns/graduates. Ask your mentor or ask me directly if you have a problem. Recommendation: Try to use Google to find technical information. There are problems in the StackOverflow look for, most of them have already been answered. Read more about the official technical documents. IBM Developerworkers's article quality is overall guaranteed. Usually spend some time on GitHub to read excellent project source code. Getting Started (1-2 months) Goal: to participate in simple project development. Skills: Master Java. The classic Java Core Technology: Volume 1 Basics (or Java programming ideas) must look, skip the graphics and applet chapters. Get used to checking Java API Doc. In order to ensure the quality of the code, the effective Java, clean code, and refactoring to improve the design of existing code also need to read at least once. Familiar with the Linux development environment and bash shell. Linux is our development and deployment environment, you'd better be proficient in it as soon as possible. The basics of Linux can be learned by "Brother Bird's Linux private cuisine: Basic Learning (third edition)", and the development of bash shell scripts can be referenced in the Linux shell Script Guide. Master Development Tools Skilled use an IDE. IntelliJ idea or Eclipse can be recommended to use the former. At least familiar with commonly used shortcuts, debug (including Remote Debug) projects. Familiar with an editor. For example, Vim/emacs/sublime Text, at least learn to search/replace/code completion. Master common class libraries and toolkits outside the JDK. JDK native APIs are not easy to use in many scenarios. You need to master the Community contribution of the excellent class library and toolkit, such as Apache Commons, Google Guava, etc., can read the service-side technology selection of the utility chapter. http://xielong.me/2015/04/17/Service-side technology selection/Master WEB development Framework. We use Spring (or Rose) + Ibatis (or jade) to develop Web services, and you need to be proficient in them. Learn code specifications. We generally follow Oracle's Java language coding specification, and you can read and familiarize yourself with it first. The code formatting file is Git@xxx/coding-standard.git, and you import it into the IDE before you write it. Also, verify that the IDE has FINDB installedUGS and Checkstyle Plug-ins. Familiar with the development process. Our development process is as follows: functional development-> Unit test-> function test->code review-> integration Test-> release. Make sure you are familiar with each of these links. Other. Need to be proficient with version control tools Git (read: "Git Authority Guide"), and Project Builder Maven (read: "Maven combat"). In addition, TDD development can be attempted at this stage. Advanced (2-6 months) Goal: to be responsible for a service-side project independently. Skills: Mastering Web development Best Practices, mastering Restful API Design, understanding Spring principles. Read the "Spring Revelation". Master project layering and sub module division. Recommended reading: "Java EE core model." When learning the web framework, it is advisable to learn the Servlet: Head First Servlet & JSP, and then learn Spring: The spring revelation, and the underlying pure frame principle can be seen in "how Tomcat works." There are other good Word-of-mouth books on the market, but not much has been read, it is not recommended.
master Web Architecture Design. Includes Http reverse proxy, data caching, load balancing, horizontal scaling and vertical scaling. Recommended reading: "Distributed Java Applications: Fundamentals and Practices." Mastery of relational databases. Includes the design of MySQL table structure, according to the business characteristics of the sub-table, based on the execution plan of SQL analysis optimization, as well as database capacity planning. Recommended reading: "MySQL must know will", "High-performance MySQL." Understand NoSQL. We use Hadoop, HBase, Hive on a large scale, and some projects use Redis, Storm. You need to learn the basics of using these tools. Learn Web security knowledge. Learn about Web front-end security issues. Design secure Web services, including encryption and decryption, forgery prevention, replay attacks, etc. Master HTTP (Recommended reading: "Graphical http", "HTTP Authority Guide"), Thrift and other protocols. Master service capacity Planning, performance tuning, reliability assurance, and fault handling. Learn capacity planning and performance tuning knowledge, comb the business monitoring points, skilled use of our monitoring and alarm system. Recommended reading: "Deep understanding of the Java virtual machine." Other. Design pattern: Learn from the project, have time to see "Simple design Mode", "JDK design mode."  Learn Java Socket programming and multithreading knowledge, you can see "Java Concurrent Programming Combat", and turn over the concurrent programming network article. NIO Network Programming and threading: Two books: "Java multithreaded design pattern" Jcs Hao, Java Concurrency programming practice. Then look at the source of the Netty source to read through the document before, you can also find the code analysis on the Internet. Analysis of the source code can start from the Project unit test, there is another technique is concerned about the project Roadmap,release notes and issues discussion, raw look at the source sometimes effect is not very good.
Depth (6-month-) Goal: Distributed systems and middleware development. Construction of Knowledge System: "Large Web Site system and Java middleware practice", "large-scale Web site Technology framework: Core principles and Case analysis." Principle and Design: "Large-scale storage System", "UNIX Network Programming Volume 1: Socket networking API", "How to Tomcat works". Learn open source projects: Apache Thrift, Zipkin, Netty, Rose, Jade, Taobao RPC system Dubbo, and so on. Analyze the design ideas in the project. For example, the same is the RPC framework, Finagle and Dubbo have any similarities and differences. Other. Deepen your study according to the project you are involved in. For example, if you need to write a DSL, you can read "domain-specific language", Redis interested in the recommendation read: "Redis design and implementation." There are two books, no matter what project, are recommended to read: "Unix programming Art", "UNIX Environment Advanced Programming (3rd Edition)".

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.