10. Relational Database)
Relational databases are widely used because they lack scalability in large-scale Web services. However, relational databases are still the greatest achievement in computer technology in the past 20 years. Relational databases have outstanding performance in processing orders and company data. JSP Software Engineers cannot help but understand relational databases.
The core of a relational database is to use records to represent data. Records are stored in database tables. The database uses the query language SQL to search and query data. At the same time, the database associates data tables.
Database standardization technology normalization) refers to the use of the correct method of data storage to reduce redundancy and speed up access.
9. Security)
With the rise of hackers and the rise of data sensitivity, security becomes very important. Security is a broad concept that involves verification, authorization, and information transmission.
Authentication checks the user's identity, such as requiring the user to enter the password. Verification usually requires SSLsecure socket layer); authorization is very important in the company's business systems, especially some workflow systems. The recently developed OAuth protocol can help Web services open relevant information to users. In this way, Flickr Manages access to private photos and data.
Another security field is network fortification, which is related to the operating system, configuration, and monitoring. Not only is the network dangerous, but any software is. Firefox, known as the safest browser, still requires frequent security patches. To write security code for your system, you need to understand various potential problems.
8. Cloud Computing)
RWW's recent article on cloud computing Reaching For The Sky Through Compute Clouds illustrates how cloud computing can change The release of large-scale Web applications. Large-scale concurrency, low cost, and fast market input.
Since the invention of parallel algorithms, Grid computing is the first thing to welcome. Grid Computing Uses idle desktop computer resources for parallel computing. The most famous example is the Berkley University's SETI @ home Program, which uses idle CPU resources to analyze space data. Financial institutions also carry out large-scale grid computing for risk analysis. Idle resources, coupled with the rise of the J2EE platform, ushered in the concept of cloud computing: Application Service Virtualization. That is, the application runs on demand and can change in real time with time and user scale.
The most vivid example of cloud computing is Amazon's Web Service, a group of applications that can be called through APIS, such as cloud service EC2, a database S3 used to store large media files ), index Service SimpleDB), sequence service SQS ).
7. Concurrent Concurrency)
Concurrency is the easiest place for JSP software engineers to make mistakes. This is understandable because we have always followed linear thinking, but concurrency is very important in modern systems.
Concurrency is the parallel processing in the program. Most modern programming languages contain built-in concurrency capabilities. In Java, it refers to threads. The most typical example of concurrency is the "production/consumption" mode. The producer produces data and tasks and puts them into the worker thread for consumption or execution. The complexity of concurrency lies in that the thread needs to frequently access the common data, and each thread has its own execution order, but it needs to access the common data. Doug Lea once wrote one of the most complex concurrency classes and is now part of core Java.
6. cache Caching)
Caching is indispensable for modern Web programs. caching is to retrieve data from the database and store data in the memory. Because the cost of direct database access is very high, it is necessary to retrieve data from the database and store it in the cache for access. For example, if you have a website that displays the best-selling books of the last week, you can retrieve the best-selling lists from the database and put them in the cache at one time without having to read data from the database during each access.
The cache requires a cost. Only the most common content can be put into the cache. Many modern programs, including Facebook, rely on a distributed cache system called Memcached, which was developed by Brad Firzpatrick while working on the LiveJournal project, memcached Uses idle memory resources in the Network to establish a cache mechanism. Memcached class libraries are available in many popular programming languages, including Java and PHP.
5. Hash)
Hashing aims to accelerate the access speed. If the data is stored in sequence, the time for querying an item from it depends on the size of the data column. The hash method computes a number for each item as an index. Under a good Hashing algorithm, the data search speed is the same.
In addition to data storage, the hash method is also important to distributed systems. Uniform hash (uniform hash) is used to store data between different computers in an apsaradb environment. Google's Index Service is an embodiment of this method. Every URL is hashed to a specific computer.
Hash Functions are very complex, but modern class libraries all have ready-made classes. What's important is how to fine-tune the hash method for the best performance.
4. algorithm Complexity Algorithmic Complexity)
JSP software engineers need to understand the complexity of algorithms. First, big O notation); second, you should never use nested loops). You should use Hash Tables, arrays, or a single loop; third, there are so many excellent class libraries today that we don't have to worry too much about the differences in the performance of these libraries. We will have the opportunity to fine tune them later. Finally, do not ignore the elegance and performance of algorithms, compact and readable code can make your algorithms simpler and cleaner.
3. Layered Layering)
It is easiest to discuss software architecture in layers. John Lakos has published a book about large C ++ systems. Lakos believes that software includes layers. The book introduces the concept of layers. The method is to know the complexity of each software component by counting the number of components it depends on.
Lakos believes that a good software has a pyramid structure, that is to say, software components have accumulated layers of complexity, but each component must be simple. A good software contains many small, reusable Modules. Each module has its own responsibilities. In a good system, dependencies between components cannot be crossed. The whole system is stacked with various components to form a pyramid.
Lakos is a pioneer in many aspects of software engineering, and the most famous is Refactoring code Refactoring ). Code refactoring refers to the constant transformation of code in the programming process to ensure the robustness and flexibility of its structure.
2. Conventions and Templates)
Naming Conventions and basic templates are often ignored in programming modes, but they may be the most powerful method. Naming Conventions make software automation possible. For example, Java Beans framework uses simple naming conventions in getter and setter methods. The URL names of del. icio. us websites are also in a unified format. For example, [url] http://del.icio.us/tag/software#/url#will bring users to all pages labeled as software.
Many social networks use simple names. For example, if your name is johnsmith, your first image can be named johnsmith.jpg, and your rss aggregate file may be named johnsmith. xml. Developing good naming habits is a required course for JSP software engineers.
Naming conventions are also used for unit tests. For example, the JUnit unit test tool identifies all classes starting with test.
The template templates we are talking about here does not refer to constructs in C ++ or Java. We are talking about some template files that contain variables. You can replace the variables and output the final result.
Cold Fusion is one of the first programs to use the template. Later, Java used JSP to implement the template function. Apache recently developed a very useful general template for Java, Velocity. PHP itself is based on templates because it supports eval functions.
1. Interface Interfaces)
The most important concept in software engineering is the interface. Any software is a real system model. It is vital to use a simple user interface for modeling. Many software systems go through this extreme, with a lack of abstract lengthy code or overly-designed code that leads to unnecessary complexity.
Among the many software engineering books, Agile programming written by Robert Martin is worth reading.
The following methods are helpful for modeling. First, remove the methods that can only be used in the future. The more refined the code, the better. Second, do not always think that the previous things are correct and be good at changing. Third, be patient and enjoy the process.
- Three considerations for choosing a JSP website Space
- Analyze JSP Background File Management source code
- Solution to Chinese garbled JSP found in MySQL Manual
- JSP Chinese garbled Problem description and Solution
- Example Description: how to print a report using JSP