Home >Java >javaTutorial >The key to growth as a Java programmer
Java is used for projects! The main application area of Java is enterprise-level project development! If you want to engage in enterprise-level project development, you must master the following points:
1. Master the basic steps of project development
2. Have strong object-oriented analysis and design skills
3. Master use case drive , Mainstream development methods with architecture as the core
No one wants to be satisfied with mastering some code implementation skills for a lifetime. Others tell you what to achieve, and you just use code stacking to achieve other people's requirements! You have to learn to think from the perspective of the entire project! You must learn how to think if you are a project manager! You must learn how to think if you are an architect! You must master analytical methods for a specific problem area!
About basic knowledge: You can look at these nouns or knowledge points and see if you can tell them one, two, three or four.
JavaSE
----Basic syntax, data types, operators, etc.: int, long, Integer, Long, if, else, for, while
----Object-oriented: class (class), Object (object), instance (instance), state (state), behavior (behavior), field, method, new, visibility (access control), attribute, property, package, import, static variable, class variable , instance variable, heap, method area, stack, GC (garbage collection), override, overload, object transformation (casting), polymorphism, this, super
----Exception handling: understanding compile-time errors and run-time The difference between errors, Exception, RuntimeException, checked exception, unchecked exception, try, catch, finally, throw new XXXException, throws XXXException, basic principles of exception handling
----Arrays and collections: the definition and use of arrays, Collection, List, Set, Map, ArrayList, HashSet, HashMap, Iterator, equals, hashCode, Comparable, Comparator
----Common classes: String, intern, constant pool, StringBuffer, java.util.Date, SimpleDateFormat, Regex (regular expression)
----Reflection mechanism: Class, Method, Field, invoke, newInstance, BeanUtils (apache-commons), PropertyUtils (apache-commons)
----Input and output stream: InputStream, OutputStream, Reader, Writer, Adapter design pattern and original stream class, Decorator design pattern and packaged stream class, object serialization and deserialization
----Multi-threading: Thread, Runnable, sleep, wait, notify , synchronized, lock
Servlet and JSP
----HttpServlet, doGet, doPost, HttpServletRequest, HttpServletResponse, request.getParameter(), request.setAttribute(), request.getAttribute(), request. getSession(), ServletContext, Filter, web.xml, tomcat, forward and redirect, stateless nature of http protocol, cookies, JSP Scope Object,
HTML and JavaScript
----You need to be able to understand common web page tags, understand the methods of introducing JavaScript into web pages, and the basic syntax and usage of JavaScript
The above is The basic knowledge you need to further learn Java. Especially some professional terms and nouns. If you see these nouns as friendly as seeing your own father, then it means that you are very familiar with the basic knowledge of Java.
Next is SSH:
For beginners, these three major frameworks are given too much mystery, and it seems that they are the most important knowledge! But for professional and technical personnel with many years of Java development experience, and those who are good at Java, they are not very interested in these three major frameworks! Aren't they important?
Many companies are now using these three major frameworks, so many companies also regard mastering these three major frameworks as a prerequisite for recruitment. It is undeniable that there are many large enterprises that do not use these three major frameworks. After years of development, these enterprises have accumulated a certain amount of technology and formed their own unique technical framework system. These three major frameworks can be said to be very important, or they can be said to be unimportant.
The important reason is that these three major frameworks provide beautiful solutions to common problems in JavaEE development. They contain the efforts and ideas of the most NB developers in this industry. Therefore, by studying these three major frameworks, you can get a glimpse of what these talented people at the pinnacle of technology think about a problem and what kind of design ideas they use to solve the problem. So, for you, you don’t have much experience in project development, what is your experience? Experience means that you know what problems you may encounter, what solutions are available for each problem, which solution is better in a certain situation, which method is not so good, etc.! If you have never done any projects, you will not realize what problems you may encounter, and these problems are often very critical! If it is not solved well, it will affect the stability, scalability, etc. of your program! The three major frameworks provide beginners with an understanding of what problems you may encounter in the future, as well as solutions to these problems!
When you understand why these three major frameworks are important, then you can also understand why these three major frameworks can also be said to be unimportant. If you have developed many projects and encountered various problems, relying on your technical skills, you have overcome these problems one by one. In the eyes of these people, the three major frameworks (are there N frameworks? Haha ) are all clouds!
Which kind of person do you belong to? If you don’t have much project development experience, then the three major frameworks are very important to you! Moreover, from this you also know how to learn these three major frameworks. For the study of the three major frameworks, the focus is to show you problems and trigger your own active thinking. We encourage you to put forward your own ideas. Maybe your ideas are idiotic, but they are your own ideas after all. If You don’t know what great people think, so how do you know that your own ideas are idiotic? In the process of this collision of ideas, you will gradually improve yourself! Therefore, after learning the three major frameworks, you should not just see a lot of configuration files. You should not just see some Actions, some Services, and some mapping files. You should not only know session.save/update/delete. You shouldn't just know that there are a bunch of interceptors in struts2, you shouldn't just see a bunch of jar packages...
If you just know that after copying a bunch of jar packages and defining a series of configuration files, the three major SSH frameworks It can run and work for you. Then, sadly, you still have not mastered the essence of the three major frameworks! Please answer the following questions:
Struts2:
Why do you need to create an Action object for each request?
What problems does refreshModelBeforeResult solve in the configuration of the ModelDriven interceptor?
Why does the StrutsPrepareAndExecuteFilter configured in web.xml filter all requests?
Could you please tell me about ValueStack?
How does Struts2 implement the MVC design pattern?
Spring:
Why should you use Spring?
Could you please talk about IOC/DI?
What is declarative transaction management? Why use declarative transaction management? How does Spring implement declarative transaction management?
When integrating spring and hibernate and defining transaction management features, why should methods other than add, delete, and update operations, that is, methods that mainly perform query tasks, be defined as read-only?
Hibernate:
Could you please talk about your understanding of OR mapping?
Many people say that Hibernate is not suitable for large projects and has performance problems. How do you understand?
Why must Hibernate define a database identifier?
Why does Hibernate recommend that your entity classes implement hashCode and equals methods?
Talk about your understanding of the relationship between the database identifier and the database primary key in the Hibernate entity class?
Talk about your understanding of the relationship between Hibernate association mapping and database foreign keys?
When the session.save() method is called, will hibernate definitely issue an insert statement? Talk about your understanding
When the session.update() method is called, will hibernate definitely issue an update statement? Talk about your understanding
Please talk about the following nouns, concepts or usages: lazy, lazy="extra", inverse, fetch, fetch="join", fetch="subselect", batch-size
Configuration Will lazy="true" definitely achieve lazy loading?
Could you please talk about the "N+1" problem in Hibernate?
Could you please talk about the best practices of Hibernate?
The above are not all the key questions in SSH, but they can test whether you can use the SSH framework flexibly! If you can deeply understand these issues, coupled with appropriate practical project training, you will gradually become an expert!
Finally, project development capabilities:
Whether you are learning Java or other technologies, your fundamental purpose is to create value for customers! Otherwise, the things you have made great efforts to learn will soon become outdated as technology advances and is updated! Therefore, the core of technology is to use technology to create valuable results! In other words, whatever the customer needs, you have to use technology to create what the customer needs! The reason why a company tries its best to retain you with various welfare conditions is because you can bring extremely high benefits to the company! So, what do you have that companies can use? Which ability of yours does the company value most?
Doing projects requires many abilities, the most core and basic of which is modeling ability (the most mainstream one now is object-oriented modeling!). What is modeling capability?
I will give you an interview question:
The insurance card management module of an insurance company: the salesperson receives the insurance card information (number of insurance cards, card number, collection date), and then sells it directly to the customer, and the sale is completed Afterwards, the insurance card information is entered into the insurance company's system (salesperson information, purchaser information, number of insurance cards purchased, card number, etc.). The customer logs in to the insurance company website to activate the insurance card and needs to fill in (insurance card number, activation password, and password). Insurer information, beneficiary information)
The requirement is: If this module is handed over to you, what will you do? What problems are you trying to solve? Can you draw a picture and describe to me what your idea is?
This is just an interview question. Because it only has a few simple sentences, I put it here to let everyone feel what problems the so-called modeling needs to solve. There are so many problems in the business field! Perhaps a requirements document of dozens or hundreds of pages can clearly describe the problems in a certain business field, and your responsibility is to implement them!
A certain company wants to develop an attendance management system and requires it to be connected with the existing human resources system. You are the main technical person in charge. So, what work do you have to do?
A certain ERP project wants to implement a schedule management module and leave it to you to complete. How do you complete it?
Don't complain that the project manager gave you too little information (only a few sentences), and don't complain that the customer didn't describe their needs clearly...Your value lies in sorting out all the problems and using various methods to solve them. Get the information you want by various means, summarize it according to a certain idea, and solve it one by one within a specific time!
You should realize that learning Java is not as simple as a tank battle, a network speedster, a CMS, a DRP, or an OA. You should not be obsessed with those technical details (although it is also necessary, but don’t go over the top) ), don’t be satisfied with realizing CRUD-style project requirements (although this is the foundation of the foundation). There is always a goal in front of you that you need to work hard to catch up with!
In the future, you will face more complex requirements. The only purpose of your study project is to learn how to transform requirements into implementation, how to analyze requirements, how to establish conceptual models, and how to rationalize various concepts. The relationship between them, how to design, how to choose the appropriate technology to implement your design, how to test your implementation, and how to solve all kinds of problems you encounter (performance, demand changes, etc.). After you have actually been engaged in development in the company for several years, you will agree with me!
What you need to find a job using Java is project experience. Project experience means understanding the basic process of project development, understanding the project analysis method, understanding the project design ideas, understanding the project implementation skills, and understanding the project Test methods and understand the solutions to various problems in the project! ! !
So, you should know your goals!
The above is the detailed content of The key to growth as a Java programmer. For more information, please follow other related articles on the PHP Chinese website!