What does domain-driven design involve?

java development need to learn what

java development need to learn:

Primary part

JavaOO Programming Fundamentals, including J2sdk basics, Java object-oriented basics, the use of JavaAPI, data structures and algorithm basics, JavaAWT graphical interface program development;

J2SE platform Java programming, including Swing graphical programming, Socket network application programming, object serialization, Java common data structures, Applet, streams and files, multi-threaded programming;

Java desktop system project development, 4~5 people to form a project team, the project size of (15 * working days);

Java desktop system project development, 4~5 people to form a project team, project size (15 * working days);

Java desktop system project development, 4~5 people to form a project team, project size (15 * working days);

Basic operation of Linux, Java program development under Linux, simple management of the Linux system;

Oracle database, including SQL/PLSQL; database and database design; simple mastery of ORACLE9i database management;

Intermediate part

JavaWeb application Programming, including JavaOracle programming, that is, JDBC; JavaWeb programming, including JSP, Servlet, JavaBean; Java application programming, including Weblogic, Websphere, Tomcat; and the use of Jbuilder to develop Java programs;

MVC and Struts, learning the industry’s common MVC design patterns and Struts architecture;

JavaB/S business project development, 4~5 people a project team, the project size (25 people * working days or so)

Advanced Part

J2ME Programming, including J2EE programs, J2ME; Java Advanced Programming ( J2EE), including J2EE architecture and J2EE technology, EJB; Weblogic use, JBuilder development;

Java and XML, including JavaWebService, JavaXML, the industry’s mainstream XML parser programming;

Software enterprise specification and software engineering, including UML System modeling and design (RationalRose200x) software engineering and industry development specifications; CVS version control, JavaCode writing specifications;

J2EE business application system project development, 4~5 people a project team, the project size is (25 people * working days or so)

… ………………………… ………………………… ………………………… …………………

Looking at the question you asked, you should be interested in java, in fact you can I just saw a very good article about how to learn java, it’s a migrant worker introduce himself how to self-study java and find a job in Java, it describes his learning method and learning process, I hope it’s helpful to you.

I am a local migrant worker, living in the economically backward countryside, there is an older brother and a younger brother, parents are authentic farmers, sunrise and sunset, I grew up learning has been very good, from elementary school to the first year of high school, the results of the whole class has always been at the top, so I also successfully got into the province’s key high school, however, the beginning of each semester is the family’s most difficult time, each time the tuition fee, let the parents pay the tuition fee, the parents are very happy. Every time to pay tuition fees are let parents worry for a long time, the family in order to raise money for me to study, have borrowed a lot of money, so that I read in high school. I know I read to high school family has owed a lot of debt, in order to reduce the burden on the family, I chose to quit school.

In 2009, I dropped out of high school, in order to pay off the debt to the family, dry construction site workers, engaged in the processing of plastic products, water delivery workers and so on. Very low wages are very low, a month is more than 1,000, plus overtime pay a month to get a little more than 2,000, I sent home every month 800-1,000 yuan, to the end of 2011, a chance I came into contact with Java, I heard that the prospects for Java is quite good, the wage is astronomical relative to a migrant worker, so I bought a few books in the Xinhua bookstore! Java books, despite the hard work during the day, come back at night or insist on reading books, but there is too poor in the foundation of a lot of very do not understand, but still insist on looking at a book to see 1-2 hours of Java, looked at many of the basics are slowly learned, but those more difficult to understand, and then also bought some books on the framework, or do not see, so off and on for more than half a year, I feel that the foundation of Java are almost understand. The basis of their own Java are almost understand, but the framework is still not understand, there is a lack of project experience, see a lot of recruitment of Java programmers profile to project experience, relative to me a migrant worker to even get the framework do not understand, I want to find a Java job for me is simply a luxury. I just want to learn Java, and I don’t dare to think that I can work in Java in the future.

