What techniques and tools do you need to master as a Java programmer to complete a JavaWeb project? Today I will list some common technologies and tools that I have used a lot in my work in the past 10 years. I know that the technology stack is far more than these, and I only list the ones I am familiar with and use most, which will definitely be enough to complete a project. Say so many technology is not to let everyone be familiar with, some too old now also use less or even do not use, I mainly combined with my 10 years of development experience to tell you the common technology stack JavaWeb.

Here’s a mind map of the tech stack:

Technology stack

What is a technology stack? For example: the development of a common management system, will use Sprin Boot+MyBatis+Spring+Mysql+Redis+RabbitMq+Nginx+Vue+Shiro+ HTML + and so on, these technologies together can be called the technology stack.

I roughly divide the technology stack into five blocks: front end, back end, middleware, database, and tools.

The front end

JSP

JSP full name Java Server Pages, is a dynamic web development technology. It uses JSP tags to insert Java code into HTML web pages.

A JSP is essentially a servlet that implements the user interface portion of a Java Web application.

< HTML > <head> <title> </head> <body> <% out.println("Hello World! ") ); %> </body> </html>Copy the code

JSP is a web technology that I guess programmers under 5 years of age have not had access to. Ten years ago, the front end of the project I contacted was basically using JSP technology. JSP completes front-end page development with various HTML +jquery/JavaScript+ CSS.

The front frame

DWZ, EasyUI, EXT, BootStrap, KendoUI were all based on rich text client UI frameworks based on HTML, CSS, JavaScript/jquery, which were a boon for backend developers at the time. The biggest feature of these frameworks is that the official website provides the use of various components, back-end personnel as long as the JSP page, data rendering can be. These UI frameworks are pretty much fixed in style and are more suitable for developing management-like systems, including: powerful data sources, common drag-and-drop functionality, templates, and UI controls.

DWZ

It is an Ajax RIA open source framework developed by Chinese people based on jQuery. The design goal is simple and practical, fast development, and reduce the cost of Ajax development.

Liverpoolfc.tv: jui.org/

EasyUI

Easyui is a jquery-based collection of user interface plug-ins that provide the necessary functionality for creating modern, interactive, JavaScript applications. With Easyui you don’t need to write a lot of code, you can define the user interface, timing and scale of web development by writing some simple HTML tags.

Website; www.jeasyui.com/

EXT

ExtJS is a JavaScript framework and product of Sencha based on YUI (Yahoo user interface), which is basically a desktop application development platform with a modern UI.

Extjs-doc.github. IO /ext4api/#! /…

BootStrap

Bootstrap is an open source toolkit from Twitter for front-end development

Chinese official website: www.bootcss.com/

KendoUI

Is a set of JavaScript functions libraries that provide abstract, customizable theme GUI controls and animation effects. Based on the jQuery JavaScript function library, it can be used to construct interactive Web applications

Website: www.kendoui.io/

FreeMarker

FreeMarker FreeMarker is a free template engine, a generic tool for generating text output from templates, written in pure Java, for generating HTML Web pages, especially for applications based on the MVC pattern. Typically a Java program prepares the data to be displayed, and FreeMarker generates the page to display the prepared data from the template (see figure below)

FreeMarker is not a Web application framework, FreeMarker is container agnostic and can also use JSP tag libraries in templates.

<html> <head> <title>Welcome! </title> </head> <body> <h1>Welcome ${user}! </h1> <p>Our latest product: <a href="${latestProduct.url}">${latestProduct.name}</a>! </body> </html>Copy the code

html

Many of the front-end frameworks above are HTML-based, requiring you to have a JS/JQ, CSS foundation, which is the foundation of all front-end frameworks. Because the light frame can not meet our needs sometimes, sometimes we need to adjust the functions that the frame can not achieve; As well as the rapid development of the Internet era, the front-end requirements are becoming higher and higher, native HTML has been rapidly developed, basic all front-end effects can be achieved when using native.

VUE

Vue.js uses htML-based template syntax that allows developers to declaratively bind DOM to the data of the underlying VUE instance. All vue.js templates are valid HTML, so they can be parsed by standards-compliant browsers and HTML parsers.

On the underlying implementation, Vue compiles templates into virtual DOM rendering functions. Combined with a responsive system, Vue can intelligently calculate how many components need to be rerendered and minimize DOM operations.

