├── .gitignore ├── LICENSE ├── NIO-reactor └── src │ └── org │ └── example │ └── reactor │ ├── master │ ├── MasterSlaveReactorMain.java │ └── SlaveHandler.java │ ├── multi │ ├── MultiWorkThreadMain.java │ └── ThreadPoolHandler.java │ └── single │ └── SingleReactorMain.java ├── README.md ├── RPC ├── dubbo-springboot │ ├── dubbo-springboot-consumer │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── rpc │ │ │ │ └── dubbo │ │ │ │ └── consumer │ │ │ │ ├── DubboConsumerSpringApplication.java │ │ │ │ ├── DubboServiceHolder.java │ │ │ │ ├── JoinerMerger.java │ │ │ │ ├── controller │ │ │ │ ├── AsyncController.java │ │ │ │ ├── ResourceController.java │ │ │ │ └── UserController.java │ │ │ │ ├── mock │ │ │ │ └── UserServiceMock.java │ │ │ │ ├── pojo │ │ │ │ └── APIResponse.java │ │ │ │ └── stub │ │ │ │ └── UserServiceStub.java │ │ │ └── resources │ │ │ ├── META-INF │ │ │ └── dubbo │ │ │ │ └── org.apache.dubbo.rpc.cluster.Merger │ │ │ └── application.yaml │ ├── dubbo-springboot-provider │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── rpc │ │ │ │ └── dubbo │ │ │ │ └── provider │ │ │ │ ├── DubboProviderSpringApplication.java │ │ │ │ └── service │ │ │ │ ├── AsyncServiceImpl.java │ │ │ │ ├── BetaResourceService.java │ │ │ │ ├── LogServiceImpl.java │ │ │ │ ├── ProdResourceService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── resources │ │ │ └── application.yaml │ └── pom.xml ├── grpc │ ├── grpc-provider-api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── proto │ │ │ └── route_guide.proto │ ├── grpc-springboot-consumer │ │ ├── .gitignore │ │ ├── .mvn │ │ │ └── wrapper │ │ │ │ ├── MavenWrapperDownloader.java │ │ │ │ ├── maven-wrapper.jar │ │ │ │ └── maven-wrapper.properties │ │ ├── README.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── grpc │ │ │ │ │ └── consumer │ │ │ │ │ ├── GrpcSpringbootConsumerApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ └── RouteController.java │ │ │ │ │ └── model │ │ │ │ │ └── FeatureDTO.java │ │ │ └── resources │ │ │ │ └── application.yml │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── example │ │ │ └── grpc │ │ │ └── consumer │ │ │ └── GrpcSpringbootConsumerApplicationTests.java │ ├── grpc-springboot-provider │ │ ├── .gitignore │ │ ├── .mvn │ │ │ └── wrapper │ │ │ │ ├── MavenWrapperDownloader.java │ │ │ │ ├── maven-wrapper.jar │ │ │ │ └── maven-wrapper.properties │ │ ├── README.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── grpc │ │ │ │ │ └── provider │ │ │ │ │ ├── GrpcSpringbootProviderApplication.java │ │ │ │ │ ├── config │ │ │ │ │ └── GlobalInterceptorConfiguration.java │ │ │ │ │ └── service │ │ │ │ │ └── RouteGuideServiceImpl.java │ │ │ └── resources │ │ │ │ └── application.yml │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── example │ │ │ └── grpc │ │ │ └── provider │ │ │ └── GrpcSpringbootProviderApplicationTests.java │ └── pom.xml ├── pom.xml └── service-api │ ├── pom.xml │ └── src │ └── main │ └── java │ └── org │ └── example │ └── rpc │ ├── bean │ └── User.java │ └── service │ ├── AsyncService.java │ ├── LogService.java │ ├── ResourceService.java │ └── UserService.java ├── Reactor ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── example │ │ └── reactor │ │ ├── common │ │ └── AsyncHttpUtils.java │ │ ├── flux │ │ └── Parallel.java │ │ └── mono │ │ ├── MonoZip.java │ │ └── ThreadSwitch.java │ └── resources │ └── logback.xml ├── android-serialport ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── jni │ │ ├── Android.mk │ │ ├── Application.mk │ │ ├── SerialPort.c │ │ ├── SerialPort.h │ │ └── gen_SerialPort_h.sh │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── serialport │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ ├── android_serialport_api │ │ │ │ ├── SerialPort.java │ │ │ │ └── SerialPortFinder.java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── serialport │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── serialport │ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── async-programming ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── example │ │ └── async │ │ ├── BaseExample.java │ │ └── jdk │ │ ├── CompletionServiceExample.java │ │ ├── forkJoin │ │ └── RecursiveTaskExample.java │ │ └── future │ │ ├── FutureDemo.java │ │ └── completable │ │ ├── AllOfExample.java │ │ └── Example1.java │ └── resources │ └── logback.xml ├── binary-tree ├── c │ └── bitree.c └── java │ └── BinaryTree.java ├── cloud-native ├── .gitignore ├── README.md ├── docker-compose │ ├── golang-redis-quickstart │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── build.sh │ │ ├── docker-compose.yaml │ │ ├── go.mod │ │ ├── go.sum │ │ ├── main.go │ │ └── run.sh │ ├── mysql │ │ ├── docker-compose.yaml │ │ └── init-sql │ │ │ └── v1.sql │ └── profiles-example │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── frontend │ │ └── index.html │ │ ├── run.sh │ │ └── static │ │ ├── WX20220612-000518@2x.png │ │ └── WechatIMG681.png ├── docker │ ├── golang-quickstart │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── build.sh │ │ ├── go.mod │ │ ├── main.go │ │ └── publish.sh │ ├── java-quickstart │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── build.sh │ │ ├── pom.xml │ │ ├── run.sh │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── example │ │ │ │ │ └── demo │ │ │ │ │ └── cloudnative │ │ │ │ │ └── CloudNativeApplication.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── example │ │ │ └── demo │ │ │ └── cloudnative │ │ │ └── CloudNativeApplicationTests.java │ ├── my-htop │ │ ├── Dockerfile │ │ └── run.sh │ ├── nginx │ │ ├── README.md │ │ ├── conf.d │ │ │ └── default.conf │ │ ├── html │ │ │ └── index.html │ │ └── run.sh │ └── python-flask-quickstart │ │ ├── Dockerfile │ │ ├── app.py │ │ ├── publish.sh │ │ └── requirements.txt └── k8s │ ├── nginx │ ├── nginx-deployment.yaml │ └── nginx-service.yaml │ ├── projected-volume-example │ └── secret │ │ ├── README.md │ │ ├── app │ │ ├── Dockerfile │ │ ├── build.sh │ │ └── main.go │ │ ├── application.yaml │ │ └── secrets │ │ ├── apply-secrets.sh │ │ ├── password.txt │ │ └── username.txt │ └── war-tomcat-pods │ ├── README.md │ ├── application.yaml │ └── webapp │ ├── Dockerfile │ ├── build.sh │ ├── pom.xml │ └── src │ └── main │ └── webapp │ ├── WEB-INF │ └── web.xml │ └── index.jsp ├── design-pattern ├── pom.xml └── src │ └── main │ └── java │ ├── decorator │ ├── game │ │ ├── AdidasPants.java │ │ ├── ClothesDecorator.java │ │ ├── Component.java │ │ ├── Demo.java │ │ ├── Lucy.java │ │ ├── Michael.java │ │ ├── NikeShoes.java │ │ └── PumaCoat.java │ ├── io │ │ ├── FuckIO.java │ │ ├── IODemo.java │ │ └── custom │ │ │ ├── lowercase │ │ │ ├── LowerCaseInputStream.java │ │ │ └── Test.java │ │ │ └── plus │ │ │ ├── PlusInputStream.java │ │ │ └── Test.java │ └── starbuzz │ │ ├── Beverage.java │ │ ├── CondimentDecorator.java │ │ ├── Espresso.java │ │ ├── Mocha.java │ │ ├── StarbuzzStore.java │ │ └── Whip.java │ └── observer │ ├── Demo.java │ ├── RxJavaDemo.java │ ├── Weather.java │ └── WeatherApplication.java ├── disruptor ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── example │ └── demo │ └── disruptor │ ├── LongEvent.java │ ├── LongEventExceptionHandler.java │ ├── LongEventHandler.java │ └── LongEventMain.java ├── elasticsearch ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── elasticsearch │ │ │ ├── common │ │ │ ├── FakerUtils.java │ │ │ └── JsonUtils.java │ │ │ ├── normal │ │ │ ├── ClientHolder.java │ │ │ ├── CreateDocument.java │ │ │ └── QueryDemo.java │ │ │ └── spring │ │ │ ├── ElasticsearchApplication.java │ │ │ ├── bean │ │ │ ├── Article.java │ │ │ └── User.java │ │ │ ├── controller │ │ │ └── UserController.java │ │ │ └── repository │ │ │ ├── ArticleRepository.java │ │ │ └── UserRepository.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── com │ └── example │ └── elasticsearch │ ├── ElasticsearchApplicationTests.java │ └── QueryTests.java ├── firebase ├── README.md ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── example │ └── demo │ └── firebase │ ├── FirebaseAppRegistry.java │ ├── Main.java │ ├── models │ └── MessageRequest.java │ └── service │ ├── MessageSender.java │ └── TopicSubscriber.java ├── flyway └── flyway │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── README.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── demo │ │ │ └── flyway │ │ │ └── FlywayApplication.java │ └── resources │ │ ├── application.yml │ │ ├── db │ │ └── migration │ │ │ ├── V1__create_user.sql │ │ │ └── V2__user_add_column.sql │ │ └── flyway.conf │ └── test │ └── java │ └── com │ └── example │ └── demo │ └── flyway │ └── FlywayApplicationTests.java ├── java-shell ├── README.md ├── pom.xml ├── src │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── shell │ │ ├── CommandEnum.java │ │ ├── Controller.java │ │ ├── Main.java │ │ ├── ReadFileThread.java │ │ ├── exception │ │ ├── CommandNotFoundException.java │ │ └── InvalidFileInputException.java │ │ ├── handler │ │ ├── AbstractPipeHandler.java │ │ ├── CatPipeHandler.java │ │ ├── GrepPipeHandler.java │ │ ├── StdoutPipeHandler.java │ │ └── WcPipeHandler.java │ │ └── utils │ │ └── FileUtils.java └── tmp.txt ├── jooq └── jooq-demo │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── README.md │ ├── images │ └── WechatIMG678.png │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── demo │ │ │ └── jooq │ │ │ ├── JooqDemoApplication.java │ │ │ ├── config │ │ │ ├── JooqConfig.java │ │ │ └── RepositoryConfig.java │ │ │ ├── model │ │ │ └── dto │ │ │ │ ├── PostDTO.java │ │ │ │ └── UserDTO.java │ │ │ ├── service │ │ │ ├── PostService.java │ │ │ ├── UserService.java │ │ │ └── impl │ │ │ │ ├── DaoUserServiceImpl.java │ │ │ │ ├── PostServiceImpl.java │ │ │ │ └── UnderlyingUserServiceImpl.java │ │ │ └── utils │ │ │ └── Jsons.java │ └── resources │ │ ├── application.yml │ │ ├── db │ │ └── migration │ │ │ ├── V1__create_user.sql │ │ │ └── V2__create_post.sql │ │ ├── flyway.properties │ │ └── jooq-codegen.xml │ └── test │ └── java │ └── org │ └── example │ └── demo │ └── jooq │ ├── JooqDemoApplicationTests.java │ ├── dao │ └── tables │ │ └── daos │ │ └── TUserDaoTest.java │ ├── mock │ └── UserFindOneByIdMockProvider.java │ └── service │ ├── PostServiceImplTest.java │ └── UserServiceTest.java ├── message-queue ├── common │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── common │ │ │ ├── bean │ │ │ └── Order.java │ │ │ └── utils │ │ │ └── JsonUtils.java │ │ └── resources │ │ └── logback.xml ├── kafka │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── kafka │ │ │ ├── common │ │ │ └── Constants.java │ │ │ ├── consumer │ │ │ ├── KafkaConsumerMain.java │ │ │ ├── KafkaConsumerStreamMain.java │ │ │ └── KafkaIndependentConsumer.java │ │ │ └── producer │ │ │ ├── KafkaCustomPartitionerExample.java │ │ │ ├── KafkaSimpleProducerMain.java │ │ │ └── MyPartitioner.java │ │ └── resources │ │ └── logback.xml ├── pom.xml ├── pulsar-springboot │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── mq │ │ │ │ └── pulsar │ │ │ │ ├── PulsarSpringbootApplication.java │ │ │ │ ├── common │ │ │ │ ├── MyMsg.java │ │ │ │ └── PulsarConfig.java │ │ │ │ ├── consumer │ │ │ │ └── MyConsumer.java │ │ │ │ └── producer │ │ │ │ └── MyProducer.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── mq │ │ └── pulsar │ │ └── PulsarSpringbootApplicationTests.java ├── pulsar │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── example │ │ └── mq │ │ └── pulsar │ │ ├── common │ │ ├── BasePulsarMain.java │ │ └── Constants.java │ │ ├── consumer │ │ └── PulsarSimpleConsumerMain.java │ │ └── producer │ │ └── PulsarSimpleProducerMain.java ├── rabbitmq │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── rabbitmq │ │ │ ├── consumer │ │ │ ├── BaseRabbitMQConsumer.java │ │ │ ├── RabbitMQReliableConsumer.java │ │ │ └── RabbitMQSimpleConsumer.java │ │ │ └── producer │ │ │ ├── BaseRabbitMQProducer.java │ │ │ ├── RabbitMQPersistenceProducer.java │ │ │ ├── RabbitMQReliableProducer.java │ │ │ └── RabbitMQSimpleProducer.java │ │ └── resources │ │ └── logback.xml └── rocketmq │ ├── pom.xml │ └── src │ └── main │ └── java │ └── org │ └── example │ └── rocketmq │ ├── consumer │ └── ConsumerListener.java │ └── producer │ ├── MyTransactionListener.java │ ├── OrderService.java │ └── RocketMQProducer.java ├── micrometer └── micrometer │ ├── .gitignore │ ├── README.md │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── micrometer │ │ │ ├── ExecutorServiceHolder.java │ │ │ ├── IndexController.java │ │ │ ├── MicrometerApplication.java │ │ │ └── config │ │ │ └── MeterConfig.java │ └── resources │ │ └── application.yml │ └── test │ └── java │ └── com │ └── example │ └── micrometer │ └── MicrometerApplicationTests.java ├── mockito └── mockito │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── org │ │ └── example │ │ └── demo │ │ └── mockito │ │ ├── models │ │ └── User.java │ │ └── service │ │ └── UserService.java │ └── test │ └── java │ └── org │ └── example │ └── demo │ └── mockito │ ├── MainTest.java │ └── SpyTest.java ├── mvp-architecture ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── site │ │ │ └── pushy │ │ │ └── mvp │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── site │ │ │ │ └── pushy │ │ │ │ └── mvp │ │ │ │ ├── base │ │ │ │ └── BaseModel.java │ │ │ │ ├── bean │ │ │ │ ├── BaseResponse.java │ │ │ │ └── LoginBody.java │ │ │ │ ├── http │ │ │ │ ├── PayLoad.java │ │ │ │ ├── RetrofitServiceManager.java │ │ │ │ ├── ServerError.java │ │ │ │ └── ServerException.java │ │ │ │ └── login │ │ │ │ ├── LoginActivity.java │ │ │ │ ├── LoginContract.java │ │ │ │ ├── LoginModel.java │ │ │ │ └── LoginPresenter.java │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── site │ │ └── pushy │ │ └── mvp │ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── netty-http ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── HtmlHandler.java │ │ ├── HttpServer.java │ │ ├── HttpServerHandler.java │ │ ├── TestHandler.java │ │ └── test │ │ └── HtmlTestHandler.java │ └── resources │ └── index.html ├── netty-protobuf ├── pom.xml ├── pushy.dt └── src │ └── main │ ├── java │ └── site │ │ └── pushy │ │ └── protobuf │ │ ├── PersonEntity.java │ │ ├── basic │ │ ├── CreatePerson.java │ │ └── ProtobufSerialization.java │ │ ├── bootstrap │ │ ├── ClientBootstrap.java │ │ └── ServerBootstrap.java │ │ ├── handler │ │ ├── ClientHandler.java │ │ └── ServerHandler.java │ │ └── initializer │ │ ├── ClientChannelInitializer.java │ │ └── ServerChannelInitializer.java │ └── resources │ ├── command.bat │ └── person.proto ├── netty-session ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── example │ └── session │ ├── HttpRequestHandler.java │ ├── HttpServer.java │ ├── HttpSession.java │ ├── MyChannelInitializer.java │ └── SessionManager.java ├── netty-start ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── exmaple │ │ ├── handler │ │ ├── EchoChannelHandler.java │ │ └── HttpChannelHandler.java │ │ ├── netty │ │ ├── EchoClient.java │ │ ├── EchoServer.java │ │ └── HandlerServer.java │ │ ├── pool │ │ ├── ServerHandler.java │ │ └── ThreadPoolSocket.java │ │ └── socket │ │ ├── ServerSockThread.java │ │ └── SocketServer.java │ └── resources │ └── logback.xml ├── netty-websocket ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── client │ │ ├── WebSocketClient.java │ │ └── WebSocketClientHandler.java │ │ └── server │ │ ├── ChatServerInitializer.java │ │ ├── HttpRequestHandler.java │ │ ├── TextWebSocketFrameHandler.java │ │ └── WebSocketServer.java │ └── resources │ └── index.html ├── netty ├── common │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── netty │ │ │ └── common │ │ │ └── utils │ │ │ └── NettyUtils.java │ │ └── resources │ │ └── logback.xml ├── netty-quick-start │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── example │ │ └── netty │ │ └── quickstart │ │ ├── NettyServer.java │ │ └── handler │ │ ├── DiscardServerHandler.java │ │ └── EchoServerHandler.java ├── pom.xml └── reactor-netty │ ├── pom.xml │ └── src │ └── main │ └── java │ └── org │ └── example │ └── netty │ └── reactor │ └── server │ └── SimpleTcpServer.java ├── protobuf ├── README.md ├── images │ └── img.png ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── example │ │ └── demo │ │ └── protobuf │ │ ├── Main.java │ │ └── ProtobufFileStream.java │ └── proto │ └── person.proto ├── redis-distributed-lock ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── example │ └── redislock │ ├── RedisDistributedLockVersion1.java │ ├── RedisDistributedLockVersion2.java │ ├── Test.java │ └── jdk │ ├── ReentrantLockSingleton.java │ └── SynchronizedLock.java ├── redisson ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── example │ │ └── demo │ │ └── redisson │ │ ├── Redissons.java │ │ ├── Threads.java │ │ ├── Times.java │ │ ├── bucket │ │ ├── BucketCAS.java │ │ └── BucketSimple.java │ │ ├── map │ │ ├── RMapCacheExample.java │ │ ├── RMapExample.java │ │ └── RMapLocalCacheExample.java │ │ ├── model │ │ ├── Message.java │ │ └── Person.java │ │ ├── other │ │ ├── RBatchExample.java │ │ ├── RStreamExample.java │ │ ├── RateLimiterExample.java │ │ └── TopicExample.java │ │ ├── reactor │ │ └── ReactorExample.java │ │ └── sync │ │ ├── SemaphoreExample.java │ │ ├── countdown │ │ ├── RCountDownLatchExample1.java │ │ └── RCountDownLatchExample2.java │ │ └── lock │ │ ├── MultiLockExample.java │ │ ├── ReadWriteLockExample.java │ │ ├── RedLockExample.java │ │ └── ReentrantLockExample.java │ └── resources │ └── logback.xml ├── resilience4j ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── example │ │ └── resilience4j │ │ ├── RetryNeededException.java │ │ ├── circuitbreaker │ │ ├── Demotion.java │ │ ├── FailureCount.java │ │ ├── HalfOpenState.java │ │ ├── MinimumNumberOfCalls.java │ │ ├── SlowCall.java │ │ └── TimeBasedWindow.java │ │ ├── ratelimiter │ │ ├── RateLimiterDemo.java │ │ └── SemaphoresRateLimiterDemo.java │ │ ├── retry │ │ └── RetrySync.java │ │ ├── samples │ │ └── CircuitDemo.java │ │ └── utils │ │ ├── Resilience4jUtils.java │ │ └── TimeUtils.java │ └── resources │ └── logback.xml ├── seckill ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── site │ │ │ └── pushy │ │ │ └── seckill │ │ │ ├── ControllerAdviceHandler.java │ │ │ ├── SeckillApplication.java │ │ │ ├── controller │ │ │ └── GoodController.java │ │ │ ├── dao │ │ │ ├── OrderMapper.java │ │ │ └── StockMapper.java │ │ │ ├── limit │ │ │ ├── DistributedSemaphore.java │ │ │ ├── LimitCommon.java │ │ │ ├── RateLimit.java │ │ │ ├── RateLimitAspect.java │ │ │ ├── SemaphoreAspect.java │ │ │ └── SemaphoreLimit.java │ │ │ ├── lock │ │ │ ├── DistributedLock.java │ │ │ └── LockCommon.java │ │ │ ├── pojo │ │ │ ├── Order.java │ │ │ ├── OrderExample.java │ │ │ ├── Stock.java │ │ │ └── StockExample.java │ │ │ └── service │ │ │ ├── GoodService.java │ │ │ └── impl │ │ │ └── GoodServiceImpl.java │ └── resources │ │ ├── application.yml │ │ ├── lockAcquireScript.lua │ │ ├── lockReleaseScript.lua │ │ ├── mapper │ │ ├── OrderMapper.xml │ │ └── StockMapper.xml │ │ ├── rateLimit.lua │ │ ├── semaphoreFairReleaseScript.lua │ │ ├── semaphoreFairScript.lua │ │ ├── semaphoreReleaseScript.lua │ │ └── semaphoreScript.lua │ └── test │ └── java │ └── site │ └── pushy │ └── seckill │ └── SeckillApplicationTests.java ├── sharding-sphere ├── example-read-write-splitting │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── example │ │ │ │ └── rws │ │ │ │ ├── ExampleReadWriteSplittingApplication.java │ │ │ │ └── config │ │ │ │ └── JooqConfig.java │ │ └── resources │ │ │ ├── application.yml │ │ │ └── jooqConfig.xml │ │ └── test │ │ └── java │ │ └── org │ │ └── example │ │ └── example │ │ └── rws │ │ └── ExampleReadWriteSplittingApplicationTests.java ├── example-sharding-4x │ ├── .gitignore │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── example │ │ │ │ └── demo │ │ │ │ └── sharding │ │ │ │ ├── ShardingSphereApplication.java │ │ │ │ ├── config │ │ │ │ ├── JooqConfig.java │ │ │ │ └── NoShardingDataSourceProperties.java │ │ │ │ ├── controller │ │ │ │ ├── OrderController.java │ │ │ │ ├── PostController.java │ │ │ │ ├── ShadingSphereController.java │ │ │ │ └── UserController.java │ │ │ │ ├── dao │ │ │ │ ├── BaseDao.java │ │ │ │ ├── NoShardingUserDao.java │ │ │ │ ├── OrderDao.java │ │ │ │ ├── PostDao.java │ │ │ │ ├── UserDao.java │ │ │ │ └── sharding │ │ │ │ │ ├── BaseModulusPreciseShardingAlgorithm.java │ │ │ │ │ ├── OrderDatabasePreciseShardingAlgorithm.java │ │ │ │ │ ├── OrderTablePreciseShardingAlgorithm.java │ │ │ │ │ ├── PostDatabaseHintShardingAlgorithm.java │ │ │ │ │ └── UserDatabasePreciseShardingAlgorithm.java │ │ │ │ ├── model │ │ │ │ └── dto │ │ │ │ │ ├── DatasourceDTO.java │ │ │ │ │ ├── OrderDTO.java │ │ │ │ │ └── UserDTO.java │ │ │ │ └── utils │ │ │ │ └── Jsons.java │ │ └── resources │ │ │ ├── application.yml │ │ │ ├── db │ │ │ └── migration │ │ │ │ ├── V1__create_user.sql │ │ │ │ ├── V2__create_order.sql │ │ │ │ └── V3__create_post.sql │ │ │ ├── flyway.properties │ │ │ ├── jooqConfig.xml │ │ │ └── sharding-example.yaml │ │ └── test │ │ └── java │ │ └── org │ │ └── example │ │ └── demo │ │ └── sharding │ │ └── ShardingSphereApplicationTests.java └── example-sharding-5x │ ├── .gitignore │ ├── README.md │ ├── pom.xml │ └── src │ ├── main │ ├── .DS_Store │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── demo │ │ │ └── sharding │ │ │ ├── ShardingSphereApplication.java │ │ │ ├── config │ │ │ └── JooqConfig.java │ │ │ ├── dao │ │ │ ├── CommonConfigDao.java │ │ │ ├── OrderDao.java │ │ │ ├── PostDao.java │ │ │ ├── UserDao.java │ │ │ └── sharding │ │ │ │ ├── BaseModulusPreciseShardingAlgorithm.java │ │ │ │ ├── OrderDatabasePreciseShardingAlgorithm.java │ │ │ │ ├── OrderTablePreciseShardingAlgorithm.java │ │ │ │ ├── PostDatabaseHintShardingAlgorithm.java │ │ │ │ └── UserDatabasePreciseShardingAlgorithm.java │ │ │ ├── model │ │ │ └── dto │ │ │ │ ├── DatasourceDTO.java │ │ │ │ ├── OrderDTO.java │ │ │ │ └── UserDTO.java │ │ │ └── utils │ │ │ └── Jsons.java │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.apache.shardingsphere.sharding.spi.ShardingAlgorithm │ │ ├── application.yml │ │ ├── db │ │ └── migration │ │ │ ├── V1__create_user.sql │ │ │ ├── V2__create_order.sql │ │ │ ├── V3__create_post.sql │ │ │ └── V4__create_common_config.sql │ │ ├── flyway.properties │ │ └── jooqConfig.xml │ └── test │ └── java │ └── org │ └── example │ └── demo │ └── sharding │ ├── ShardingSphereApplicationTests.java │ └── dao │ ├── CommonConfigDaoTest.java │ ├── OrderDaoTest.java │ ├── PostDaoTest.java │ └── UserDaoTest.java ├── shedlock-demo ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── shedlockdemo │ │ │ ├── ShedlockDemoApplication.java │ │ │ ├── config │ │ │ └── ShedlockConfig.java │ │ │ └── task │ │ │ └── HelloTask.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── org │ └── example │ └── shedlockdemo │ └── ShedlockDemoApplicationTests.java ├── spring-annotation-scan ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ └── scandemo │ │ ├── ServiceScanner.java │ │ ├── Test.java │ │ ├── annotation │ │ └── Service.java │ │ ├── pojo │ │ └── User.java │ │ └── service │ │ ├── UserService.java │ │ └── impl │ │ └── UserServiceImpl.java │ └── resources │ └── applicationContext.xml ├── spring-cache ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── spring │ │ │ └── cache │ │ │ └── SpringCacheApplication.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── com │ └── example │ └── spring │ └── cache │ └── SpringCacheApplicationTests.java ├── spring-security ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── example │ │ │ └── demo │ │ │ └── spring │ │ │ └── security │ │ │ ├── SpringSecurityApplication.java │ │ │ ├── config │ │ │ ├── AuthorizationServerConfig.java │ │ │ ├── ResourceServerConfig.java │ │ │ └── SecurityConfig.java │ │ │ ├── controller │ │ │ ├── PublicController.java │ │ │ └── UserController.java │ │ │ ├── extension │ │ │ └── EmailTokenGranter.java │ │ │ ├── model │ │ │ └── UserDO.java │ │ │ └── service │ │ │ └── UserService.java │ └── resources │ │ └── application.yaml │ └── test │ └── java │ └── org │ └── example │ └── demo │ └── spring │ └── security │ └── SpringSecurityApplicationTests.java ├── spring-session-sharing ├── server-1 │ ├── .gitignore │ ├── .mvn │ │ └── wrapper │ │ │ ├── MavenWrapperDownloader.java │ │ │ ├── maven-wrapper.jar │ │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── site │ │ │ │ └── pushy │ │ │ │ └── server1 │ │ │ │ ├── Initializer.java │ │ │ │ ├── MainController.java │ │ │ │ ├── SessionConfig.java │ │ │ │ └── SessionSharingDemo1Application.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── site │ │ └── pushy │ │ └── server1 │ │ └── SessionSharingDemo1ApplicationTests.java └── server-2 │ ├── .gitignore │ ├── .mvn │ └── wrapper │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src │ ├── main │ ├── java │ │ └── site │ │ │ └── pushy │ │ │ └── server2 │ │ │ ├── Initializer.java │ │ │ ├── MainController.java │ │ │ ├── SessionConfig.java │ │ │ └── SessionSharingDemo2Application.java │ └── resources │ │ └── application.properties │ └── test │ └── java │ └── site │ └── pushy │ └── server2 │ └── SessionSharingDemo2ApplicationTests.java └── third-part-login └── qq ├── Flask-OAuthlib.py ├── app ├── __init__.py ├── models.py ├── util │ ├── Request.py │ ├── Response.py │ ├── __init__.py │ ├── logger.py │ └── urls.py └── views.py ├── config.py ├── manager.py └── run.py /README.md: -------------------------------------------------------------------------------- 1 | # demo 2 | my blog demo project 3 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-consumer/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | dubbo-springboot 7 | com.example 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | dubbo-springboot-consumer 13 | 14 | 15 | 11 16 | 11 17 | 18 | 19 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-consumer/src/main/java/org/example/rpc/dubbo/consumer/DubboConsumerSpringApplication.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.dubbo.consumer; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | @EnableAutoConfiguration 8 | @ComponentScan(basePackages = "org.example.rpc.dubbo") 9 | public class DubboConsumerSpringApplication { 10 | 11 | public static void main(String[] args) { 12 | SpringApplication.run(DubboConsumerSpringApplication.class); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-consumer/src/main/java/org/example/rpc/dubbo/consumer/JoinerMerger.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.dubbo.consumer; 2 | 3 | import com.google.common.base.Joiner; 4 | import com.google.common.base.Splitter; 5 | import org.apache.dubbo.rpc.cluster.Merger; 6 | 7 | import java.util.List; 8 | 9 | public class JoinerMerger implements Merger { 10 | public static final JoinerMerger INSTANCE = new JoinerMerger(); 11 | 12 | private static final Joiner JOINER = Joiner.on(",").skipNulls(); 13 | 14 | @Override 15 | public String merge(String... items) { 16 | return JOINER.join(items); 17 | } 18 | 19 | public List split(String result) { 20 | return Splitter.on(",").splitToList(result); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-consumer/src/main/java/org/example/rpc/dubbo/consumer/pojo/APIResponse.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.dubbo.consumer.pojo; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @AllArgsConstructor 8 | public class APIResponse { 9 | 10 | private int status; 11 | 12 | private String message; 13 | 14 | private Object data; 15 | 16 | public static APIResponse success(Object data) { 17 | return new APIResponse(0, "", data); 18 | } 19 | 20 | public static APIResponse error(String message) { 21 | return new APIResponse(1, message, null); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-consumer/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.cluster.Merger: -------------------------------------------------------------------------------- 1 | joinerMerger=org.example.rpc.dubbo.consumer.JoinerMerger -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-consumer/src/main/resources/application.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: dubbo-consumer 4 | registry: 5 | address: zookeeper://127.0.0.1:2181 6 | 7 | server: 8 | port: 9000 -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-provider/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | dubbo-springboot 7 | com.example 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | dubbo-springboot-provider 13 | 14 | 15 | 11 16 | 11 17 | 18 | 19 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-provider/src/main/java/org/example/rpc/dubbo/provider/DubboProviderSpringApplication.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.dubbo.provider; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | @EnableAutoConfiguration 8 | @ComponentScan(basePackages = "org.example.rpc.dubbo") 9 | public class DubboProviderSpringApplication { 10 | 11 | public static void main(String[] args) { 12 | SpringApplication.run(DubboProviderSpringApplication.class); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-provider/src/main/java/org/example/rpc/dubbo/provider/service/BetaResourceService.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.dubbo.provider.service; 2 | 3 | import com.google.common.collect.Lists; 4 | import org.apache.dubbo.config.annotation.DubboService; 5 | import org.example.rpc.service.ResourceService; 6 | 7 | import java.util.List; 8 | 9 | @DubboService( 10 | group = "beta" 11 | ) 12 | public class BetaResourceService implements ResourceService { 13 | 14 | @Override 15 | public String getName() { 16 | return "beta"; 17 | } 18 | 19 | @Override 20 | public List getHostNameList() { 21 | return Lists.newArrayList("demo.beta.com"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-provider/src/main/java/org/example/rpc/dubbo/provider/service/ProdResourceService.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.dubbo.provider.service; 2 | 3 | import com.google.common.collect.Lists; 4 | import org.apache.dubbo.config.annotation.DubboService; 5 | import org.example.rpc.service.ResourceService; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 通过 group 来区分接口的不同实现 11 | *