On one occasion, I saw an article on Baidu that encouraged me to introduce a Java expert in the absence of a basic friend how to teach yourself how to get started with Java, the article is very well written, contains how to learn, how to learn, he mentioned a method is to watch the video, because reading the book is really too boring and convoluted, a lot of us can’t read it, I really agree with this point, I read the book myself! I really agree with this point, I read the book myself for a long time to learn the basics. Once thought to participate in training, but tens of thousands of dollars in training fees to discourage me, my salary is so low, every month, and remittance of money to the family, coupled with the city consumption is relatively high, although only a few hundred left each month, but compared to the tens of thousands of tuition fees and four months of food and housing costs forced me to even dare not think about it. So I decided to watch the video, I went to search for Java video, although I sporadically find some Java video, but are not systematic. The most important thing is not even the project. Later I found a very good video, is the IT Learning Alliance this site a set of videos called <<Zero-Basic Java employment class >> tutorials are not bad, very complete. Also presented 11 top enterprise projects. The price is very reasonable, so I buy it.

Then I went to 51job crazy resume, because of my educational problems, junior high school graduates, seriously, no one will want me to big companies. So I head to all the small private companies, I hope their efforts pay off. I did not think a few days later, there will be an interview, but the first interview I failed, although I think the written test is very good, because I did before the preparation, but their requirements than strict, need to have a year of project experience, so I was not selected. I interviewed with a few companies one after another, and finally I was able to get an interview with a private company. The company was relatively small, and my position was a Java programmer. I think I’m more fortunate, the manager of my efforts, decided to Lv Yong me, the wage is 3500 a month, although I know that in Beijing 3500 can only over the biochemistry of subsistence, but I think I’m enough, compared to the previous wage is better, and later you can send more money home. I think as long as I continue to work hard. My salary will definitely double. Write this article out, I hope to make and I have no basis for friends have confidence, in fact, we do not have low self-esteem, we are not dumber than others, only we are willing to work hard, we will be just as successful.

……………………… ………………………… …………………

I hope my answer can help you.

What are the three layers of the information system?

Three-tier structure is:

1, data access layer: mainly depends on your data layer contains no logical processing, in fact, his functions are mainly to complete the various operations on the data file. And do not have to care about other operations. Located in the outermost (top), the closest to the user. Used to display data and receive user input data, to provide users with an interactive interface.

2, business logic layer: mainly responsible for the operation of the data layer. That is to say, some of the data layer operations for the combination. Business logic layer (BusinessLogicLayer) is undoubtedly the core value of the system architecture part. Its focus is mainly on the formulation of business rules, the realization of business processes and other business requirements related to system design, that is, it is with the system to deal with the domain (Domain) logic, very often, the business logic layer is also known as the domain layer.

3, the representation layer: the main user request acceptance, as well as the return of data to provide the client with access to the application.

What is the basic structure of the website

Website architecture, generally considered to be based on the results of customer demand analysis, accurate positioning of the site’s target groups, set the overall structure of the site, planning and design of the site columns and their content, the development of the site development process and sequence to maximize the efficient allocation of resources and management of the design. Its content has three manifestations: program architecture, presentation architecture, and information architecture. And the steps are mainly divided into hard architecture and soft architecture two-step program. Network architecture is a necessary basic technology for modern network learning and development.

Choice of server room

Soft architecture

Choice of framework

Now there are many choices of PHP frameworks, such as: CakePHP, Symfony, Zend Framework and so on, there is no single answer as to which should be used, according to the team members of the team’s understanding of the various frameworks. There is no single answer as to which framework should be used, it depends on how well team members know each framework. Often, even if you don’t use a framework, you can write a good program, for example, Flickr is said to be written with Pear+Smarty class libraries, so whether or not to use a framework, what frameworks to use, is generally not the most important, the important thing is that we have to have a framework for the programming mind.

Layering of logic

Website size to a certain extent, the code of a variety of logic entangled in the code, will give the maintenance and expansion of a huge obstacle to our solution is actually very simple, that is, refactoring, the logic of layering. Usually, from top to bottom can be divided into performance layer, application layer, domain layer, persistence layer.

Performance layer