VUE+elementUI is currently the most used, especially developing some backend management systems is relatively simple and convenient.

The back-end

servlet

A servlet is a small program that runs on a Server and handles requests from the Server. We access an application through a browser. During this process, our browser sends an access request, the server receives the request, and responds to the browser’s request. This is known as the B/S model (browser-server model). Servlets are components that handle requests and run in Java-enabled application servers. As shown in the figure:

struts

Struts, mainly referred to as Struts 1 and Struts 2, is a classic MVC framework that is used less and less nowadays except for some old projects. But there are differences between Struts1 and Struts2, and the main difference is that they are fundamentally different.

Struts1: Through the use of Java Servlet/JSP technology, the implementation of Java EE Web application based on the model-View-Controller (MVC) design pattern of the application framework, is a classic MVC design pattern of a classic product.

Struts2: WebWork as the core, using the interceptor mechanism to handle user requests, such a design also makes the business logic controller can be completely separated from the ServletAPI, so Struts 2 can be understood as the updated product of WebWork.

The most classic combination of strutsMVC+SPring+Hibernate, known as SSH, was the interview must ask technology.

Spring

Spring framework is an open source Java application framework, which solves many common problems encountered by developers in development and provides powerful IOC, AOP and Web MVC functions. Spring can be used in applications alone or in combination with Struts, Webwork, and many other Web frameworks. The Spring framework is mainly composed of seven parts, namely Spring Core, Spring AOP, Spring ORM, Spring DAO, Spring Context, Spring Web and Spring Web MVC.

Persistence layer frame

jdbc

JDBC (Java Data Base Connectivity) is a Java API for executing SQL statements. It provides unified access to multiple relational databases. JDBC consists of a set of classes and interfaces written in the Java language. JDBC provides a benchmark against which more advanced tools and interfaces can be built to enable database developers to write database applications.

Most of the early projects are through the JDBC encapsulation to operate the database, to achieve the increase, deletion, change and check, the performance of the consideration is not much, with the passage of time constantly derived a lot of frameworks, such as: Mybatis, Hibernate, etc..

ibatis

The term iBATIS, derived from the combination of “Internet” and “Abatis,” is an open source project initiated by Clinton Begin in 2001. Originally focused on cryptographic software development, it is now a Java-based persistence layer framework. The persistence layer framework provided by iBATIS includes SQL Maps and Data Access Objects (DAO), as well as an instance of JPetStore developed using this framework.

IBATIS currently offers implementations in three languages: Java,.NET, and Ruby.

mybatis

MyBatis is an open source project of Apache called iBatis. In 2010, this project was migrated to Google Code by Apache Software Foundation and renamed as MyBatis.

MyBatis is an excellent persistence layer framework that supports customized SQL, stored procedures, and advanced mapping. MyBatis avoids almost all of the JDBC code and manual setting of parameters and fetching result sets.

MyBatis-Plus

Mybatis Enhancement Kit – Make enhancements without changes, simplify CRUD operations

JPA

JPA, short for Java Persistence API, is a JDK 5.0 annotation or XML mapping describing object-relational tables and persisting run-time entity objects to a database.

Sun introduced the new JPA ORM specification for two reasons: first, to simplify the development of existing Java EE and Java SE applications; Second, Sun wants to integrate ORM technology to make the world one.

Spring Boot

SpringBoot is a new open source lightweight framework that the Pivotal team began developing in 2013 and released its first version in April 2014. Designed based on Spring4.0, it not only inherits the excellent features of the Spring framework, but also further simplifies the entire construction and development process of Spring applications by simplifying configuration. In addition, By integrating a large number of frameworks, SpringBoot solves the problems of dependency package version conflicts and reference instability.

Distributed/microservices

Spring Cloud

Spring Cloud provides developers with development tools to operate on distributed systems such as configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time Token, global lock, decision campaign, distributed session, and cluster state. Using Spring Cloud developers can quickly implement these patterns.

Spring Cloud’s GitHub home page: github.com/spring-clou…

dubbo

Dubbo is an open source high-performance service framework of Alibaba, which enables applications to realize the output and input functions of services through high-performance RPC, and can be seamlessly integrated with the Spring framework.

Main core components:

