Ali's top 10 open source projects, salute!

 

1

JSON processor fastjson

fastjson is a high-performance JSON parser and generator implemented in the Java language, developed by engineers from Alibaba.

main feature:

  • Fast FAST (faster than any other Java-based parser and generator, including jackson)

  • Powerful (supports common JDK classes including any Java Bean Class, Collection, Map, Date or enum)

  • Zero dependencies (no dependencies on any other class library except JDK)

Sample code:

 

import com.alibaba.fastjson.JSON;
Group group = new Group();
group.setId(0L);
group.setName("admin");
User guestUser = new User();
guestUser.setId(2L);
guestUser.setName("guest");
User rootUser = new User();
rootUser.setId(3L);
rootUser.setName("root");
group.getUsers().add(guestUser);
group.getUsers().add(rootUser); 
String jsonString = JSON.toJSONString(group); 
System.out.println(jsonString);

 

 

2

JVM-Sandbox

JVM-Sandbox, JVM sandbox container, a non-intrusive runtime AOP solution based on JVM.

The core functions of JVM-SANDBOX:

Real-time non-intrusive AOP framework

In common AOP framework implementation schemes, there are static weaving and dynamic weaving.

  1. Static weaving
    Static weaving occurs when the bytecode is generated by inserting the AOP bytecode into the target class and method in advance according to the rules of a certain framework to implement AOP;

  2. Dynamic Weaving
    Dynamic weaving allows AOP bytecode enhancement of a given method to be done while the JVM is running. Most common dynamic weaving schemes use renaming the original method, and then create a new method with the same signature to do the proxy work mode to complete the function of AOP (common implementation schemes such as CgLib), but there are some application boundaries in this method:

    • Intrusive
      The proxied target class needs to be invasively modified. For example: In Spring, it must be a Bean hosted in the Spring container

    • Curability The
      target proxy method is cured after it is started, and it is not possible to re-enhance an existing method with AOP

 

 

3

Distributed RPC service framework Dubbo

Dubbo is a high-performance and excellent service framework open sourced by 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: An abstraction for remote procedure calls that supports load balancing, disaster recovery and clustering functions

  • Registry: Service catalog framework for service registration and service event publishing and subscription

working principle:

 

 

4

Node.js framework Egg.js

Egg.js, born for enterprise-level frameworks and applications, is Alibaba's open-source enterprise-level Node.js framework.

characteristic

  • Deep Frame Customization

  • Highly extensible plugin mechanism

  • Built-in multi-process management

  • Based on koa development, excellent performance

  • The framework is stable and the test coverage is high

start using

 

npm install egg-init -g
$egg-init --type simple showcase && cd showcase
$npm install
$npm run dev
$open http://localhost:7001

 

 

5

Ant Design Pro

Ant Design Pro is a set of out-of-the-box front-end/design solutions.

characteristic

  • Elegant and beautiful: carefully designed based on the Ant Design system

  • Common design patterns: extracted from typical pages and scenarios of middle and background applications

  • The latest technology stack: developed with front-end cutting-edge technologies such as React/dva/antd

  • Responsive: Designed for different screen sizes

  • Theme: Configurable themes to meet diverse brand demands

  • Internationalization: Built-in industry-wide internationalization solutions

  • Best Practices: Good Engineering Practices Help You Continue to Produce High-Quality Code

  • Mock Data: A Practical Local Data Debugging Solution

  • UI testing: automated testing to ensure the quality of front-end products

 

 

6

JDBC connection pool, monitoring component Druid

Druid is a JDBC component that consists of three parts: 

  • DruidDriver acts as a driver and can provide a plug-in system based on Filter-Chain mode. 

  • DruidDataSource Efficient and manageable database connection pool. 

  • SQLParser 

     

What can Druid do? 

1) It can monitor database access performance. Druid provides a built-in powerful StatFilter plug-in, which can calculate the execution performance of SQL in detail, which is helpful for online analysis of database access performance. 

2) Replace DBCP and C3P0. Druid provides an efficient, powerful, and scalable database connection pool. 

3) Database password encryption. It is bad behavior to directly write the database password in the configuration file, which can easily lead to security problems. Both DruidDruiver and DruidDataSource support PasswordCallback. 

4) SQL execution log, Druid provides different LogFilters, which can support Common-Logging, Log4j and JdkLog. You can select the corresponding LogFilter as needed to monitor the database access of your application. 

To extend JDBC, if you have programming requirements for the JDBC layer, you can easily write extension plug-ins for the JDBC layer through the Filter-Chain mechanism provided by Druid. 

The following is a monitoring implementation based on Druid's built-in extension StatFilter:

 

 

7

NG-ZORRO

NG-ZORRO is an enterprise-level UI component library, an Angular 4.0 implementation of Ant Design, which develops and serves enterprise-level backend products.

characteristic

  • Extracted from the interaction language and visual style of enterprise-level mid- and back-end products, it is regularly updated and consistent with the Ant Design React version.

  • High quality Angular components out of the box.

  • Built with TypeScript, providing full type definition files.

Support environment

  • Modern browsers and IE9+ (requires polyfills).

Compatible version

Currently supports Angular 4.0.0 version

 

 

8

Container Technology Pouch 