The so-called performance layer does not just refer to the template, its scope is a little broader, all the logic related to the performance should be included in the scope of the performance layer. For example, somewhere in the font to be displayed in red, somewhere in the beginning of the two empty space, these are all part of the performance layer. Often, we are prone to make the mistake is to put the logic belonging to the performance layer to other levels to complete, here is a very common example: we display the title of the article in the list of pages, will set a maximum number of words, once the title length exceeds this limit, it will be truncated, and in the back of the display “….”, this is the most typical performance layer. This is the most typical presentation layer logic, but in reality, there are many programmers are in the non-performance layer code to complete the data acquisition and truncation, and then assigned to the performance layer template, the most direct disadvantage of such code is the same piece of data, in this page I may want to display the first 10 words, and then another page I may want to display the first 15 words, and once we have cured this number of words in the program Once we have fixed the number of words in the program, we lose the portability. The right thing to do is to make a view helper or something to handle this kind of logic, for example: truncate in Smarty is such a view helper (but its implementation is not suitable for Chinese).

The application layer

The application layer is the layer that defines what the user can do and feeds the results back to the presentation layer. It’s not usually its job to define how to do that (it’s the domain tier’s job), and it delegates how to do that to the domain tier through delegation. In websites that use the MVC architecture, we can see URLs like the following: domain.com/articles/view/123, whose internal coding implementation is, typically, an Articles controller class with a view method, which is a typical application-layer action because it defines that the user can do a view action . In the MVC architecture, there is a guideline that says: RichModelIsGood. The implication is that the Controller should be kept “thin” some of the better, which in turn means that the application layer should be as simple as possible, do not include logic that involves domain content.

Domain Layer

The so-called domain layer, the most direct explanation is that it contains the domain logic layer. It is the soul of a software. First of all, let’s see what is called domain logic, simply put, the logic with a clear concept of the domain is the domain logic, for example, we withdraw money from the ATM, the process is roughly like this: insert the UnionPay card, enter the PIN, enter the amount of money withdrawn, OK, take the money, and then the ATM spits out a transaction voucher. In this process, the process of the UnionPay card completing the transfer of money from the account in the ATM machine is a domain logic, because withdrawing money is an explicit domain concept in banking, while the ATM machine spitting out a transaction voucher is not a domain logic but only an application logic, because spitting out a transaction voucher is not an explicit domain concept in banking, but only a technical means, corresponding to the fact that, after withdrawing the money we It is possible to send a reminder message without spitting out a transaction token, but this is not always the case. If, in practice, we require a transaction token to be spit out after a withdrawal, i.e., if spitting out a transaction token is tightly coupled with withdrawing the money, then you can consider spitting out a transaction token as part of the domain logic as well, depending on the specifics of the problem. In Eric’s classic book on domain-driven design, the domain layer is divided into five basic elements: entities, value objects, services, factories, and warehousing. See the book for more details. The most common mistake made by the domain layer is to leak the logic that should belong to the domain layer to other levels. For example, in a CMS system, the definition of a popular article is like this: an article is popular if it is viewed more than 1,000 times per day and commented on more than 100 times per day. For a CMS, the term popular article is undoubtedly an important domain concept, so how do we realize the design of this logic? You may give code like the following: “SELECT…. .FROM… .WHEREViews>1000ANDComments>100”, yes, this is the simplest way to implement, but here you need to pay attention to the “viewed more than 1,000 times a day, the number of times the number of comments more than 100 times” this important domain logic was This important domain logic is hidden in the SQL statement, which is clearly not part of the domain layer, i.e., our domain logic is leaked.

Persistence layer

The so-called persistence layer means saving our domain model to the database. Because our program code is object-oriented style, and the database is generally a relational database, so we need to domain model crushing, in order to save to the database, but in PHP, until now there is no very good ORM, so this aspect of the solution is not particularly much, refer to Martin’s book of Enterprise Application Architecture Patterns, you can use the method of line data portal (RowDataGateway) or table data portal (TableDataGateway), or the domain layer and persistence layer into one into an active record (ActiveRecord) way.