Remoting: A network communication framework that implements sync-over-async and Request-Response message mechanisms

RPC: A remote procedure call abstraction that supports load balancing, disaster recovery, and clustering

Registry: The service catalog framework is used for registering services and publishing and subscribing to service events

Spring Cloud Alibaba

Spring Cloud Alibaba is committed to providing a one-stop solution for distributed application service development. This project contains the necessary components for developing distributed application services that developers can easily use through the Spring Cloud programming model.

Relying on Spring Cloud Alibaba, you only need to add some annotations and a little configuration, you can plug Spring Cloud application into Alibaba distributed application solution, and quickly build distributed application system through Ali middleware.

Security framework

shiro

Apache Shiro is a security framework for Java. Apache Shiro is being used by more and more people because it is fairly simple. It may not be as powerful as Spring Security, but it may not need to be that complicated in practice. So using Shiro, which is small and simple, is enough. As for which one is good in the end, there is no need to tangle. It is good that the project can be solved more simply.

Spring Security

Spring Security is a Security framework that provides declarative secure access control solutions for Spring-based enterprise applications. It provides a set of beans that can be configured in a Spring application context, taking full advantage of Spring IoC,DI (Inversion of Control), and AOP (aspect oriented programming) capabilities. Provide declarative secure access control function for application system, reduce the work of writing a lot of repetitive code for enterprise system security control.

oauth2.0

OAuth (Open Authorization) is an open standard that allows a user to give third-party applications access to the user’s private resources (such as photos, videos, and contact lists) stored on a site without having to provide a user name and password to third-party applications.

OAuth 2.0 is currently a popular approach, which was first used by Google, Yahoo, Microsoft, Facebook and others. It was labeled 2.0 because there was originally a 1.0 protocol, but this 1.0 protocol was made too complex and not easy to use, so it didn’t take off. 2.0 is a new design, and the protocol is simple and clear, but it is not compatible with or related to 1.0.

The project management

maven

Maven is a pure Java development open source project under Apache. The construction, reporting, and documentation steps of a project can be managed with a central piece of information. Java is a project management tool for building and dependency management of Java projects.

ant

Ant is a tool that automates the steps of compiling, testing, and deploying software, mostly for software development in a Java environment. There are many places where ant can be used in real software development.

gradle

Gradle is an open source tool for automating project building based on Apache Ant and Apache Maven concepts. It uses a Groovy-based domain-specific language (DSL) to declare project Settings, and now adds a Kotlin-based DSL based on the Kotlin language, ditching all the tedious XML-based configuration.

Server software

tomcat

Tomcat server is a free open source Web application server, belongs to lightweight application server, in small and medium-sized systems and concurrent access users are not many occasions is widely used, is the first choice for developing and debugging JSP programs

Apache

Apache is the world’s number one used Web server software. It runs on almost any widely used computer platform and is one of the most popular Web server software because it is widely used across platforms and security

Jetty

Jetty is an open source servlet container that provides a runtime environment for Java-based Web containers such as JSPS and servlets.

weblogic

WebLogic Server is specially developed for enterprise e-business applications. Enterprise e-business applications require rapid development and require server-side components to be flexible and secure, while supporting the scale, performance, and high availability necessary for mission-critical applications. WebLogic Server simplifies the development of portable and extensible application systems and provides rich interoperability for other applications and systems.

nginx

Nginx is a lightweight Web/reverse proxy server and E-mail (IMAP/POP3) proxy server distributed under the BSD-like protocol. It is characterized by less memory and strong concurrency.

The middleware

The cache

Caching is an essential module in today’s systems and has become a key component of high concurrency and high performance architectures. The main purpose of caching is to improve performance and relieve database stress,

Redis

Redis is an open source in-memory data structure store used as a database, cache, and message broker. Provides data structures such as strings, hashes, lists, collections, sorted collections with range queries, bitmaps, hyperlogs, geospatial indexes, and streams. With built-in replication, Lua scripting, LRU exportations, transactions and different levels of disk persistence, and high availability through automated partitioning of Redis Sentinel and Redis Cluster.

MongoDB

MongoDB is a database based on distributed file storage. Written in C++ language. Designed to provide scalable high-performance data storage solutions for WEB applications. Is a product between a relational database and a non-relational database, the most functional non-relational database, most like a relational database.

