├── .editorconfig ├── .github ├── docker │ ├── 【Docker】Docker 命令.md │ ├── 【Docker】容器自启动.md │ └── 【Docker】搭建 Docker 私有仓库 harbor.md ├── java │ └── 【Java 配置】logback.md ├── linux │ ├── 【Linux】CentOS 7 设置时间.md │ └── 【Linux】CentOS 7 设置静态IP.md ├── problems-in-dev │ ├── 【Problems-in-dev】Android WebView 不支持 H5 input type="file" 解决方法.md │ ├── 【Problems-in-dev】IE 不兼容 js indexOf 函数.md │ ├── 【Problems-in-dev】js 清空 input:file 的值.md │ └── 【Problems-in-dev】npm 安装 sass-loader.md └── tools │ ├── 【Tools】MacOS 环境搭建.md │ ├── 【Tools】Nginx 入门到实践.md │ └── 【Tools】阿里云-香港服务器利用 Docker 搭建 SS 代理.md ├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── docker ├── gitlab │ └── docker-compose.yaml ├── hadoop │ ├── Dockerfile │ ├── core-site.xml │ ├── hdfs-site.xml │ ├── mapred-site.xml │ ├── ssh_config │ ├── start-all.sh │ └── yarn-site.xml ├── kafka │ └── Dockerfile ├── nacos │ ├── Dockerfile │ ├── application.properties │ └── startup.sh ├── rocketmq │ ├── config │ │ ├── broker-a │ │ │ ├── master │ │ │ │ └── broker.conf │ │ │ └── slave │ │ │ │ └── broker.conf │ │ └── broker-b │ │ │ ├── master │ │ │ └── broker.conf │ │ │ └── slave │ │ │ └── broker.conf │ ├── docker-compose.yml │ ├── rocketmq-4.6.1.Dockerfile │ ├── rocketmq-4.6.1 │ │ ├── LICENSE │ │ ├── NOTICE │ │ ├── README.md │ │ ├── benchmark │ │ │ ├── consumer.sh │ │ │ ├── producer.sh │ │ │ ├── runclass.sh │ │ │ └── tproducer.sh │ │ ├── bin │ │ │ ├── README.md │ │ │ ├── cachedog.sh │ │ │ ├── cleancache.sh │ │ │ ├── cleancache.v1.sh │ │ │ ├── dledger │ │ │ │ └── fast-try.sh │ │ │ ├── mqadmin │ │ │ ├── mqadmin.cmd │ │ │ ├── mqbroker │ │ │ ├── mqbroker.cmd │ │ │ ├── mqbroker.numanode0 │ │ │ ├── mqbroker.numanode1 │ │ │ ├── mqbroker.numanode2 │ │ │ ├── mqbroker.numanode3 │ │ │ ├── mqnamesrv │ │ │ ├── mqnamesrv.cmd │ │ │ ├── mqshutdown │ │ │ ├── mqshutdown.cmd │ │ │ ├── os.sh │ │ │ ├── play.cmd │ │ │ ├── play.sh │ │ │ ├── runbroker.cmd │ │ │ ├── runbroker.sh │ │ │ ├── runserver.cmd │ │ │ ├── runserver.sh │ │ │ ├── setcache.sh │ │ │ ├── startfsrv.sh │ │ │ ├── tools.cmd │ │ │ └── tools.sh │ │ ├── conf │ │ │ ├── 2m-2s-async │ │ │ │ ├── broker-a-s.properties │ │ │ │ ├── broker-a.properties │ │ │ │ ├── broker-b-s.properties │ │ │ │ └── broker-b.properties │ │ │ ├── 2m-2s-sync │ │ │ │ ├── broker-a-s.properties │ │ │ │ ├── broker-a.properties │ │ │ │ ├── broker-b-s.properties │ │ │ │ └── broker-b.properties │ │ │ ├── 2m-noslave │ │ │ │ ├── broker-a.properties │ │ │ │ ├── broker-b.properties │ │ │ │ └── broker-trace.properties │ │ │ ├── broker.conf │ │ │ ├── dledger │ │ │ │ ├── broker-n0.conf │ │ │ │ ├── broker-n1.conf │ │ │ │ └── broker-n2.conf │ │ │ ├── logback_broker.xml │ │ │ ├── logback_namesrv.xml │ │ │ ├── logback_tools.xml │ │ │ ├── plain_acl.yml │ │ │ └── tools.yml │ │ └── lib │ │ │ ├── commons-beanutils-1.9.2.jar │ │ │ ├── commons-cli-1.2.jar │ │ │ ├── commons-codec-1.9.jar │ │ │ ├── commons-collections-3.2.2.jar │ │ │ ├── commons-digester-1.8.1.jar │ │ │ ├── commons-lang3-3.4.jar │ │ │ ├── commons-logging-1.2.jar │ │ │ ├── commons-validator-1.6.jar │ │ │ ├── dledger-0.1.jar │ │ │ ├── fastjson-1.2.61.jar │ │ │ ├── guava-19.0.jar │ │ │ ├── javassist-3.20.0-GA.jar │ │ │ ├── jcommander-1.72.jar │ │ │ ├── jna-4.2.2.jar │ │ │ ├── logback-classic-1.0.13.jar │ │ │ ├── logback-core-1.0.13.jar │ │ │ ├── netty-all-4.0.42.Final.jar │ │ │ ├── netty-tcnative-boringssl-static-1.1.33.Fork26.jar │ │ │ ├── openmessaging-api-0.3.1-alpha.jar │ │ │ ├── rocketmq-acl-4.6.1.jar │ │ │ ├── rocketmq-broker-4.6.1.jar │ │ │ ├── rocketmq-client-4.6.1.jar │ │ │ ├── rocketmq-common-4.6.1.jar │ │ │ ├── rocketmq-example-4.6.1.jar │ │ │ ├── rocketmq-filter-4.6.1.jar │ │ │ ├── rocketmq-logging-4.6.1.jar │ │ │ ├── rocketmq-namesrv-4.6.1.jar │ │ │ ├── rocketmq-openmessaging-4.6.1.jar │ │ │ ├── rocketmq-remoting-4.6.1.jar │ │ │ ├── rocketmq-srvutil-4.6.1.jar │ │ │ ├── rocketmq-store-4.6.1.jar │ │ │ ├── rocketmq-tools-4.6.1.jar │ │ │ ├── slf4j-api-1.7.7.jar │ │ │ └── snakeyaml-1.19.jar │ ├── rocketmq-console-ng-1.0.1.jar │ └── rocketmq-console.Dockerfile ├── sentinel │ └── Dockerfile ├── thrift │ └── Dockerfile ├── ubuntu │ └── Dockerfile └── zookeeper-latest │ └── docker-compose.yml ├── golang ├── algorithm │ ├── go.mod │ ├── sort │ │ ├── bubble_sort_test.go │ │ ├── insertion_sort_test.go │ │ └── selection_sort_test.go │ └── utils.go ├── basic │ ├── datasource │ │ └── datasource_test.go │ ├── datastruct │ │ ├── array-list │ │ │ └── array-list.go │ │ ├── datastruct_test.go │ │ ├── linked_list │ │ │ └── linked_list.go │ │ ├── queue │ │ │ └── queue.go │ │ └── stack │ │ │ └── stack.go │ ├── desgin-patterns │ │ ├── decorator │ │ │ ├── decorator.go │ │ │ └── decorator_test.go │ │ ├── factory-method │ │ │ ├── factory_method.go │ │ │ └── factory_method_test.go │ │ ├── inversion-of-control │ │ │ ├── calculator.go │ │ │ ├── ioc_test.go │ │ │ └── undo.go │ │ ├── map-reduce │ │ │ ├── map_reduce.go │ │ │ └── map_reduce_test.go │ │ ├── modules │ │ │ ├── shape.go │ │ │ ├── shape_circle.go │ │ │ ├── shape_rectangle.go │ │ │ └── shape_triangle.go │ │ ├── observer │ │ │ ├── goods.go │ │ │ ├── observer.go │ │ │ ├── observer_test.go │ │ │ └── user.go │ │ └── oop │ │ │ ├── chinese.go │ │ │ ├── human.go │ │ │ └── people.go │ ├── error-handling │ │ ├── defer_test.go │ │ ├── panic_recover_test.go │ │ └── server_error_handler_test.go │ ├── generic │ │ └── generic_test.go │ ├── go.mod │ ├── go.sum │ ├── goroutine │ │ ├── channel_test.go │ │ ├── context_test.go │ │ ├── goroutine_test.go │ │ └── sync_test.go │ ├── io │ │ ├── bufio_test.go │ │ ├── file_test.go │ │ └── ioutil_test.go │ ├── net │ │ ├── rpc │ │ │ ├── client │ │ │ │ ├── client.go │ │ │ │ └── client_proxy │ │ │ │ │ └── client_proxy.go │ │ │ ├── handler │ │ │ │ └── goods_service.go │ │ │ ├── rpc_test.go │ │ │ └── server │ │ │ │ ├── model │ │ │ │ └── goods.go │ │ │ │ ├── server.go │ │ │ │ └── server_proxy │ │ │ │ └── server_proxy.go │ │ └── socket │ │ │ ├── tcp │ │ │ ├── tcp_client.go │ │ │ └── tcp_server.go │ │ │ └── udp │ │ │ ├── udp_client.go │ │ │ └── udp_server.go │ ├── os │ │ └── signal.go │ ├── other │ │ └── embed-practice │ │ │ ├── embed_test.go │ │ │ └── static │ │ │ ├── css │ │ │ └── index.css │ │ │ ├── js │ │ │ └── index.js │ │ │ └── templates │ │ │ └── index.html │ ├── utils │ │ ├── exec_test.go │ │ ├── flag_test.go │ │ ├── json_test.go │ │ └── time_test.go │ └── web │ │ ├── http_request_test.go │ │ ├── http_test.go │ │ └── template │ │ └── index.html ├── custom │ ├── main.go │ └── web-framework │ │ ├── context.go │ │ ├── router.go │ │ └── server.go ├── gin │ ├── dto │ │ └── user.go │ ├── go.mod │ ├── go.sum │ ├── handle │ │ └── handle.go │ ├── main.go │ ├── middleware │ │ └── middleware.go │ ├── proto-source │ │ ├── proto │ │ │ └── user.pb.go │ │ └── user.proto │ ├── static │ │ └── index.html │ ├── template │ │ └── index.html │ └── validate │ │ └── validate.go ├── go-kit │ ├── endpoint │ │ └── user_endpoint.go │ ├── go.mod │ ├── go.sum │ ├── main.go │ ├── service │ │ └── user_service.go │ ├── transport │ │ └── service_transport.go │ └── utils │ │ └── consul.go ├── go.mod ├── go.sum ├── grpc │ ├── auth-grpc │ │ ├── client │ │ │ └── client.go │ │ ├── proto-source │ │ │ ├── employee.proto │ │ │ └── proto │ │ │ │ ├── employee.pb.go │ │ │ │ └── employee_grpc.pb.go │ │ └── server │ │ │ └── server.go │ ├── go.mod │ ├── go.sum │ ├── simple-grpc │ │ ├── client │ │ │ └── client.go │ │ ├── proto-source │ │ │ ├── helloworld.proto │ │ │ └── proto │ │ │ │ ├── helloworld.pb.go │ │ │ │ └── helloworld_grpc.pb.go │ │ └── server │ │ │ └── server.go │ └── stream-grpc │ │ ├── client │ │ └── client_test.go │ │ ├── proto-source │ │ ├── proto │ │ │ ├── stream.pb.go │ │ │ └── stream_grpc.pb.go │ │ └── stream.proto │ │ └── server │ │ └── server.go ├── leetcode │ ├── leetcode203_remove_linked_list_elements_test.go │ ├── leetcode206_reverse_linked_list_test.go │ └── leetcode20_valid_parentheses_test.go └── tool-library │ ├── go.mod │ ├── go.sum │ ├── gorm │ └── gorm.go │ ├── k8s-client │ ├── k8s_client.go │ ├── k8s_client_test.go │ ├── namespace.go │ ├── resource.go │ └── resource │ │ └── nginx.yaml │ ├── logrus │ └── logrus.go │ ├── sarama │ ├── consumer │ │ └── sarama_consumer.go │ └── producer │ │ └── sarama_producer.go │ └── viper │ ├── conf │ ├── conf.go │ ├── config.yml │ └── setting.go │ ├── viper.go │ └── viper_test.go ├── java ├── bigdata │ ├── build.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── me │ │ │ └── hvkcoder │ │ │ ├── flink │ │ │ ├── BatchWordCountJava.java │ │ │ └── StreamingWordCountJava.java │ │ │ ├── hadoop │ │ │ ├── HDFS.java │ │ │ └── MapReduce.java │ │ │ ├── parquet │ │ │ ├── AvroParquet.java │ │ │ ├── Parquet.java │ │ │ └── User.java │ │ │ ├── spark │ │ │ └── core │ │ │ │ └── WordCountJava.java │ │ │ └── zookeeper │ │ │ ├── CuratorTest.java │ │ │ ├── ZookeeperByKerberos.java │ │ │ └── ZookeeperTest.java │ │ ├── resources │ │ ├── core-site.xml │ │ ├── data.txt │ │ ├── hdfs-site.xml │ │ ├── kerberos │ │ │ ├── krb5.conf │ │ │ └── zk-cli-jaas.conf │ │ ├── mapred-site.xml │ │ └── yarn-site.xml │ │ └── scala │ │ └── me │ │ └── hvkcoder │ │ ├── flink │ │ ├── BatchWordCountScala.scala │ │ └── StreamingWordCountScala.scala │ │ └── spark │ │ └── core │ │ ├── RDD_Create_Memory.scala │ │ ├── RDD_Create_Partition.scala │ │ └── WordCountScala.scala ├── build.gradle ├── dubbo │ ├── build.gradle │ ├── common │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── me │ │ │ └── hvkcoder │ │ │ └── dubbo │ │ │ └── common │ │ │ └── service │ │ │ ├── GreetingsService.java │ │ │ └── impl │ │ │ └── GreetingsServiceImpl.java │ ├── consumer │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── dubbo │ │ │ │ └── consumer │ │ │ │ ├── DubboConsumer.java │ │ │ │ ├── DubboConsumerApplication.java │ │ │ │ ├── RMIConsumer.java │ │ │ │ └── controller │ │ │ │ └── TestController.java │ │ │ └── resources │ │ │ └── application.yml │ └── provider │ │ ├── build.gradle │ │ └── src │ │ └── main │ │ ├── java │ │ └── me │ │ │ └── hvkcoder │ │ │ └── dubbo │ │ │ └── provider │ │ │ ├── DubboProvider.java │ │ │ ├── DubboProviderApplication.java │ │ │ └── RMIProvider.java │ │ └── resources │ │ └── application.yml ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── java-basic │ ├── README.md │ ├── build.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── me │ │ │ └── hvkcoder │ │ │ └── java_basic │ │ │ ├── algorithm │ │ │ ├── BinarySearch.java │ │ │ ├── DivideMoneyRandomly.java │ │ │ ├── SortBubble.java │ │ │ ├── SortInsertion.java │ │ │ ├── SortSelection.java │ │ │ ├── Transform2Binary.java │ │ │ └── visualAlgo │ │ │ │ ├── AlgoFrame.java │ │ │ │ └── AlgoVisHelper.java │ │ │ ├── data_struct │ │ │ ├── _ArrayList.java │ │ │ ├── _LinkedList.java │ │ │ └── base │ │ │ │ ├── _AbstractList.java │ │ │ │ ├── _Iterator.java │ │ │ │ └── _List.java │ │ │ ├── desgin_patterns │ │ │ ├── behavioral │ │ │ │ └── ObserverPattern.java │ │ │ ├── creational │ │ │ │ └── singleton │ │ │ │ │ ├── SingletonEH.java │ │ │ │ │ ├── SingletonEnum.java │ │ │ │ │ ├── SingletonInnerClass.java │ │ │ │ │ ├── SingletonLH.java │ │ │ │ │ ├── SingletonLazyLoading.java │ │ │ │ │ └── practice │ │ │ │ │ └── TicketMaker.java │ │ │ └── structural │ │ │ │ └── decorator │ │ │ │ ├── Decorator.java │ │ │ │ ├── Drink.java │ │ │ │ ├── Main.java │ │ │ │ ├── RedBean.java │ │ │ │ └── Soya.java │ │ │ ├── docker │ │ │ └── DockerJava.java │ │ │ ├── io │ │ │ ├── FTPUtil.java │ │ │ ├── RandomAccessFileDemo.java │ │ │ ├── SerializableDemo.java │ │ │ ├── netty │ │ │ │ ├── ChatNatty.java │ │ │ │ ├── TestNetty.java │ │ │ │ ├── custom │ │ │ │ │ └── codec │ │ │ │ │ │ ├── InvokerProtocol.java │ │ │ │ │ │ ├── InvokerProtocolDecoder.java │ │ │ │ │ │ └── InvokerProtocolEncoder.java │ │ │ │ ├── echo │ │ │ │ │ ├── client │ │ │ │ │ │ ├── EchoClient.java │ │ │ │ │ │ └── EchoClientHandler.java │ │ │ │ │ └── server │ │ │ │ │ │ ├── EchoServer.java │ │ │ │ │ │ └── EchoServerHandler.java │ │ │ │ ├── heart │ │ │ │ │ └── beat │ │ │ │ │ │ ├── HeartBeatClient.java │ │ │ │ │ │ └── HeartBeatServer.java │ │ │ │ ├── httpserver │ │ │ │ │ ├── CustomHandler.java │ │ │ │ │ └── HttpServer.java │ │ │ │ ├── protobuf │ │ │ │ │ ├── ProtoBufClient.java │ │ │ │ │ ├── ProtoBufServer.java │ │ │ │ │ └── proto │ │ │ │ │ │ └── MessageDataProto.java │ │ │ │ ├── tomcat │ │ │ │ │ ├── TomcatServer.java │ │ │ │ │ ├── http │ │ │ │ │ │ ├── TomcatRequest.java │ │ │ │ │ │ ├── TomcatResponse.java │ │ │ │ │ │ └── TomcatServlet.java │ │ │ │ │ └── servlet │ │ │ │ │ │ ├── FirstServlet.java │ │ │ │ │ │ └── SecondServlet.java │ │ │ │ └── websocket │ │ │ │ │ ├── WebSocketHandler.java │ │ │ │ │ ├── WebSocketServer.java │ │ │ │ │ └── index.html │ │ │ ├── nio │ │ │ │ ├── BufferUsage.java │ │ │ │ ├── ChannelUsage.java │ │ │ │ ├── SelectorUsage.java │ │ │ │ └── chatroom │ │ │ │ │ ├── ChatClient.java │ │ │ │ │ └── ChatServer.java │ │ │ ├── reactor │ │ │ │ ├── master_slave │ │ │ │ │ └── ReactorMasterSlave.java │ │ │ │ ├── multi │ │ │ │ │ └── ReactorMultiThread.java │ │ │ │ └── single │ │ │ │ │ ├── ReactorSingleClient.java │ │ │ │ │ └── ReactorSingleServer.java │ │ │ └── socket │ │ │ │ ├── InetAddressUsage.java │ │ │ │ ├── NetWorkInterfaceUsage.java │ │ │ │ ├── URLUsage.java │ │ │ │ ├── tcp │ │ │ │ ├── TcpClient.java │ │ │ │ └── TcpServer.java │ │ │ │ └── udp │ │ │ │ ├── UDPClient.java │ │ │ │ └── UDPServer.java │ │ │ ├── java8 │ │ │ ├── CollectorsUsage.java │ │ │ ├── ReactiveStream.java │ │ │ ├── StreamUsage.java │ │ │ └── lambda │ │ │ │ ├── ConsumerUsage.java │ │ │ │ ├── FunctionUsage.java │ │ │ │ ├── PredicateUsage.java │ │ │ │ └── SupplierUsage.java │ │ │ ├── juc │ │ │ ├── OnlyMain.java │ │ │ ├── aqs │ │ │ │ ├── AQS01_CountDownLatch.java │ │ │ │ ├── AQS02_CyclicBarrier.java │ │ │ │ ├── AQS03_Semaphore.java │ │ │ │ └── AQS04_ReentrantLock.java │ │ │ ├── practice │ │ │ │ ├── Downloader.java │ │ │ │ └── PrintABC.java │ │ │ └── thread │ │ │ │ ├── Thread01_Creation.java │ │ │ │ ├── Thread02_Synchronized.java │ │ │ │ ├── Thread03_State.java │ │ │ │ ├── Thread04_DeadLock.java │ │ │ │ ├── Thread05_Interrupted.java │ │ │ │ ├── Thread06_ThreadLocal.java │ │ │ │ ├── Thread07_CompletableFuture.java │ │ │ │ ├── Thread08_CustomThreadPool.java │ │ │ │ └── Thread09_MyThreadPool.java │ │ │ ├── jvm │ │ │ ├── interview │ │ │ │ └── STW.java │ │ │ ├── proxy │ │ │ │ ├── jdk │ │ │ │ │ ├── CustomClassLoader.java │ │ │ │ │ ├── CustomInvocationHandler.java │ │ │ │ │ └── CustomProxy.java │ │ │ │ └── test │ │ │ │ │ ├── Person.java │ │ │ │ │ └── ProxyTest.java │ │ │ └── reflect │ │ │ │ ├── ReflectSample.java │ │ │ │ ├── Robot.java │ │ │ │ └── annotation │ │ │ │ ├── ch01 │ │ │ │ ├── PasswordUtils.java │ │ │ │ ├── UseCase.java │ │ │ │ └── UseCaseTracker.java │ │ │ │ └── ch02 │ │ │ │ ├── Student.java │ │ │ │ ├── TableCreator.java │ │ │ │ └── database │ │ │ │ ├── Constraints.java │ │ │ │ ├── DBTable.java │ │ │ │ ├── JdbcType.java │ │ │ │ └── TableField.java │ │ │ ├── leetcode │ │ │ ├── LeetCode1114_按序打印.java │ │ │ ├── LeetCode1115_交替打印FooBar.java │ │ │ ├── LeetCode1116_打印零与奇偶数.java │ │ │ ├── LeetCode144_二叉树的前序遍历.java │ │ │ ├── LeetCode145_二叉树的后序遍历.java │ │ │ ├── LeetCode206_反转链表.java │ │ │ ├── LeetCode208_实现Trie.java │ │ │ ├── LeetCode20_有效的括号.java │ │ │ ├── LeetCode211_添加与搜索单词.java │ │ │ ├── LeetCode21_合并两个有序链表.java │ │ │ ├── LeetCode2_两数相加.java │ │ │ ├── LeetCode35_搜索插入位置.java │ │ │ ├── LeetCode509_斐波那契数.java │ │ │ ├── LeetCode70_爬楼梯.java │ │ │ ├── LeetCode724_寻找数组的中心索引.java │ │ │ ├── LeetCode83_删除排序链表中的重复元素.java │ │ │ ├── LeetCode94_二叉树的中序遍历.java │ │ │ ├── LeetCode_704_二分查找.java │ │ │ └── 剑指_OfferII077_链表排序.java │ │ │ └── validation │ │ │ ├── UserInfo.java │ │ │ ├── UserInfoService.java │ │ │ ├── ValidationTest.java │ │ │ └── custom │ │ │ ├── Phone.java │ │ │ └── PhoneValidator.java │ │ ├── proto │ │ └── Message.proto │ │ └── resources │ │ └── web.properties ├── log4j2-poc │ ├── build.gradle │ └── src │ │ └── main │ │ └── java │ │ └── me │ │ └── hvkcoder │ │ └── log4j2 │ │ ├── Exploit.java │ │ ├── LDAPRefServer.java │ │ └── Log4j.java ├── message-queue │ ├── build.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── me │ │ │ └── hvkcoder │ │ │ └── message_queue │ │ │ └── kafka │ │ │ ├── Consumer.java │ │ │ ├── CustomInterceptor.java │ │ │ ├── CustomPartitioner.java │ │ │ ├── KafkaTopicDML.java │ │ │ ├── Producer.java │ │ │ ├── partitioner │ │ │ └── CustomPartitioner.java │ │ │ └── serializer │ │ │ ├── CustomDeserializer.java │ │ │ ├── CustomSerializer.java │ │ │ └── User.java │ │ └── resources │ │ └── logback.xml ├── mybatis │ ├── build.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── me │ │ │ └── hvkcoder │ │ │ └── mybatis │ │ │ └── practice │ │ │ ├── MyBatisPractice.java │ │ │ ├── domain │ │ │ └── User.java │ │ │ └── repository │ │ │ └── UserMapper.java │ │ └── resources │ │ ├── mapper │ │ └── UserMapper.xml │ │ └── mybatis-config.xml ├── scala-basic │ ├── build.gradle │ └── src │ │ └── main │ │ ├── resources │ │ └── data.txt │ │ └── scala │ │ └── me │ │ └── hvkcoder │ │ ├── algorithm │ │ ├── SortBubble.scala │ │ ├── SortInsertion.scala │ │ └── SortSelection.scala │ │ └── basic │ │ ├── BasicScala.scala │ │ ├── Collections.scala │ │ ├── Function.scala │ │ ├── Implicit.scala │ │ ├── Match.scala │ │ ├── ProcessControl.scala │ │ ├── ReadFile.scala │ │ └── Trait.scala ├── settings.gradle ├── spring │ ├── build.gradle │ ├── custom-spring-boot-starter │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── custom │ │ │ │ └── spring │ │ │ │ └── boot │ │ │ │ └── starter │ │ │ │ ├── NettyProperties.java │ │ │ │ ├── NettyServer.java │ │ │ │ ├── NettyStarter.java │ │ │ │ └── callback │ │ │ │ ├── CallBack.java │ │ │ │ └── CallBackRegistry.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── spring.factories │ ├── service-consumer │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── spring │ │ │ │ └── service │ │ │ │ └── consumer │ │ │ │ ├── ServiceConsumerApplication.java │ │ │ │ └── controller │ │ │ │ ├── NacosConfigController.java │ │ │ │ └── RestTemplateController.java │ │ │ └── resources │ │ │ ├── application.yml │ │ │ └── bootstrap.yml │ ├── service-provider │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── service │ │ │ │ └── provider │ │ │ │ ├── ServiceProviderApplication.java │ │ │ │ ├── controller │ │ │ │ └── ProviderController.java │ │ │ │ └── service │ │ │ │ └── HealthStatusService.java │ │ │ └── resources │ │ │ └── application.yml │ ├── spring-cloud-eureka │ │ ├── README.md │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── spring_cloud_eureka │ │ │ │ └── EurekaServerApplication.java │ │ │ └── resources │ │ │ ├── application-eureka1.yml │ │ │ ├── application-eureka2.yml │ │ │ └── application.yml │ ├── spring-cloud-gateway │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── springcloud │ │ │ │ └── gateway │ │ │ │ └── GatewayApplication.java │ │ │ └── resources │ │ │ └── application.yml │ ├── spring-cloud-zuul │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── springcloud │ │ │ │ └── zuul │ │ │ │ ├── ZuulServerApplication.java │ │ │ │ └── filter │ │ │ │ ├── PostRequestFilter.java │ │ │ │ └── PreRequestFilter.java │ │ │ └── resources │ │ │ └── application.yml │ ├── spring-custom │ │ ├── spring-custom.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── me │ │ │ └── hvkcoder │ │ │ └── spring │ │ │ ├── custom │ │ │ ├── AnnotationConfigApplicationContext.java │ │ │ ├── ApplicationContext.java │ │ │ ├── BeanDefinition.java │ │ │ ├── annotation │ │ │ │ ├── Autowired.java │ │ │ │ ├── Component.java │ │ │ │ ├── ComponentScan.java │ │ │ │ └── Scope.java │ │ │ ├── aware │ │ │ │ ├── ApplicationContextAware.java │ │ │ │ ├── Aware.java │ │ │ │ └── BeanNameAware.java │ │ │ └── init │ │ │ │ ├── BeanPostProcessor.java │ │ │ │ └── InitializingBean.java │ │ │ └── test │ │ │ ├── IoCApplication.java │ │ │ └── service │ │ │ ├── OrderService.java │ │ │ └── UserService.java │ ├── spring-practice │ │ ├── bin │ │ │ └── service.sh │ │ ├── build.gradle │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── me │ │ │ │ │ └── hvkcoder │ │ │ │ │ └── spring │ │ │ │ │ └── practice │ │ │ │ │ ├── PracticeApplication.java │ │ │ │ │ ├── kafka │ │ │ │ │ ├── KafkaConfig.java │ │ │ │ │ └── KafkaConsumer.java │ │ │ │ │ ├── netty │ │ │ │ │ ├── NettyServer.java │ │ │ │ │ └── ServerHandler.java │ │ │ │ │ ├── redis │ │ │ │ │ └── RedisTemplateConfig.java │ │ │ │ │ ├── scheduler │ │ │ │ │ ├── SchedulerController.java │ │ │ │ │ └── config │ │ │ │ │ │ └── SchedulerTask.java │ │ │ │ │ ├── sse │ │ │ │ │ └── SSEController.java │ │ │ │ │ └── websocket │ │ │ │ │ ├── MyWebSocket.java │ │ │ │ │ └── WebSocketConfig.java │ │ │ └── resources │ │ │ │ ├── application.yml │ │ │ │ ├── redis │ │ │ │ └── seckill.lua │ │ │ │ └── template │ │ │ │ └── sse-practice.html │ │ │ └── test │ │ │ └── java │ │ │ └── me │ │ │ └── hvkcoder │ │ │ └── spring │ │ │ └── practice │ │ │ └── test │ │ │ └── RedisTemplateTest.java │ ├── spring-security │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── me │ │ │ │ └── hvkcoder │ │ │ │ └── spring_security │ │ │ │ ├── SpringSecurityApplication.java │ │ │ │ ├── business │ │ │ │ ├── UserInfoService.java │ │ │ │ └── impl │ │ │ │ │ └── UserInfoServiceImpl.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ └── PageController.java │ │ │ │ ├── domain │ │ │ │ └── UserInfo.java │ │ │ │ ├── repository │ │ │ │ └── UserInfoRepository.java │ │ │ │ └── security │ │ │ │ ├── CasConfig.java │ │ │ │ ├── CustomAuthenticationEntryPoint.java │ │ │ │ ├── CustomSecurityConfig.java │ │ │ │ ├── CustomUserDetailService.java │ │ │ │ └── filter │ │ │ │ └── VerificationCodeFilter.java │ │ │ └── resources │ │ │ ├── application.yml │ │ │ ├── data.sql │ │ │ ├── static │ │ │ ├── css │ │ │ │ └── style.css │ │ │ └── img │ │ │ │ └── photo.jpg │ │ │ └── templates │ │ │ └── login.html │ └── spring-webflux │ │ ├── build.gradle │ │ └── src │ │ └── main │ │ ├── java │ │ └── me │ │ │ └── hvkcoder │ │ │ └── spring │ │ │ └── webflux │ │ │ ├── WebFluxApplication.java │ │ │ ├── controller │ │ │ ├── UserController.java │ │ │ └── WebFluxController.java │ │ │ ├── domain │ │ │ └── User.java │ │ │ ├── handler │ │ │ └── UserHandler.java │ │ │ ├── reactor │ │ │ ├── FluxUsage.java │ │ │ └── MonoUsage.java │ │ │ ├── repository │ │ │ └── UserRepository.java │ │ │ └── router │ │ │ └── AllRouter.java │ │ └── resources │ │ └── application.yml └── vertx │ ├── build.gradle │ └── src │ └── main │ ├── java │ └── me │ │ └── hvkcoder │ │ └── vertx │ │ └── simple │ │ ├── PassConfigData.java │ │ └── SimpleHttpServerVerticle.java │ └── resources │ └── webroot │ └── event-stream.html ├── kubernetes ├── grafana.yaml ├── hadoop.yaml ├── hue.yaml ├── kafka.yaml ├── kuboard-v3.yaml ├── mongo.yaml ├── mysql.yaml ├── nacos-cluster.yaml ├── nacos │ ├── conf │ │ ├── 1.4.0-ipv6_support-update.sql │ │ ├── application.properties │ │ ├── nacos-logback.xml │ │ ├── nacos-mysql.sql │ │ └── schema.sql │ └── nacos.yml ├── postgresql.yaml ├── redis.yaml ├── solr.yaml ├── zookeeper-cluster.yaml └── zookeeper.yaml ├── python ├── basic │ ├── file.ipynb │ ├── net.ipynb │ ├── oop.ipynb │ ├── processbar.ipynb │ ├── sort.ipynb │ └── thread.ipynb ├── comic_spider │ └── spider.py ├── machine-learning.ipynb ├── matplotlib.ipynb ├── numpy.ipynb ├── opencv.ipynb ├── pandas.ipynb ├── parquet文件操作.ipynb ├── pytorch.ipynb ├── pytorch │ ├── Pytorch调用Mac_GPU.ipynb │ └── Torchvision.ipynb ├── quantitative-trading.ipynb └── seaborn.ipynb └── rust └── basic ├── Cargo.lock ├── Cargo.toml └── src └── main.rs /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org/ 2 | # top-most EditorConfig file 3 | root = true 4 | 5 | # match all file 6 | [*] 7 | 8 | # control the character set 9 | charset = utf-8 10 | 11 | # tab indentation 12 | indent_size = 2 13 | indent_style = tab 14 | 15 | # control line breaks are represented 16 | end_of_line = lf 17 | 18 | # remove any whitespace characters preceding newline characters 19 | trim_trailing_whitespace = true 20 | -------------------------------------------------------------------------------- /.github/docker/【Docker】Docker 命令.md: -------------------------------------------------------------------------------- 1 | ## 导出 docker images 2 | 3 | ```bash 4 | $ docker save -o path.tar imageName 5 | ``` 6 | 7 | ## 导入 docker images 8 | 9 | ```bash 10 | $ docker load < image.tar 11 | ``` 12 | 13 | ## 监控容器资源消耗 14 | 15 | ```bash 16 | $ docker stats [Options] [containerID/containerName] 17 | ``` 18 | 19 | 默认情况下,stats 命令会每隔 1s 刷新输出 20 | 21 | - [CONTAINER]:以短格式显示容器的 ID。 22 | - [CPU %]:CPU 的使用情况。 23 | - [MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。 24 | - [MEM %]:以百分比的形式显示内存使用情况。 25 | - [NET I/O]:网络 I/O 数据。 26 | - [BLOCK I/O]:磁盘 I/O 数据。 27 | - [PIDS]:PID 号。 28 | 29 | Options 30 | 31 | > --no-stream 只返回当前的状态 32 | 33 | > --format 格式化输出结果 34 | 35 | ```bash 36 | $ docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" 37 | ``` 38 | 39 | - .Container: 根据用户指定的名称显示容器的名称或 ID。 40 | - .Name: 容器名称。 41 | - .ID: 容器 ID。 42 | - .CPUPerc: CPU 使用率。 43 | - .MemUsage: 内存使用量。 44 | - .NetIO: 网络 I/O。 45 | - .BlockIO: 磁盘 I/O。 46 | - .MemPerc: 内存使用率。 47 | - .PIDs: PID 号。 48 | -------------------------------------------------------------------------------- /.github/docker/【Docker】容器自启动.md: -------------------------------------------------------------------------------- 1 | ## restart policy (重启策略) 2 | 3 | `Docker` 提供了 restart policy 机制(重启策略),可以在容器或者 `Docker` 重启时控制器能够自启动。这种重启策略可以保证相关容器按照正确顺序启动。`Docker` 建议使用重启策略,并避免使用流程管理器启动容器。 4 | 5 | 重启策略跟 `dockerd` 命令的 `--live-restore` 标志不同。使用 `--live-restore` 标志可以在 `Docker` 升级的时候保证容器继续运行,但是网络以及用户终端输入会被终端。 6 | 7 | ## 使用重启策略 8 | 9 | 要为容器配置重启策略,使用 `docker run` 命令的时候添加 `--restart` 标志。`--restart` 标志有多个 `value` 可选 10 | 11 | | 标志 | 描述 | 12 | | -------------- | ------------------------------------------------------------- | 13 | | no | 不自动重启容器(默认值) | 14 | | on-failure | 如果容器由于错误而退出,则将其重新启动,非零退出代码表示错误 | 15 | | unless-stopped | 在容器已经 stop 掉或 Docker stoped/restarted 的时候才重启容器 | 16 | | always | 只要容器停止,就重新启动 | 17 | 18 | ## 重启策略详情 19 | 20 | - 重启策略只在容器启动成功后生效。这种情况下,成功启动的意思容器至少运行 10 秒以上,并且 `Docker` 已经开始监控它。这可以避免没有成功启动的容器陷入 `restart` 的死循环。 21 | - 如果手动的停止容器,它将被重启策略忽略,直到 `Docker` 守护进程重启或手动重启,这是为了避免重启循环的另一次尝试。 22 | - 重启策略只能用于容器,与 `swarm 服务` 的重启策略有不同的配置。 23 | -------------------------------------------------------------------------------- /.github/linux/【Linux】CentOS 7 设置静态IP.md: -------------------------------------------------------------------------------- 1 | 1. 验证网络管理器服务的状态 2 | 3 | ```bash 4 | $ systemctl status NetworkManager.service 5 | ``` 6 | 7 | 2. 检查受网络管理器管理的网络接口 8 | 9 | ```bash 10 | $ nmcli dev status 11 | ``` 12 | 13 | 3. 进入 `/etc/sysconfig/network-scripts` 文件,找到配置文件 14 | 15 | ``` 16 | # 设置为静态 17 | BOOTPROTO=static 18 | # 定义 IP 地址 19 | IPADDR=192.168.129.159 20 | # 定义网卡 21 | NETMASK=255.255.255.0 22 | # 定义网关 23 | GATEWAY=172.16.79.2 24 | # 接口将通过该配置文件进行设置 25 | NM_CONTROLLED=no 26 | # 启动时开启该接口 27 | ONBOOT=yes 28 | # 设置 DNS 29 | DNS1=172.16.79.2 30 | ``` 31 | 32 | 4. 编辑 /etc/resolv.conf 33 | 34 | ``` 35 | nameserver 0.0.0.0 36 | nameserver 114.114.114.114 37 | search localhost 38 | ``` 39 | 40 | 5. 重启 `network` 服务 41 | 42 | ```bash 43 | $ systemctl restart network.service 44 | ``` 45 | -------------------------------------------------------------------------------- /.github/problems-in-dev/【Problems-in-dev】IE 不兼容 js indexOf 函数.md: -------------------------------------------------------------------------------- 1 | 在使用 js 判断数组中是否存在该元素,我们会用到 indexOf 函数。而在 IE 上 indexOf 函数 无法兼容,通过以下方法解决,仅以文章记录一下 2 | 3 | ```javascript 4 | if (!Array.prototype.indexOf) { 5 | Array.prototype.indexOf = function(elt /*, from*/) { 6 | var len = this.length >>> 0; 7 | var from = Number(arguments[1]) || 0; 8 | from = from < 0 ? Math.ceil(from) : Math.floor(from); 9 | if (from < 0) from += len; 10 | for (; from < len; from++) { 11 | if (from in this && this[from] === elt) return from; 12 | } 13 | return -1; 14 | }; 15 | } 16 | ``` 17 | -------------------------------------------------------------------------------- /.github/problems-in-dev/【Problems-in-dev】js 清空 input:file 的值.md: -------------------------------------------------------------------------------- 1 | 由于 javascript 不能清除 `input:file` 上传控件的值,因此最好的方法是在 `input:file` 上传控件的外层嵌入 `