Edit this section of the website architecture of the load balancing must be considered in the eight programs

HTML static

In fact, we all know that the highest efficiency and consumption of the smallest is the pure static html pages, so we try to make our website architecture on the page using static pages to achieve, this simplest method is actually the most effective way! This is the simplest and most effective way. But for a large number of content and frequently updated website, we can not all manually to realize one by one, so the emergence of our common information dissemination system CMS, such as we often visit the news channel of each portal site, and even their other channels, are through the information dissemination system to manage and achieve, information dissemination system can achieve the simplest information entry automatically generate static pages, but also have Channel management, rights management, automatic capture and other functions, for a large-scale website, with a set of efficient, manageable CMS is essential. In addition to portals and information dissemination type of website, for the interactivity requirements of high community type of website, as far as possible, static is also necessary to improve the performance of the means, will be community posts, articles for real-time static, there are updates and then re-static is also a large number of use of the strategy, such as Mop’s hodgepodge is the use of such a strategy, NetEase community and so on is also so. At the same time, html static is also some of the caching strategy to use the means for the system to frequently use the database query but the content of the application is updated very small, you can consider the use of html static to achieve, such as the forum in the forum’s public settings information, this information is currently the mainstream forums can be managed in the background and stored in the database, this information in fact a large number of foreground program calls, but the frequency of updates is very small, you can consider the use of this information to achieve, but the frequency of updates is very small. update frequency is very small, you can consider this part of the content of the background update when the static, so as to avoid a large number of database access requests.

Picture server separation

We all know that, for Web servers, whether it is Apache, IIS or other containers, the picture is the most resource-consuming, so it is necessary to separate the picture from the page, which is basically a large site will be used by the strategy, they have an independent picture server, or even many picture servers. Such an architecture can reduce the pressure on the server system to provide page access requests, and can ensure that the system will not be crashed because of image problems. On the application server and the image server, you can optimize different configurations, such as apache in the configuration of ContentType can be as little as possible to support, as little as possible LoadMole, to ensure that a higher system consumption and execution efficiency.

Database clustering and library table hash

Large sites have complex applications, these applications must use the database, then in the face of a large number of visits, the database bottleneck will soon be able to show up, then a database will soon not be able to meet the application, so we need to use the database clustering or library table hash. In terms of database clustering, many databases have their own solutions, Oracle, Sybase, etc. have a good program, the commonly used MySQL Master/Slave is also a similar program, you use what kind of DB, refer to the corresponding solution to implement it. The above mentioned database cluster due to the architecture, cost, scalability will be used by the DB type of restrictions, so we need to consider from the application point of view to improve the system architecture, the library table hash is commonly used and the most effective solution. We install business and application or functional modules in the application to separate databases, different modules correspond to different databases or tables, and then according to a certain strategy for a certain page or function for a smaller database hash, such as the user table, according to the user ID for the table hash, so that you can low-cost enhancement of the system’s performance and good scalability. sohu’s forums are using this kind of architecture, the forums will have the same performance and scalability. sohu’s forum is using this architecture, the forum users, settings, posts and other information for database separation, and then posts, users in accordance with the board and ID hash database and table, and ultimately can be configured in the configuration file for a simple configuration will be able to let the system at any time to increase the number of a low-cost database to supplement the system’s performance.


The term caching has been used in many technical contexts. Caching is also very important in web architecture and web development. Here we start with the two most basic types of caching. Advanced and distributed caching is described later. Architecture of the cache, Apache more familiar with people can know Apache provides its own caching module, you can also use the additional Squid module for caching, both ways can effectively improve Apache’s access responsiveness. Web program development in the cache, Linux provides MemoryCache is commonly used caching interface can be used in web development, such as the development of Java can be called MemoryCache on some of the data caching and communication sharing, some of the large communities use such a structure. In addition, when using web language development, various languages basically have their own caching modules and methods, PHP has Pear’s Cache module, Java is more, .net is not very familiar with, I believe there must be.


