This repo gives examples of different Java concept and programming technique that are frequently used in the development of frameworks. For instance, when we want to create an RPC framework from scratch, we need to know Java dynamic proxy and serialization.
Here is the list:
Technique | module/link | scenario | status | remark |
---|---|---|---|---|
dynamic proxy | dynamic-proxy | RPC MQ |
done | |
byte program java agent, instrument, byte buddy |
bytecode-program java-agent-and-instrument java-agent-and-instrument-test java monitor by java agent |
APM ,tracking, method enhancement, hot module replacement |
done | skywalking, pinpoint, zipkin; framework development ,eg:dubbo、spring, arthas, jrebel and so on. |
connection pool | connection-pool | Druid, C3P0, HikariCP |
done | a simple connection pool: https://github.com/aloys-jun/connect-pool |
Java JUC | https://github.com/evasnowind/JUC-learning | done | ||
Java CAS | java-cas | done | ||
Java SPI | java-spi | JDBC | done | |
Java Zero Copy | java-zero-copy | high performance IO,like kafka |
done | |
Dubbo SPI | Dubbo | to do | ||
Spring event | spring-event | done | event notify | |
Spring lifecycle | spring-lifecycle spring-dynamic-inject-interface |
mybatis(e.g implementation of mapper) |
done | |
Spring AOP | spring-aop | done | ||
Spring Factories, Spring Import, Spring Condition |
spring-conditional-annotation spring-import |
framework development |
done | spring boot starter |
spring-boot-starter |
tiny-http-server-spring-boot-starter a simple starter |
implement a spring boot starter |
done | |
netty | netty-httpserver | network IO, eg: RocketMQ |
done | rocketmq, dubbo, seata and so on. Kafka doesn't use netty,but use NIO。 |
dynamic datasource separate read write |
dynamic-datasource | db midware, separate read write, MyCAT, shardingsphere-jdbc |
done | other :dynamic datasource |
reactor programming |
reactor-programming | webflux, Spring Cloud Gateway, soul |
done |
Supported by Jetbrains IDEA