Memcached

Memcached is a free, open source, high performance, distributed memory object caching system used to improve the scalability of Web applications. Is a memory-based key-value store for storing small chunks of arbitrary data (strings, objects). Simple and powerful, its simple design facilitates rapid development, reduces the difficulty of development, and solves many problems of large data cache. The general purpose is to cache database query results to reduce database access times and improve the speed and scalability of dynamic Web applications.

I don’t have to say more about differences, but simply talk about their use scenarios:

  • Memcached: Reduce database load and improve performance in dynamic systems Do cache, suitable for more read and less write, large amount of data (such as renren large query user information, friends information, article information, etc.).
  • Redis: it is suitable for systems with high requirements on read and write efficiency, complex data processing operations and high requirements on security (such as the counting and publishing systems of Sina Weibo, which have high requirements on data security and read and write).
  • MongoDB: Provides access efficiency for massive data.

search

solr

Solr is an independent enterprise search application server that provides an API interface similar to Web Service. Users can submit XML files in a certain format to search engine servers through HTTP requests to generate indexes. You can also make a lookup request through an Http Get operation and Get the result back in XML format.

Elasticsearch

Elasticsearch is a Lucene-based search server. It provides a distributed multi – user – capable full – text search engine based on RESTful Web interface

The main difference between them

Es is basically out of the box, very simple, Solr is slightly more complex.

Solr supports more data formats such as JSON, XML, and CSV, whereas Elasticsearch only supports JSON files.

Solr is fast in query, but slow in index update (that is, slow in insert and delete); ES is fast in index establishment (that is, slow in query), that is, fast in real-time query.

ELK

The reason why I recommend ELK is because it shows its power in the case of distributed micro-services, whether it is data collection, data processing, or data analysis, it can save a lot of time. ELK is a combination of Elasticsearch, Logstash and Kibana open source software. However, in order to improve performance, you usually need to use Kafka and Filebeat to collect logs. The following architecture diagram is a log service platform I worked on.

Timing task

You may be familiar with scheduled tasks, such as Spring’s built-in scheduled task SpringTask. However, SpringTask has many problems. For example, the most fatal problem is that once an exception is thrown, its life ends and it will not be executed again. It is not convenient to use in complex services. Quartz and XX-Job are recommended as two periodic task frameworks. The third-party frameworks have powerful functions and are easy to use.

Quartz

Quartz is another open source project in the Job Scheduling area by the OpenSymphony open source organization. Developed entirely in Java, Quartz can be used to perform timed tasks, similar to java.util.timer. But compared to Timer, Quartz adds many features:

  • Persistent job – is to maintain the scheduled state;
  • Job management – Effective management of scheduled jobs;

xx-job

Xxl-job is a lightweight distributed task scheduling platform, whose core design goal is rapid development, simple learning, lightweight and easy to expand. Now open source and access to many companies online product lines, out of the box.

At present, many companies have access to XXL-job, including the well-known Dianping, JINGdong, Youxin Used Car, Beijing Suntech, 360 Finance (360), Lenovo Group (Lenovo), Yixin (netease) and so on…. Quartz, as a leader in open source job scheduling, is the first choice for job scheduling

Quartz can only manage tasks through APIS in a cluster environment. Meanwhile, the system is very intrusive. Xx-job can perfectly manage tasks in a cluster. Therefore, you can choose the appropriate timing task framework according to your business situation.

Configuration center

What is a configuration center?

Centralized The management of configuration information in an application system is a new application function module, which is different from the traditional way that configuration information is distributed to all corners of the system. In addition, it provides additional functions in a centralized manner. Especially in microservices architecture, it is an indispensable component, even a necessary component.

Why use a configuration center?

In microservice system, the number of services and configuration information are increasing, such as various server parameter configurations, various database access parameter configurations, different application configuration information in various environments, real-time effect of configuration information modification, etc. The traditional configuration file or the configuration information stored in the database can no longer meet the requirements of developers for configuration management. Common configuration center middleware are: SpringCloud Config, Nacos, Apollo, etc.

SpringCloud Config

Spring Cloud Config supports the configuration of the machine to be updated by the destination parameter of the /bus/refresh endpoint. However, the whole process is not automated and systematic. It’s weak compared to Apollo and Nacos.