Mirroring is often used by large sites to improve performance and data security, mirroring technology can be a solution to the different network access providers and geographic areas brought about by differences in the speed of access to users, such as the differences between ChinaNet and ENet prompted a lot of Web sites in the education network to build a mirror site, the data is updated regularly or real-time updates. In the details of mirroring technology, not to elaborate too deeply here, there are many professional ready-made solutions to the structure and products available. There are also inexpensive ideas implemented through software, such as rsync on Linux and other tools.

Load balancing

Load balancing will be the ultimate solution for large sites to deal with high access loads and large numbers of concurrent requests. Load balancing technology has evolved over the years, there are many professional service providers and products to choose from, I personally have come across a number of solutions, including two architectures that can be used as a reference for everyone.

Hardware Layer 4 Switching

Layer 4 switching uses the header information of Layer 3 and Layer 4 information packets to identify the business flows based on the application zones, and assigns the business flows in the entire zone segment to the appropriate application servers for processing. Layer 4 switching functions like a virtual IP that points to a physical server. It transmits services obeying a variety of protocols, such as HTTP, FTP, NFS, Telnet, or others. These services require complex load balancing algorithms on top of the physical server. In the IP world, the type of service is determined by the endpoint TCP or UDP port address, and the application zone in Layer 4 switching is determined by a combination of source and endpoint IP addresses, TCP and UDP ports. In the area of hardware Layer 4 switching products, there are some well-known products to choose from, such as Alteon, F5, etc. These products are very expensive, but value for money, and can provide very good performance and very flexible management capabilities. Yahoo China was close to 2,000 servers in the beginning, using three or four Alteon just to get it done.

Software Layer 4 Switching

We all know the principle of hardware Layer 4 switches, based on the OSI model to realize the software Layer 4 switching also came into being, so that the solution to achieve the same principle, but the performance is slightly worse. But to meet a certain amount of pressure is still easy, some people say that the software implementation is actually more flexible, processing capacity depends entirely on your configuration of the familiar ability. Software Layer 4 exchange we can use Linux commonly used LVS to solve the problem, LVS is Linux VirtualServer, he provides a real-time disaster response solution based on heartbeat line heartbeat, to improve the robustness of the system, at the same time available for a flexible virtual VIP configuration and management functions, can meet a variety of applications at the same time, which is essential to the distributed system. distributed systems. A typical use of load balancing strategy is to build squid clusters on the basis of software or hardware Layer 4 switching, this idea is used in many large websites including search engines, such an architecture of low-cost, high-performance and very scalable, at any time to the structure of the nodes inside the increase or decrease are very easy. Such an architecture I am ready to empty a special detailed collation and we discuss. For large sites, each of the methods mentioned above may be used at the same time, I introduced here is relatively shallow, the specific implementation of the process of many details still need to be slowly familiar with and experience, sometimes a very small squid parameter or apache parameter settings, the impact on system performance will be very large, I hope that we can discuss together, to achieve the effect of a brick to attract jade.

What does DDD mean

DDD means domain-driven design, an acronym for domaindrivendesign.

I. Pronunciation

English [dəˈmeɪnˈdrɪvndɪˈzaɪn], American [doʊˈmeɪnˈdrɪvndɪˈzaɪn].

II. domain interpretation

Field, range, scope.

Three, drive definition

To drive, to drive, to drive a car.


Design, layout, arrangement.

V. Examples

He is mostly interested inDomain Driven Designand Aspect Oriented Programming.

His areas of interest include Domain Driven Design and Aspect Oriented Programming.

Extended Information

Related Terms for Domaindrivendesign-Event Driven Architecture:



English [ɪˈventˈdrɪvnˈɑːkɪtektʃə(r)], American [ɪˈventˈdrɪvnˈɑːrkɪtektʃər].

III.Architecture Interpretation

Architecture, overall, hierarchical structure.

IV. Example

Staged Priority Event Driven Architecture Oriented to Service Integration ResourceConsumption in Web Service Bus.

Web-oriented Staged Priority Event Driven Architecture Oriented to Service Integration ResourceConsumption in Web Service Bus.