12 | * 但往往也用来作为测试环境/生产环境的区分方式 13 | */ 14 | @DubboService( 15 | group = "prod" 16 | ) 17 | public class ProdResourceService implements ResourceService { 18 | 19 | @Override 20 | public String getName() { 21 | return "prod"; 22 | } 23 | 24 | @Override 25 | public List getHostNameList() { 26 | return Lists.newArrayList("pushyzheng.com"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /RPC/dubbo-springboot/dubbo-springboot-provider/src/main/resources/application.yaml: -------------------------------------------------------------------------------- 1 | dubbo: 2 | application: 3 | name: dubbo-provider 4 | registry: 5 | address: zookeeper://127.0.0.1:2181 6 | scan: 7 | base-packages: org.example.rpc.dubbo.provider 8 | provider: 9 | # 只有请求消息派发到线程池,不含响应,响应和其它连接断开事件,心跳等消息,直接在 IO 线程上执行。 10 | dispatcher: direct 11 | # 类似于自己创建的自定义线程, 使用有界队列, 当队列满时会抛出异常 12 | threadpool: eager 13 | threads: 20 14 | threadname: demo-dubbo-provider 15 | 16 | server: 17 | port: 9001 -------------------------------------------------------------------------------- /RPC/grpc/grpc-provider-api/src/main/proto/route_guide.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | option java_multiple_files = true; 4 | option java_package = "org.example.grpc.proto"; 5 | option java_outer_classname = "RouteGuideProto"; 6 | option objc_class_prefix = "RTG"; 7 | 8 | package routeguide; 9 | 10 | service RouteGuide { 11 | rpc GetFeature(Point) returns (Feature) {} 12 | } 13 | 14 | message Point { 15 | int32 latitude = 1; 16 | int32 longitude = 2; 17 | } 18 | 19 | message Feature { 20 | string name = 1; 21 | Point location = 2; 22 | } 23 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/** 5 | !**/src/test/** 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | 30 | ### VS Code ### 31 | .vscode/ 32 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pushyzheng/demo/738be4b2a320515c3dca0e6b1c83b644365690aa/RPC/grpc/grpc-springboot-consumer/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/README.md: -------------------------------------------------------------------------------- 1 | # 工程简介 2 | 3 | # 延伸阅读 4 | 5 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/src/main/java/org/example/grpc/consumer/GrpcSpringbootConsumerApplication.java: -------------------------------------------------------------------------------- 1 | package org.example.grpc.consumer; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class GrpcSpringbootConsumerApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(GrpcSpringbootConsumerApplication.class, args); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/src/main/java/org/example/grpc/consumer/model/FeatureDTO.java: -------------------------------------------------------------------------------- 1 | package org.example.grpc.consumer.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | 6 | @Data 7 | @AllArgsConstructor 8 | public class FeatureDTO { 9 | 10 | private String name; 11 | } 12 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: grpc-springboot-consumer 4 | 5 | server: 6 | port: 8081 7 | 8 | grpc: 9 | client: 10 | local-grpc-server: 11 | address: 'static://127.0.0.1:9091' 12 | enableKeepAlive: true 13 | keepAliveWithoutCalls: true 14 | negotiationType: plaintext 15 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-consumer/src/test/java/org/example/grpc/consumer/GrpcSpringbootConsumerApplicationTests.java: -------------------------------------------------------------------------------- 1 | package org.example.grpc.consumer; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class GrpcSpringbootConsumerApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/** 5 | !**/src/test/** 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | 30 | ### VS Code ### 31 | .vscode/ 32 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pushyzheng/demo/738be4b2a320515c3dca0e6b1c83b644365690aa/RPC/grpc/grpc-springboot-provider/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 3 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/README.md: -------------------------------------------------------------------------------- 1 | # 工程简介 2 | 3 | # 延伸阅读 4 | 5 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/src/main/java/org/example/grpc/provider/GrpcSpringbootProviderApplication.java: -------------------------------------------------------------------------------- 1 | package org.example.grpc.provider; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class GrpcSpringbootProviderApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(GrpcSpringbootProviderApplication.class, args); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/src/main/java/org/example/grpc/provider/service/RouteGuideServiceImpl.java: -------------------------------------------------------------------------------- 1 | package org.example.grpc.provider.service; 2 | 3 | import io.grpc.stub.StreamObserver; 4 | import net.devh.boot.grpc.server.service.GrpcService; 5 | import org.example.grpc.proto.Feature; 6 | import org.example.grpc.proto.Point; 7 | import org.example.grpc.proto.RouteGuideGrpc; 8 | 9 | @GrpcService 10 | public class RouteGuideServiceImpl extends RouteGuideGrpc.RouteGuideImplBase { 11 | 12 | @Override 13 | public void getFeature(Point request, StreamObserver observer) { 14 | Feature result = Feature.newBuilder() 15 | .setName("Jeremy") 16 | .setLocation(request) 17 | .build(); 18 | 19 | observer.onNext(result); 20 | observer.onCompleted(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: local-grpc-server 4 | server: 5 | port: 8080 6 | grpc: 7 | server: 8 | port: 9091 9 | -------------------------------------------------------------------------------- /RPC/grpc/grpc-springboot-provider/src/test/java/org/example/grpc/provider/GrpcSpringbootProviderApplicationTests.java: -------------------------------------------------------------------------------- 1 | package org.example.grpc.provider; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class GrpcSpringbootProviderApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /RPC/grpc/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | RPC 7 | org.example 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | grpc 13 | pom 14 | 15 | grpc-provider-api 16 | 17 | 18 | 19 | 20 | com.google.protobuf 21 | protobuf-java 22 | 3.19.1 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RPC/service-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | RPC 7 | org.example 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | service-api 13 | 14 | 15 | 11 16 | 11 17 | 18 | 19 | -------------------------------------------------------------------------------- /RPC/service-api/src/main/java/org/example/rpc/bean/User.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.bean; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | @Builder 10 | public class User implements Serializable { 11 | 12 | private String id; 13 | 14 | private String name; 15 | 16 | private int age; 17 | } 18 | -------------------------------------------------------------------------------- /RPC/service-api/src/main/java/org/example/rpc/service/AsyncService.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.service; 2 | 3 | import java.util.concurrent.CompletableFuture; 4 | 5 | public interface AsyncService { 6 | 7 | /** 8 | * 服务方就提供的异步接口 9 | */ 10 | CompletableFuture asyncHello(String name); 11 | 12 | /** 13 | * 服务方提供的同步接口, 但在客户端做异步 14 | */ 15 | String syncHello(String name); 16 | } 17 | -------------------------------------------------------------------------------- /RPC/service-api/src/main/java/org/example/rpc/service/LogService.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.service; 2 | 3 | public interface LogService { 4 | 5 | void recordOne(String content); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /RPC/service-api/src/main/java/org/example/rpc/service/ResourceService.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.service; 2 | 3 | import java.util.List; 4 | 5 | public interface ResourceService { 6 | 7 | /** 8 | * Get the resource name of current environment 9 | */ 10 | String getName(); 11 | 12 | List getHostNameList(); 13 | } 14 | -------------------------------------------------------------------------------- /RPC/service-api/src/main/java/org/example/rpc/service/UserService.java: -------------------------------------------------------------------------------- 1 | package org.example.rpc.service; 2 | 3 | import org.example.rpc.bean.User; 4 | 5 | public interface UserService { 6 | 7 | boolean saveUser(User user); 8 | 9 | User getUserById(String id); 10 | } 11 | -------------------------------------------------------------------------------- /Reactor/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %.35logger{30} - %msg%n 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android-serialport/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/libraries 5 | /.idea/modules.xml 6 | /.idea/workspace.xml 7 | .DS_Store 8 | /build 9 | /captures 10 | .externalNativeBuild 11 | -------------------------------------------------------------------------------- /android-serialport/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android-serialport/app/jni/Android.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2009 Cedric Priscal 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | LOCAL_PATH := $(call my-dir) 18 | 19 | include $(CLEAR_VARS) 20 | 21 | TARGET_PLATFORM := android-3 22 | LOCAL_MODULE := serial_port 23 | LOCAL_SRC_FILES := SerialPort.c 24 | LOCAL_LDLIBS := -llog 25 | 26 | include $(BUILD_SHARED_LIBRARY) 27 | -------------------------------------------------------------------------------- /android-serialport/app/jni/Application.mk: -------------------------------------------------------------------------------- 1 | APP_ABI := armeabi armeabi-v7a x86 2 | -------------------------------------------------------------------------------- /android-serialport/app/jni/SerialPort.h: -------------------------------------------------------------------------------- 1 | /* DO NOT EDIT THIS FILE - it is machine generated */ 2 | #include 3 | /* Header for class android_serialport_api_SerialPort */ 4 | 5 | #ifndef _Included_android_serialport_api_SerialPort 6 | #define _Included_android_serialport_api_SerialPort 7 | #ifdef __cplusplus 8 | extern "C" { 9 | #endif 10 | /* 11 | * Class: android_serialport_api_SerialPort 12 | * Method: open 13 | * Signature: (Ljava/lang/String;II)Ljava/io/FileDescriptor; 14 | */ 15 | JNIEXPORT jobject JNICALL Java_android_1serialport_1api_SerialPort_open 16 | (JNIEnv *, jclass, jstring, jint, jint); 17 | 18 | /* 19 | * Class: android_serialport_api_SerialPort 20 | * Method: close 21 | * Signature: ()V 22 | */ 23 | JNIEXPORT void JNICALL Java_android_1serialport_1api_SerialPort_close 24 | (JNIEnv *, jobject); 25 | 26 | #ifdef __cplusplus 27 | } 28 | #endif 29 | #endif 30 | -------------------------------------------------------------------------------- /android-serialport/app/jni/gen_SerialPort_h.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | javah -o SerialPort.h -jni -classpath ../src android_serialport_api.SerialPort 3 | 4 | -------------------------------------------------------------------------------- /android-serialport/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android-serialport/app/src/androidTest/java/com/example/serialport/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.serialport; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.example.serialport", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /android-serialport/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android-serialport/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 |