Nacos

In June 2018, Ali open source configuration center can also do DNS and RPC service discovery. Nacos is relatively simple to use and is better suited for large-scale scenarios with high performance requirements. In addition, Nacos not only provides the function of configuration center, but also provides the function of dynamic service discovery, service sharing and management, which reduces the difficulty in the process of service transformation.

Apollo

In May 2016, The open source configuration management center of Ctrip has standardized permissions, process governance and other features. Apollo can directly specify the IP of the publishing machine on the console by grayscale release, and then release in full, which is relatively systematic.

How to choose:

Core features: Apollo and Nacos have more ecosystem support than Spring Cloud Config

Real-time push: Nacos and Apollo are relatively simple and efficient in configuring real-time push links, while Spring Cloud Config is more complex.

Highly available deployment: THE deployment structure of Nacos is relatively simple and the operation and maintenance cost is low. Apollo has more components to deploy and higher operation and maintenance costs than Nacos. Spring Cloud Config has the highest cost of producing high availability.

monitoring

Server monitoring is to master the working status of the server in real time, and can call the monitoring record to check at any time when needed.

SpringBootAdmin

Spring Boot Admin is used to manage and monitor Spring Boot applications. You can view the status of applications through the UI, such as Spring Beans, system properties, threads, and HTTP calls.

Druid

I know Druid is mostly used for connection pooling, but it also has a SQL monitoring function.

SkyWalking

Skywalking is by the domestic open source lover Wu Sheng (former OneAPM engineer, currently in Huawei) open source and submitted to Apache incubator products, it also absorbed Zipkin/Pinpoint/CAT design ideas, support non-invasive buried point. Is a distributed tracking based application performance monitoring system. In addition, the community has developed an organization called OpenTracing to promote some of the specifications and standards for call chain monitoring.

storage

Middleware that is database related or can be used as a data warehouse is grouped together.

MyCat

Mycat is an open source database middleware server that implements the MySQL protocol. We can think of it as a database agent. Mycat is accessed by MySQL client tools and command line. Mycat uses the MySQL Native protocol to communicate with multiple MySQL servers, as well as the JDBC protocol to communicate with most mainstream database servers, including SQL Server, Oracle, DB2, PostgreSQL and other mainstream databases. MongoDB is also supported for NoSQL storage and more types of storage will be supported in the future. In general, Mycat is used primarily as a proxy for MySQL databases, although it also supports access to other types of databases;

Mycat official website: www.mycat.io/

Canal

Let’s look at the official website first

Canal, which translates to canal, is used for incremental log parsing based on the MySQL database to provide incremental data subscriptions and consumption.

This introduction has a few key words: incremental logging, incremental data subscription, and consumption.

Here we can simply think of Canal as a tool for synchronizing incremental data.

Let’s take a look at a diagram provided on the official website:

sharing-jdbc

Positioned as a lightweight Java framework that provides additional services in Java’s JDBC layer. It uses the client directly connected to the database, in the form of JAR package to provide services, without additional deployment and dependence, can be understood as an enhanced VERSION of THE JDBC driver, fully compatible with JDBC and various ORM frameworks.

The main function

  • Sub-library & sub-table
  • Reading and writing separation
  • Distributed primary key

zookeeper

ZooKeeper is an official subproject of Hadoop. It is a reliable coordination system for large distributed systems. ZooKeeper provides configuration maintenance, name service, distributed synchronization, and group service. ZooKeeper aims to encapsulate key services that are complex and error-prone, and provide users with easy-to-use interfaces, efficient performance, and stable functions.

The transaction

This transaction refers more to a distributed transaction processing plug-in.

Apache ShardingSphere

Apache ShardingSphere(Incubator) is an open source ecosystem of distributed database middleware solutions, consisting of Three independent sharding-JDBC, Sharding-Proxy and Sharding-Sidecar (under planning). Product components that can be deployed and used together. They all provide standardized data sharding, distributed transaction and database governance functions, and can be applied to diverse application scenarios such as Java isomorphism, heterogeneous languages, containers, cloud native and so on.

Seata

Seata is short for Simple Extensible Autonomous Transaction Architecture, renamed feasCAR. Ali open source distributed transaction framework, belonging to the two-stage submission mode.

The message queue

What is a message queue