At the 2017 Hangzhou Yunqi Conference, Alibaba officially announced that its self-developed container technology, Pouch, will be returned to the community in the form of open source, hoping to jointly promote the development of container technology in China and build a container ecosystem with developers.

Ali Pouch is not a completely innovative technology. At the earliest, Alibaba provided container services for the group's business based on LXC technology. In 2011, Alibaba developed its own container technology T4. In 2016, Alibaba renamed the container technology to Pouch, and last year supported a large number of core businesses within the group, such as e-commerce platforms. Core business, main applications and some databases, payment business of Ant Financial, transaction business of Taobao, etc.

The origin of the name of Pouch stems from Alibaba's original intention as an open enabler to focus on user-scenario applications. As Sun Hongliang, an Alibaba technical expert, said, Pouch, as a self-developed technology from large-scale scenarios within Alibaba Group, compared with container technologies such as docker and rkt, the core value of differentiation is reflected in the following aspects:

  • Rich container technology: The application experience inside the container is like a virtual machine, has an init process, and is rich in system services;

  • Rich isolation guarantees: isolation security is inevitable, kernel reinforcement and lightweight virtual machine support, enrich the isolation dimension;

  • P2P image distribution: image distribution in ultra-large-scale scenarios, the P2P method relieves network load;

  • Kernel compatibility: Enterprise kernel upgrades are often slow and adapt to the existing underlying infrastructure to the greatest extent possible.

 

 

9

Open source database AliSQL 

AliSQL is a branch based on the official version of MySQL, maintained by the Alibaba Cloud database team, and is currently used in Alibaba Group's business and Alibaba Cloud database services. This version has made a lot of performance and function optimization improvements on the basis of the community version. It is especially suitable for e-commerce, cloud computing and financial industries.

Ding Qi, a senior expert on Alibaba Cloud database, introduced that the AliSQL version has undergone great tests in terms of strength and breadth. The latest AliSQL version not only draws the essence from other open source branches such as Percona, MariaDB, WebScaleSQL and other communities, but also accumulates Alibaba's years of experience and solutions in the MySQL field. AliSQL adds more monitoring indicators, and provides personalized solutions for scenarios such as e-commerce spikes, IoT big data compression, and financial data security.

"In the general benchmark test scenario, the AliSQL version has a 70% performance improvement over the official MySQL version. In the spike scenario, the performance is improved by 100 times." Ding Qi said.

Li Jin, senior director of Alibaba Cloud, said, "The development of AliSQL has been supported by a lot of wisdom. We hope to give back to the community with the accumulated technology accumulated in the past few years to help more individuals and enterprises using MySQL. This is the path for the healthy development of the community. .We also welcome more developers and technical teams to join the AliSQL open source project to make it more valuable in the industry."

Performance comparison with Oracle database:

 

 

10

Graphical Grammar for Visual Coding AntV - G2 

G2 is a set of graphic grammars based on visual coding. It is data-driven and has a high degree of ease of use and extensibility. Users do not need to pay attention to various tedious implementation details, and can build a variety of interactive statistics with one statement. chart.

At the same time, G2 is also the most important component of AntV, starting with the visual coding grammar system described in the book "The Grammar of Graphics" (this is also the origin of the name of the G2 project).

characteristic

  • Simple and easy to use: starting from the data, you can easily get the desired chart display effect with just a few lines of code

  • Complete visual coding: data-driven, providing a complete mapping from data to graphics

  • Powerful expansion capability: Any chart can be drawn flexibly based on graphic syntax, satisfying your unlimited creativity

Example

Histogram

Full code:

 

<!DOCTYPE html><html>  <head>    <meta charset="utf-8">    <title>柱状图</title>    <!-- 引入 G2 文件 -->    <script src="https://gw.alipayobjects.com/as/g/datavis/assets/1.0.5/g2/3.0.0/g2.min.js"></script>  </head>  <body>    <!-- 创建图表容器 -->    <div id="c1"></div>    <script>      const data = [
        { genre: 'Sports', sold: 275 },
        { genre: 'Strategy', sold: 115 },
        { genre: 'Action', sold: 120 },
        { genre: 'Shooter', sold: 350 },
        { genre: 'Other', sold: 150 }
      ]; // G2 对数据源格式的要求,仅仅是 JSON 数组,数组的每个元素是一个标准 JSON 对象。      // Step 1: 创建 Chart 对象      const chart = new G2.Chart({
        container: 'c1', // 指定图表容器 ID        width : 600, // 指定图表宽度        height : 300 // 指定图表高度      });
      // Step 2: 载入数据源      chart.source(data);
      // Step 3:创建图形语法,绘制柱状图,由 genre 和 sold 两个属性决定图形位置,genre 映射至 x 轴,sold 映射至 y 轴      chart.interval().position('genre*sold').color('genre')
      // Step 4: 渲染图表      chart.render();
    </script>  </body></html>

Those with 1-5 work experience, who do not know where to start in the face of the current popular technology, and who need to break through the technical bottleneck can join the group. After staying in the company for a long time, I lived very comfortably, but the interview hit a wall when I changed jobs. Those who need to study in a short period of time and change jobs to get high salaries can join the group. If you have no work experience, but have a solid foundation, you can join the group if you are proficient in the working mechanism of java, common design ideas, and common java development frameworks.

java architecture group: 697579751 to communicate together

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324921536&siteId=291194637