JAVA self-study road map
JAVA self-study road 2: JAVA self-study road map
[Please indicate the source for reprinting: http://www.bjsxt.com/zixue/zixuezhilu_1.html]
Many classmates have sent me letters to discuss with me what the self-study process of Java should be like. After all, there are many people who cannot participate in training due to various reasons. I'll try to give my own opinions and try to inspire others.
This roadmap is prepared for those who are seeking employment. If you are just interested, you may not necessarily follow this path.
Here we just talk about the road map. Regarding the various stages in the route, to what extent you have learned, how to learn, etc., you can refer to the following JAVA self-study road 7: "Road Map Details".
There is no doubt that you must first learn JavaSE.
At the same time, yes, at the same time, in sync with the study of JavaSE, I recommend that you study data structures and algorithms.
After here, you can choose to work in the direction of J2ME, or Java GUI, Socket programming, etc., but through the method in the first article, you can easily filter out this direction (never forget that we are here for employment), okay Well, say goodbye to them for the time being and move forward in the direction of J2EE.
After the completion of JavaSE, you can try to complete some small projects, and at the same time pay attention to the content of the design pattern. There is no need to force yourself to fully master all the details, and move forward.
Master a programming tool, such as Eclipse.
For database, you can choose to start with Oracle or MySQL. JDBC, connect to the database using Java.
You can choose to cut into Hibernate here, or you can choose to use Struts
after. HTML CSS JavaScript, these things are necessary for web projects. Servlet JSP, required on the server side.
XML AJAX, the new fashion trend cannot be understood.
Do some small projects. For example, BBS, message system, student status management, shopping mall, etc., just use some simple business logic to do it. Struts, a typical application of MVC
Hibernate, a model of OR Mapping.
Spring IOC + AOP, object-oriented + aspect-oriented, a perfect journey.
Add elements of Struts, Spring, and Hibernate to your previous small projects.
Go study the business logic of various business projects to add a strong touch to your resume.
EJB3.0, Java's return after many detours, is worth studying.
SOA is a definite future trend in the industry and must be followed closely.
Later, I will tell you the learning methods and key points of each step.
Want to take action
JAVA self-study road three: hands-on
[Please indicate the source for reprinting: http://www.bjsxt.com/zixue/zixuezhilu_1.html]
Regardless, keep experimenting!
Learning Java requires hands-on experience. You cannot learn programming well just by watching and listening. There are always students writing to us asking questions like: "Teacher, I watched the video (download: http://www.bjsxt.com/download.html ), but why don't I have any ideas when I start it?" , I usually say don’t worry. If you just watch the video and want to be fluent, then the teacher’s training for these years is really in vain. After so many years of hard training, you can have a slight feeling of fluent. You think you can achieve it overnight, no Is it too luxurious? :)
As someone who is experienced in programming, think about it, when did you get the idea when you were learning programming? At least it was after I had copied the code like a cat and painted a tiger for a period of time. It was only when I painted tens of thousands of lines of code in a certain field that I gradually came up with my own ideas. Just like writing a composition, generally speaking, you have to go through several stages to have your own ideas. First, learn vocabulary, then learn to form sentences, then read a lot of other people's articles, imitate and write some of your own, and gradually accumulate experience to form your own. ideas. I'm afraid you have to learn programming slowly. Just watching and listening to videos is not enough to learn programming well.
So, go ahead and follow along, typing line by line. After finishing a project, such as a tank, try adding some of your own functions and typing some code according to your own ideas. The rewards will be much greater than just listening.
If I encounter some students who cannot understand their ideas for the time being, I usually advise them to start writing and write the code first. Quantitative changes will lead to qualitative changes. And this kind of qualitative change has indeed happened many times.
As a reminder, you must understand the idea of the code before typing, or typing behind your back. Do not put other people's programs on the left and write them one by one on the right. This is no longer a programmer, but a typist.
What is written on paper will eventually become shallow, so: don’t ask so many questions, don’t think so much, just start writing.
First things first
JAVA self-study road four: First things first
[Please indicate the source for reprinting: http://www.bjsxt.com/zixue/zixuezhilu_1.html]
In dealing with everything in life: focus on the big and let go of the small, and put first things first
For a person who has never been exposed to Java before, Java is undoubtedly huge. It seems that every field can be expanded into an open space. In every field, it takes a huge amount of energy to get in touch with every detail. . At this time, everyone has great ambitions and stares at every new knowledge point with shining eyes. When they encounter any knowledge point, they want to dig it out clearly and clearly.
Is there anything wrong with this?
My opinion is that there is nothing wrong with it, but the learning efficiency is too low! The learning method we recommend is to focus on the big and let go of the small, and put first things first.
For example, when learning J2SE, when learning the GUI chapter, some students thought that since we have learned this, let’s learn more about SWING; other students encountered Shell programming under Linux. I wish I had to learn Shell first and become an expert before I would be willing, or dare, to continue learning. Have you ever felt like this: you didn’t learn the first volume of a book well, and you feel like you don’t know what to do with the next volume, and you even have to read it. Review the previous volume before daring to continue learning. If this is the case for you, you should go see a psychiatrist, maybe you have mysophobia :).
It is a character flaw to pursue perfection in everything before you dare to continue.
Be brave enough to give up something. Only with losses can you gain. Use your limited and precious energy in areas directly related to employment. This is the most efficient way to learn! When you start working, have the career motivation and economic foundation for sustainable development, and have time and energy to do nothing, then study other things.
There was once a story about the relationship between production capacity and output.
A person likes to read. After studying for a lifetime, he knows everything. At this time, he can do any job. His productivity has reached the extreme. However, when he is old, even if he produces a lot of things every day, he cannot sustain it for long. The output of a lifetime Not much.
The other person works directly and is busy. He has been working next to the machine day in and day out for his whole life. He has no time to study and further study. You can imagine how big the output can be.
In a person's life, one must exercise productivity and produce timely output. The engine must be turned on and one must stop for refueling. The better the balance between the two, the greater your contribution and output will be. If what you are studying has nothing to do with the production capacity target (or the recent production capacity target), be willing to let it go.
So, for SWING, leave it aside for now.
For the shell, for the overly detailed details of various protocols, for the programming of your favorite games, and for the various flashy effects of javascript, let's say goodbye to them for the time being. Everything that is not closely related to our direct work goals can be thrown aside or clarified enough to support the next step of learning.
Doesn't this prevent me from becoming a master of all kinds of details?
I never think that a person who has mastered many details of knowledge points is a master. If a person told you that there are four ways to write the word "hui", would you think that he is a master? To put it bluntly, all the details of the knowledge we teach can be found online or in books. As long as you are willing to spend time and energy to try it out and study it, there is nothing you cannot master. Can you master struts and spring? Of course! But if you spend your time studying the various details of spring, and studying spring mvc, which is not widely used by Chinese enterprises, this energy will be too wasteful, and your enthusiasm for learning will be dampened. Who wants to spend all day in this Can't you get through the spider web of details? Who wants to experience wind and rain every day but never see a rainbow?
When building a house, you must first build the skeleton and then talk about decoration.
When painting landscapes, you must first paint the structure and then talk about polishing.
To understand a machine with a complex structure, you should first understand the context clearly, and then gradually understand each joint.
In order to cope with exams from primary school to university, we have memorized all kinds of details that should not be mastered in advance. At the same time, we have also developed the study habit of picking out details when we see them. And now, it's time to change.
Please do the right thing at the right time.
Spend your time and energy on projects, writing works and practicing problem-solving skills. This is the right and fast direction to become a master.
I have never thought that a course that provides a lot of details is an excellent course with high value. Mastering the necessary details is unambiguous. As for the others, it can be given through videos (this can give more details, but it is not Taking up class time, only important and necessary detailed knowledge is taught in class), or you can find out by yourself after mastering the ability of self-study. This is the right way.
When you reach a certain place in a book and you don’t understand it for the time being, let it go for the time being and pursue some smooth and natural realm. Just don’t stop moving forward, and don’t let the branches and roots beside the road interfere with your progress. Projects, real projects, this is the goal, not far ahead.
Tao Yuanming's reading was called "not asking for deep understanding", but he was a great poet.
Zhuge Liang always "observes the outline" when he studies, but he is a great statesman.
Those who do research should study things in detail after determining the direction.
When I arrived at Mount Lu, I threw aside the veins and shapes and stared at the grass and pebbles. How can I recognize the "true face"?
As an application-oriented talent, please make your own decision whether to study n ways of writing Hui or to seize the time and work towards the main application.
Use projects to drive your own learning. After grasping the technical context, you can then add detailed research, which is the right way.
Aren’t you going to study other directions in this life?
Of course research! But let’s talk about it at a suitable time in the future.
Therefore, focus on the big and let go of the small, and put first things first!
So, among these JAVA courses, which ones are the big ones and the most important ones? Please read on.
problem solving
JAVA self-study road five: problem solving
[Please indicate the source for reprinting: http://www.bjsxt.com/zixue/zixuezhilu_1.html]
Since it is learning, it is impossible not to encounter problems.
Since it is self-study, there is no convenient opportunity to discuss with the teacher.
So, after encountering problems, the environment cannot be matched, the program cannot be adjusted, and the operation is not normal. What should you do when you encounter these annoying problems?
First of all, I want to congratulate you. Encountering a problem means that you have another opportunity to increase your experience. Every time you solve a problem, your JAVA experience value should increase by several hundred points. The more problems you encounter, the faster your knowledge will improve.
But it’s also very annoying that it can’t be solved. What should I do?
I generally ask our students to do this.
When you encounter a problem:
1: Observe the error phenomenon carefully. Yes, you must be careful. Many students have very fast hands. When compiling a program, a lot of errors are reported. After a quick glance, they start staring at the code line by line. Search, did you see the error? No! Sometimes there is a problem when installing software, and a dialog box pops up saying something went wrong. I immediately raise my hand and ask the teacher: "It's terrible, something went wrong, something went wrong."
"What's wrong?"
"You haven't watched it yet?"
These are all typical careless methods! Please remember that learning programming is not an easy task. You must first pay attention to it and work hard.
During development, carefully observing error messages, or messages that are not running properly, is the first thing you should do.
Only by reading it clearly will you be able to take targeted steps in the future. After crying for a long time, you must know who is crying.
There are three situations here:
A: If you understand the error message, please proceed to step 2: Think carefully about where the problem may lie.
B: I don’t understand it. I just don’t understand it at all. Let’s go to step 4: google.
C: After reading it, I understand it halfway. I have some clues but I’m not sure yet. I’ll combine steps 2 and 4.
2: Think carefully about where the problem will occur (important)
After you understand a problem, think carefully about where the problem may go wrong.
A car came off the assembly line and the door couldn't be closed!
What's wrong? How do you check?
Of course, I checked them station by station along the production line.
The same is true for programs, which are also the results produced after a series of statements are completed.
When writing a network program, I always find that the server cannot print out the received data. How many aspects can go wrong?
Carefully analyze the links of this phenomenon:
The client generates data -> presses the "Send" button -> sends it to the server -> the server prints it after receiving it. There may be errors in these steps:
It is possible that the client did not generate data at all, it is possible that the send button was not sent at all after pressing it, or what was sent was not what you generated, or it was not connected to the network at all, or the server did not receive it after it was sent, or it was not received by the server. I printed it before arriving, etc.
Learn to analyze the program links and the problems that may arise in such a careful manner, and your experience value will definitely increase significantly and quickly. This is very tiring, but if you don't feel tired at all if you do something, Is this thing still valuable?
I entered a person's name on web page A and submitted it to B. It was first stored in the database and then read out, and garbled characters were found! what to do? Of course it’s the analysis part:
Customer input->HTTP sending->B receiving->Storing to database->Reading->Displaying on the web page. There may be problems in every link. How can we know where the problem is? Read on.
3: How to locate errors (important) After analyzing clearly which links there are, the next step is to locate which links are wrong.
There are three ways to position:
A Print output, such as Java's System.out.println(), such as js's alert(), this method is commonly used and must be mastered
B Debug, you can refer to our video "Tank Battle", which talks about Eclipse debugging in detail.
C Delete part of the debugging part, that is, remove part of the function, simplify it, and then debug the remaining function. It is commonly used in JSP and JavaScript. You can refer to our video "BBS", etc. What I said is relatively simple. If you want to know more, please pay attention to our videos below. In the near future, we will gradually release some videos on knowledge points for free, http://www.bjsxt .com/download.html
4: If it still doesn’t work, can’t I find it on Google? Congratulations, the mistakes you encountered are mistakes that deserve to be taken seriously and will affect your learning career. Ask Google or Baidu. Follow the method below to check.
Generally speaking, search engines can search for various knowledge points. I once joked with my classmates: "If you have learned how to Google or Baidu, there is no need to learn from the teacher. You have understood it all yourself. There is no need to come to Shangxuetang." "Of course, it's just a joke. The training has three functions:
A: Systematic knowledge
B: Real project training experience
C: Avoid detours and save time. I started advertising unknowingly. Please forgive me. I am in my position to do my best. I have to say something for Shangxuetang:)
Closer to home, how to check search engines?
First refine and then rough, first search as accurately as possible, such as an error, SocketException, if you suspect that it is a problem in the connect() method, then of course choose the keyword java connect SocketException
First Chinese and then English. In line with the idea of solving problems first, let’s put aside practicing English. First, you should search on the Chinese webpage. If that doesn’t work, search for the English one. The latest Shangxuetang course will guide you. Read books in English. There are many things that are like a layer of window paper. They look gray and weird from a distance, but if you dare to poke them, they will break. That's how reading English books is, it's not as difficult as you think:) I'd rather die on the battlefield than be scared to death, right:)
Information filtering, the search results may not be a complete match. It is recommended that you read more search results on the first few pages and open a few more web pages to take a look. However, my experience is that more than 3 pages are generally meaningless, so more than 3 pages are generally meaningless. The page has not found a suitable answer. Maybe you should adjust the keywords or broaden the entire search results.
Frequently make inquiries about knowledge and difficulty. If a problem involves a wide range of areas, just go to the Internet to search for some related topics, such as "java garbled mysql" "oracle user creation", etc. If necessary, don't be lazy and be diligent. Start writing some small test programs to understand the details of the knowledge points. This is also an important way to increase knowledge.
5: What? Not yet? Then use BBS. If it still doesn't work, go to BBS and ask the experts.
Which BBS to go to?
Just google or Baidu:) Keywords "java forum" "java bbs"
Then take a good look at those forums with frequent activities in the search results, which will be places you often visit in the future. http://community.csdn.net is very good.
Asking questions to others requires a lot of skill!
Someone once asked me this question: "How can I learn Java well?"
This request is too general.
Someone also sent me a piece of code and even a jar package, and then said that there is an error in my code, please help me check it: (
I have no way to spend a lot of time setting up an environment to debug an error that I don’t know exists yet!
Someone else asked this question on the BBS: "Can anyone help me complete a complete chat program? Please help me write a login module!"
This request is a bit excessive. It is your luck to have someone help you, but it is a normal reaction to have no one to help you.
When asking questions to others, you should first make sure that you have done what you should do. To put it simply, you have done the steps 1, 2, 3, and 4 that I listed above before asking others for help. Don't rush to ask questions to others without careful consideration, and you won't make great progress.
So how do I ask someone a question?
Search "The Wisdom of Asking Questions" on Google or Baidu and you will find the answer.
Here I will give you a link http://community.csdn.net/IndexPage/SmartQuestion.aspx . Sharpening the knife will help you chop wood quickly. Please take some time to read it first.
Be grateful when you get answers from others.
There is no need to write a letter to thank you, no need to pay fees, no need for those fancy words, just do the following:
When you gradually become an expert, you should answer the questions asked by others on the forum, as long as you have time and energy!
6: Still can’t solve it? Ask the teacher. This can only be done after you have participated in the training. 7: Still can’t solve it? Oh my god, is this idea fundamentally wrong? Write to me and let me learn from it and make progress together. [email protected]
Project self-study
JAVA self-study road six: self-study of projects
[Please indicate the source for reprinting: http://www.bjsxt.com/zixue/zixuezhilu_1.html]
Nowadays, the competition for employment is much more intense than it was back then. I remember when I graduated, a graduate who could program stood up on the stage and asked loudly: "I know ASP, and is there anyone who wants me with a monthly salary of 5,000?" All the companies immediately raised their hands in an uproar: "I want it, I want it!"
Even if you don’t have any project experience at that time, someone will provide you with learning opportunities :)
I'm afraid such good days are gone forever (a bit exaggerated, but it was undoubtedly much easier to find a good job then than it is now)
Now, even if you have almost mastered all the necessary knowledge, there is still a big mountain lying in front of you, and that is - project experience.
Experienced programmers know that the most efficient way to learn programming is probably to throw you into a project team and work on the next or two projects. You will immediately find that all the knowledge points are connected. When we come together, we are no longer scattered, but form a whole. That feeling cannot be experienced by people who only delve into knowledge points without writing about real projects. A project is a rope that can tie together a large piece of knowledge.
If you want to exercise your practical development abilities instead of just reciting or understanding some knowledge points, if you want to become a real expert instead of just reciting the word "Hui", there are several ways to write it, then, do a project!
At present, various programming knowledge points are becoming easier and easier to master. According to the various methods in "JAVA Self-Study Road Five: Problem Solving and Knowing", you can gradually accumulate the breadth and depth of your own knowledge. So what can be reflected now? Difference in level? Project experience, of course.
At present, Shangxuetang's courses have gone beyond the research and listing of knowledge points. We will gradually release videos on each knowledge point in the future, including SSH, EJB, etc. This has two benefits: First, self-study students can do so for free. Get the content of the original business training, which can at least save some time and effort. Secondly, Shang Xuetang can focus more on the project.
At present, Shangxuetang's project writing accounts for about 50% of the courses. Shangxuetang's projects have already surpassed the concept of a simple MIS system and gradually become a comprehensive integration of search engines, workflows, SCA/SDO, Linux/UNIX, Comprehensive large-scale projects of various deep applications such as large-scale database systems, design patterns, architectural patterns, load balancing, etc., and adopt step-by-step teaching methods, which are more in-depth and detailed. From now on, the results are quite good. Recently, the employment of Class 142 has been This has been fully proven (understanding the employment situation of 142). Our plan is to gradually increase the proportion of the project to more than 70% recently, and I believe the effect will be better. According to the company's regulations, we cannot record all project actual combat into videos for publication, but the announced project actual combat is also very valuable: ( http://www.bjsxt.com/download.html ) 1 :Chat & Tank series
2:BBS
3: Shopping (recently announced)
So how can we learn project development if we are self-study?
A more effective way is to go deeper on the basis of existing projects. For example, after you complete the BBS according to the video, you can add some other functions, such as registration/points/essence/search/stickers, etc. , after completing Shopping, you can add some business logic in terms of comments/rankings/statistics/inventory, etc., and try to use your own technology to make them. This way you can not only accumulate project experience, but also remember knowledge points.
So how can I determine what kind of business logic I want to write?
It should be said that this is very difficult for a beginner. The business logic of some simple systems, such as BBS, Shopping, book management, etc., is easy to determine. It is easy to browse and refer to the functions of some ready-made systems. Got it. However, for large-scale commercial systems, just understanding the business logic itself will take a lot of energy. If you have the time, energy and financial resources, it is recommended to consider our training, so that the accumulation of experience and salary improvement will be faster. Judging from the previous statistics, it is very easy to recoup this investment (advertisements for Taishang Academy must be written, please forgive me, but I promise to be true).
If conditions do not allow, then follow the above method to learn the project. Don’t be discouraged because you are temporarily unable to access larger and more in-depth projects. Remember: Opportunities always favor prepared minds, so work hard.
Roadmap details
JAVA Self-study Road 7: Roadmap Details
[Please indicate the source for reprinting: http://www.bjsxt.com/zixue/zixuezhilu_1.html]
The following is a breakdown of the knowledge points in Section 2 "JAVA Self-Study Roadmap" [http://www.bjsxt.com/zixue/zixuezhilu_2.html]:
Special reminder
1: We have already released videos for most of the following knowledge points or will release them soon (within a few months). Please pay attention to this website http://www.bjsxt.com/download.html . You can follow the instructions on this page. Tip, use eDonkey to download
2: Here is a list for the convenience of self-study. Please do not equate it with the courses of Shangxuetang. The following content is much simpler than the actual teaching. In addition, a lot of knowledge is integrated in project development and is suitable for face-to-face teaching. Not suitable for self-study.
1: J2SE object-oriented - analysis of encapsulation, inheritance, polymorphic memory, recursive collection classes, generics, automatic packaging and unpacking, Annotation
IO
Multi-threading, thread synchronization
TCP/UDP
AWT, event model, anonymous class regular expression reflection mechanism
2: Database (Oracle or MySQL)
SQL statements multi-table connections, internal and external connections, subqueries, etc. manage tables, views, indexes, sequences, constraints and other tree structures to store stored procedures and triggers. Three paradigms of database design,
3:JDBC
JDBC basic connection pool tree structure storage and display
DataSource & RowSet
JDBC connects Oracle and MySQL
4: HTML_CSS_JAVASCRIPT
Basic syntax of html, css and javascript
JavaScript Form judgment
DOM programming basics (event processing, etc.)
Common JS effects such as TreeView, drop-down linkage, etc.
JS learning methods
JS debugging method
DreamWeaver preliminary (create HTML, Table, Form, CSS), etc.
5: Servlet & JSP
tomcat basics
servlet basics
web.xml configuration basics
The structure of web application
servlet life cycle
common methods such as request response
ServletContext class
HTTP protocol basics (GET POST)
Cookies
Session
Application
Pay attention to practicing the several syntaxes of JSP (including JSTL, etc.) in the project, and do not get stuck in the syntax details and hesitate to move forward.
6: Struts
multi-layer architecture theory
Model 1 and Model 2
Struts basic concepts
MVC
The relationship between Action and business logic classes transfers data between Struts and JSP
Struts processing flow (control flow)
Struts TagLib (understand commonly used ones)
JSTL
ActionForm
Field collection upload file type conversion
DTO
Dynamic Action Form
Validation framework
ActionForward forwarding and redirection dynamically generate ActionForward
Global and local ActionForward
Action Forward Scope
UnknownActionMapping
Thread safety of Action
I18N
How to switch locale
Struts exception handling mechanism program processing automatically handles custom exception handlers
Multi-module configuration of Struts
7:XML
(Basic concepts such as XML/XSL, XSLT/DTD, SCHEMA, and Java programming can be left aside for the time being)
8:Hibernate
OR Mapping principle
Hibernate basic development steps
Hibernate basic interface (focus on Session)
Ordinary attribute mapping association relationship mapping
Native SQL
inverse lazy cascade
Inheritance mapping
HQL
Performance optimization of first-level cache, second-level cache, query cache transaction and concurrent pessimistic lock and optimistic lock
OpenSessionInView
CurrentSession
(As for JTA, joint primary keys, natural primary keys, dynamic primary keys, Any type Creteria Queries Intercepter and Event custom types, etc., you can leave them aside for the time being)
9: Spring
IOC/DI
Spring configuration
Spring architecture
AOP and Spring AOP
Declarative Transactions (AOP)
Spring + Hibernate Spring supports Web
Scope
(Other Spring modules can be temporarily put aside for self-study)
10:EJB3.0
J2EE architecture foundation (JTA JMS, etc.)
EJB basics (status, basic theory, classification, etc.)
Annotation
Ant compiles and deploys EJB
Session Bean
Dependency injection for EJB
Persistence API
(You can use JBoss to learn EJB3.0)
11: As for SOA, for self-study students, there is no need to pay special attention to it for the time being.
After sorting through it, you will find that there are not as many things as you think!
It is recommended that you give priority to studying the videos we have published, and then look for reference books, because at this time you can tell which books are suitable for you.
So, how do you find good books? A simple way is to search for the knowledge points you want to know such as "javascript" on a website that sells books, such as http://www.china-pub.com , and the top ones in terms of sales should be Yes, write down the title of the book and go to the bookstore to read a few chapters. The book that suits you will be a good one. No money to buy? Simple! Is there any information that I can’t find on Google + eDonkey? :)
I have written so much, some of which are advertisements. I am in my position and seeking my political affairs, but I have not told lies. I hope everyone understands. If you have any questions during the self-study process, you can write to me mashibing2004@sina .com or [email protected] , I am willing to listen to your teachings at any time.
If it is a technical problem, remember to read "JAVA Self-Study Road 5: Problem Solving" first:)