A message queue is a container for storing messages that can be pulled out for our own use when we need to use them. Message queue is an important component in distributed system. The main purpose of using message queue is to improve system performance, reduce peak load and reduce system coupling through asynchronous processing. The most popular message queues are ActiveMQ, RabbitMQ, Kafka and RocketMQ.

Why message queues

1. Improve system performance through asynchronous processing (peak clipping and response time reduction);

2. Reduce the system coupling;

Kafka

Kafka is an open source stream processing platform developed by the Apache Software Foundation and written in Scala and Java. Kafka is a high-throughput distributed publish-subscribe messaging system that processes all of the consumer’s action-flow data in a website. This data is usually addressed by processing logs and log aggregation due to throughput requirements. This is a viable solution for logging data and offline analysis systems like Hadoop that require real-time processing limitations. Kafka is designed to unify online and offline message processing through Hadoop’s parallel loading mechanism, and to provide real-time messaging across clusters.

RabbitMQ

AMQP (Advanced Message Queuing Protocol) is an open standard of application-layer protocols designed for message-oriented middleware. Message-oriented middleware is primarily used for decoupling between components so that the sender of a message does not need to be aware of the message consumer and vice versa. The main characteristics of AMQP are message orientation, queue, routing (including point-to-point and publish/subscribe), reliability, and security. RabbitMQ is an open source IMPLEMENTATION of AMQP. The server is written in Erlang and supports a variety of clients, such as Python, Ruby,.NET, Java, JMS, C, PHP, ActionScript, XMPP, STOMP, and AJAX. It is used to store and forward messages in distributed systems, and has good performance in ease of use, scalability, and high availability.

ActiveMQ

ActiveMQ is an open source implementation of Message middleware based on JMS (Java Message Servie) specification. The design goal of ActiveMQ is to provide a standard, message-oriented application integration Message communication middleware that can cross multiple languages and systems.

The three differences and their use scenarios

features ActiveMQ RabbitMQ kafka
Development of language java erlang scala
Single machine throughput All level All level The class of 100000
timeliness Ms level Us level Ms than level
availability High (master-slave architecture) High (master-slave architecture) Very high (distributed architecture)
features Mature products, used in many companies; There are more documents; Good support for various protocols Based on Erlang development, so the concurrency is very strong, the performance is extremely good, the delay is very low; The management interface is rich Only the main MQ functions are supported, such as some message query, message backtracking, etc., are not provided, after all, they are intended for big data and are widely used in the field of big data.

The database

The database mainly refers to the relational database, is according to the data structure to organize, store and manage data warehouse, database is the storage of data warehouse, is an essential part of a system or software. Each database has one or more different apis for creating, accessing, managing, searching, and copying saved data. We can also store data in files, but reading and writing data from files is relatively slow.

So, we now use relational database management systems to store and manage large amounts of data. The so-called relational database is built on the basis of the relational model of the database, with the help of set algebra and other mathematical concepts and methods to deal with the data in the database.

Characteristics of relational database management system:

  • 1. Data is presented in tables
  • 2. Various record names for each behavior
  • 3. The data domain corresponding to the record name of each column
  • 4. Many rows and columns make up a form
  • 5. Several forms form the Database

Common data management systems are: Oracle, mysql, SQL Server, Access, TiDB.

oracle

Oracle Database for short. Oracle database system is a group of software products with distributed database as the core provided by Oracle Corporation (Oracle) in the United States. It is one of the most popular client/server databases at present. Oracle database is the most widely used database management system in the world. As a general database system, it has complete data management functions. As a relational database, it is a complete relational product. As a distributed database, it realizes the distributed processing function, but all its knowledge, as long as you learn Oracle knowledge on one machine, you can use it on various types of machines.

mysql

MySQL is the most popular Relational Database Management System and one of the best RDBMS(Relational Database Management System) applications in WEB applications. It is currently hosted by Oracle.

SQL Server

A relational database system developed by Microsoft. SQL Server is an expandable, high performance database management system designed for distributed client/Server computing. It realizes the organic combination with WindowsNT and provides an enterprise-level information management system scheme based on transaction.

access

Access is Microsoft database engine graphical user interface and software development tools together with a database management system. It is a member of Microsoft OFFICE and is sold separately in both Professional and later versions of OFFICE.

