├── .gitignore
├── .mvn
└── wrapper
│ ├── MavenWrapperDownloader.java
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── .travis.yml
├── Advance高级知识
└── IO知识
│ ├── 0-零拷贝.md
│ └── pictures
│ ├── 0-零拷贝-1-应用程序访问内存数据块的数据拷贝场景.png
│ └── 0-零拷贝-2-内存映射文件方式处理.png
├── DataStructure
├── 1-跳表.md
└── 2-红黑树.md
├── Dubbo
├── 01-Dubbo入门.md
├── 02-Dubbo实战.md
└── 03-Dubbo原理源码篇.md
├── GTCOM.jpg
├── Git
├── 0-基于Github从零开始搭建个人博客(下).md
├── 0-基于Github从零开始搭建个人博客.md
├── 1-Github_Hexo搭建个人博客.md
├── 1-创建仓库.png
├── 2-Github关于git操作的友好帮助.png
├── 2-github-travis-ci.md
├── 3-hexoinit.png
├── 4-hexos.png
├── 5-browser.png
├── 6-newpost.png
├── 7-hexodeploy.png
├── 8-localhost.png
├── gitCookbook
│ ├── 1-Git提交添加emoji图标.md
│ └── 1-git-emoji.png
├── gitemojiall.md
├── github-pages
│ ├── 1-createRepo.png
│ ├── 10.png
│ ├── 11.png
│ ├── 12.png
│ ├── 13.png
│ ├── 14.png
│ ├── 15.png
│ ├── 16.png
│ ├── 17.png
│ ├── 18.png
│ ├── 2-settings.png
│ ├── 3-pages.png
│ ├── 4-success.png
│ ├── 4-theme.png
│ ├── 5-init-files.png
│ ├── 6-access.png
│ ├── 7-files.png
│ ├── 8.png
│ └── 9.png
└── 公众号样式.md
├── JSON
└── jackson
│ └── jackson编程指南.md
├── JVM
├── 1-JVM参数.md
├── 11-内存分配与回收策略案例.md
├── 2-jstat命令详解.md
├── 3-JVM(一).md
└── jstat.md
├── Java8函数式编程
└── README.md
├── Java核心
├── 0-JAVA获取CLASSPATH路径.md
├── 1-Java枚举.md
├── 2-Java注解.md
├── 3-Java反射.md
├── 4-动态代理.md
├── 5-线程池.md
├── 6-AQS-抽象队列同步器.md
└── 7-ReentrantLock重入锁.md
├── Kafka
├── 1-Kafka基础.md
└── pictures
│ └── 1-kafka基础
│ ├── 1564132451378.png
│ ├── 1564132456176.png
│ ├── 1564362915555.png
│ ├── 1564363038297.png
│ ├── 1564363045474.png
│ ├── 1564363048020.png
│ ├── 1564364560251.png
│ ├── 1565681029634.png
│ ├── 1565681059740.png
│ ├── 1565681365093.png
│ ├── 1565681459384.png
│ ├── 1565681548064.png
│ ├── 1565681577895.png
│ ├── 1565683038532.png
│ ├── 1565683143620.png
│ ├── 1565683401090.png
│ ├── 1565685186932.png
│ ├── 1565686252541.png
│ ├── 1565686553101.png
│ ├── 1565686606414.png
│ ├── 1565686610491.png
│ ├── 1565686643013.png
│ ├── 1565686674753.png
│ ├── 1565686697776.png
│ ├── 1565687937922.png
│ ├── 1565689319552.png
│ ├── 1565691299823.png
│ ├── 1565765860051.png
│ └── 1565936033176.png
├── LICENSE
├── Linux
├── 1-Linux基础.md
├── 2-Linux用户磁盘管理.md
├── 3-Linux的vi、vim使用.md
├── 4-Linux的yum命令.md
├── 5-yum源配置.md
├── 6-常用操作快捷键.md
├── 7- Linux环境下的各种常用开发软件安装教程.md
├── awk
│ ├── 1-awk入门.md
│ ├── awk_workflow.jpg
│ └── emp.data
├── img
│ ├── 1-Linux基础介绍.png
│ ├── 1-Linux基础介绍(目录结构).png
│ ├── 1576057399279.png
│ ├── 1576057511502.png
│ ├── 1576057711660.png
│ ├── 1576057716311.png
│ ├── 1576057723337.png
│ ├── 1576057726913.png
│ ├── 1576057730548.png
│ ├── 1576057740616.png
│ ├── 1576057781943.png
│ ├── 1576057981486.png
│ ├── 1576058065143.png
│ ├── 1576058227429.png
│ ├── 1576061730124.png
│ ├── 1576061785195.png
│ ├── 1576114390863.png
│ ├── 1576115489482.png
│ ├── 1576117675409.png
│ ├── 1577760184493.png
│ ├── 1577760217608.png
│ ├── Linux-Directory-Structure.jpeg
│ ├── ls-l.png
│ ├── more.png
│ ├── rwx.png
│ ├── setnu.png
│ ├── vi模式切换.png
│ └── yumupdate.png
└── shell
│ ├── 1-shell基础教程.md
│ ├── 2-shell基本语法.md
│ ├── 3-shell运算符汇总.md
│ └── 4-shell的echo、printf、test详细介绍.md
├── Lua
├── 1-Lua语言入门指南.md
├── 2-Lua语言编程指南.md
└── 3-Lua编程高级.md
├── Maven
├── 1-编写一个Maven插件.md
└── 2-Maven-profile配置.md
├── Mockito
└── Mockito基础
│ └── 1-开始@Mock-@Spy-@Captor-@InjectMocks.md
├── MyBatis
├── 0-Mybatis面试题.md
├── 1-传统JDBC弊端与MyBatis的优点.md
├── 2-MyBatis使用介绍.md
├── 3-逆向工程.md
├── 4-MyBatis源码.md
└── 5-Mybatis拦截器.md
├── MySQL
├── 007-CentOS7安装MariaDB的流程步骤.md
├── 1-MySQL数据库读写锁示例详解、事务隔离级别示例详解.md
├── 2-MySql存储引擎.md
├── 3-InnoDB存储引擎.md
├── 998-一些规范示例.md
├── 999-Mysql主从复制.md
└── pictures
│ └── 001查看可用的存储引擎.png
├── NetWork
├── 999-参考资料.md
└── pictures
│ └── HTTP状态码.png
├── Netty
├── 1-Netty入门基础.md
└── ByteBuf.png
├── Nginx
├── 007-Nginx实现虚拟主机、反向代理、负载均衡、高可用.md
├── 1-Windows环境Ngin.md
├── 10-如何给nginx添加外部模块.md
├── 2-Nginx基础入门.md
├── 3-nginx服务端404以及502等页面配置.md
├── 7-负载均衡实现实践.md
├── 9-Nginx配置文件nginx.conf详细介绍.md
├── 999-资料分享.md
├── check_and_start_nginx.sh
├── img
│ ├── 04-Keepalived.png
│ ├── 1576745376238.png
│ ├── 1576748336954.png
│ ├── 1576752632200.png
│ ├── 1576752878597.png
│ ├── 1576752917726.png
│ ├── 1576754226844.png
│ ├── 1576754600807.png
│ ├── 1576757003894.png
│ ├── 1576757899719.png
│ ├── 1576757921014.png
│ ├── 1576757952498.png
│ ├── 1576822681380.png
│ ├── 1576822924112.png
│ ├── 1576836138597.png
│ ├── 1576837944705.png
│ ├── 1576839162422.png
│ ├── 1576843354486.png
│ ├── 1576843508915.png
│ ├── 1576843707409.png
│ ├── 1576843745271.png
│ ├── 1577327856588.png
│ ├── 1577340754696.png
│ ├── 1577341058999.png
│ └── 1577343575469.png
├── keepalived.conf
├── nginx.conf
└── pictures
│ ├── 7-负载均衡实现
│ ├── 1-HTTP重定向负载均衡.jpg
│ ├── 2-DNS域名解析负载均衡.jpg
│ ├── 3-反向代理负载均衡.jpg
│ ├── 4-IP负载均衡.jpg
│ └── 5-数据链路层负载均衡.jpg
│ └── LVS.jpg
├── Nodejs
└── 0-Nodejs以及npm安装.md
├── Protobuf
└── ProtobufTutorial
│ ├── Protobuf4Java.md
│ ├── ProtobufCompilerInstruction.md
│ ├── Protobuf基础教程.md
│ └── addressbook.proto
├── Python3
├── 1-Python3概览.md
├── 2-Python3基本语法.md
├── 3-Python爬虫相关库.md
└── img
│ ├── 1-windows版本安装包下载.png
│ ├── 2-源码安装Python.png
│ ├── 3-MacOS安装Python.png
│ ├── cpp_break_statement.jpg
│ ├── decision_making.jpg
│ ├── python_for_loop.jpg
│ └── python_while_loop.jpg
├── README.md
├── Redis
├── 1-Redis内存淘汰策略.md
├── 10-Redis面试热点问题.md
├── 2-Redis数据类型以及数据结构实现.md
├── 3-Redis缓存.md
├── 4-Redis哨兵-复制.md
├── 5-Redis-Cluster集群.md
├── 6-Redis分布式锁.md
├── 7-Redis持久化.md
├── 8-Redis应用场景分析.md
├── 9-1Redis-conf官方原始.md
├── 9-Redis-conf配置文件解析.md
├── 999-Redis运维系统命令.md
└── pictures
│ ├── 1.jpg
│ └── 2.jpg
├── RocketMQ
├── 0-windows安装RocketMQ以及运行第一个MQ程序.md
├── 1-RocketMQ技术设计架构.png
├── 1-RocketMQ技术设计架构PPT.png
├── 1-RocketMQ核心知识.md
├── 2-RocketMQ优势.png
├── 2-RocketMQ最佳实践-来自官网.md
├── 3-RocketMQ控制台搭建.md
├── 3-生产者Broker消费者关系图.png
├── 4-BrokerServer模块.png
├── 4-RocketMQ源码片段阅读(一).md
├── 5-RocketMQ架构部署.png
├── 6-Broker-Topic-Queue关系.png
├── 999-RocketMQ配置技能.md
├── 9999-RocketMQ配置参数大全-持续收录.md
├── 99999-附加资料.md
├── blog
│ ├── 1-download1.png
│ ├── 1-download2.png
│ ├── 1-download3.png
│ ├── 1-download4.png
│ └── 1-download5.png
├── pictures
│ ├── 0-console控制台-1.png
│ ├── 1-console控制台-1.png
│ ├── 1-console控制台-2.png
│ └── 1-console控制台-3.png
└── 参与阿里巴巴RocketMQ项目
│ └── 1-客户端配置_en.md
├── Scrum
└── 1-Scrum基础入门.md
├── Spring
├── 0-Spring概览相关重要类.md
├── 1-IOC相关.md
├── 2-SpringMVC原理解析.md
├── 3-SpringAOP.md
├── 4-过滤器.md
├── 5-拦截器.md
├── 6-Spring事务.md
├── 7-XML自定义模式扩展.md
└── pictures
│ ├── Spring-bean注册流程.png
│ ├── Spring-tx.png
│ ├── SpringAOP-1.jpg
│ ├── SpringAOP-1.png
│ ├── SpringMVC处理流程.png
│ ├── Spring事务传播性---PROPAGATION_REQUIRED.png
│ ├── Spring事务传播性---PROPAGATION_REQUIRES_NEW.png
│ └── Spring声明式事务代理调用方法的概念视图.png
├── SpringBoot
├── 1-SpringBoot启动流程跟踪.md
├── 99-自定义启动器starter.md
└── pictures
│ └── 1-starter
│ └── 1.png
├── SpringCloud
├── 0-SpringCloud资料链接.md
├── 1-Eureka服务注册发现.md
├── 2-Ribbon负载均衡.md
├── 3-Feign负载均衡.md
├── 4-Hystrix熔断器.md
├── 5-HystrixDashboard仪表盘.md
├── 6-Zuul动态路由转发-过滤.md
├── 7-SpringCloud-Config配置.md
├── 8-SpringCloud-Config高可用架构.md
├── 9-SpringCloud-Bus消息总线.md
├── 999-附加参考资料.md
└── pictures
│ ├── config-ha
│ └── 1-高可用的SpringCloud-config架构.png
│ ├── eureka
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ └── 5.png
│ ├── hystrix
│ ├── 1.png
│ └── 2.png
│ ├── hystrixboard
│ ├── 1.png
│ └── 2.png
│ ├── ribbon
│ ├── 1.png
│ ├── 2.png
│ └── 3.png
│ └── zuul
│ ├── 1.png
│ └── 2.png
├── Swagger
└── 1-整合Swagger.md
├── XML
├── 1-XML介绍.md
├── 2-dom4j解析XML.md
├── 3-XPath解析XML.md
└── img
│ └── 1576049327234.png
├── Zokeeper
└── Zookeeper分布式过程协同技术详解Note
│ ├── 1-一般性主从架构.jpg
│ ├── 2-CMW.jpg
│ ├── 2-zkservice.jpg
│ ├── 3-单机集群配置一.png
│ ├── 3-单机集群配置三.png
│ ├── 3-单机集群配置二.png
│ ├── 3-单机集群配置五.png
│ ├── 3-单机集群配置四.png
│ ├── pictures
│ ├── 4-会话在服务器之间转移.png
│ ├── chapter9-1.jpg
│ ├── chapter9-2Zk选举过程.jpg
│ ├── chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(延迟选举时长).jpg
│ ├── chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(异常情况).jpg
│ ├── chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(正常).jpg
│ └── chapter9-2服务器选举状态.jpg
│ ├── 第1章-Zk概览.md
│ ├── 第2章-了解Zk与Zk集群配置、主从模式案例演示.md
│ ├── 第3章-使用Zk的API进行开发.md
│ ├── 第4章-处理状态变化-主节点、从节点.md
│ └── 第九章-ZooKeeper内部原理.md
├── dlzd-qrcode.gif
├── dlzdgzh.jpg
├── javassist指南
├── 0-javassist编程指南概览.md
├── 1-读、写字节码.md
├── 2-ClassPool.md
├── 3-ClassLoader.md
├── 4-自省和定制.md
└── 5-字节码级别API.md
├── mvn-local-plugin-use
├── README.md
├── pom.xml
├── src
│ └── main
│ │ └── java
│ │ └── Demo.java
└── target
│ ├── classes
│ └── Demo.class
│ └── maven-status
│ └── maven-compiler-plugin
│ └── compile
│ └── default-compile
│ ├── createdFiles.lst
│ └── inputFiles.lst
├── mvn-local-plugin
├── README.md
├── pom.xml
├── src
│ └── main
│ │ └── java
│ │ └── org
│ │ └── byron4j
│ │ └── CountMojo.java
└── target
│ ├── classes
│ ├── META-INF
│ │ └── maven
│ │ │ ├── org.byron4j
│ │ │ └── mvn-local-plugin
│ │ │ │ └── plugin-help.xml
│ │ │ └── plugin.xml
│ └── org
│ │ └── byron4j
│ │ └── CountMojo.class
│ ├── maven-archiver
│ └── pom.properties
│ ├── maven-status
│ └── maven-compiler-plugin
│ │ ├── compile
│ │ └── default-compile
│ │ │ ├── createdFiles.lst
│ │ │ └── inputFiles.lst
│ │ └── testCompile
│ │ └── default-testCompile
│ │ └── inputFiles.lst
│ └── mvn-local-plugin-0.0.1-SNAPSHOT.jar
├── mvnw
├── mvnw.cmd
├── mybatis-gener2
├── mybatisGeneral
│ ├── bin
│ │ ├── com
│ │ │ └── crfchina
│ │ │ │ └── bd
│ │ │ │ ├── mapper
│ │ │ │ ├── CrfBankcardOptRecordMapper.class
│ │ │ │ └── CrfBankcardOptRecordMapper.xml
│ │ │ │ └── mode
│ │ │ │ └── CrfBankcardOptRecord.class
│ │ └── lcw
│ │ │ ├── dao
│ │ │ ├── AAA.class
│ │ │ └── CrfLoanClaimInfoMapper.class
│ │ │ ├── mapping
│ │ │ └── CrfLoanClaimInfoMapper.xml
│ │ │ └── model
│ │ │ └── CrfLoanClaimInfo.class
│ ├── generatorConfig.xml
│ ├── mybatis-generator-core-1.3.2.jar
│ ├── mysql-connector-java-5.1.27.jar
│ ├── sqlite-jdbc-3.14.2.1.jar
│ └── 命令.txt
└── 生成语句.txt
├── org
└── byron4j
│ └── cookbook
│ └── javaagent
│ ├── Javassist2ClassPool.class
│ ├── Point.class
│ └── Rectangle.class
├── pictures
└── gtcom2.jpg
├── pom.xml
├── src
├── main
│ ├── java
│ │ └── org
│ │ │ └── byron4j
│ │ │ └── cookbook
│ │ │ ├── CookbookApplication.java
│ │ │ ├── algrithms
│ │ │ ├── QuickSort.java
│ │ │ ├── package-info.java
│ │ │ └── tree
│ │ │ │ └── BinaryTree.java
│ │ │ ├── dbconnpool
│ │ │ ├── c3p0
│ │ │ │ ├── Ch01.java
│ │ │ │ └── Ch02.java
│ │ │ └── package-info.java
│ │ │ ├── designpattern
│ │ │ ├── adapter
│ │ │ │ ├── AbstractAccount.java
│ │ │ │ ├── Account.java
│ │ │ │ ├── AccountAdapter.java
│ │ │ │ ├── OffshoreAccount.java
│ │ │ │ ├── PlatinumAccount.java
│ │ │ │ └── StandardAccount.java
│ │ │ ├── builder
│ │ │ │ ├── Meal.java
│ │ │ │ ├── MealBuilder.java
│ │ │ │ ├── MealDirector.java
│ │ │ │ └── SandwichBuilder.java
│ │ │ ├── factory
│ │ │ │ ├── LondonMobileFactory.java
│ │ │ │ ├── MobileFactory.java
│ │ │ │ ├── NYMobileFactory.java
│ │ │ │ ├── SpiceBolt.java
│ │ │ │ ├── SpiceFire.java
│ │ │ │ ├── SpiceMobile.java
│ │ │ │ └── SpicePlus.java
│ │ │ ├── objectpool
│ │ │ │ ├── JDBCConnectionPool.java
│ │ │ │ └── ObjectPool.java
│ │ │ ├── observer
│ │ │ │ ├── Observer.java
│ │ │ │ ├── Publisher.java
│ │ │ │ ├── Publisher2WeakReference.java
│ │ │ │ ├── Subject.java
│ │ │ │ ├── Subscriber1.java
│ │ │ │ ├── Subscriber2.java
│ │ │ │ ├── other
│ │ │ │ │ ├── BinObserver.java
│ │ │ │ │ ├── HexObserver.java
│ │ │ │ │ ├── Observer.java
│ │ │ │ │ ├── ObserverTest.java
│ │ │ │ │ ├── OctObserver.java
│ │ │ │ │ └── Subject.java
│ │ │ │ └── package-info.java
│ │ │ ├── prototype
│ │ │ │ ├── Cake.java
│ │ │ │ ├── CakeStore.java
│ │ │ │ └── CheeseCake.java
│ │ │ ├── responsibilitychain
│ │ │ │ ├── AbstractLeaveHandler.java
│ │ │ │ ├── DeptManagerLeaveHandler.java
│ │ │ │ ├── DirectLeaderLeaveHandler.java
│ │ │ │ ├── GManagerLeaveHandler.java
│ │ │ │ ├── LeaveRequest.java
│ │ │ │ ├── ResponsibilityTest.java
│ │ │ │ └── package-info.java
│ │ │ ├── segregation
│ │ │ │ ├── IMachine.java
│ │ │ │ └── XeroxMachine.java
│ │ │ ├── singleton
│ │ │ │ ├── Singleton.java
│ │ │ │ ├── SingletonSynchronized.java
│ │ │ │ ├── SingletonSynchronizedOptimized.java
│ │ │ │ ├── SingletonZClone.java
│ │ │ │ ├── SingletonZCloneSerializable.java
│ │ │ │ ├── SingletonZCloneSerializableReadResolve.java
│ │ │ │ ├── SingletonZCloneUnabled.java
│ │ │ │ └── package-info.java
│ │ │ ├── state
│ │ │ │ ├── DeadState.java
│ │ │ │ ├── GameContext.java
│ │ │ │ ├── GameContextUpgrade.java
│ │ │ │ ├── HealthyState.java
│ │ │ │ ├── Player.java
│ │ │ │ ├── PlayerState.java
│ │ │ │ ├── SurvivalState.java
│ │ │ │ └── package-info.java
│ │ │ ├── strategy
│ │ │ │ ├── InsertionSort.java
│ │ │ │ ├── SelectionSort.java
│ │ │ │ ├── SortingContext.java
│ │ │ │ └── SortingStrategy.java
│ │ │ ├── template
│ │ │ │ ├── MexicanPizza.java
│ │ │ │ ├── Pizza.java
│ │ │ │ ├── SweetCornPizza.java
│ │ │ │ └── package-info.java
│ │ │ └── wrapper
│ │ │ │ ├── Car.java
│ │ │ │ ├── QeqCar.java
│ │ │ │ ├── WrapperCar.java
│ │ │ │ └── WrapperTest.java
│ │ │ ├── java8
│ │ │ ├── .DS_Store
│ │ │ └── basic
│ │ │ │ └── CompareJava8AndPreVersion.java
│ │ │ ├── javaagent
│ │ │ ├── HelloClassFileTransformer.java
│ │ │ ├── Javassist1RWBytecode.java
│ │ │ ├── Javassist2ClassPool.java
│ │ │ ├── Javassist3ClassLoader.java
│ │ │ ├── Javassist3ClassLoaderTest.java
│ │ │ ├── Javassist3ClassLoaderTest2.java
│ │ │ ├── Javassist3ClassLoaderTest3.java
│ │ │ ├── MyClassLoader.java
│ │ │ ├── MyTranslator.java
│ │ │ ├── Point.java
│ │ │ ├── Rectangle.java
│ │ │ ├── SampleLoader.java
│ │ │ ├── cahpter4
│ │ │ │ └── package-info.java
│ │ │ └── package-info.java
│ │ │ ├── javacore
│ │ │ ├── anno
│ │ │ │ ├── AnnoDemo.java
│ │ │ │ ├── ChildClass.java
│ │ │ │ ├── Demo.java
│ │ │ │ ├── Due.java
│ │ │ │ ├── FK1.java
│ │ │ │ ├── Role.java
│ │ │ │ ├── SuperClass.java
│ │ │ │ ├── Td.java
│ │ │ │ ├── jsr250
│ │ │ │ │ └── PostConstructDemo.java
│ │ │ │ ├── package-info.java
│ │ │ │ └── resolver
│ │ │ │ │ ├── BusinessLogic.java
│ │ │ │ │ └── ByronAnno.java
│ │ │ ├── dynamicproxy
│ │ │ │ ├── cglibproxy
│ │ │ │ │ ├── BookStore.java
│ │ │ │ │ └── CglibProxy.java
│ │ │ │ └── jdkproxy
│ │ │ │ │ ├── DynamicAnno.java
│ │ │ │ │ ├── Hello.java
│ │ │ │ │ ├── HelloImpl.java
│ │ │ │ │ ├── JDKDynamicProxy.java
│ │ │ │ │ └── MyInterceptor.java
│ │ │ ├── enums
│ │ │ │ ├── BasicOperation.java
│ │ │ │ ├── EnumSetDemo.java
│ │ │ │ ├── EnumsTest.java
│ │ │ │ ├── Herb.java
│ │ │ │ ├── LighjtOriginColorEnums.java
│ │ │ │ ├── OffsetItemEnums.java
│ │ │ │ ├── Operation.java
│ │ │ │ ├── OperationGraceful.java
│ │ │ │ ├── OperationGracefulField.java
│ │ │ │ ├── OperationI.java
│ │ │ │ ├── OriginColor.java
│ │ │ │ ├── PayrollDay.java
│ │ │ │ ├── PayrollDayStrategy.java
│ │ │ │ ├── PigmentOriginColorEnums.java
│ │ │ │ └── package-info.java
│ │ │ ├── http
│ │ │ │ ├── BasicHttpServerExample.java
│ │ │ │ └── BasicHttpServerExample2.java
│ │ │ ├── juc
│ │ │ │ └── VolatileDemo.java
│ │ │ ├── log
│ │ │ │ └── ch1
│ │ │ │ │ └── MyClass.java
│ │ │ ├── package-info.java
│ │ │ ├── reflection
│ │ │ │ ├── ReflectionTest.java
│ │ │ │ └── package-info.java
│ │ │ ├── spi
│ │ │ │ ├── DefaultView.java
│ │ │ │ ├── UiApplication.java
│ │ │ │ └── View.java
│ │ │ └── thpool
│ │ │ │ ├── ExecutorDemo.java
│ │ │ │ └── package-info.java
│ │ │ ├── jdbc
│ │ │ └── JdbcTemplateQuery.java
│ │ │ ├── jvm
│ │ │ ├── chapte3
│ │ │ │ ├── MinorGCDemo.java
│ │ │ │ └── PretenureSizeThresholdDemo.java
│ │ │ ├── chapterr2
│ │ │ │ ├── ReferenceCountGCDemo.java
│ │ │ │ └── StringInternDemo.java
│ │ │ └── package-info.java
│ │ │ ├── netty
│ │ │ ├── apidemo
│ │ │ │ ├── command
│ │ │ │ │ ├── Command.java
│ │ │ │ │ └── package-info.java
│ │ │ │ ├── package-info.java
│ │ │ │ ├── packet
│ │ │ │ │ ├── LoginRequestPacket.java
│ │ │ │ │ ├── LoginResponsePacket.java
│ │ │ │ │ ├── Packet.java
│ │ │ │ │ └── package-info.java
│ │ │ │ ├── protocol
│ │ │ │ │ └── PacketCodeC.java
│ │ │ │ └── serializer
│ │ │ │ │ ├── JSONSerializer.java
│ │ │ │ │ ├── Serializer.java
│ │ │ │ │ ├── SerializerAlgorithm.java
│ │ │ │ │ └── package-info.java
│ │ │ ├── first
│ │ │ │ ├── NettyClient.java
│ │ │ │ └── NettyServer.java
│ │ │ ├── io
│ │ │ │ ├── IOClient.java
│ │ │ │ ├── IOServer.java
│ │ │ │ ├── TimerClient.java
│ │ │ │ └── TimerServer.java
│ │ │ ├── login
│ │ │ │ ├── Client.java
│ │ │ │ ├── ClientHandler.java
│ │ │ │ ├── Server.java
│ │ │ │ ├── ServerHandler.java
│ │ │ │ └── package-info.java
│ │ │ └── message
│ │ │ │ ├── Attributes.java
│ │ │ │ ├── LoginUtil.java
│ │ │ │ ├── MessageRequestPacket.java
│ │ │ │ ├── MessageResponsePacket.java
│ │ │ │ ├── client
│ │ │ │ ├── MessageClient.java
│ │ │ │ └── MessageClientHandler.java
│ │ │ │ ├── package-info.java
│ │ │ │ └── server
│ │ │ │ ├── MessageServer.java
│ │ │ │ └── MessageServerHandler.java
│ │ │ ├── rocketmq
│ │ │ ├── MQConsumerDemo.java
│ │ │ ├── MQProducerDemo.java
│ │ │ └── transaction
│ │ │ │ ├── MQTransactionConsumerDemo.java
│ │ │ │ ├── MQTransactionProducerDemo.java
│ │ │ │ └── package-info.java
│ │ │ ├── springMVC
│ │ │ ├── package-info.java
│ │ │ └── root
│ │ │ │ ├── AspectjMain.java
│ │ │ │ ├── SpringMVCStartup.java
│ │ │ │ ├── controller
│ │ │ │ └── HelloController.java
│ │ │ │ ├── domain
│ │ │ │ └── User.java
│ │ │ │ └── repo
│ │ │ │ ├── JdbcTemplateDao.java
│ │ │ │ └── NamedParameterJdbcTemplateDao.java
│ │ │ ├── util
│ │ │ ├── ArraysUtil.java
│ │ │ ├── C3P0Utils.java
│ │ │ └── Utils.java
│ │ │ ├── web
│ │ │ └── HelloController.java
│ │ │ ├── yaml
│ │ │ └── Yaml1.java
│ │ │ └── zk
│ │ │ ├── chapter4
│ │ │ ├── Master5.java
│ │ │ ├── Master6.java
│ │ │ ├── Master7.java
│ │ │ └── MasterStates.java
│ │ │ ├── zkApi
│ │ │ ├── Master.java
│ │ │ ├── Master2.java
│ │ │ ├── Master3.java
│ │ │ └── Master4.java
│ │ │ └── zkFollow
│ │ │ ├── AdminClient.java
│ │ │ ├── Client.java
│ │ │ └── Worker.java
│ └── resources
│ │ ├── META-INF
│ │ ├── MANIFEST.MF
│ │ └── services
│ │ │ └── org.byron4j.cookbook.javacore.spi.DefaultView
│ │ ├── application.properties.back
│ │ ├── application.yml
│ │ ├── application.yml.back
│ │ ├── c3p0.properties
│ │ ├── logging.properties
│ │ └── mypydb.sql
└── test
│ └── java
│ └── org
│ └── byron4j
│ └── cookbook
│ ├── CookbookApplicationTests.java
│ ├── TestCase.java
│ ├── TestCase2.java
│ ├── algrithms
│ └── QuickSortTest.java
│ ├── designpattern
│ ├── AdapterTest.java
│ ├── BuilderTest.java
│ ├── FactoryTest.java
│ ├── ObjectPoolTest.java
│ ├── ObserverTest.java
│ ├── PrototypeTest.java
│ ├── SingletonTest.java
│ ├── StateTest.java
│ ├── StrategyTest.java
│ └── TemplateTest.java
│ ├── mocketio
│ └── basic
│ │ ├── MockitoAnnoTest.java
│ │ ├── MockitoAnnotationStartup.java
│ │ ├── MockitoTest.java
│ │ └── ResttemplateTest.java
│ └── netty
│ ├── ByteBufTest.java
│ └── PacketCodeCTest.java
├── test.sh
├── 分布式高并发
├── 0-总览.md
├── 1-令牌桶算法.md
├── 2-滑动窗口算法.md
└── 3-一致性哈希算法.md
├── 加密算法
└── 1-RSA非对称加密算法.md
├── 在线API
└── onlineapi.md
├── 支付系统一般架构设计.png
├── 支付系统一般架构设计.svg
├── 数据结构和算法
├── 数据结构
│ ├── 01-线性表.md
│ ├── 02-链表.md
│ ├── 03-栈、队列.md
│ ├── 04-哈希.md
│ ├── 05-树.md
│ ├── 06-二叉查找树.md
│ ├── 07-红黑树.md
│ ├── 08-AVL树.md
│ ├── 09-B树.md
│ ├── 10-图.md
│ └── pictures
│ │ └── 树
│ │ ├── 1-二叉树的构、先序、中序、后序遍历.png
│ │ ├── 2-二叉树数组表现形式.png
│ │ ├── 完全二叉树.png
│ │ ├── 树的表现形式-族谱.png
│ │ ├── 满二叉树.png
│ │ └── 链表表示二叉树.png
└── 算法
│ └── 1-快速排序.md
├── 架构
├── 云原生
│ └── 00-什么是云原生.md
├── 内容
│ ├── img
│ │ ├── 1.jpeg
│ │ └── 2.jpeg
│ └── 架构内容.md
├── 微服务
│ ├── 01-为什么大公司一定要使用微服务.md
│ └── pictures
│ │ ├── 01-基于dubbo+boot的微服务架构图.png
│ │ └── 微服务结构图.png
├── 缓存
│ ├── 01_mysql和redis缓存一致性解决方案.png
│ └── 02-CPU缓存结构-01.png
└── 高可用
│ ├── 01-高可用、负载均衡不得不说的事.md
│ └── img
│ ├── 1578043763376.png
│ ├── 1578043782006.png
│ ├── 1578043798504.png
│ ├── 1578043813760.png
│ ├── 1578043833525.png
│ ├── 1578043850043.png
│ ├── 1578043873233.png
│ ├── 1578043886303.png
│ ├── 1578043901270.png
│ └── 1578043923325.png
├── 测试
└── 关于测试.md
├── 消费金融
├── 一般性消费金融云图.png
├── 一般性金融软件架构图.png
├── 支付行业
│ ├── 1-支付流程.png
│ ├── 2-支付架构.png
│ └── 999-参考资料.md
└── 金融云架构.png
├── 规则引擎
├── 1-规则引擎基础.md
└── img
│ ├── 1576132902440.png
│ └── 1576133475159.png
├── 设计模式
├── 1-单例模式
│ ├── .DS_Store
│ └── 1-单例模式.md
├── 10-对象池设计模式
│ ├── .DS_Store
│ └── 10-对象池设计模式.md
├── 11-责任链模式
│ ├── 11-责任链模式.md
│ ├── AbstractLeaveHandler.png
│ └── 责任链模式流程图.png
├── 12-装饰器模式
│ ├── 1.png
│ ├── 12-装饰器模式.md
│ ├── 2.png
│ └── FilterInputStream.png
├── 2-观察者模式
│ ├── 2-观察者模式.md
│ └── Observer-Design-Pattern-Class-Diagram.png
├── 3-适配器模式
│ ├── 3-适配器模式.md
│ ├── Adapter-Design-Pattern-Class-Diagram.png
│ └── Adapter-Design-Pattern-Sequence-Diagram-620x492.png
├── 4-原型模式
│ ├── 4-原型模式.md
│ └── Prototype-Design-Pattern.png
├── 5-建造者模式
│ ├── 5-建造者模式.md
│ └── Builder-Design-Pattern-Java-620x382.png
├── 6-工厂方法模式
│ ├── 6-工厂方法模式.md
│ └── Factory-Method-Design-Pattern-620x365.png
├── 7-模板方法
│ ├── 7-模板模式.md
│ └── Template-Method-Design-Pattern-Example-620x406.png
├── 8-状态模式
│ ├── 8-状态模式.md
│ └── State-Design-Pattern-Java.png
├── 9-策略模式
│ ├── 9-策略模式.md
│ └── Strategy-Design-Pattern-Java.png
├── 接口分离设计原则.md
└── 设计模式概览.md
├── 软件激活
├── IDEA-2019-1永久激活教程.md
├── IDEA-2019-1永久激活教程.opml
├── Xshell、Xftp
│ └── 获取免费版Xshell和Xftp
│ │ ├── img
│ │ └── 1578651925787.png
│ │ └── 获取免费版Xshell和Xftp.md
├── img
│ ├── 1578649763368.png
│ ├── 1578649857572.png
│ ├── 1578649929343.png
│ ├── 1578650047362.png
│ ├── 1578650152196.png
│ └── 1578650507174.png
└── javahat.png
└── 面试汇总
└── 1-面试常问题目.md
/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | #!.mvn/wrapper/maven-wrapper.jar
3 |
4 | ### STS ###
5 | .apt_generated
6 | .classpath
7 | .factorypath
8 | .project
9 | .settings
10 | .springBeans
11 | .sts4-cache
12 |
13 | ### IntelliJ IDEA ###
14 | .idea
15 | *.iws
16 | *.iml
17 | *.ipr
18 |
19 | ### NetBeans ###
20 | /nbproject/private/
21 | /build/
22 | /nbbuild/
23 | /dist/
24 | /nbdist/
25 | /.nb-gradle/
26 | #/.mvn
27 | /test.ser
28 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.3/maven-wrapper-0.5.3.jar
3 |
4 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: java
2 |
3 | notifications:
4 | email: false
5 |
6 | script:
7 | - mvn clean package -DskipTests=true
--------------------------------------------------------------------------------
/Advance高级知识/IO知识/0-零拷贝.md:
--------------------------------------------------------------------------------
1 | # 零拷贝
2 |
3 | 零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效。
4 |
5 | 以下是正常的读取数据传输到网络中去的数据拷贝场景:
6 | 
7 |
8 | 在这个场景中,共产生了四次数据拷贝。即使使用了DMA来处理了与硬件的通讯,CPU仍然需要处理两次数据拷贝,与此同时,在用户态与内核态也发生了多次上下文切换,无疑也加重了CPU负担。
9 | 在此过程中,我们没有对文件内容做任何修改,那么在内核空间和用户空间来回拷贝数据无疑就是一种浪费,而零拷贝主要就是为了解决这种低效性。
10 |
11 | 如何减少内核空间和用户空间来回拷贝次数呢?
12 |
13 | ## 让数据不经过用户空间
14 |
15 | 使用内存映射文件mmap,使用mmap操作时,磁盘的数据会拷贝到内核空间,操作系统会把映射过的这段内核区与应用程序共享,如此一来,就不需要把内核缓冲区的数据内容往用户空间拷贝。写数据时,操作系统直接将内存缓冲区的数据拷贝到Socket缓冲区中,这一切都发生在内核空间中,看图:
16 |
17 | 
18 |
19 |
20 | Java内存映射类: ```java.nio.MappedByteBuffer```, 该类的实例通过```java.nio.channels.FileChannel.map```获取。
21 |
22 |
23 |
24 | - 扩展资料 : https://www.jianshu.com/p/fad3339e3448
--------------------------------------------------------------------------------
/Advance高级知识/IO知识/pictures/0-零拷贝-1-应用程序访问内存数据块的数据拷贝场景.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Advance高级知识/IO知识/pictures/0-零拷贝-1-应用程序访问内存数据块的数据拷贝场景.png
--------------------------------------------------------------------------------
/Advance高级知识/IO知识/pictures/0-零拷贝-2-内存映射文件方式处理.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Advance高级知识/IO知识/pictures/0-零拷贝-2-内存映射文件方式处理.png
--------------------------------------------------------------------------------
/DataStructure/1-跳表.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | #### 参考资料
4 |
5 | - http://www.cnblogs.com/seniusen/p/9870398.html
6 |
--------------------------------------------------------------------------------
/DataStructure/2-红黑树.md:
--------------------------------------------------------------------------------
1 | #### 参考资料
2 |
3 | - https://blog.csdn.net/sun_tttt/article/details/65445754
4 |
5 |
--------------------------------------------------------------------------------
/Dubbo/01-Dubbo入门.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Dubbo/01-Dubbo入门.md
--------------------------------------------------------------------------------
/Dubbo/02-Dubbo实战.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Dubbo/02-Dubbo实战.md
--------------------------------------------------------------------------------
/Dubbo/03-Dubbo原理源码篇.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Dubbo/03-Dubbo原理源码篇.md
--------------------------------------------------------------------------------
/GTCOM.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/GTCOM.jpg
--------------------------------------------------------------------------------
/Git/1-创建仓库.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/1-创建仓库.png
--------------------------------------------------------------------------------
/Git/2-Github关于git操作的友好帮助.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/2-Github关于git操作的友好帮助.png
--------------------------------------------------------------------------------
/Git/2-github-travis-ci.md:
--------------------------------------------------------------------------------
1 | # Maven项目集成Travis-ci
2 |
3 | - 1.持续集成权限报错(Travis.yml ./mvnw : Permission denied)
4 | >git ls-tree HEAD
5 | >
6 | >权限是 100664,你需要把权限改成755
7 | >
8 | >git update-index --chmod=+x mvnw
9 | >
10 | >git commit -m ":green_heart: permission access for travis"
11 | >
12 | >Error: Could not find or load main class org.apache.maven.wrapper.MavenWrapperMain 的解决办法:
13 | >
14 | >mvn -N io.takari:maven:wrapper
--------------------------------------------------------------------------------
/Git/3-hexoinit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/3-hexoinit.png
--------------------------------------------------------------------------------
/Git/4-hexos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/4-hexos.png
--------------------------------------------------------------------------------
/Git/5-browser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/5-browser.png
--------------------------------------------------------------------------------
/Git/6-newpost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/6-newpost.png
--------------------------------------------------------------------------------
/Git/7-hexodeploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/7-hexodeploy.png
--------------------------------------------------------------------------------
/Git/8-localhost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/8-localhost.png
--------------------------------------------------------------------------------
/Git/gitCookbook/1-git-emoji.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/gitCookbook/1-git-emoji.png
--------------------------------------------------------------------------------
/Git/github-pages/1-createRepo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/1-createRepo.png
--------------------------------------------------------------------------------
/Git/github-pages/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/10.png
--------------------------------------------------------------------------------
/Git/github-pages/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/11.png
--------------------------------------------------------------------------------
/Git/github-pages/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/12.png
--------------------------------------------------------------------------------
/Git/github-pages/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/13.png
--------------------------------------------------------------------------------
/Git/github-pages/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/14.png
--------------------------------------------------------------------------------
/Git/github-pages/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/15.png
--------------------------------------------------------------------------------
/Git/github-pages/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/16.png
--------------------------------------------------------------------------------
/Git/github-pages/17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/17.png
--------------------------------------------------------------------------------
/Git/github-pages/18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/18.png
--------------------------------------------------------------------------------
/Git/github-pages/2-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/2-settings.png
--------------------------------------------------------------------------------
/Git/github-pages/3-pages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/3-pages.png
--------------------------------------------------------------------------------
/Git/github-pages/4-success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/4-success.png
--------------------------------------------------------------------------------
/Git/github-pages/4-theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/4-theme.png
--------------------------------------------------------------------------------
/Git/github-pages/5-init-files.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/5-init-files.png
--------------------------------------------------------------------------------
/Git/github-pages/6-access.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/6-access.png
--------------------------------------------------------------------------------
/Git/github-pages/7-files.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/7-files.png
--------------------------------------------------------------------------------
/Git/github-pages/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/8.png
--------------------------------------------------------------------------------
/Git/github-pages/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Git/github-pages/9.png
--------------------------------------------------------------------------------
/JVM/3-JVM(一).md:
--------------------------------------------------------------------------------
1 | # JVM(一)
2 |
3 | #### 参考资料
4 |
5 | - [http://www.cnblogs.com/E-star/p/5556188.html](http://www.cnblogs.com/E-star/p/5556188.html)
--------------------------------------------------------------------------------
/Java8函数式编程/README.md:
--------------------------------------------------------------------------------
1 | Java 8 函数式编程
2 |
3 | > Java8最大的特性就是引入了Lambda表达式,使得Java拥有了函数式编程风格。
4 |
5 |
--------------------------------------------------------------------------------
/Java核心/4-动态代理.md:
--------------------------------------------------------------------------------
1 | # 动态代理
2 |
3 | 动态代理经常用于装饰器、适配器设计模式中。
4 | 动态代理提供了一种替代方法,实现许多常见的设计模式如Facade门面模式、Bridge桥接模式、Interceptor解释器模式、Decorator装饰器模式、Proxy代理模式和Adapter适配器模式的动态实现。
5 | 尽管这些设计模式使用普通的类也能简单的实现,但是在大都数情况下,使用动态代理方式更加方便、更紧凑,可以消除许多手写的或生成的代码。
6 |
7 |
8 | ## JDK动态代理接口
9 |
10 | JDK动态代理是基于接口实现的(后文解释),需要实现```java.lang.reflect.InvocationHandler```这个接口:
11 | ```java
12 | public interface InvocationHandler {
13 | public Object invoke(Object proxy, Method method, Object[] args)
14 | throws Throwable;
15 | }
16 | ```
17 |
18 | 参考: [```org.byron4j.cookbook.javacore.dynamicproxy.jdkproxy.JDKDynamicProxy```](../src/main/java/org/byron4j/cookbook/javacore/dynamicproxy/jdkproxy/JDKDynamicProxy.java)
19 |
20 | ## 动态代理总结
21 |
22 | - JDK动态代理: 利用反射原理,动态的生成代理类,将类的载入延迟到程序执行之中,解耦了代理类和被代理类的联系.主要要实现InvationHandler接口.
23 |
24 | - CGLIB动态代理:原理是继承,把被代理类作为父类,动态生成被代理类的子类,三个步骤,设置父类,设置回调函数,创建子类.实现MethodInterceptor 接口,拦截调用父类方法时,会处理回调方法,处理自己的增强方法.
25 |
26 | 参考资料:
27 |
28 | - **Decorating with dynamic proxies**: https://www.ibm.com/developerworks/library/j-jtp08305/index.html
29 |
30 |
--------------------------------------------------------------------------------
/Java核心/5-线程池.md:
--------------------------------------------------------------------------------
1 | # Java线程池
2 |
3 |
--------------------------------------------------------------------------------
/Java核心/7-ReentrantLock重入锁.md:
--------------------------------------------------------------------------------
1 | # ReentrantLock重入锁
2 |
3 |
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1564132451378.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1564132451378.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1564132456176.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1564132456176.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1564362915555.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1564362915555.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1564363038297.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1564363038297.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1564363045474.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1564363045474.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1564363048020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1564363048020.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1564364560251.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1564364560251.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565681029634.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565681029634.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565681059740.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565681059740.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565681365093.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565681365093.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565681459384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565681459384.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565681548064.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565681548064.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565681577895.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565681577895.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565683038532.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565683038532.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565683143620.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565683143620.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565683401090.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565683401090.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565685186932.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565685186932.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565686252541.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565686252541.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565686553101.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565686553101.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565686606414.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565686606414.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565686610491.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565686610491.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565686643013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565686643013.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565686674753.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565686674753.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565686697776.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565686697776.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565687937922.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565687937922.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565689319552.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565689319552.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565691299823.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565691299823.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565765860051.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565765860051.png
--------------------------------------------------------------------------------
/Kafka/pictures/1-kafka基础/1565936033176.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Kafka/pictures/1-kafka基础/1565936033176.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 湜生
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Linux/6-常用操作快捷键.md:
--------------------------------------------------------------------------------
1 | ---
2 | typora-copy-images-to: img
3 | ---
4 |
5 |
6 |
7 |
8 |
9 | ## 常用快捷键
10 |
11 | linux常用操作快捷键:
12 | Tab: 命令补全/路径补全/文件名补全,一次tab是补全,两次tab,列出相关信息。
13 | Ctrl+C: 强制结束当前的进程。干了一半不想干了想反悔就Ctrl+C。
14 | Ctrl+D: 发送一个exit信号,每次当我们有“退出”的意思的时候,就可以使用这个。比如SSH登录到另一个机器,想退出就Ctrl+D。
15 | Ctrl+A: 移动到命令行首。
16 | Ctrl+E: 移动到命令行尾。
17 | Ctrl+U :从当前光标所在位置向前清除命令。
18 | Ctrl+W: 从当前光标所在位置向前清除一个单词。
19 | 上下箭头: 上下翻看命令的输入记录,如果历史记录太多翻起来太慢,就用history显示出来然后再复制粘贴。
20 |
21 |
22 |
23 |
24 |
25 | ## 系统监控命令
26 |
27 | ### **查看端口占用情况**
28 |
29 | 查看80端口是否已经打开
30 |
31 | ```shell
32 | netstat -an | grep -w 80 其中的-w表示按单词匹配,以免匹配到8080端口
33 | ```
34 |
35 | 
36 |
37 | 查看80端口被什么进程占用
38 |
39 | ```shell
40 | netstat -anp | grep -w 80
41 | ```
42 |
43 | 
44 |
45 |
--------------------------------------------------------------------------------
/Linux/awk/awk_workflow.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/awk/awk_workflow.jpg
--------------------------------------------------------------------------------
/Linux/awk/emp.data:
--------------------------------------------------------------------------------
1 | Beth 4.00 0
2 | Dan 3.75 0
3 | kathy 4.00 10
4 | Mark 5.00 20
5 | Mary 5.50 22
6 | Susie 4.25 18
--------------------------------------------------------------------------------
/Linux/img/1-Linux基础介绍.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1-Linux基础介绍.png
--------------------------------------------------------------------------------
/Linux/img/1-Linux基础介绍(目录结构).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1-Linux基础介绍(目录结构).png
--------------------------------------------------------------------------------
/Linux/img/1576057399279.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057399279.png
--------------------------------------------------------------------------------
/Linux/img/1576057511502.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057511502.png
--------------------------------------------------------------------------------
/Linux/img/1576057711660.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057711660.png
--------------------------------------------------------------------------------
/Linux/img/1576057716311.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057716311.png
--------------------------------------------------------------------------------
/Linux/img/1576057723337.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057723337.png
--------------------------------------------------------------------------------
/Linux/img/1576057726913.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057726913.png
--------------------------------------------------------------------------------
/Linux/img/1576057730548.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057730548.png
--------------------------------------------------------------------------------
/Linux/img/1576057740616.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057740616.png
--------------------------------------------------------------------------------
/Linux/img/1576057781943.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057781943.png
--------------------------------------------------------------------------------
/Linux/img/1576057981486.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576057981486.png
--------------------------------------------------------------------------------
/Linux/img/1576058065143.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576058065143.png
--------------------------------------------------------------------------------
/Linux/img/1576058227429.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576058227429.png
--------------------------------------------------------------------------------
/Linux/img/1576061730124.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576061730124.png
--------------------------------------------------------------------------------
/Linux/img/1576061785195.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576061785195.png
--------------------------------------------------------------------------------
/Linux/img/1576114390863.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576114390863.png
--------------------------------------------------------------------------------
/Linux/img/1576115489482.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576115489482.png
--------------------------------------------------------------------------------
/Linux/img/1576117675409.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1576117675409.png
--------------------------------------------------------------------------------
/Linux/img/1577760184493.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1577760184493.png
--------------------------------------------------------------------------------
/Linux/img/1577760217608.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/1577760217608.png
--------------------------------------------------------------------------------
/Linux/img/Linux-Directory-Structure.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/Linux-Directory-Structure.jpeg
--------------------------------------------------------------------------------
/Linux/img/ls-l.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/ls-l.png
--------------------------------------------------------------------------------
/Linux/img/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/more.png
--------------------------------------------------------------------------------
/Linux/img/rwx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/rwx.png
--------------------------------------------------------------------------------
/Linux/img/setnu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/setnu.png
--------------------------------------------------------------------------------
/Linux/img/vi模式切换.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/vi模式切换.png
--------------------------------------------------------------------------------
/Linux/img/yumupdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Linux/img/yumupdate.png
--------------------------------------------------------------------------------
/MyBatis/0-Mybatis面试题.md:
--------------------------------------------------------------------------------
1 | # Mybatis问题汇总
2 |
3 |
4 | ## ```#{}```和```${}```的区别是什么?
5 |
6 | 在Mybatis中,有两种占位符
7 |
8 | - ```#{}```解析传递进来的参数数据
9 | - ```${}```对传递进来的参数原样拼接在SQL中
10 | - ```#{}```是预编译处理,```${}```是字符串替换。
11 | - 使用```#{}```可以有效的防止SQL注入,提高系统安全性。
12 |
13 |
--------------------------------------------------------------------------------
/MyBatis/1-传统JDBC弊端与MyBatis的优点.md:
--------------------------------------------------------------------------------
1 | # 传统JDBC弊端与MyBatis的优点
2 |
3 | ## 传统JDBC弊端
4 |
5 | - 没有使用连接池,会频繁创建与关闭数据库连接
6 | - 编码麻烦
7 | - PreparedStatement预编译进行变量赋值需要编写数字1、2、3...,不易于开发实践
8 | - 对于处理返回结果ResultSet需要硬编码
9 |
10 | ## MyBatis介绍
11 |
12 | - MyBatis是一个ORM(对象关系映射)框架。
13 | - 支持XML配置。
14 | - 支持注解配置。
15 |
16 |
--------------------------------------------------------------------------------
/MyBatis/2-MyBatis使用介绍.md:
--------------------------------------------------------------------------------
1 | # MyBatis使用介绍
2 |
3 | [官网](http://www.mybatis.org/mybatis-3/zh/index.html)
4 |
5 | >MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
6 |
7 | ## MyBatis 使用步骤
8 |
9 | ### 引入maven依赖
10 |
11 | ```xml
12 |
13 | org.mybatis
14 | mybatis
15 | x.x.x
16 |
17 | ```
18 |
19 | ### 从XML中构建SqlSessionFactory
20 |
21 | 每个基于 MyBatis 的应用都是以一个 ```SqlSessionFactory``` 的实例为核心的。
22 | SqlSessionFactory 的实例可以通过 ```SqlSessionFactoryBuilder``` 获得。
23 | SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
24 | MyBatis 包含一个名叫 ```Resources``` 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。
25 |
26 |
--------------------------------------------------------------------------------
/MyBatis/3-逆向工程.md:
--------------------------------------------------------------------------------
1 |
2 | [官网](http://www.mybatis.org/generator/)
3 |
4 |
5 |
6 | ```
7 | java -jar mybatis-generator-core-x.x.x.jar -configfile \temp\generatorConfig.xml -overwrite
8 | ```
--------------------------------------------------------------------------------
/MyBatis/4-MyBatis源码.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/MyBatis/4-MyBatis源码.md
--------------------------------------------------------------------------------
/MySQL/999-Mysql主从复制.md:
--------------------------------------------------------------------------------
1 |
2 | # Mysql 主从复制
3 |
4 |
5 |
6 | #### 参考资料
7 |
8 | - [构建高性能web之路------mysql读写分离实战](https://blog.csdn.net/cutesource/article/details/5710645)
--------------------------------------------------------------------------------
/MySQL/pictures/001查看可用的存储引擎.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/MySQL/pictures/001查看可用的存储引擎.png
--------------------------------------------------------------------------------
/NetWork/999-参考资料.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/NetWork/999-参考资料.md
--------------------------------------------------------------------------------
/NetWork/pictures/HTTP状态码.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/NetWork/pictures/HTTP状态码.png
--------------------------------------------------------------------------------
/Netty/1-Netty入门基础.md:
--------------------------------------------------------------------------------
1 | # Netty 入门基础
2 |
3 | NioEventLoopGroup
4 | ServerBootstrap
5 | Bootstrap
6 | NioServerSocketChannel
7 | NioSocketChannel
8 | SocketChannel
9 | ChannelInitializer
10 | ChannelInboundHandlerAdapter
11 | ByteBuf
12 | ChannelHandlerContext
13 |
--------------------------------------------------------------------------------
/Netty/ByteBuf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Netty/ByteBuf.png
--------------------------------------------------------------------------------
/Nginx/check_and_start_nginx.sh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/check_and_start_nginx.sh
--------------------------------------------------------------------------------
/Nginx/img/04-Keepalived.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/04-Keepalived.png
--------------------------------------------------------------------------------
/Nginx/img/1576745376238.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576745376238.png
--------------------------------------------------------------------------------
/Nginx/img/1576748336954.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576748336954.png
--------------------------------------------------------------------------------
/Nginx/img/1576752632200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576752632200.png
--------------------------------------------------------------------------------
/Nginx/img/1576752878597.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576752878597.png
--------------------------------------------------------------------------------
/Nginx/img/1576752917726.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576752917726.png
--------------------------------------------------------------------------------
/Nginx/img/1576754226844.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576754226844.png
--------------------------------------------------------------------------------
/Nginx/img/1576754600807.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576754600807.png
--------------------------------------------------------------------------------
/Nginx/img/1576757003894.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576757003894.png
--------------------------------------------------------------------------------
/Nginx/img/1576757899719.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576757899719.png
--------------------------------------------------------------------------------
/Nginx/img/1576757921014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576757921014.png
--------------------------------------------------------------------------------
/Nginx/img/1576757952498.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576757952498.png
--------------------------------------------------------------------------------
/Nginx/img/1576822681380.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576822681380.png
--------------------------------------------------------------------------------
/Nginx/img/1576822924112.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576822924112.png
--------------------------------------------------------------------------------
/Nginx/img/1576836138597.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576836138597.png
--------------------------------------------------------------------------------
/Nginx/img/1576837944705.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576837944705.png
--------------------------------------------------------------------------------
/Nginx/img/1576839162422.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576839162422.png
--------------------------------------------------------------------------------
/Nginx/img/1576843354486.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576843354486.png
--------------------------------------------------------------------------------
/Nginx/img/1576843508915.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576843508915.png
--------------------------------------------------------------------------------
/Nginx/img/1576843707409.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576843707409.png
--------------------------------------------------------------------------------
/Nginx/img/1576843745271.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1576843745271.png
--------------------------------------------------------------------------------
/Nginx/img/1577327856588.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1577327856588.png
--------------------------------------------------------------------------------
/Nginx/img/1577340754696.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1577340754696.png
--------------------------------------------------------------------------------
/Nginx/img/1577341058999.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1577341058999.png
--------------------------------------------------------------------------------
/Nginx/img/1577343575469.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/img/1577343575469.png
--------------------------------------------------------------------------------
/Nginx/pictures/7-负载均衡实现/1-HTTP重定向负载均衡.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/pictures/7-负载均衡实现/1-HTTP重定向负载均衡.jpg
--------------------------------------------------------------------------------
/Nginx/pictures/7-负载均衡实现/2-DNS域名解析负载均衡.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/pictures/7-负载均衡实现/2-DNS域名解析负载均衡.jpg
--------------------------------------------------------------------------------
/Nginx/pictures/7-负载均衡实现/3-反向代理负载均衡.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/pictures/7-负载均衡实现/3-反向代理负载均衡.jpg
--------------------------------------------------------------------------------
/Nginx/pictures/7-负载均衡实现/4-IP负载均衡.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/pictures/7-负载均衡实现/4-IP负载均衡.jpg
--------------------------------------------------------------------------------
/Nginx/pictures/7-负载均衡实现/5-数据链路层负载均衡.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/pictures/7-负载均衡实现/5-数据链路层负载均衡.jpg
--------------------------------------------------------------------------------
/Nginx/pictures/LVS.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Nginx/pictures/LVS.jpg
--------------------------------------------------------------------------------
/Nodejs/0-Nodejs以及npm安装.md:
--------------------------------------------------------------------------------
1 | 1、下载安装nodejs以及npm
2 |
3 | ```
4 | curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
5 | yum install -y nodejs
6 | npm install -g cnpm --registry=https://registry.npm.taobao.org
7 | npm install
8 | npm run build
9 | npm -v
10 | ```
--------------------------------------------------------------------------------
/Protobuf/ProtobufTutorial/addressbook.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto2";
2 |
3 | package tutorial;
4 |
5 | option java_package = "com.example.tutorial";
6 | option java_outer_classname = "AddressBookProtos";
7 |
8 | message Person {
9 | required string name = 1;
10 | required int32 id = 2;
11 | optional string email = 3;
12 |
13 | enum PhoneType {
14 | MOBILE = 0;
15 | HOME = 1;
16 | WORK = 2;
17 | }
18 |
19 | message PhoneNumber {
20 | required string number = 1;
21 | optional PhoneType type = 2 [default = HOME];
22 | }
23 |
24 | repeated PhoneNumber phones = 4;
25 | }
26 |
27 | message AddressBook {
28 | repeated Person people = 1;
29 | }
--------------------------------------------------------------------------------
/Python3/img/1-windows版本安装包下载.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Python3/img/1-windows版本安装包下载.png
--------------------------------------------------------------------------------
/Python3/img/2-源码安装Python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Python3/img/2-源码安装Python.png
--------------------------------------------------------------------------------
/Python3/img/3-MacOS安装Python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Python3/img/3-MacOS安装Python.png
--------------------------------------------------------------------------------
/Python3/img/cpp_break_statement.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Python3/img/cpp_break_statement.jpg
--------------------------------------------------------------------------------
/Python3/img/decision_making.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Python3/img/decision_making.jpg
--------------------------------------------------------------------------------
/Python3/img/python_for_loop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Python3/img/python_for_loop.jpg
--------------------------------------------------------------------------------
/Python3/img/python_while_loop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Python3/img/python_while_loop.jpg
--------------------------------------------------------------------------------
/Redis/1-Redis内存淘汰策略.md:
--------------------------------------------------------------------------------
1 | # Redis内存淘汰策略
2 |
3 |
4 | ## Redis淘汰策略
5 |
6 | 当达到最大内存```maxmemory```限制时,使用```maxmemory-policy```配置指令配置Redis的确切行为。
7 | 配置方式: maxmemory-policy options,默认为
8 |
9 | - **noeviction**: 不会移除任何key,在写的时候直接返回error
10 | - **volatile-lru** : 使用LRU算法清除过期的key
11 | - **allkeys-lru** : 使用LRU算法清除key
12 | - **volatile-lfu** : 使用LFU算法清除过期的key
13 | - **allkeys-lfu** : 使用LFU算法清除key
14 | - **volatile-random** : 在过期的key中随机移除一个key
15 | - **allkeys-random** : 在所有key中随机移除一个key
16 | - **volatile-ttl** : 移除具有具有最近过期时间的key
17 |
18 |
19 | - [Redis-缓存](https://redis.io/topics/lru-cache)
--------------------------------------------------------------------------------
/Redis/10-Redis面试热点问题.md:
--------------------------------------------------------------------------------
1 | # Redis面试热点问题.
2 |
3 | - 1[Redis架构之防雪崩设计](https://mp.weixin.qq.com/s/TBCEwLVAXdsTszRVpXhVug)
4 |
5 | - 2.[Redis的内存优化](https://cachecloud.github.io/2017/02/16/Redis%E5%86%85%E5%AD%98%E4%BC%98%E5%8C%96/)
6 |
7 | - 3.[Redis的Linux系统优化](https://cachecloud.github.io/2017/02/16/Redis%E7%9A%84Linux%E7%B3%BB%E7%BB%9F%E4%BC%98%E5%8C%96/)
8 |
9 | - 4.[Redis客户端常见异常分析](https://cachecloud.github.io/2017/02/20/Redis%E7%83%AD%E7%82%B9key%E5%AF%BB%E6%89%BE%E4%B8%8E%E4%BC%98%E5%8C%96/)
10 |
11 | - 5.[Redis热点key寻找与优化](https://cachecloud.github.io/2017/02/20/Redis%E7%83%AD%E7%82%B9key%E5%AF%BB%E6%89%BE%E4%B8%8E%E4%BC%98%E5%8C%96/)
12 |
13 | - 6.[Redis无限全量复制问题分析与优化](https://cachecloud.github.io/2016/11/24/%E5%85%A8%E9%87%8F%E5%A4%8D%E5%88%B6%E9%97%AE%E9%A2%98/)
14 |
--------------------------------------------------------------------------------
/Redis/2-Redis数据类型以及数据结构实现.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | #### 参考资料
4 |
5 | - [十二张图详解Redis的数据结构和对象系统](https://mp.weixin.qq.com/s?src=11×tamp=1561194655&ver=1684&signature=tiyZj*L1R1yHP3yQUcw6eJPJ1PWTRToOcqhrPvvKC7COAvC31Pp8BgTHiAjeVW7qWwQw9n7yzzEIqaSTH2Pv2NsazHjH7vvdfG6gUAiw0i2Lu7jn2C9UP9eAbmZo3iLV&new=1)
--------------------------------------------------------------------------------
/Redis/3-Redis缓存.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Redis/3-Redis缓存.md
--------------------------------------------------------------------------------
/Redis/5-Redis-Cluster集群.md:
--------------------------------------------------------------------------------
1 | # Redis集群
2 |
3 | ## Redis集群方案有哪些
4 |
5 | 有两种: **codis架构**、**官方的redis cluster**。
6 |
7 | ## codis集群架构
8 |
9 | codis是豌豆荚基于go编写的redis。
10 |
11 | ## 官方Redis Cluster集群方案
12 |
13 | 
14 |
15 | 特点:
16 |
17 | - Redis官网推出的,先行扩展可以达到1000个节点
18 | - 没有中心架构
19 | - 一致性哈希思想
20 | - 客户端直连redis
21 |
22 |
23 |
24 |
25 |
26 | - [redis缓存-单机、集群](https://www.cnblogs.com/fengli9998/p/6755591.html)
--------------------------------------------------------------------------------
/Redis/6-Redis分布式锁.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Redis/6-Redis分布式锁.md
--------------------------------------------------------------------------------
/Redis/7-Redis持久化.md:
--------------------------------------------------------------------------------
1 | # Redis持久化
2 |
3 | Redis支持两种数据持久化方式: **RDB**、**AOF**。
4 |
5 | ## RDB持久化
6 |
7 | >根据配置的规则定时将内存中的数据持久化到硬盘上
8 |
9 | 将redis在内存中的数据记录定时dump到磁盘上的RDB持久化。
10 |
11 | 在指定的时间间格里将内存中的数据集快照写入磁盘,实际上是fork一个子进程,先将数据写入临时文件,写入成功后,再替换之前的文件,二进制压缩。
12 |
13 |
14 |
15 | ## AOF持久化
16 |
17 | >每次执行写命令后将命令记录下来
18 |
19 | AOF是将redis的操作日志以追加的方式写入文件。
20 |
21 | 和mysql类似,用日志的形式记录服务器的每一个写、删除操作;以文本的方式记录;通过查看该文件可以查看到详细的操作细节。
22 |
23 |
--------------------------------------------------------------------------------
/Redis/8-Redis应用场景分析.md:
--------------------------------------------------------------------------------
1 | # Redis应用场景
2 |
3 | - 计数器
4 | - 排行榜
5 | - session
6 | - 发布订阅
7 | - 消息队列
8 |
9 | ## 实际场景
10 |
11 | ### 页面缓存
12 |
13 | 如果使用的是服务端内容渲染,可以使用redis将经常被请求的内容缓存起来,降低页面请求渲染的延迟
14 |
15 | ### 计数器/排行榜
16 |
17 | Redis是一个运行在内存中的C程序。
18 | Redis可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源。
19 |
20 | - 访问计数,用户每访问一次,计数就增加1
21 | - 排行榜: 可以按时间、按数量、按集赞数进行排行
22 |
23 | ### session
24 | 用户已经登陆的信息存放在redis中,每次用户更新或查询耕录信息可以直接从redis中获取。
25 |
26 | ### 消息队列
27 |
28 | 利用list数据类型可以构建一个简单高效的队列
29 |
30 | ### 发布订阅
31 |
32 | pub/sub 是Redis内置的发布订阅功能,可以创建多人在线聊天系统、通知触发等
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | #### 参考资料
54 |
55 | - [redis缓存-单机、集群](https://www.cnblogs.com/fengli9998/p/6755591.html)
--------------------------------------------------------------------------------
/Redis/999-Redis运维系统命令.md:
--------------------------------------------------------------------------------
1 | # Redis运维系统命令
2 |
3 | ## 下载解压
4 | ```
5 | wget http://download.redis.io/releases/redis-5.0.5.tar.gz
6 | tar xzf redis-5.0.5.tar.gz
7 | cd redis-5.0.5
8 | make
9 | ```
10 |
11 | ```shell
12 | tar -zxvf redis-5.0.5.tar.gz
13 | ```
14 |
15 | 进入根目录查看:
16 |
17 | ```shell
18 | 00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-moduleapi sentinel.conf tests
19 | BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel src utils
20 | ```
21 |
22 |
--------------------------------------------------------------------------------
/Redis/pictures/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Redis/pictures/1.jpg
--------------------------------------------------------------------------------
/Redis/pictures/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Redis/pictures/2.jpg
--------------------------------------------------------------------------------
/RocketMQ/1-RocketMQ技术设计架构.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/1-RocketMQ技术设计架构.png
--------------------------------------------------------------------------------
/RocketMQ/1-RocketMQ技术设计架构PPT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/1-RocketMQ技术设计架构PPT.png
--------------------------------------------------------------------------------
/RocketMQ/2-RocketMQ优势.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/2-RocketMQ优势.png
--------------------------------------------------------------------------------
/RocketMQ/3-生产者Broker消费者关系图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/3-生产者Broker消费者关系图.png
--------------------------------------------------------------------------------
/RocketMQ/4-BrokerServer模块.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/4-BrokerServer模块.png
--------------------------------------------------------------------------------
/RocketMQ/5-RocketMQ架构部署.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/5-RocketMQ架构部署.png
--------------------------------------------------------------------------------
/RocketMQ/6-Broker-Topic-Queue关系.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/6-Broker-Topic-Queue关系.png
--------------------------------------------------------------------------------
/RocketMQ/99999-附加资料.md:
--------------------------------------------------------------------------------
1 | # 附加资料
2 |
3 | - [去哪儿消息队列的研制](https://www.infoq.cn/article/b4VPvP3m8DA-PM7ZqMGZ)
4 | - [源码](https://mp.weixin.qq.com/s?__biz=MzIxODM2NTQ3OQ==&mid=2247484302&idx=1&sn=6e0a635ef969595941481795f7a55c12&chksm=97eae8c6a09d61d0a29f8d831053d9ef8009efaa52f18ae17359bdf7a04d258990ff551f1421&scene=27#wechat_redirect)
5 |
--------------------------------------------------------------------------------
/RocketMQ/blog/1-download1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/blog/1-download1.png
--------------------------------------------------------------------------------
/RocketMQ/blog/1-download2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/blog/1-download2.png
--------------------------------------------------------------------------------
/RocketMQ/blog/1-download3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/blog/1-download3.png
--------------------------------------------------------------------------------
/RocketMQ/blog/1-download4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/blog/1-download4.png
--------------------------------------------------------------------------------
/RocketMQ/blog/1-download5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/blog/1-download5.png
--------------------------------------------------------------------------------
/RocketMQ/pictures/0-console控制台-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/pictures/0-console控制台-1.png
--------------------------------------------------------------------------------
/RocketMQ/pictures/1-console控制台-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/pictures/1-console控制台-1.png
--------------------------------------------------------------------------------
/RocketMQ/pictures/1-console控制台-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/pictures/1-console控制台-2.png
--------------------------------------------------------------------------------
/RocketMQ/pictures/1-console控制台-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/RocketMQ/pictures/1-console控制台-3.png
--------------------------------------------------------------------------------
/Spring/0-Spring概览相关重要类.md:
--------------------------------------------------------------------------------
1 |
2 | - BeanFactory : Spring框架的核心,实现了许多核心功能
3 | - ApplicationContext 是Context模块的核心接口
4 |
--------------------------------------------------------------------------------
/Spring/1-IOC相关.md:
--------------------------------------------------------------------------------
1 | # IOC相关
2 |
3 | - BeanDefinition
4 | - DefaultResourceLoader
5 | - XmlBeanDefinitionReader
6 | - BeanDefinitionRegistry
7 | - BeanFactory
8 | - DefaultListableBeanFactory
9 | - AutowireCapableBeanFactory
10 | - AbstractAutowireCapableBeanFactory
11 | - SingletonBeanRegistry
12 | - DefaultSingletonBeanRegistry
13 |
14 | 
15 |
16 |
--------------------------------------------------------------------------------
/Spring/2-SpringMVC原理解析.md:
--------------------------------------------------------------------------------
1 | # SpringMVC原理解析
2 |
3 | - 传统MVC流程(servlet、jsp)
4 | - SpringMVC具体执行流程
5 | - HandlerMapping详解
6 | - HandlerAdaptor详解
7 | - ViewResolver与View详解
8 | - HandlerExceptionSolver详解
9 | - HandlerInterceptor详解
10 |
11 | 
12 |
13 |
--------------------------------------------------------------------------------
/Spring/3-SpringAOP.md:
--------------------------------------------------------------------------------
1 | # Spring AOP 详解
2 |
3 | AOP: 面向切面编程;实际开发中,除了主业务流程之外,还会产生横切方向的需求,比如一个电商流程中,每个主业务流程中都可能会产生横切方面的需求:包括接口耗时、事务处理、多数据源的切换等。
4 |
5 | 
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Spring/4-过滤器.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/4-过滤器.md
--------------------------------------------------------------------------------
/Spring/5-拦截器.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/5-拦截器.md
--------------------------------------------------------------------------------
/Spring/7-XML自定义模式扩展.md:
--------------------------------------------------------------------------------
1 | # XML自定义模式扩展
2 |
3 |
4 | ```org.springframework.beans.factory.config.FieldRetrievingFactoryBean```
5 |
6 | #### 参考资料
7 |
8 | - [Spring官网文档](https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html)
9 | - [Spring Schemal](http://www.springframework.org/schema/)
--------------------------------------------------------------------------------
/Spring/pictures/Spring-bean注册流程.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/Spring-bean注册流程.png
--------------------------------------------------------------------------------
/Spring/pictures/Spring-tx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/Spring-tx.png
--------------------------------------------------------------------------------
/Spring/pictures/SpringAOP-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/SpringAOP-1.jpg
--------------------------------------------------------------------------------
/Spring/pictures/SpringAOP-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/SpringAOP-1.png
--------------------------------------------------------------------------------
/Spring/pictures/SpringMVC处理流程.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/SpringMVC处理流程.png
--------------------------------------------------------------------------------
/Spring/pictures/Spring事务传播性---PROPAGATION_REQUIRED.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/Spring事务传播性---PROPAGATION_REQUIRED.png
--------------------------------------------------------------------------------
/Spring/pictures/Spring事务传播性---PROPAGATION_REQUIRES_NEW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/Spring事务传播性---PROPAGATION_REQUIRES_NEW.png
--------------------------------------------------------------------------------
/Spring/pictures/Spring声明式事务代理调用方法的概念视图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Spring/pictures/Spring声明式事务代理调用方法的概念视图.png
--------------------------------------------------------------------------------
/SpringBoot/pictures/1-starter/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringBoot/pictures/1-starter/1.png
--------------------------------------------------------------------------------
/SpringCloud/0-SpringCloud资料链接.md:
--------------------------------------------------------------------------------
1 | # SpringCloud资料链接
2 |
3 | - https://spring.io/projects/spring-cloud
4 | - https://www.javainuse.com/spring/springcloud
5 | - https://www.baeldung.com/spring-cloud-tutorial
6 | - https://www.fangzhipeng.com/spring-cloud.html
7 | - https://cloud.spring.io/spring-cloud-static/Greenwich.RELEASE/single/spring-cloud.html
8 |
--------------------------------------------------------------------------------
/SpringCloud/8-SpringCloud-Config高可用架构.md:
--------------------------------------------------------------------------------
1 | # SpringCloud-Config高可用架构
2 |
3 | 我们利用 **eureka服务注册中心**、**ribbon负载均衡**、**zuul服务路由、过滤**、**springcloud config** 组件来实现一个高可用的Spring Config架构:
4 |
5 | 
6 |
7 | - 建立远程git仓库
8 | - 搭建eureka服务发现注册中心
9 | - config-server集群注册到eureka中,config-server连接到远程git仓库
10 | - 搭建config-client集群(即业务服务)
11 | - config-client 通过 ribbon负载均衡调用 config-server
12 | - 搭建zuul路由转发服务,映射到config-client的配置
13 | - 用户请求,通过zuul路由转发
14 |
15 |
16 | **总览**
17 |
18 | 用户发起请求,通过zuul转发到config-client的某一个实例,config-client通过负载均衡调用config-server从远程git获取配置信息。
--------------------------------------------------------------------------------
/SpringCloud/999-附加参考资料.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | - [Spring-cloud-netflix](https://github.com/spring-cloud/spring-cloud-netflix)
4 | - [Spring Cloud Alibaba](https://www.cnblogs.com/forezp/p/10136433.html)
5 | - [springboot启动原理](https://www.cnblogs.com/shamo89/p/8184960.html)
--------------------------------------------------------------------------------
/SpringCloud/pictures/config-ha/1-高可用的SpringCloud-config架构.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/config-ha/1-高可用的SpringCloud-config架构.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/eureka/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/eureka/1.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/eureka/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/eureka/2.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/eureka/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/eureka/3.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/eureka/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/eureka/4.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/eureka/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/eureka/5.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/hystrix/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/hystrix/1.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/hystrix/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/hystrix/2.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/hystrixboard/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/hystrixboard/1.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/hystrixboard/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/hystrixboard/2.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/ribbon/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/ribbon/1.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/ribbon/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/ribbon/2.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/ribbon/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/ribbon/3.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/zuul/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/zuul/1.png
--------------------------------------------------------------------------------
/SpringCloud/pictures/zuul/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/SpringCloud/pictures/zuul/2.png
--------------------------------------------------------------------------------
/XML/2-dom4j解析XML.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/XML/2-dom4j解析XML.md
--------------------------------------------------------------------------------
/XML/3-XPath解析XML.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/XML/3-XPath解析XML.md
--------------------------------------------------------------------------------
/XML/img/1576049327234.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/XML/img/1576049327234.png
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/1-一般性主从架构.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/1-一般性主从架构.jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/2-CMW.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/2-CMW.jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/2-zkservice.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/2-zkservice.jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置一.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置一.png
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置三.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置三.png
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置二.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置二.png
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置五.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置五.png
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置四.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/3-单机集群配置四.png
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/4-会话在服务器之间转移.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/4-会话在服务器之间转移.png
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-1.jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2Zk选举过程.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2Zk选举过程.jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(延迟选举时长).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(延迟选举时长).jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(异常情况).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(异常情况).jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(正常).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2ZooKeeper内部原理三--ZooKeeper选举过程(正常).jpg
--------------------------------------------------------------------------------
/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2服务器选举状态.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/Zokeeper/Zookeeper分布式过程协同技术详解Note/pictures/chapter9-2服务器选举状态.jpg
--------------------------------------------------------------------------------
/dlzd-qrcode.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/dlzd-qrcode.gif
--------------------------------------------------------------------------------
/dlzdgzh.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/dlzdgzh.jpg
--------------------------------------------------------------------------------
/javassist指南/0-javassist编程指南概览.md:
--------------------------------------------------------------------------------
1 | # javassist编程指南(主译)
2 |
3 | ## javassist是什么?
4 |
5 | - Javassist(Java 编程辅助)使得Java字节码操作更简单。
6 | - Javassist可用于编辑字节码的类库。
7 | - 允许Java程序可以在运行时定义一个新的class、在JVM加载时修改class文件。
8 |
9 | 不像其它的字节码编辑器,javassist提供了2各层次的API:源码级别、字节码级别。如果用户使用了源码级别的API,就可以在不了解Java字节码规范的情况下编辑class文件。整个API是基于Java语言词汇设计的。你甚至可以以源码文本形式指定插入字节码,javassist编译它是非常快的。另一方面。字节码层次的API允许用户像其它编辑器一样直接编辑class文件。
10 |
11 | ## 引入javassist的Maven依赖
12 |
13 | ```xml
14 |
15 | org.javassist
16 | javassist
17 | 3.22.0-GA
18 |
19 | ```
20 |
21 | ## 使用javassist进行编程
22 |
23 | [javassist官网](http://www.javassist.org/):[官方指南](http://www.javassist.org/tutorial/tutorial.html)
24 |
25 | - 1.[读、写字节码]()
26 | - 2.[ClassPool]()
27 | - 3.[Class loader]()
28 | - 4.[Introspection and customization]()
29 | - 5.[Bytecode level API]()
30 | - 6.[Generics]()
31 | - 7.[Varargs]()
32 | - 8.[J2ME]()
33 | - 9.[Boxing/Unboxing]()
34 | - 10.[Debug]()
35 |
36 |
--------------------------------------------------------------------------------
/javassist指南/5-字节码级别API.md:
--------------------------------------------------------------------------------
1 | # 字节码级别API
2 |
3 |
--------------------------------------------------------------------------------
/mvn-local-plugin-use/README.md:
--------------------------------------------------------------------------------
1 | 这是如何使用一个自定义插件的示例
--------------------------------------------------------------------------------
/mvn-local-plugin-use/src/main/java/Demo.java:
--------------------------------------------------------------------------------
1 | public class Demo {
2 | public static void main(String[] args){
3 | System.out.println("使用自定义插件。。。");
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/mvn-local-plugin-use/target/classes/Demo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mvn-local-plugin-use/target/classes/Demo.class
--------------------------------------------------------------------------------
/mvn-local-plugin-use/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst:
--------------------------------------------------------------------------------
1 | Demo.class
2 |
--------------------------------------------------------------------------------
/mvn-local-plugin-use/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst:
--------------------------------------------------------------------------------
1 | F:\217my_optLogs\001系统相关\系统设计\007\CookBook\mvn-local-plugin-use\src\main\java\Demo.java
2 |
--------------------------------------------------------------------------------
/mvn-local-plugin/README.md:
--------------------------------------------------------------------------------
1 | 这是一个自定义插件的示例
--------------------------------------------------------------------------------
/mvn-local-plugin/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | 4.0.0
7 |
8 | org.byron4j
9 | 0.0.1-SNAPSHOT
10 | mvn-local-plugin
11 |
12 | maven-plugin
13 |
14 |
15 | 3.0
16 |
17 |
18 |
19 |
20 |
21 | org.apache.maven
22 | maven-plugin-api
23 | ${maven.version}
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/mvn-local-plugin/target/classes/org/byron4j/CountMojo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mvn-local-plugin/target/classes/org/byron4j/CountMojo.class
--------------------------------------------------------------------------------
/mvn-local-plugin/target/maven-archiver/pom.properties:
--------------------------------------------------------------------------------
1 | #Generated by Maven
2 | #Sun Apr 28 12:43:25 CST 2019
3 | version=0.0.1-SNAPSHOT
4 | groupId=org.byron4j
5 | artifactId=mvn-local-plugin
6 |
--------------------------------------------------------------------------------
/mvn-local-plugin/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst:
--------------------------------------------------------------------------------
1 | org\byron4j\CountMojo.class
2 |
--------------------------------------------------------------------------------
/mvn-local-plugin/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst:
--------------------------------------------------------------------------------
1 | F:\217my_optLogs\001系统相关\系统设计\007\CookBook\mvn-local-plugin\src\main\java\org\byron4j\CountMojo.java
2 |
--------------------------------------------------------------------------------
/mvn-local-plugin/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mvn-local-plugin/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
--------------------------------------------------------------------------------
/mvn-local-plugin/target/mvn-local-plugin-0.0.1-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mvn-local-plugin/target/mvn-local-plugin-0.0.1-SNAPSHOT.jar
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/bin/com/crfchina/bd/mapper/CrfBankcardOptRecordMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/bin/com/crfchina/bd/mapper/CrfBankcardOptRecordMapper.class
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/bin/com/crfchina/bd/mode/CrfBankcardOptRecord.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/bin/com/crfchina/bd/mode/CrfBankcardOptRecord.class
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/bin/lcw/dao/AAA.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/bin/lcw/dao/AAA.class
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/bin/lcw/dao/CrfLoanClaimInfoMapper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/bin/lcw/dao/CrfLoanClaimInfoMapper.class
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/bin/lcw/model/CrfLoanClaimInfo.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/bin/lcw/model/CrfLoanClaimInfo.class
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/generatorConfig.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/generatorConfig.xml
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/mybatis-generator-core-1.3.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/mybatis-generator-core-1.3.2.jar
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/mysql-connector-java-5.1.27.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/mysql-connector-java-5.1.27.jar
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/sqlite-jdbc-3.14.2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/mybatis-gener2/mybatisGeneral/sqlite-jdbc-3.14.2.1.jar
--------------------------------------------------------------------------------
/mybatis-gener2/mybatisGeneral/命令.txt:
--------------------------------------------------------------------------------
1 | java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
2 |
--------------------------------------------------------------------------------
/mybatis-gener2/生成语句.txt:
--------------------------------------------------------------------------------
1 | java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
2 |
--------------------------------------------------------------------------------
/org/byron4j/cookbook/javaagent/Javassist2ClassPool.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/org/byron4j/cookbook/javaagent/Javassist2ClassPool.class
--------------------------------------------------------------------------------
/org/byron4j/cookbook/javaagent/Point.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/org/byron4j/cookbook/javaagent/Point.class
--------------------------------------------------------------------------------
/org/byron4j/cookbook/javaagent/Rectangle.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/org/byron4j/cookbook/javaagent/Rectangle.class
--------------------------------------------------------------------------------
/pictures/gtcom2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/pictures/gtcom2.jpg
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/CookbookApplication.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook;
2 |
3 | import com.spring4all.swagger.EnableSwagger2Doc;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 |
8 | @SpringBootApplication
9 | //@ComponentScan("org.byron4j.cookbook")
10 | @EnableSwagger2Doc
11 | public class CookbookApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(CookbookApplication.class, args);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/algrithms/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.algrithms;
2 |
3 | /*
4 | 算法
5 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/dbconnpool/c3p0/Ch01.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.dbconnpool.c3p0;
2 |
3 | import com.mchange.v2.c3p0.ComboPooledDataSource;
4 |
5 | import java.beans.PropertyVetoException;
6 | import java.sql.Connection;
7 | import java.sql.ResultSet;
8 | import java.sql.Statement;
9 |
10 | /**
11 | * @program: cookbook
12 | * @author: Byron
13 | * @create: 2019/07/19
14 | */
15 | public class Ch01 {
16 | public static void main(String[] args) {
17 | ComboPooledDataSource dcp = new ComboPooledDataSource();
18 | try {
19 | dcp.setDriverClass("com.mysql.jdbc.Driver");
20 | dcp.setJdbcUrl("jdbc:mysql://localhost/mydb");
21 | dcp.setUser("root");
22 | dcp.setPassword("root");
23 | Connection connection = dcp.getConnection();
24 | Statement statement = connection.createStatement();
25 | String sql = "select * from student";
26 | ResultSet resultSet = statement.executeQuery(sql);
27 | while(resultSet.next()){
28 | System.out.println(resultSet.getString(1));
29 | }
30 | } catch (Exception e) {
31 | e.printStackTrace();
32 | }
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/dbconnpool/c3p0/Ch02.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.dbconnpool.c3p0;
2 |
3 | import com.mchange.v2.c3p0.ComboPooledDataSource;
4 |
5 | import java.sql.Connection;
6 | import java.sql.ResultSet;
7 | import java.sql.Statement;
8 |
9 | /**
10 | * @program: cookbook
11 | * @author: Byron
12 | * @create: 2019/07/19
13 | */
14 | public class Ch02 {
15 | public static void main(String[] args) {
16 | ComboPooledDataSource dcp = new ComboPooledDataSource();
17 | try {
18 | /*dcp.setDriverClass("com.mysql.jdbc.Driver");
19 | dcp.setJdbcUrl("jdbc:mysql://localhost/mydb");
20 | dcp.setUser("root");
21 | dcp.setPassword("root");*/
22 | Connection connection = dcp.getConnection();
23 | Statement statement = connection.createStatement();
24 | String sql = "select * from student";
25 | ResultSet resultSet = statement.executeQuery(sql);
26 | while(resultSet.next()){
27 | System.out.println(resultSet.getString(1));
28 | }
29 | } catch (Exception e) {
30 | e.printStackTrace();
31 | }
32 |
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/dbconnpool/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.dbconnpool;
2 |
3 | /*
4 | 数据库连接池的应用
5 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/adapter/AbstractAccount.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.adapter;
2 |
3 | public class AbstractAccount implements Account {
4 | /**
5 | * 账户余额
6 | */
7 | private double balance;
8 | /**
9 | * 是否可以透支
10 | */
11 | private boolean isOverdraftAvailable;
12 |
13 | public AbstractAccount(final double size) {
14 | this.balance = size;
15 | }
16 |
17 | @Override
18 | public double getBalance() {
19 | return balance;
20 | }
21 |
22 | @Override
23 | public boolean isOverdraftAvailable() {
24 | return isOverdraftAvailable;
25 | }
26 |
27 | public void setOverdraftAvailable(boolean isOverdraftAvailable) {
28 | this.isOverdraftAvailable = isOverdraftAvailable;
29 | }
30 |
31 | @Override
32 | public String toString() {
33 | return getClass().getSimpleName() + " Balance=" + getBalance()
34 | + " Overdraft:" + isOverdraftAvailable();
35 | }
36 |
37 | @Override
38 | public void credit(final double credit) {
39 | balance += credit;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/adapter/Account.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.adapter;
2 |
3 | /**
4 | * 账户接口类型
5 | */
6 | public interface Account {
7 | /**
8 | * 获取账户余额
9 | * @return
10 | */
11 | public double getBalance();
12 |
13 | /**
14 | * 是否可以透支
15 | * @return
16 | */
17 | public boolean isOverdraftAvailable();
18 |
19 | /**
20 | * 贷款; 贷款后账户余额增多
21 | * @param credit
22 | */
23 | public void credit(final double credit);
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/adapter/OffshoreAccount.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.adapter;
2 |
3 |
4 | /**
5 | * 离岸账户
6 | */
7 | public class OffshoreAccount {
8 |
9 | private double balance;
10 |
11 | /**税率*/
12 | private static final double TAX_RATE = 0.03;
13 |
14 | public OffshoreAccount(final double balance) {
15 | this.balance = balance;
16 | }
17 |
18 | public double getTaxRate() {
19 | return TAX_RATE;
20 | }
21 |
22 | public double getOffshoreBalance() {
23 | return balance;
24 | }
25 |
26 | public void debit(final double debit) {
27 | if (balance >= debit) {
28 | balance -= debit;
29 | }
30 | }
31 |
32 | public void credit(final double credit) {
33 | balance += balance;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/adapter/PlatinumAccount.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.adapter;
2 |
3 | /**
4 | * 白金帐户: 可以透支
5 | */
6 | public class PlatinumAccount extends AbstractAccount {
7 |
8 | public PlatinumAccount(final double balance) {
9 | super(balance);
10 | // 可以透支
11 | setOverdraftAvailable(true);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/adapter/StandardAccount.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.adapter;
2 |
3 | /**
4 | * 普通账户: 不能透支
5 | */
6 | public class StandardAccount extends AbstractAccount {
7 |
8 | public StandardAccount(final double balance) {
9 | super(balance);
10 | // 不能透支
11 | setOverdraftAvailable(false);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/builder/MealBuilder.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.builder;
2 |
3 | /**
4 | * 建造者接口类
5 | */
6 | public interface MealBuilder {
7 |
8 | void addSandwich(String sandwich);
9 | void addSides(String sides);
10 | void addDrink(String drink);
11 | void addOffer(String offer);
12 | void setPrice(double price);
13 | Meal getMeal();
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/builder/MealDirector.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.builder;
2 |
3 | /**
4 | * 角色扮演: 咖啡餐馆
5 | */
6 | public class MealDirector {
7 |
8 | public static void makeMeal(MealBuilder mealBuilder){
9 | mealBuilder.addSandwich("Hamburger");
10 | mealBuilder.addSides("Fries");
11 | mealBuilder.addDrink("Coke");
12 | mealBuilder.addOffer("Weekend Bonanza");
13 | mealBuilder.setPrice(5.99);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/builder/SandwichBuilder.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.builder;
2 |
3 | /**
4 | * 建造者实现类
5 | */
6 | public class SandwichBuilder implements MealBuilder{
7 |
8 | /**
9 | * 依赖组合模式, 该Builder的操作实际是对meal进行的操作
10 | */
11 | private Meal meal = new Meal();
12 |
13 | @Override
14 | public void addSandwich(String sandwich) {
15 | meal.setSandwich(sandwich);
16 | }
17 |
18 | @Override
19 | public void addSides(String sides) {
20 | meal.setSideOrder(sides);
21 | }
22 |
23 | @Override
24 | public void addDrink(String drink) {
25 | meal.setDrink(drink);
26 | }
27 |
28 | @Override
29 | public void addOffer(String offer) {
30 | meal.setOffer(offer);
31 | }
32 |
33 | @Override
34 | public void setPrice(double price) {
35 | meal.setPrice(price);
36 | }
37 |
38 | @Override
39 | public Meal getMeal() {
40 | return meal;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/factory/LondonMobileFactory.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.factory;
2 |
3 | public class LondonMobileFactory extends MobileFactory {
4 | @Override
5 | public SpiceMobile constructMobile(String model) {
6 | SpiceMobile spiceMobile = null;
7 |
8 | if( "SpiceFire".equalsIgnoreCase(model) ){
9 | spiceMobile = new SpicePlus();
10 | spiceMobile.setPrice(300);
11 | }else if("SpiceBolt".equalsIgnoreCase(model)){
12 | spiceMobile = new SpiceBolt();
13 | spiceMobile.setPrice(400);
14 | }
15 |
16 | return spiceMobile;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/factory/MobileFactory.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.factory;
2 |
3 | public abstract class MobileFactory {
4 | public abstract SpiceMobile constructMobile(String model);
5 |
6 | /**
7 | * 这可以算是模板方法了...^_*
8 | * @param model
9 | * @return
10 | */
11 | public SpiceMobile produceMobile(String model){
12 | SpiceMobile spiceMobile = constructMobile(model);
13 | spiceMobile.prepare();
14 | spiceMobile.bundle();
15 | spiceMobile.label();
16 | return spiceMobile;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/factory/NYMobileFactory.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.factory;
2 |
3 | public class NYMobileFactory extends MobileFactory {
4 | @Override
5 | public SpiceMobile constructMobile(String model) {
6 | SpiceMobile spiceMobile = null;
7 |
8 | if( "SpiceFire".equalsIgnoreCase(model) ){
9 | spiceMobile = new SpicePlus();
10 | spiceMobile.setPrice(200);
11 | }else if("SpiceMono".equalsIgnoreCase(model)){
12 | spiceMobile = new SpiceFire();
13 | spiceMobile.setPrice(200);
14 | }
15 |
16 | return spiceMobile;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/factory/SpiceBolt.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.factory;
2 |
3 | public class SpiceBolt extends SpiceMobile {
4 | @Override
5 | public void prepare() {
6 |
7 | }
8 |
9 | @Override
10 | public void bundle() {
11 |
12 | }
13 |
14 | @Override
15 | public void label() {
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/factory/SpiceFire.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.factory;
2 |
3 | public class SpiceFire extends SpiceMobile {
4 | @Override
5 | public void prepare() {
6 |
7 | }
8 |
9 | @Override
10 | public void bundle() {
11 |
12 | }
13 |
14 | @Override
15 | public void label() {
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/factory/SpiceMobile.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.factory;
2 |
3 | import lombok.ToString;
4 |
5 | @ToString
6 | public abstract class SpiceMobile {
7 | public double price;
8 |
9 | public double getPrice() {
10 | return price;
11 | }
12 |
13 | public void setPrice(double price) {
14 | this.price = price;
15 | }
16 |
17 | public abstract void prepare();
18 | public abstract void bundle();
19 | public abstract void label();
20 |
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/factory/SpicePlus.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.factory;
2 |
3 | public class SpicePlus extends SpiceMobile {
4 | @Override
5 | public void prepare() {
6 |
7 | }
8 |
9 | @Override
10 | public void bundle() {
11 |
12 | }
13 |
14 | @Override
15 | public void label() {
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/Observer.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer;
2 |
3 | /**
4 | * 观察者接口类
5 | */
6 | public interface Observer {
7 | public void update(String editon);
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/Subject.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer;
2 |
3 | /**
4 | * 主体
5 | */
6 | public interface Subject {
7 |
8 | /**
9 | * 注册主体
10 | * @param observer
11 | */
12 | public void registerObserver(Observer observer);
13 |
14 | /**
15 | * 移除订阅
16 | * @param observer
17 | */
18 | public void removeObserver(Observer observer);
19 |
20 | /**
21 | * 移除所有的观察者
22 | */
23 | public void notifyObservers();
24 |
25 | /**
26 | * 初始化主体相关信息
27 | */
28 | public void initObservers();
29 | }
30 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/Subscriber1.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 |
7 | /**
8 | * 观察者1
9 | */
10 | @AllArgsConstructor
11 | @Data
12 | @Builder
13 | public class Subscriber1 implements Observer {
14 | @Override
15 | public void update(String editon) {
16 | System.out.println("Subscriber1收到新的版本通知。" + editon);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/Subscriber2.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 |
7 | /**
8 | * 观察者2
9 | */
10 | @AllArgsConstructor
11 | @Data
12 | @Builder
13 | public class Subscriber2 implements Observer {
14 | @Override
15 | public void update(String editon) {
16 | System.out.println("Subscriber2收到新的版本通知。" + editon);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/other/BinObserver.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer.other;
2 |
3 | class BinObserver extends Observer {
4 | public BinObserver(Subject subject) {
5 | this.subject = subject;
6 | this.subject.add(this);
7 | }
8 |
9 | public void update() {
10 | System.out.print(" " + Integer.toBinaryString(subject.getState()));
11 | }
12 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/other/HexObserver.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer.other;
2 |
3 | class HexObserver extends Observer {
4 | public HexObserver(Subject subject) {
5 | this.subject = subject;
6 | this.subject.add(this);
7 | }
8 |
9 | public void update() {
10 | System.out.print(" " + Integer.toHexString(subject.getState()));
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/other/Observer.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer.other;
2 |
3 | abstract class Observer {
4 | protected Subject subject;
5 | public abstract void update();
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/other/ObserverTest.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer.other;
2 |
3 |
4 | import java.util.Scanner;
5 |
6 | public class ObserverTest {
7 | public static void main( String[] args ) {
8 | Subject sub = new Subject();
9 | // Client configures the number and type of Observers
10 | new HexObserver(sub);
11 | new OctObserver(sub);
12 | new BinObserver(sub);
13 | Scanner scan = new Scanner(System.in);
14 | for (int i = 0; i < 5; i++) {
15 | System.out.print("\nEnter a number: ");
16 | sub.setState(scan.nextInt());
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/other/OctObserver.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer.other;
2 |
3 | class OctObserver extends Observer {
4 | public OctObserver(Subject subject) {
5 | this.subject = subject;
6 | this.subject.add( this );
7 | }
8 |
9 | public void update() {
10 | System.out.print(" " + Integer.toOctalString(subject.getState()));
11 | }
12 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/other/Subject.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer.other;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | class Subject {
7 | private List observers = new ArrayList<>();
8 | private int state;
9 |
10 | public void add(Observer o) {
11 | observers.add(o);
12 | }
13 |
14 | public int getState() {
15 | return state;
16 | }
17 |
18 | public void setState(int value) {
19 | this.state = value;
20 | execute();
21 | }
22 |
23 | private void execute() {
24 | for (Observer observer : observers) {
25 | observer.update();
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/observer/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.observer;
2 | /**
3 | 观察者模式
4 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/prototype/Cake.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.prototype;
2 |
3 | /**
4 | * 蛋糕的接口类型;可以clone
5 | */
6 | public interface Cake extends Cloneable{
7 | /**
8 | * 准备生产蛋糕
9 | * @return
10 | */
11 | public Cake prepareCake();
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/prototype/CakeStore.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.prototype;
2 |
3 | public class CakeStore {
4 | public static void main(String[] args){
5 | CheeseCake cheeseCake = CheeseCake.builder()
6 | .sugar("100g")
7 | .butter("200g")
8 | .cheese("Acapella")
9 | .build();
10 | System.out.println("已存在的实例:" + cheeseCake);
11 |
12 | // 利用原型模式自定义多个蛋糕
13 | CheeseCake cheeseCake1 = (CheeseCake) cheeseCake.prepareCake();
14 | cheeseCake1.setName("Byron");
15 | System.out.println("原型模式的第一个实例:" + cheeseCake1);
16 |
17 | CheeseCake cheeseCake2 = (CheeseCake) cheeseCake.prepareCake();
18 | cheeseCake2.setName("Joy");
19 | System.out.println("原型模式的第二个实例:" + cheeseCake2);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/prototype/CheeseCake.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.prototype;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 |
7 | @AllArgsConstructor
8 | @Data
9 | @Builder
10 | public class CheeseCake implements Cake{
11 |
12 | /**
13 | * 糖果
14 | */
15 | private String sugar;
16 |
17 | /**
18 | * 黄油
19 | */
20 | private String butter;
21 |
22 | /**
23 | * 芝士
24 | */
25 | private String cheese;
26 |
27 | /**
28 | * 用户姓名
29 | */
30 | private String name;
31 |
32 | @Override
33 | public Cake prepareCake() {
34 | Cake cake = null;
35 |
36 | /**
37 | * 克隆存在的实例
38 | */
39 | try {
40 | cake = (Cake)super.clone();
41 | } catch (CloneNotSupportedException e) {
42 | e.printStackTrace();
43 | }
44 | return cake;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/responsibilitychain/AbstractLeaveHandler.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.responsibilitychain;
2 |
3 | /**
4 | * @program: cookbook
5 | * @description: 请假责任链抽象处理类
6 | * @author: Byron
7 | * @create: 2019/07/11 09:34
8 | */
9 | public abstract class AbstractLeaveHandler {
10 | /**直接主管审批处理的请假天数*/
11 | protected int MIN = 1;
12 | /**部门经理处理的请假天数*/
13 | protected int MIDDLE = 3;
14 | /**总经理处理的请假天数*/
15 | protected int MAX = 30;
16 |
17 | /**领导名称*/
18 | protected String handlerName;
19 |
20 | /**下一个处理节点(即更高级别的领导)*/
21 | protected AbstractLeaveHandler nextHandler;
22 |
23 | /**设置下一节点*/
24 | protected void setNextHandler(AbstractLeaveHandler handler){
25 | this.nextHandler = handler;
26 | }
27 |
28 | /**处理请假的请求,子类实现*/
29 | abstract void handlerRequest(LeaveRequest request);
30 |
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/responsibilitychain/DeptManagerLeaveHandler.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.responsibilitychain;
2 |
3 | /**
4 | * @program: cookbook
5 | * @description: 部门经理处理类
6 | * @author: Byron
7 | * @create: 2019/07/11 09:48
8 | */
9 | public class DeptManagerLeaveHandler extends AbstractLeaveHandler {
10 |
11 | public DeptManagerLeaveHandler(String name) {
12 | this.handlerName = name;
13 | }
14 |
15 | @Override
16 | protected void handlerRequest(LeaveRequest request) {
17 | if(request.getLeaveDays() <= this.MIDDLE){
18 | System.out.println("部门经理:" + handlerName + ",已经处理;流程结束。");
19 | return;
20 | }
21 |
22 | if(null != this.nextHandler){
23 | this.nextHandler.handlerRequest(request);
24 | }else{
25 | System.out.println("审批拒绝!");
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/responsibilitychain/DirectLeaderLeaveHandler.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.responsibilitychain;
2 |
3 | /**
4 | * @program: cookbook
5 | * @description: 直接主管处理类
6 | * @author: Byron
7 | * @create: 2019/07/11 09:46
8 | */
9 | public class DirectLeaderLeaveHandler extends AbstractLeaveHandler{
10 | public DirectLeaderLeaveHandler(String name) {
11 | this.handlerName = name;
12 | }
13 |
14 | @Override
15 | protected void handlerRequest(LeaveRequest request) {
16 | if(request.getLeaveDays() <= this.MIN){
17 | System.out.println("直接主管:" + handlerName + ",已经处理;流程结束。");
18 | return;
19 | }
20 |
21 | if(null != this.nextHandler){
22 | this.nextHandler.handlerRequest(request);
23 | }else{
24 | System.out.println("审批拒绝!");
25 | }
26 |
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/responsibilitychain/GManagerLeaveHandler.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.responsibilitychain;
2 |
3 | /**
4 | * @program: cookbook
5 | * @description: 总经理处理类
6 | * @author: Byron
7 | * @create: 2019/07/11 09:49
8 | */
9 | public class GManagerLeaveHandler extends AbstractLeaveHandler {
10 | public GManagerLeaveHandler(String name) {
11 | this.handlerName = name;
12 | }
13 |
14 | @Override
15 | protected void handlerRequest(LeaveRequest request) {
16 | if(request.getLeaveDays() <= this.MAX){
17 | System.out.println("总经理:" + handlerName + ",已经处理;流程结束。");
18 | return;
19 | }
20 |
21 | if(null != this.nextHandler){
22 | this.nextHandler.handlerRequest(request);
23 | }else{
24 | System.out.println("审批拒绝!");
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/responsibilitychain/LeaveRequest.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.responsibilitychain;
2 |
3 | import lombok.*;
4 |
5 | /**
6 | * @program: cookbook
7 | * @description: 请假请求类
8 | * @author: Byron
9 | * @create: 2019/07/11 09:44
10 | */
11 | @Setter
12 | @Getter
13 | @NoArgsConstructor
14 | @AllArgsConstructor
15 | @Builder
16 | public class LeaveRequest {
17 | /**天数*/
18 | private int leaveDays;
19 |
20 | /**姓名*/
21 | private String name;
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/responsibilitychain/ResponsibilityTest.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.responsibilitychain;
2 |
3 | /**
4 | * @program: cookbook
5 | * @description: 责任链模式测试案例
6 | * @author: Byron
7 | * @create: 2019/07/11 09:59
8 | */
9 | public class ResponsibilityTest {
10 | public static void main(String[] args) {
11 | LeaveRequest request = LeaveRequest.builder().leaveDays(3).name("小明").build();
12 |
13 |
14 | AbstractLeaveHandler directLeaderLeaveHandler = new DirectLeaderLeaveHandler("县令");
15 | DeptManagerLeaveHandler deptManagerLeaveHandler = new DeptManagerLeaveHandler("知府");
16 | GManagerLeaveHandler gManagerLeaveHandler = new GManagerLeaveHandler("京兆尹");
17 |
18 | directLeaderLeaveHandler.setNextHandler(deptManagerLeaveHandler);
19 | deptManagerLeaveHandler.setNextHandler(gManagerLeaveHandler);
20 |
21 | directLeaderLeaveHandler.handlerRequest(request);
22 |
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/responsibilitychain/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.responsibilitychain;
2 |
3 | /*
4 | 责任链模式
5 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/segregation/IMachine.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.segregation;
2 |
3 | /**
4 | * 施乐公司系统机器接口
5 | */
6 | public interface IMachine {
7 | /**
8 | * 打印
9 | */
10 | public void print();
11 |
12 | /**
13 | * 装订
14 | */
15 | public void staple();
16 |
17 | /**
18 | * 扫描
19 | */
20 | public void scan();
21 |
22 | /**
23 | * 复印
24 | */
25 | public void photoCopy();
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/segregation/XeroxMachine.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.segregation;
2 |
3 | public class XeroxMachine implements IMachine {
4 | @Override
5 | public void print() {
6 | System.out.println("打印任务...");
7 | }
8 |
9 | @Override
10 | public void staple() {
11 | System.out.println("装订任务...");
12 | }
13 |
14 | @Override
15 | public void scan() {
16 | System.out.println("扫描任务...");
17 | }
18 |
19 | @Override
20 | public void photoCopy() {
21 | System.out.println("复印任务...");
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/singleton/Singleton.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.singleton;
2 |
3 | /**
4 | * 单例模式实例
5 | * 1. 构造器私有化
6 | * 2. 提供静态方法供外部获取单例实例
7 | * 3. 延迟初始化实例
8 | */
9 | public class Singleton {
10 |
11 | private static Singleton instance;
12 |
13 | // 构造器私有化
14 | private Singleton(){
15 |
16 | }
17 |
18 | // 提供静态方法
19 | public static Singleton getInstance(){
20 |
21 | // 懒加载初始化,在第一次使用时才创建实例
22 | if(instance == null){
23 | instance = new Singleton();
24 | }
25 | return instance;
26 | }
27 |
28 |
29 | public void display(){
30 | System.out.println("Hurray! I am create as a Singleton!");
31 | }
32 |
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/singleton/SingletonSynchronized.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.singleton;
2 |
3 | /**
4 | * 单例模式实例
5 | * 1. 构造器私有化
6 | * 2. 提供静态方法供外部获取单例实例
7 | * 3. 延迟初始化实例
8 | */
9 | public class SingletonSynchronized {
10 |
11 | private static SingletonSynchronized instance;
12 |
13 | // 构造器私有化
14 | private SingletonSynchronized(){
15 |
16 | }
17 |
18 | // 提供静态方法
19 | public static synchronized SingletonSynchronized getInstance(){
20 |
21 | // 懒加载初始化,在第一次使用时才创建实例
22 | if(instance == null){
23 | instance = new SingletonSynchronized();
24 | }
25 | return instance;
26 | }
27 |
28 |
29 | public void display(){
30 | System.out.println("Hurray! I am create as a SingletonSynchronized!");
31 | }
32 |
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/singleton/SingletonSynchronizedOptimized.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.singleton;
2 |
3 | /**
4 | * 单例模式实例
5 | * 1. 构造器私有化
6 | * 2. 提供静态方法供外部获取单例实例
7 | * 3. 延迟初始化实例
8 | */
9 | public class SingletonSynchronizedOptimized {
10 |
11 | private static SingletonSynchronizedOptimized instance;
12 |
13 | // 构造器私有化
14 | private SingletonSynchronizedOptimized(){
15 |
16 | }
17 |
18 | // 提供静态方法
19 | public static SingletonSynchronizedOptimized getInstance(){
20 |
21 | // 将同步锁范围缩小,降低性能损耗
22 | if(instance == null){
23 | synchronized (SingletonSynchronizedOptimized.class){
24 | if(instance == null){
25 | instance = new SingletonSynchronizedOptimized();
26 | }
27 | }
28 | }
29 | return instance;
30 | }
31 |
32 |
33 | public void display(){
34 | System.out.println("Hurray! I am create as a SingletonSynchronizedOptimized!");
35 | }
36 |
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/singleton/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.singleton;
2 |
3 | /**
4 | 单例模式
5 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/DeadState.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 |
3 | public class DeadState implements PlayerState {
4 |
5 | @Override
6 | public void action(Player p) {
7 | p.dead();
8 | }
9 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/GameContext.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 |
3 | public class GameContext {
4 | private Player player = new Player();
5 |
6 | public void gameAction(String state) {
7 | if (state == "healthy") {
8 | player.attack();
9 | player.fireBumb();
10 | player.fireGunblade();
11 | player.fireLaserPistol();
12 | } else if (state == "survival") {
13 | player.survive();
14 | player.firePistol();
15 | } else if (state == "dead") {
16 | player.dead();
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/GameContextUpgrade.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 |
3 | public class GameContextUpgrade {
4 | private PlayerState state = null;
5 | private Player player = new Player();
6 |
7 | public void setState(PlayerState state) {
8 | this.state = state;
9 | }
10 |
11 | public void gameAction() {
12 | state.action(player);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/HealthyState.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 |
3 | public class HealthyState implements PlayerState {
4 |
5 | @Override
6 | public void action(Player p) {
7 | p.attack();
8 | p.fireBumb();
9 | p.fireGunblade();
10 | p.fireLaserPistol();
11 | }
12 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/Player.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 |
3 | public class Player {
4 | public void attack(){
5 | System.out.println("Attack");
6 | }
7 |
8 | public void fireBumb() {
9 | System.out.println("Fire Bomb");
10 | }
11 |
12 | public void fireGunblade() {
13 | System.out.println("Fire Gunblade");
14 | }
15 |
16 | public void fireLaserPistol() {
17 | System.out.println("Laser Pistols");
18 | }
19 |
20 | public void firePistol() {
21 | System.out.println("Fire Pistol");
22 | }
23 |
24 | public void survive() {
25 | System.out.println("Surviving!");
26 | }
27 |
28 | public void dead() {
29 | System.out.println("Dead! Game Over");
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/PlayerState.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 |
3 | public interface PlayerState {
4 | void action(Player p);
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/SurvivalState.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 |
3 | public class SurvivalState implements PlayerState {
4 |
5 | @Override
6 | public void action(Player p) {
7 | p.survive();
8 | p.firePistol();
9 | }
10 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/state/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.state;
2 | /**
3 | * 状态模式
4 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/strategy/InsertionSort.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.strategy;
2 |
3 | import java.util.Arrays;
4 |
5 | public class InsertionSort implements SortingStrategy {
6 |
7 | @Override
8 | public void sort(int[] numbers) {
9 | System.out.println("Insertion Sort!");
10 |
11 | for (int i = 1; i < numbers.length; i++) {
12 | int temp = numbers[i];
13 | int j;
14 | for (j = i - 1; (j >= 0) && (numbers[j] > temp); j--) {
15 | numbers[j + 1] = numbers[j];
16 | }
17 | numbers[j + 1] = temp;
18 | }
19 |
20 | System.out.println(Arrays.toString(numbers));
21 | }
22 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/strategy/SelectionSort.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.strategy;
2 |
3 | import java.util.Arrays;
4 |
5 | public class SelectionSort implements SortingStrategy {
6 |
7 | @Override
8 | public void sort(int[] numbers) {
9 | System.out.println("Selection Sort!");
10 |
11 | int i, j, first, temp;
12 | for (i = numbers.length - 1; i > 0; i--) {
13 | first = 0;
14 | for (j = 1; j <= i; j++) {
15 | if (numbers[j] > numbers[first]) {
16 | first = j;
17 | }
18 | }
19 | temp = numbers[first];
20 | numbers[first] = numbers[i];
21 | numbers[i] = temp;
22 | }
23 |
24 | System.out.println(Arrays.toString(numbers));
25 | }
26 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/strategy/SortingContext.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.strategy;
2 |
3 | public class SortingContext {
4 | private SortingStrategy strategy;
5 |
6 | public void setSortingMethod(SortingStrategy strategy) {
7 | this.strategy = strategy;
8 | }
9 |
10 | public SortingStrategy getStrategy() {
11 | return strategy;
12 | }
13 |
14 | public void sortNumbers(int[] numbers){
15 | strategy.sort(numbers);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/strategy/SortingStrategy.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.strategy;
2 |
3 | public interface SortingStrategy {
4 |
5 | public void sort(int[] numbers);
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/template/MexicanPizza.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.template;
2 |
3 | public class MexicanPizza extends Pizza {
4 | @Override
5 | public void chooseBread() {
6 | System.out.println("Choosing Mexican Pizza Bread!");
7 | }
8 |
9 | @Override
10 | public void addIngredients() {
11 | System.out.println("Adding Mexican Pizza Ingredients!");
12 | }
13 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/template/Pizza.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.template;
2 |
3 | public abstract class Pizza {
4 | public abstract void chooseBread();
5 | public abstract void addIngredients();
6 |
7 | public void heating() {
8 | System.out.println("Heating for 10 minutes!");
9 | }
10 |
11 | public void addTopinngs() {
12 | System.out.println("Adding Topinngs!");
13 | }
14 |
15 | public void addCheese() {
16 | System.out.println("Adding Cheese!");
17 | }
18 |
19 | // Template method
20 | public final void preparePizza() {
21 | chooseBread();
22 | addIngredients();
23 | heating();
24 | addCheese();
25 | addTopinngs();
26 | }
27 | }
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/template/SweetCornPizza.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.template;
2 |
3 | public class SweetCornPizza extends Pizza {
4 | @Override
5 | public void chooseBread() {
6 | System.out.println("Choosing SweetCorn Pizza Bread!");
7 | }
8 |
9 | @Override
10 | public void addIngredients() {
11 | System.out.println("Adding SweetCorn Pizza Ingredients!");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/template/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.template;
2 |
3 | /*
4 | 模板模式
5 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/wrapper/Car.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.wrapper;
2 |
3 |
4 | public interface Car {
5 | void run();
6 |
7 | void stop();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/wrapper/QeqCar.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.wrapper;
2 |
3 | /**
4 | * @program: cookbook
5 | * @author: Byron
6 | * @create: 2019/07/29
7 | */
8 | public class QeqCar implements Car {
9 | @Override
10 | public void run() {
11 | System.out.println("Qeq go...");
12 | }
13 |
14 | @Override
15 | public void stop() {
16 | System.out.println("Qeq stop!");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/wrapper/WrapperCar.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.wrapper;
2 |
3 | /**
4 | * @program: cookbook
5 | * @author: Byron
6 | * @create: 2019/07/29
7 | */
8 | public class WrapperCar implements Car {
9 |
10 | private Car car;
11 |
12 | public WrapperCar(Car car) {
13 | this.car = car;
14 | }
15 |
16 | @Override
17 | public void run() {
18 | System.out.println("wapper run...");
19 | }
20 |
21 | @Override
22 | public void stop() {
23 | car.stop();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/designpattern/wrapper/WrapperTest.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.designpattern.wrapper;
2 |
3 | import org.hibernate.validator.constraints.br.TituloEleitoral;
4 | import org.junit.Test;
5 |
6 | import java.io.FileInputStream;
7 |
8 | import static java.lang.System.in;
9 |
10 | /**
11 | * @program: cookbook
12 | * @author: Byron
13 | * @create: 2019/07/29
14 | */
15 | public class WrapperTest {
16 |
17 | @Test
18 | public void 装饰器模式测试(){
19 | Car car = new WrapperCar(new QeqCar());
20 | car.run();
21 | car.stop();
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/java8/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Byron4j/CookBook/1979653ec7eeee95c8422494e5af732e11b30efb/src/main/java/org/byron4j/cookbook/java8/.DS_Store
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/java8/basic/CompareJava8AndPreVersion.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.java8.basic;
2 |
3 | import org.junit.Test;
4 |
5 | /**
6 | * 比较java8与之前的编码方式
7 | */
8 | public class CompareJava8AndPreVersion {
9 |
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/Javassist3ClassLoader.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | public class Javassist3ClassLoader {
4 |
5 | public void say(){
6 | System.out.println("Hello!");
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/Javassist3ClassLoaderTest2.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | import javassist.*;
4 |
5 | public class Javassist3ClassLoaderTest2 {
6 |
7 | public static void main(String[] args) throws NotFoundException, CannotCompileException, IllegalAccessException, InstantiationException, ClassNotFoundException {
8 | ClassPool pool = ClassPool.getDefault();
9 | // 使用ClassPool创建Loader
10 | Loader cl = new Loader(pool);
11 |
12 | CtClass ct = pool.get("org.byron4j.cookbook.javaagent.Rectangle");
13 | ct.setSuperclass(pool.get("org.byron4j.cookbook.javaagent.Point"));
14 |
15 | Class> c = cl.loadClass("org.byron4j.cookbook.javaagent.Rectangle");
16 | Object o = c.newInstance();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/Javassist3ClassLoaderTest3.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | import javassist.*;
4 |
5 | public class Javassist3ClassLoaderTest3 {
6 |
7 | public static void main(String[] args) throws Throwable {
8 | Translator t = new MyTranslator();
9 | ClassPool cp = ClassPool.getDefault();
10 | Loader loader = new Loader();
11 | loader.addTranslator(cp, t);
12 | loader.run("org.byron4j.cookbook.javaagent.Point", args);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/MyClassLoader.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | public class MyClassLoader extends ClassLoader{
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/MyTranslator.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | import javassist.*;
4 |
5 | public class MyTranslator implements Translator {
6 | @Override
7 | public void start(ClassPool pool) throws NotFoundException, CannotCompileException {
8 | System.out.println("org.byron4j.cookbook.javaagent.MyTranslator.start invoked!" );
9 | }
10 |
11 | @Override
12 | public void onLoad(ClassPool pool, String classname) throws NotFoundException, CannotCompileException {
13 | // 在类加载前执行该方法,所以可以改变类的定义
14 | CtClass cc = pool.get(classname);
15 | cc.setModifiers(Modifier.PUBLIC);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/Point.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | public class Point {
4 | public static void main(String[] args){
5 | System.out.println("org.byron4j.cookbook.javaagent.Point#main invoked!");
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/Rectangle.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | public class Rectangle{
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/cahpter4/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent.cahpter4;
2 | /*
3 | 自省和定制
4 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javaagent/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javaagent;
2 |
3 | /*
4 | javaagent示例
5 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/AnnoDemo.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | public class AnnoDemo {
4 | @Deprecated
5 | private static void sayHello(){
6 |
7 | }
8 |
9 | @SuppressWarnings("finally")
10 | public String finallyTest(String str)
11 | {
12 | try
13 | {
14 | str+=".";
15 | }
16 | finally
17 | {
18 | return str.toUpperCase();
19 | }
20 | }
21 |
22 | public static void main(String[] args){
23 | AnnoDemo.sayHello();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/ChildClass.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | public class ChildClass extends SuperClass{
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/Demo.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | import java.lang.annotation.Repeatable;
4 |
5 |
6 | @Repeatable(Role.class)
7 | public @interface Demo {
8 | String role() default "B";
9 | }
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/Due.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | public @interface Due {
4 | String value();
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/FK1.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | @Demo(role="SSS")
4 | @Due("Hi")
5 | public class FK1 {
6 | }
7 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/Role.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | public @interface Role {
4 | Demo[] value();
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/SuperClass.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | import lombok.Data;
4 |
5 | @Demo
6 | public class SuperClass {
7 | }
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/Td.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 |
3 | public @interface Td {
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/jsr250/PostConstructDemo.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno.jsr250;
2 |
3 | import lombok.Getter;
4 | import lombok.Setter;
5 | import lombok.ToString;
6 |
7 | import javax.annotation.PostConstruct;
8 |
9 | @Setter
10 | @Getter
11 | @ToString
12 | public class PostConstructDemo {
13 |
14 | private int age;
15 |
16 | @PostConstruct
17 | public void setAge(){
18 | age = 10;
19 | }
20 |
21 | public static void main(String[] args){
22 | System.out.println(new PostConstructDemo());
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/package-info.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno;
2 | /**
3 | 注解
4 | */
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/resolver/BusinessLogic.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno.resolver;
2 |
3 | @ByronAnno("类")
4 | public class BusinessLogic {
5 | @ByronAnno("方法")
6 | public void sayHello(){
7 | System.out.println("org.byron4j.cookbook.javacore.anno.resolver.BusinessLogic.sayHello!");
8 | }
9 |
10 | public static void main(String[] args){
11 | Class clazz = BusinessLogic.class;
12 | if( clazz.isAnnotationPresent(ByronAnno.class) ){
13 | // 存在 ByronAnno 注解的话
14 | ByronAnno byronAnno = (ByronAnno)clazz.getAnnotation(ByronAnno.class);
15 | System.out.println("注解值为:" +byronAnno.value());
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/anno/resolver/ByronAnno.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.anno.resolver;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Retention(RetentionPolicy.RUNTIME)
9 | @Target({ElementType.TYPE, ElementType.METHOD})
10 | public @interface ByronAnno {
11 | String value() default "ok";
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/dynamicproxy/cglibproxy/BookStore.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.dynamicproxy.cglibproxy;
2 |
3 | public class BookStore {
4 | public void buyBook(){
5 | System.out.println("购买书籍。");
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/dynamicproxy/jdkproxy/DynamicAnno.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.dynamicproxy.jdkproxy;
2 |
3 | import java.lang.annotation.*;
4 |
5 | @Documented
6 | @Retention(RetentionPolicy.RUNTIME)
7 | @Target(ElementType.METHOD)
8 | public @interface DynamicAnno {
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/dynamicproxy/jdkproxy/Hello.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.dynamicproxy.jdkproxy;
2 |
3 | public interface Hello {
4 |
5 | @DynamicAnno
6 | public void sayHello();
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/dynamicproxy/jdkproxy/HelloImpl.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.dynamicproxy.jdkproxy;
2 |
3 | public class HelloImpl implements Hello {
4 |
5 | @Override
6 | public void sayHello() {
7 | System.out.println("目标方法:Hello.");
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/enums/BasicOperation.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.enums;
2 |
3 | public enum BasicOperation implements OperationI{
4 | PLUS("+"){
5 | @Override
6 | public double apply(double x, double y) {
7 | return x + y;
8 | }
9 | }, MINUS("-") {
10 | @Override
11 | public double apply(double x, double y) {
12 | return x - y;
13 | }
14 | }, TIMES("*") {
15 | @Override
16 | public double apply(double x, double y) {
17 | return x * y;
18 | }
19 | }, DIVIDE("/") {
20 | @Override
21 | public double apply(double x, double y) {
22 | return x / y;
23 | }
24 | };
25 |
26 | // 属性
27 | private String symbol;
28 | BasicOperation(String symbol){
29 | this.symbol = symbol;
30 | }
31 |
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/org/byron4j/cookbook/javacore/enums/EnumSetDemo.java:
--------------------------------------------------------------------------------
1 | package org.byron4j.cookbook.javacore.enums;
2 |
3 | import java.util.EnumSet;
4 | import java.util.Set;
5 |
6 | public class EnumSetDemo {
7 | public enum Style{
8 | BOLD,
9 | ITALIC,
10 | UNDERLINE,
11 | STRIKETHROUGH
12 | }
13 |
14 | public void applyStyle(Set