TiDB

TiDB is an open source distributed relational database independently designed and developed by PingCAP. Hybrid Transactional and Analytical Processing (HTAP) is a Hybrid Transactional and Analytical Processing (HTAP) database product. It has important features such as horizontal capacity expansion or reduction, financial high availability, real-time HTAP, cloud native distributed database, compatibility with MySQL 5.7 protocol and MySQL ecology. The goal is to provide users with one-stop Online Transactional Processing (OLTP), Online Analytical Processing (OLAP), and HTAP solutions. TiDB is suitable for various application scenarios such as high availability, high consistency requirements, and large data scale.

The advantages and disadvantages of the above database are obvious, not wordy, we can choose the right data according to their actual situation in the work.

tool

The development of

IntelliJ IDEA

IntelliJ is recognized as the best Java development tool in the industry, especially in intelligent code assistant, automatic prompt code, refactoring, JavaEE support, various version tools (git, SVN, etc.), JUnit, CVS integration, code analysis, innovative GUI design and other aspects of the function can be said to be extraordinary. IDEA is the product of JetBrains, a company based in Prague, the Capital of the Czech Republic, which is dominated by rigorous Eastern European programmers. Its flagship version also supports HTML, CSS, PHP, MySQL, Python, and more. The free version only supports Java,Kotlin and a few other languages.

eclipse

Eclipse is an open source, Java-based, extensible development platform. It is an integrated development environment (IDE) for Java, but it can also be used as an INTEGRATED development environment for other development languages, such as C, C++, PHP, and Ruby.

MyEclipse

MyEclipse is a powerful enterprise-level integrated development environment developed on the basis of Eclipse with its own plug-ins, mainly used for Java, Java EE and mobile application development. In the latest version of MyEclipse, support for using CodeMix is also extensive, particularly with support for various open source products and major development frameworks. Currently, it supports PHP, Python, Vue, Angular, React, Java, Java EE and other languages and frameworks.

I don’t make any comments on the quality of these three tools. There are many users of each tool. I have IntelliJ IDEA and MyEclipse around me, and I prefer IntelliJ IDEA.

Client tools

Version control

Common version space tools SVN and Git

svn

TortoiseSVN is a free, open source client that manages files and directories over time. Files are stored in a central repository, which is much like a normal file server, except that it remembers every change to a file or directory. You can restore files to past versions, and you can check the history to see what changes were made to the data, and by whom. This is why many people think of Subversion and version control systems as a kind of “time machine.”

git

Git is a version control tool for Linux kernel development. Different from Subversion, a commonly used version control tool, it adopts the way of distributed version library, without the support of server-side software, and the code is extremely convenient to publish and communicate. Git is fast, which is important for large projects like this. Git is best known for its ability to merge tracing.

SVN is characterized by simplicity, but is OK if you need a place to put your code.

Git features versioning that doesn’t depend on the network for anything, and better support for branching and merging (which should be a major concern for developers).

The database

Navicat

Navicat is a fast, reliable and inexpensive database management tool designed to simplify database administration and reduce system administration costs. It is designed to meet the needs of database administrators, developers, and small and medium-sized enterprises. Navicat is built with an intuitive graphical user interface that allows you to create, organize, access, and share information in a secure and simple way.

PLSQL

PL/SQL Developer is an integrated development environment that develops applications for Oracle databases. PL/SQL is a Procedural Language called Procedural Language. PL/SQL is an extension of the Oracle database to SQL statements. PL/SQL adds a programming language feature to the use of common SQL statements, so PL/SQL organizes data operations and query statements into procedural units of PL/SQL code, and implements complex functions or calculations through logical judgments, loops, and other operations. PL/SQL only has Oracle databases.

Redis Desktop Manager

Redis Desktop Manager is a Windows platform under the visual Redis database Desktop management tool, using it you can view, delete, modify your Redis database data!

Linux remote

XShell

XShell is a powerful secure terminal simulation software, it supports SSH1,SSH2, and The TELNET protocol of Microsoft Windows platform. XShell can be used in Windows to access servers in different systems on the remote end, so as to better achieve the purpose of remote control terminal.

WinSCP

The pagoda

The Pagoda panel is an integrated environment that can be installed on the server and comes with a Web management panel that allows you to control your server directly from your browser. You can create a website, FTP, database, SSL with one click; Security management, scheduled tasks, file management, coexistence and switching of MULTIPLE PHP versions; It has its own basic website environment, supporting Windows (Apache) and Linux (Apache or NGINx).

SecureCRT

Secure CRT is an SSH client software that can transfer encrypted files using the included VCP command line program.

postMan

Postman is a very popular API debugging tool. In fact, developers use it more. Because testers have more options for interface testing, such as Jmeter, soapUI, and so on. However, Postman is simple enough and powerful enough to debug interfaces during development.

auxiliary

Typora+PicGo

Typora+PicGo, the best Markdown+ the best map bed tool! If you’re a blogger, you can save it.

notepad++

Notepad++ Chinese edition is a necessary text editor programmers, Notepad++ Chinese edition is compact and efficient, support 27 kinds of programming languages, eat C,C++,Java,C#, XML, HTML, PHP,JS, etc., Notepad++ Chinese edition editor can perfectly replace Microsoft notepad.

drawing

visio

Office Visio is responsible for drawing flow charts and schematic diagrams in the Office software series. IT is a software for IT and business personnel to visually process, analyze and communicate complex information, systems and processes. With professional-looking Office Visio diagrams, you can promote understanding of systems and processes, gain insight into complex information and use that knowledge to make better business decisions. Common software architecture, flowchart can be completed in it.

processon

ProcessOn is an aggregator of online mapping tools that allow you to draw flow charts, mind maps, UI prototypes, UML, network topology diagrams, organizational charts, and more without worrying about downloading and updating. You can create and plan your work anytime, anywhere, from a browser, Mac or Windows.

Website: www.processon.com/

PowerDesigner

OwerDesigner is a very comprehensive database design tool. You can use PowerDesigner to quickly create tables and support the establishment of relationships between tables. The interface is simple and powerful. At the same time, you can export SQL scripts. You can choose multiple export types, which is simple and practical.

Xmind

XMind is a full-featured mind mapping and brainstorming software designed for inspiration and creativity. As a productivity tool to effectively improve the efficiency of work and life, it is favored by millions of users around the world.

iReport

Speaking of iReport, we have to introduce Jasperreport first. Jasperreport is a report making program. Users need to write an XML file according to its rules, and then get the format file that users need to output. It supports output file formats including PDF,HTML,XML,XLS,CVS, and more. IReport is a visual development tool for creating Jasperreport XML files.

The browser

Chrome

Google Chrome is a web browser developed by Google. It is based on other open source software, including WebKit, with the goal of improving stability, speed, and security, and creating a simple and efficient user interface.

sogou

Sogou browser developed by Sogou Company, based on Google Chromium kernel, strive to provide users with cross-terminal seamless use experience, so that the Internet is easier, web page reading more fluent browser.

firefox

Mozilla Firefox, commonly known as “Firefox” in Chinese, is a free and open source web browser developed by Mozilla. It uses the Gecko typography engine and supports a variety of operating systems, such as Windows, macOS and GNU/Linux

IE

Internet Explorer (IE for short) is a web browser developed by Microsoft. Originally called Microsoft Internet Explorer (before Version 6) and Windows Internet Explorer (versions 7, 8, 9, 10, 11). Before IE7, The Chinese literal translation is “network pathfinder”, but after IE7, the official will be directly known as “IE browser “.

If you do front-end development, the compatibility of these browsers have to take into account. Internet Explorer was the big browser market a long time ago, and as time went on, Google Chrome took the big market. I personally use Google a lot in my daily development, and use other browsers only in special cases.

Performance analysis

jmeter

JMeter is a Java-based stress testing tool developed by the Apache organization. Used to stress test software, it was originally designed for Web application testing, but has since expanded to other testing areas. It can be used to test static and dynamic resources, such as static files, Java service programs, CGI scripts, Java objects, databases, and so on.

ab

Apache Bench, abbreviated as AB, is apache’s own stress test tool. Ab is very useful, it can not only apache server web site access stress test, or other types of server stress test.

MAT

MAT is a Java heap memory analysis tool that can be downloaded from www.eclipse.org/mat/.

Leave a comment on what techniques you learned on your way to becoming a great god.

This article starts with the public account Java version of the Web project, pay attention to continue to send good articles