├── soft ├── redisbin_x32.zip └── redisbin_x64.zip ├── cn-bugstack-design-28.0-0.zip ├── cn-bugstack-design-27.0-1 └── src │ ├── test │ ├── resources │ │ └── META-INF │ │ │ ├── spring.schemas │ │ │ └── spring.handlers │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── rpc │ │ └── test │ │ ├── service │ │ ├── HelloService.java │ │ └── impl │ │ │ └── HelloServiceImpl.java │ │ └── ApiTest.java │ └── main │ ├── java │ └── cn │ │ └── bugstack │ │ └── design │ │ └── rpc │ │ └── config │ │ ├── ServerConfig.java │ │ ├── ConsumerConfig.java │ │ ├── spring │ │ ├── bean │ │ │ ├── ProviderBean.java │ │ │ └── ConsumerBean.java │ │ └── MyNamespaceHandler.java │ │ └── ProviderConfig.java │ └── resources │ ├── rpc-center.xml │ ├── rpc-consumer.xml │ └── rpc-provider.xml ├── cn-bugstack-design-27.0-3 └── src │ ├── main │ ├── resources │ │ └── META-INF │ │ │ ├── spring.schemas │ │ │ └── spring.handlers │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── rpc │ │ ├── domain │ │ └── LocalServerInfo.java │ │ ├── network │ │ ├── future │ │ │ ├── SyncWriteMap.java │ │ │ └── WriteFuture.java │ │ ├── msg │ │ │ └── Response.java │ │ └── codec │ │ │ └── RpcEncoder.java │ │ ├── util │ │ ├── Constants.java │ │ └── NetUtil.java │ │ ├── config │ │ ├── ServerConfig.java │ │ ├── ConsumerConfig.java │ │ ├── ProviderConfig.java │ │ └── spring │ │ │ └── MyNamespaceHandler.java │ │ └── reflect │ │ └── JDKProxy.java │ └── test │ ├── java │ └── cn │ │ └── bugstack │ │ └── design │ │ └── rpc │ │ └── test │ │ ├── service │ │ ├── HelloService.java │ │ └── impl │ │ │ └── HelloServiceImpl.java │ │ └── ApiTest.java │ └── resources │ ├── rpc-center.xml │ ├── rpc-consumer.xml │ └── rpc-provider.xml ├── cn-bugstack-design-19.0-2 ├── itstack.sql └── src │ └── main │ ├── java │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── dao │ │ ├── IUserDao.java │ │ └── ISchoolDao.java │ │ └── mediator │ │ ├── SqlSessionFactory.java │ │ ├── SqlSession.java │ │ ├── DefaultSqlSessionFactory.java │ │ └── Configuration.java │ └── resources │ └── mapper │ ├── School_Mapper.xml │ └── User_Mapper.xml ├── cn-bugstack-design-13.0-0 └── src │ ├── test │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java │ └── main │ ├── resources │ └── application.yml │ └── java │ └── cn │ └── bugstack │ └── design │ └── HelloWorldApplication.java ├── cn-bugstack-design-13.0-1 ├── src │ ├── test │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── test │ │ │ └── ApiTest.java │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── HelloWorldController.java └── pom.xml ├── cn-bugstack-design-9.0-1 ├── src │ ├── test │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── test │ │ │ └── ApiTest.java │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── OrderMqService.java │ │ ├── create_accountMqService.java │ │ └── POPOrderDeliveredService.java └── pom.xml ├── cn-bugstack-design-13.0-2 └── src │ ├── test │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ └── door │ ├── config │ ├── StarterService.java │ └── StarterServiceProperties.java │ └── annotation │ └── DoDoor.java ├── cn-bugstack-design-18.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── lang │ │ ├── Iterable.java │ │ ├── Iterator.java │ │ └── Collection.java │ │ └── group │ │ └── Link.java └── pom.xml ├── cn-bugstack-design-26.0-0 └── src │ └── main │ ├── java │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── domain │ │ ├── rule │ │ │ ├── service │ │ │ │ ├── logic │ │ │ │ │ ├── LogicConfig.java │ │ │ │ │ ├── impl │ │ │ │ │ │ ├── UserAgeFilter.java │ │ │ │ │ │ └── UserGenderFilter.java │ │ │ │ │ └── LogicFilter.java │ │ │ │ └── engine │ │ │ │ │ └── EngineFilter.java │ │ │ ├── repository │ │ │ │ └── IRuleRepository.java │ │ │ └── model │ │ │ │ ├── vo │ │ │ │ ├── TreeRoot.java │ │ │ │ └── DecisionMatter.java │ │ │ │ └── aggregates │ │ │ │ └── TreeRuleRich.java │ │ └── tree │ │ │ ├── repository │ │ │ └── ITreeRepository.java │ │ │ └── model │ │ │ ├── vo │ │ │ └── TreeRulePoint.java │ │ │ └── aggregates │ │ │ └── TreeCollect.java │ │ ├── interfaces │ │ └── dto │ │ │ ├── TreeDTO.java │ │ │ └── DecisionMatterDTO.java │ │ ├── infrastructure │ │ ├── util │ │ │ └── CacheUtil.java │ │ ├── dao │ │ │ ├── RuleTreeNodeLineDao.java │ │ │ ├── RuleTreeDao.java │ │ │ └── RuleTreeNodeDao.java │ │ ├── repository │ │ │ └── cache │ │ │ │ └── RuleCacheRepository.java │ │ └── common │ │ │ └── Constants.java │ │ ├── DDDApplication.java │ │ └── application │ │ ├── MallTreeService.java │ │ └── MallRuleService.java │ └── resources │ ├── mybatis │ ├── config │ │ └── mybatis-config.xml │ └── mapper │ │ └── RuleTree_Mapper.xml │ └── application.yml ├── cn-bugstack-design-10.0-2 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── pay │ │ │ ├── mode │ │ │ ├── IPayMode.java │ │ │ ├── PayCypher.java │ │ │ ├── PayFaceMode.java │ │ │ └── PayFingerprintMode.java │ │ │ └── channel │ │ │ ├── Pay.java │ │ │ ├── WxPay.java │ │ │ └── ZfbPay.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-21.0-1 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ ├── LotteryService.java │ │ │ ├── LotteryServiceImpl.java │ │ │ └── LotteryResult.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-4.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── goods │ │ ├── GoodsInfo.java │ │ └── GoodsService.java │ │ ├── card │ │ ├── IQiYiCard.java │ │ └── IQiYiCardService.java │ │ └── coupon │ │ ├── CouponInfo.java │ │ ├── CouponService.java │ │ └── CouponResult.java └── pom.xml ├── cn-bugstack-design-9.0-2 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── OrderAdapterService.java │ │ └── impl │ │ ├── InsideOrderServiceImpl.java │ │ └── POPOrderAdapterServiceImpl.java └── pom.xml ├── cn-bugstack-design-6.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── package-info.java │ │ ├── Matter.java │ │ ├── floor │ │ ├── DerFloor.java │ │ └── ShengXiangFloor.java │ │ ├── coat │ │ ├── LiBangCoat.java │ │ └── DuluxCoat.java │ │ ├── tile │ │ ├── DongPengTile.java │ │ └── MarcoPoloTile.java │ │ └── ceiling │ │ ├── LevelOneCeiling.java │ │ └── LevelTwoCeiling.java └── pom.xml ├── cn-bugstack-design-12.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── HandlerInterceptor.java │ │ └── SsoInterceptor.java └── pom.xml ├── cn-bugstack-design-8.0-0 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ ├── Singleton_07.java │ │ │ ├── Singleton_00.java │ │ │ ├── Singleton_03.java │ │ │ ├── Singleton_01.java │ │ │ ├── Singleton_02.java │ │ │ ├── Singleton_04.java │ │ │ └── Singleton_05.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-22.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── Status.java └── pom.xml ├── cn-bugstack-design-17.0-2 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── cuisine │ │ ├── ICuisine.java │ │ └── impl │ │ │ ├── JiangSuCuisine.java │ │ │ ├── ShanDongCuisine.java │ │ │ ├── SiChuanCuisine.java │ │ │ └── GuangDoneCuisine.java │ │ ├── cook │ │ ├── ICook.java │ │ └── impl │ │ │ ├── ShanDongCook.java │ │ │ ├── GuangDongCook.java │ │ │ ├── JiangSuCook.java │ │ │ └── SiChuanCook.java │ │ └── XiaoEr.java └── pom.xml ├── cn-bugstack-design-21.0-2 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ ├── event │ │ │ └── listener │ │ │ │ ├── EventListener.java │ │ │ │ ├── MQEventListener.java │ │ │ │ └── MessageEventListener.java │ │ │ └── LotteryServiceImpl.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-15.0-0 └── src │ ├── main │ ├── java │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ ├── IUserDao.java │ │ │ └── agent │ │ │ └── Select.java │ └── resources │ │ └── spring-config.xml │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── test │ └── ApiTest.java ├── cn-bugstack-design-4.0-2 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── store │ │ └── ICommodity.java └── pom.xml ├── cn-bugstack-design-27.0-4 └── src │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ └── rpc │ └── export │ ├── HelloService.java │ └── domain │ └── Hi.java ├── cn-bugstack-design-2.5-1 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ ├── ISkillArchery.java │ │ │ ├── ISkillSilent.java │ │ │ ├── ISkillVertigo.java │ │ │ ├── ISkillInvisible.java │ │ │ └── hero │ │ │ ├── HeroHouYi.java │ │ │ └── HeroLianPo.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-27.0-2 └── src │ ├── main │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── rpc │ │ └── network │ │ ├── future │ │ ├── SyncWriteMap.java │ │ └── WriteFuture.java │ │ ├── msg │ │ ├── Response.java │ │ └── Request.java │ │ └── codec │ │ └── RpcEncoder.java │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── rpc │ └── provider │ └── test │ └── server │ └── StartServer.java ├── cn-bugstack-design-25.0-0 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ ├── visitor │ │ │ ├── Visitor.java │ │ │ └── impl │ │ │ │ ├── Principal.java │ │ │ │ └── Parent.java │ │ │ └── user │ │ │ ├── User.java │ │ │ └── impl │ │ │ ├── Teacher.java │ │ │ └── Student.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── .gitignore ├── cn-bugstack-design-2.6-1 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── IDraw.java │ │ ├── DrawControl.java │ │ ├── DrawRandom.java │ │ ├── DrawWeightRank.java │ │ └── BetUser.java └── pom.xml ├── cn-bugstack-design-2.1-1 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── IVideoUserService.java │ │ └── impl │ │ ├── GuestVideoUserService.java │ │ ├── VipVideoUserService.java │ │ └── OrdinaryVideoUserService.java └── pom.xml ├── cn-bugstack-design-5.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── application │ │ ├── CacheService.java │ │ └── CacheServiceImpl.java └── pom.xml ├── cn-bugstack-design-5.0-2 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── workshop │ │ ├── ICacheAdapter.java │ │ └── impl │ │ │ ├── EGMCacheAdapter.java │ │ │ └── IIRCacheAdapter.java │ │ └── factory │ │ ├── JDKProxyFactory.java │ │ └── JDKInvocationHandler.java └── pom.xml ├── cn-bugstack-design-5.0-1 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── CacheService.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-9.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── service │ │ ├── POPOrderService.java │ │ └── OrderService.java └── pom.xml ├── cn-bugstack-design-11.0-2 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── domain │ │ └── service │ │ ├── engine │ │ ├── IEngine.java │ │ └── impl │ │ │ └── TreeEngineHandle.java │ │ └── logic │ │ ├── impl │ │ ├── UserAgeFilter.java │ │ └── UserGenderFilter.java │ │ └── LogicFilter.java └── pom.xml ├── cn-bugstack-design-2.5-0 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ ├── ISkill.java │ │ │ ├── HeroLianPo.java │ │ │ └── HeroHouYi.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-2.2-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── impl │ │ ├── CalculationAreaExt.java │ │ └── CalculationArea.java │ │ └── ICalculationArea.java └── pom.xml ├── cn-bugstack-design-21.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── MinibusTargetService.java └── pom.xml ├── cn-bugstack-design-20.0-0 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ ├── ConfigMemento.java │ │ └── ConfigOriginator.java └── pom.xml ├── cn-bugstack-design-6.0-2 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── IMenu.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-12.0-1 ├── src │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-2.1-0 ├── pom.xml └── src │ ├── test │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ └── VideoUserService.java ├── cn-bugstack-design-2.3-0 └── pom.xml ├── cn-bugstack-design-2.3-1 └── pom.xml ├── cn-bugstack-design-2.4-0 ├── pom.xml └── src │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── test │ └── ApiTest.java ├── cn-bugstack-design-2.4-1 ├── pom.xml └── src │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── test │ └── ApiTest.java ├── cn-bugstack-design-2.6-0 ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ └── BetUser.java ├── cn-bugstack-design-7.0-0 ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ └── AnswerQuestion.java ├── cn-bugstack-design-10.0-1 ├── pom.xml └── src │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── test │ └── ApiTest.java ├── cn-bugstack-design-11.0-1 ├── pom.xml └── src │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── test │ └── ApiTest.java ├── cn-bugstack-design-12.0-2 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── SsoDecorator.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-14.0-2 ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ ├── ActivityController.java │ ├── Stock.java │ └── util │ └── RedisUtils.java ├── cn-bugstack-design-16.0-0 ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ └── AuthService.java ├── cn-bugstack-design-17.0-1 ├── pom.xml └── src │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── test │ └── ApiTest.java ├── cn-bugstack-design-23.0-1 └── pom.xml ├── cn-bugstack-design-23.0-2 ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── bugstack │ └── design │ ├── Context.java │ ├── impl │ ├── NYGCouponDiscount.java │ ├── ZJCouponDiscount.java │ └── ZKCouponDiscount.java │ └── ICouponDiscount.java ├── cn-bugstack-design-24.0-0 ├── pom.xml └── src │ └── test │ └── java │ └── cn │ └── bugstack │ └── design │ └── test │ └── ApiTest.java ├── cn-bugstack-design-27.0-5 └── src │ ├── test │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── rpc │ │ └── provider │ │ └── test │ │ └── ProviderTest.java │ └── main │ ├── java │ └── cn │ │ └── bugstack │ │ └── design │ │ └── rpc │ │ └── provider │ │ └── web │ │ └── HelloServiceImpl.java │ └── resources │ ├── spring │ └── rpc-provider.xml │ └── spring-config.xml ├── cn-bugstack-design-22.0-1 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── Result.java └── pom.xml ├── cn-bugstack-design-22.0-2 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── Result.java └── pom.xml ├── cn-bugstack-design-7.0-1 ├── src │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-7.0-2 ├── src │ ├── test │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── test │ │ │ └── ApiTest.java │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── util │ │ └── Topic.java └── pom.xml ├── cn-bugstack-design-27.0-6 └── src │ └── main │ └── resources │ ├── spring │ └── rpc-consumer.xml │ └── spring-config.xml ├── cn-bugstack-design-4.0-1 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── AwardRes.java └── pom.xml ├── cn-bugstack-design-16.0-2 ├── src │ └── main │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── AuthInfo.java └── pom.xml ├── cn-bugstack-design-14.0-1 ├── src │ ├── main │ │ └── java │ │ │ └── cn │ │ │ └── bugstack │ │ │ └── design │ │ │ └── ActivityController.java │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-6.0-1 ├── src │ └── test │ │ └── java │ │ └── cn │ │ └── bugstack │ │ └── design │ │ └── test │ │ └── ApiTest.java └── pom.xml ├── cn-bugstack-design-19.0-1 └── pom.xml ├── cn-bugstack-design-17.0-0 └── pom.xml └── cn-bugstack-design-16.0-1 └── pom.xml /soft/redisbin_x32.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuzhengwei/CodeDesign/HEAD/soft/redisbin_x32.zip -------------------------------------------------------------------------------- /soft/redisbin_x64.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuzhengwei/CodeDesign/HEAD/soft/redisbin_x64.zip -------------------------------------------------------------------------------- /cn-bugstack-design-28.0-0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuzhengwei/CodeDesign/HEAD/cn-bugstack-design-28.0-0.zip -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/test/resources/META-INF/spring.schemas: -------------------------------------------------------------------------------- 1 | http\://rpc.bugstack.cn/schema/rpc/rpc.xsd=META-INF/rpc.xsd -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/resources/META-INF/spring.schemas: -------------------------------------------------------------------------------- 1 | http\://rpc.bugstack.cn/schema/rpc/rpc.xsd=META-INF/rpc.xsd -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/itstack.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuzhengwei/CodeDesign/HEAD/cn-bugstack-design-19.0-2/itstack.sql -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-0/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | public class ApiTest { 4 | } 5 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | public class ApiTest { 4 | } 5 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | public class ApiTest { 4 | } 5 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/test/resources/META-INF/spring.handlers: -------------------------------------------------------------------------------- 1 | http\://rpc.bugstack.cn/schema/rpc=cn.bugstack.design.rpc.config.spring.MyNamespaceHandler -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/resources/META-INF/spring.handlers: -------------------------------------------------------------------------------- 1 | http\://rpc.bugstack.cn/schema/rpc=cn.bugstack.design.rpc.config.spring.MyNamespaceHandler -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-2/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | public class ApiTest { 4 | 5 | 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-18.0-0/src/main/java/cn/bugstack/design/lang/Iterable.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.lang; 2 | 3 | public interface Iterable { 4 | 5 | Iterator iterator(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/service/logic/LogicConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.service.logic; 2 | 3 | public class LogicConfig { 4 | } 5 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/main/java/cn/bugstack/design/pay/mode/IPayMode.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.pay.mode; 2 | 3 | public interface IPayMode { 4 | 5 | boolean security(String uId); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-1/src/main/java/cn/bugstack/design/LotteryService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public interface LotteryService { 4 | 5 | LotteryResult doDraw(String uId); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/src/main/java/cn/bugstack/design/goods/GoodsInfo.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.goods; 2 | 3 | /** 4 | * 模拟商品信息,对象类 5 | */ 6 | public class GoodsInfo { 7 | 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-2/src/main/java/cn/bugstack/design/OrderAdapterService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public interface OrderAdapterService { 4 | 5 | boolean isFirst(String uId); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/test/java/cn/bugstack/design/rpc/test/service/HelloService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.test.service; 2 | 3 | public interface HelloService { 4 | 5 | void echo(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/test/java/cn/bugstack/design/rpc/test/service/HelloService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.test.service; 2 | 3 | public interface HelloService { 4 | 5 | void echo(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/src/main/java/cn/bugstack/design/card/IQiYiCard.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.card; 2 | 3 | /** 4 | * 模拟爱奇艺视频卡,对象类 5 | */ 6 | public class IQiYiCard { 7 | 8 | // 卡券的一些信息 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/src/main/java/cn/bugstack/design/coupon/CouponInfo.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.coupon; 2 | 3 | /** 4 | * 模拟优惠券,对象类 5 | */ 6 | public class CouponInfo { 7 | 8 | // 卡券的一些信息 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-18.0-0/src/main/java/cn/bugstack/design/lang/Iterator.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.lang; 2 | 3 | public interface Iterator { 4 | 5 | boolean hasNext(); 6 | 7 | E next(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 装修材料 3 | * 吊顶;一级、二级 4 | * 涂料;多乐士(Dulux)、立邦 5 | * 地砖(tile);东鹏瓷砖、马可波罗(MARCO POLO) 6 | * 地板(floor);德尔(Der)、圣象 7 | */ 8 | package cn.bugstack.design; -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-0/src/main/java/cn/bugstack/design/HandlerInterceptor.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public interface HandlerInterceptor { 4 | 5 | boolean preHandle(String request, String response, Object handler); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/java/cn/bugstack/design/dao/IUserDao.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.dao; 2 | 3 | import cn.bugstack.design.po.User; 4 | 5 | public interface IUserDao { 6 | 7 | User queryUserInfoById(Long id); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/main/java/cn/bugstack/design/Singleton_07.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public enum Singleton_07 { 4 | 5 | INSTANCE; 6 | public void test(){ 7 | System.out.println("hi~"); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-0/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8080 3 | 4 | spring: 5 | application: 6 | name: helloworld-door 7 | 8 | # 自定义中间件配置 9 | itstack: 10 | door: 11 | enabled: true 12 | userStr: 1001,aaaa,ccc #白名单用户ID,多个逗号隔开 -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/java/cn/bugstack/design/dao/ISchoolDao.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.dao; 2 | 3 | import cn.bugstack.design.po.School; 4 | 5 | public interface ISchoolDao { 6 | 7 | School querySchoolInfoById(Long treeId); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-22.0-0/src/main/java/cn/bugstack/design/Status.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public enum Status { 4 | 5 | // 1创建编辑、2待审核、3审核通过(任务扫描成活动中)、4审核拒绝(可以撤审到编辑状态)、5活动中、6活动关闭、7活动开启(任务扫描成活动中) 6 | Editing, Check, Pass, Refuse, Doing, Close, Open 7 | 8 | } 9 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/domain/LocalServerInfo.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.domain; 2 | 3 | public class LocalServerInfo { 4 | 5 | public static String LOCAL_HOST; //本地启动地址 6 | public static int LOCAL_PORT; //本地启动IP 7 | 8 | } 9 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cuisine/ICuisine.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cuisine; 2 | 3 | /** 4 | * 菜系:山东(鲁菜) 四川(川菜) 江苏(苏菜) 广东(粤菜) 福建(闽菜) 浙江(浙菜) 湖南(湘菜) 安徽(徽菜) 5 | */ 6 | public interface ICuisine { 7 | 8 | void cook(); // 烹调、制作 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-2/src/main/java/cn/bugstack/design/event/listener/EventListener.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.event.listener; 2 | 3 | import cn.bugstack.design.LotteryResult; 4 | 5 | public interface EventListener { 6 | 7 | void doEvent(LotteryResult result); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-15.0-0/src/main/java/cn/bugstack/design/IUserDao.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import cn.bugstack.design.agent.Select; 4 | 5 | public interface IUserDao { 6 | 7 | @Select("select userName from user where id = #{uId}") 8 | String queryUserInfo(String uId); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-2/src/main/java/cn/bugstack/design/store/ICommodity.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.store; 2 | 3 | import java.util.Map; 4 | 5 | public interface ICommodity { 6 | 7 | void sendCommodity(String uId, String commodityId, String bizId, Map extMap) throws Exception; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/java/cn/bugstack/design/mediator/SqlSessionFactory.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.mediator; 2 | 3 | /** 4 | * 公众号 | bugstack虫洞栈 5 | * 博 客 | https://bugstack.cn 6 | * Create by 小傅哥 @2020 7 | */ 8 | public interface SqlSessionFactory { 9 | 10 | SqlSession openSession(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/main/java/cn/bugstack/design/Singleton_00.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.Map; 4 | import java.util.concurrent.ConcurrentHashMap; 5 | 6 | public class Singleton_00 { 7 | 8 | public static Map cache = new ConcurrentHashMap(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-15.0-0/src/main/java/cn/bugstack/design/agent/Select.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.agent; 2 | 3 | import java.lang.annotation.*; 4 | 5 | @Documented 6 | @Retention(RetentionPolicy.RUNTIME) 7 | @Target({ElementType.METHOD}) 8 | public @interface Select { 9 | 10 | String value() default ""; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.Singleton_07; 4 | import org.junit.Test; 5 | 6 | public class ApiTest { 7 | 8 | @Test 9 | public void test() { 10 | Singleton_07.INSTANCE.test(); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-4/src/main/java/cn/bugstack/design/rpc/export/HelloService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.export; 2 | 3 | import cn.bugstack.design.rpc.export.domain.Hi; 4 | 5 | public interface HelloService { 6 | 7 | String hi(); 8 | 9 | String say(String str); 10 | 11 | String sayHi(Hi hi); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cook/ICook.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cook; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | */ 8 | public interface ICook { 9 | 10 | void doCooking(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/src/main/java/cn/bugstack/design/ISkillArchery.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 技能:射箭 9 | */ 10 | public interface ISkillArchery { 11 | 12 | //灼日之矢 13 | void doArchery(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/src/main/java/cn/bugstack/design/ISkillSilent.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 技能:沉默 9 | */ 10 | public interface ISkillSilent { 11 | 12 | // 技能沉默 13 | void doSilent(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/src/main/java/cn/bugstack/design/ISkillVertigo.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 技能:眩晕 9 | */ 10 | public interface ISkillVertigo { 11 | 12 | // 眩晕 13 | void doVertigo(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/src/main/java/cn/bugstack/design/ISkillInvisible.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 技能:隐身 9 | */ 10 | public interface ISkillInvisible { 11 | 12 | // 隐袭 13 | void doInvisible(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/main/java/cn/bugstack/design/Singleton_03.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class Singleton_03 { 4 | 5 | private static Singleton_03 instance = new Singleton_03(); 6 | 7 | private Singleton_03() { 8 | } 9 | 10 | public static Singleton_03 getInstance() { 11 | return instance; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/src/main/java/cn/bugstack/design/card/IQiYiCardService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.card; 2 | 3 | /** 4 | * 模拟爱奇艺会员卡服务 5 | */ 6 | public class IQiYiCardService { 7 | 8 | public void grantToken(String bindMobileNumber, String cardId) { 9 | System.out.println("模拟发放爱奇艺会员卡一张:" + bindMobileNumber + "," + cardId); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/interfaces/dto/TreeDTO.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.interfaces.dto; 2 | 3 | public class TreeDTO { 4 | 5 | private Long treeId; 6 | 7 | public Long getTreeId() { 8 | return treeId; 9 | } 10 | 11 | public void setTreeId(Long treeId) { 12 | this.treeId = treeId; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-2/src/main/java/cn/bugstack/design/rpc/network/future/SyncWriteMap.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.future; 2 | 3 | import java.util.Map; 4 | import java.util.concurrent.ConcurrentHashMap; 5 | 6 | public class SyncWriteMap { 7 | 8 | public static Map syncKey = new ConcurrentHashMap(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/network/future/SyncWriteMap.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.future; 2 | 3 | import java.util.Map; 4 | import java.util.concurrent.ConcurrentHashMap; 5 | 6 | public class SyncWriteMap { 7 | 8 | public static Map syncKey = new ConcurrentHashMap(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-18.0-0/src/main/java/cn/bugstack/design/lang/Collection.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.lang; 2 | 3 | public interface Collection extends Iterable { 4 | 5 | boolean add(E e); 6 | 7 | boolean remove(E e); 8 | 9 | boolean addLink(String key, L l); 10 | 11 | boolean removeLink(String key); 12 | 13 | Iterator iterator(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/src/main/java/cn/bugstack/design/visitor/Visitor.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.visitor; 2 | 3 | import cn.bugstack.design.user.impl.Student; 4 | import cn.bugstack.design.user.impl.Teacher; 5 | 6 | public interface Visitor { 7 | 8 | // 访问学生信息 9 | void visit(Student student); 10 | 11 | // 访问老师信息 12 | void visit(Teacher teacher); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | *.iml -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/repository/IRuleRepository.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.repository; 2 | 3 | import cn.bugstack.design.domain.rule.model.aggregates.TreeRuleRich; 4 | 5 | /** 6 | * 微信公众号:bugstack虫洞栈 | 欢迎关注学习专题案例 7 | */ 8 | public interface IRuleRepository { 9 | 10 | TreeRuleRich queryTreeRuleRich(Long treeId); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/resources/mybatis/config/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/src/main/java/cn/bugstack/design/goods/GoodsService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.goods; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | 5 | /** 6 | * 模拟实物商品服务 7 | */ 8 | public class GoodsService { 9 | 10 | public Boolean deliverGoods(DeliverReq req) { 11 | System.out.println("模拟发货实物商品一个:" + JSON.toJSONString(req)); 12 | return true; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/main/java/cn/bugstack/design/Singleton_01.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class Singleton_01 { 4 | 5 | private static Singleton_01 instance; 6 | 7 | private Singleton_01() { 8 | } 9 | 10 | public static Singleton_01 getInstance(){ 11 | if (null != instance) return instance; 12 | return new Singleton_01(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-1/src/main/java/cn/bugstack/design/IDraw.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | *

10 | * 抽奖接口 11 | */ 12 | public interface IDraw { 13 | 14 | // 获取中奖用户接口 15 | List prize(List list, int count); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/main/java/cn/bugstack/design/Singleton_02.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class Singleton_02 { 4 | 5 | private static Singleton_02 instance; 6 | 7 | private Singleton_02() { 8 | } 9 | 10 | public static synchronized Singleton_02 getInstance(){ 11 | if (null != instance) return instance; 12 | return new Singleton_02(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-1/src/main/java/cn/bugstack/design/IVideoUserService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | */ 8 | public interface IVideoUserService { 9 | 10 | // 视频清晰级别;480P、720P、1080P 11 | void definition(); 12 | 13 | // 广告播放方式;无广告、有广告 14 | void advertisement(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/service/engine/EngineFilter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.service.engine; 2 | 3 | import cn.bugstack.design.domain.rule.model.vo.DecisionMatter; 4 | import cn.bugstack.design.domain.rule.model.vo.EngineResult; 5 | 6 | public interface EngineFilter { 7 | 8 | EngineResult process(final DecisionMatter matter) throws Exception; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-0/src/main/java/cn/bugstack/design/SsoInterceptor.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class SsoInterceptor implements HandlerInterceptor{ 4 | 5 | public boolean preHandle(String request, String response, Object handler) { 6 | // 模拟获取cookie 7 | String ticket = request.substring(1, 8); 8 | // 模拟校验 9 | return ticket.equals("success"); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/infrastructure/util/CacheUtil.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.infrastructure.util; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import java.util.Map; 6 | import java.util.concurrent.ConcurrentHashMap; 7 | 8 | @Service("cacheUtil") 9 | public class CacheUtil { 10 | 11 | public static Map cacheMap = new ConcurrentHashMap<>(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/util/Constants.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.util; 2 | 3 | public class Constants { 4 | 5 | /** 6 | * 隐藏的key前缀,隐藏的key只能在filter里拿到,在RpcContext里拿不到,不过可以设置 7 | */ 8 | public static final char HIDE_KEY_PREFIX = '.'; 9 | 10 | /** 11 | * 内部使用的key前缀,防止和自定义key冲突 12 | */ 13 | public static final char INTERNAL_KEY_PREFIX = '_'; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/src/main/java/cn/bugstack/design/coupon/CouponService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.coupon; 2 | 3 | /** 4 | * 模拟优惠券服务 5 | */ 6 | public class CouponService { 7 | 8 | public CouponResult sendCoupon(String uId, String couponNumber, String uuid) { 9 | System.out.println("模拟发放优惠券一张:" + uId + "," + couponNumber + "," + uuid); 10 | return new CouponResult("0000", "发放成功"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-0/src/main/java/cn/bugstack/design/application/CacheService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.application; 2 | 3 | import java.util.concurrent.TimeUnit; 4 | 5 | public interface CacheService { 6 | 7 | String get(final String key); 8 | 9 | void set(String key, String value); 10 | 11 | void set(String key, String value, long timeout, TimeUnit timeUnit); 12 | 13 | void del(String key); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/DDDApplication.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class DDDApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(DDDApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8080 3 | 4 | spring: 5 | datasource: 6 | username: root 7 | password: 123456 8 | url: jdbc:mysql://127.0.0.1:3306/itstack?useUnicode=true&characterEncoding=utf8 9 | driver-class-name: com.mysql.jdbc.Driver 10 | 11 | mybatis: 12 | mapper-locations: classpath:/mybatis/mapper/*.xml 13 | config-location: classpath:/mybatis/config/mybatis-config.xml -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/main/java/cn/bugstack/design/Singleton_04.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class Singleton_04 { 4 | 5 | private static class SingletonHolder { 6 | private static Singleton_04 instance = new Singleton_04(); 7 | } 8 | 9 | private Singleton_04() { 10 | } 11 | 12 | public static Singleton_04 getInstance() { 13 | return SingletonHolder.instance; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/test/java/cn/bugstack/design/rpc/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.test; 2 | 3 | import org.springframework.context.support.ClassPathXmlApplicationContext; 4 | 5 | public class ApiTest { 6 | 7 | public static void main(String[] args) { 8 | String[] configs = {"rpc-center.xml", "rpc-provider.xml", "rpc-consumer.xml"}; 9 | new ClassPathXmlApplicationContext(configs); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/test/java/cn/bugstack/design/rpc/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.test; 2 | 3 | import org.springframework.context.support.ClassPathXmlApplicationContext; 4 | 5 | public class ApiTest { 6 | 7 | public static void main(String[] args) { 8 | String[] configs = {"rpc-center.xml", "rpc-provider.xml", "rpc-consumer.xml"}; 9 | new ClassPathXmlApplicationContext(configs); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-2/src/main/java/cn/bugstack/design/workshop/ICacheAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.workshop; 2 | 3 | import java.util.concurrent.TimeUnit; 4 | 5 | /** 6 | * 车间适配器 7 | */ 8 | public interface ICacheAdapter { 9 | 10 | String get(String key); 11 | 12 | void set(String key, String value); 13 | 14 | void set(String key, String value, long timeout, TimeUnit timeUnit); 15 | 16 | void del(String key); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/main/java/cn/bugstack/design/pay/mode/PayCypher.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.pay.mode; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class PayCypher implements IPayMode{ 7 | 8 | protected Logger logger = LoggerFactory.getLogger(PayCypher.class); 9 | 10 | public boolean security(String uId) { 11 | logger.info("密码支付,风控校验环境安全"); 12 | return true; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/main/java/cn/bugstack/design/pay/mode/PayFaceMode.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.pay.mode; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class PayFaceMode implements IPayMode{ 7 | 8 | protected Logger logger = LoggerFactory.getLogger(PayCypher.class); 9 | 10 | public boolean security(String uId) { 11 | logger.info("人脸支付,风控校验脸部识别"); 12 | return true; 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-2/src/test/java/cn/bugstack/design/rpc/provider/test/server/StartServer.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.provider.test.server; 2 | 3 | import cn.bugstack.design.rpc.network.server.ServerSocket; 4 | 5 | public class StartServer { 6 | 7 | public static void main(String[] args) { 8 | System.out.println("启动服务端开始"); 9 | new Thread(new ServerSocket()).start(); 10 | System.out.println("启动服务端完成"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-1/src/main/java/cn/bugstack/design/CacheService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.concurrent.TimeUnit; 4 | 5 | public interface CacheService { 6 | 7 | String get(final String key, int redisType); 8 | 9 | void set(String key, String value, int redisType); 10 | 11 | void set(String key, String value, long timeout, TimeUnit timeUnit, int redisType); 12 | 13 | void del(String key, int redisType); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-0/src/main/java/cn/bugstack/design/service/POPOrderService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.service; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class POPOrderService { 7 | 8 | private Logger logger = LoggerFactory.getLogger(POPOrderService.class); 9 | 10 | public boolean isFirstOrder(String uId) { 11 | logger.info("POP商家,查询用户的订单是否为首单:{}", uId); 12 | return true; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/application/MallTreeService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.application; 2 | 3 | import cn.bugstack.design.domain.tree.model.aggregates.TreeCollect; 4 | 5 | /** 6 | * 商超规则树服务;提供规则树查询功能 7 | */ 8 | public interface MallTreeService { 9 | 10 | /** 11 | * 查询规则树概要信息 12 | * @param treeId 规则树ID 13 | * @return 规则树简要汇总信息 14 | */ 15 | TreeCollect queryTreeSummaryInfo(Long treeId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-0/src/main/java/cn/bugstack/design/service/OrderService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.service; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class OrderService { 7 | 8 | private Logger logger = LoggerFactory.getLogger(POPOrderService.class); 9 | 10 | public long queryUserOrderCount(String userId){ 11 | logger.info("自营商家,查询用户的订单是否为首单:{}", userId); 12 | return 10L; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/main/java/cn/bugstack/design/pay/mode/PayFingerprintMode.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.pay.mode; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class PayFingerprintMode implements IPayMode{ 7 | 8 | protected Logger logger = LoggerFactory.getLogger(PayCypher.class); 9 | 10 | public boolean security(String uId) { 11 | logger.info("指纹支付,风控校验指纹信息"); 12 | return true; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-2/src/main/java/cn/bugstack/design/domain/service/engine/IEngine.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.service.engine; 2 | 3 | import cn.bugstack.design.domain.model.aggregates.TreeRich; 4 | import cn.bugstack.design.domain.model.vo.EngineResult; 5 | 6 | import java.util.Map; 7 | 8 | public interface IEngine { 9 | 10 | EngineResult process(final Long treeId, final String userId, TreeRich treeRich, final Map decisionMatter); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-0/src/main/java/cn/bugstack/design/ISkill.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 英雄技能 9 | */ 10 | public interface ISkill { 11 | 12 | //灼日之矢 13 | void doArchery(); 14 | 15 | // 隐袭 16 | void doInvisible(); 17 | 18 | // 技能沉默 19 | void doSilent(); 20 | 21 | // 眩晕 22 | void doVertigo(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-15.0-0/src/main/resources/spring-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/test/java/cn/bugstack/design/rpc/test/service/impl/HelloServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.test.service.impl; 2 | 3 | import cn.bugstack.design.rpc.test.service.HelloService; 4 | import org.springframework.stereotype.Service; 5 | 6 | @Service("helloService") 7 | public class HelloServiceImpl implements HelloService { 8 | 9 | @Override 10 | public void echo() { 11 | System.out.println("hi itstack demo rpc"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/test/java/cn/bugstack/design/rpc/test/service/impl/HelloServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.test.service.impl; 2 | 3 | import cn.bugstack.design.rpc.test.service.HelloService; 4 | import org.springframework.stereotype.Service; 5 | 6 | @Service("helloService") 7 | public class HelloServiceImpl implements HelloService { 8 | 9 | @Override 10 | public void echo() { 11 | System.out.println("hi itstack demo rpc"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.2-0/src/main/java/cn/bugstack/design/impl/CalculationAreaExt.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | */ 8 | public class CalculationAreaExt extends CalculationArea { 9 | 10 | private final static double π = 3.141592653D; 11 | 12 | @Override 13 | public double circular(double r) { 14 | return π * r * r; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-2/src/main/java/cn/bugstack/design/domain/service/logic/impl/UserAgeFilter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.service.logic.impl; 2 | 3 | import cn.bugstack.design.domain.service.logic.BaseLogic; 4 | 5 | import java.util.Map; 6 | 7 | public class UserAgeFilter extends BaseLogic { 8 | 9 | @Override 10 | public String matterValue(Long treeId, String userId, Map decisionMatter) { 11 | return decisionMatter.get("age"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-1/src/main/java/cn/bugstack/design/DrawControl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | 4 | import java.util.List; 5 | 6 | /** 7 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 公众号:bugstack虫洞栈 9 | * Create by 小傅哥(fustack) @2020 10 | */ 11 | public class DrawControl { 12 | 13 | private IDraw draw; 14 | 15 | public List doDraw(IDraw draw, List betUserList, int count) { 16 | return draw.prize(betUserList, count); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-1/src/main/java/cn/bugstack/design/OrderMqService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import cn.bugstack.design.mq.OrderMq; 4 | import com.alibaba.fastjson.JSON; 5 | 6 | public class OrderMqService { 7 | 8 | public void onMessage(String message) { 9 | 10 | OrderMq mq = JSON.parseObject(message, OrderMq.class); 11 | 12 | mq.getUid(); 13 | mq.getOrderId(); 14 | mq.getCreateOrderTime(); 15 | 16 | // ... 处理自己的业务 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-2/src/main/java/cn/bugstack/design/domain/service/logic/impl/UserGenderFilter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.service.logic.impl; 2 | 3 | import cn.bugstack.design.domain.service.logic.BaseLogic; 4 | 5 | import java.util.Map; 6 | 7 | public class UserGenderFilter extends BaseLogic { 8 | 9 | @Override 10 | public String matterValue(Long treeId, String userId, Map decisionMatter) { 11 | return decisionMatter.get("gender"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/resources/mapper/School_Mapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/infrastructure/dao/RuleTreeNodeLineDao.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.infrastructure.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import cn.bugstack.design.infrastructure.po.RuleTreeNodeLine; 5 | 6 | import java.util.List; 7 | 8 | @Mapper 9 | public interface RuleTreeNodeLineDao { 10 | 11 | List queryRuleTreeNodeLineList(RuleTreeNodeLine req); 12 | 13 | int queryTreeNodeLineCount(Long treeId); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-0/src/main/java/cn/bugstack/design/MinibusTargetService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 小客车指标调控服务 5 | */ 6 | public class MinibusTargetService { 7 | 8 | /** 9 | * 模拟摇号,但不是摇号算法 10 | * 11 | * @param uId 用户编号 12 | * @return 结果 13 | */ 14 | public String lottery(String uId) { 15 | return Math.abs(uId.hashCode()) % 2 == 0 ? "恭喜你,编码".concat(uId).concat("在本次摇号中签") : "很遗憾,编码".concat(uId).concat("在本次摇号未中签或摇号资格已过期"); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-1/src/main/java/cn/bugstack/design/create_accountMqService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import cn.bugstack.design.mq.create_account; 4 | import com.alibaba.fastjson.JSON; 5 | 6 | public class create_accountMqService { 7 | 8 | public void onMessage(String message) { 9 | 10 | create_account mq = JSON.parseObject(message, create_account.class); 11 | 12 | mq.getNumber(); 13 | mq.getAccountDate(); 14 | 15 | // ... 处理自己的业务 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/application/MallRuleService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.application; 2 | 3 | import cn.bugstack.design.domain.rule.model.vo.DecisionMatter; 4 | import cn.bugstack.design.domain.rule.model.vo.EngineResult; 5 | 6 | /** 7 | * 商超规则过滤服务;提供规则树决策功能 8 | */ 9 | public interface MallRuleService { 10 | 11 | /** 12 | * 决策服务 13 | * @param matter 决策物料 14 | * @return 决策结果 15 | */ 16 | EngineResult process(final DecisionMatter matter); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/infrastructure/dao/RuleTreeDao.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.infrastructure.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import cn.bugstack.design.infrastructure.po.RuleTree; 5 | 6 | /** 7 | * 微信公众号:bugstack虫洞栈 | 欢迎关注学习专题案例 8 | * 论坛:http://bugstack.cn 9 | * Create by 付政委 on @2019 10 | */ 11 | @Mapper 12 | public interface RuleTreeDao { 13 | 14 | RuleTree queryRuleTreeByTreeId(Long id); 15 | 16 | RuleTree queryTreeSummaryInfo(Long treeId); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/infrastructure/dao/RuleTreeNodeDao.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.infrastructure.dao; 2 | 3 | import org.apache.ibatis.annotations.Mapper; 4 | import cn.bugstack.design.infrastructure.po.RuleTreeNode; 5 | 6 | import java.util.List; 7 | 8 | @Mapper 9 | public interface RuleTreeNodeDao { 10 | 11 | List queryRuleTreeNodeList(Long treeId); 12 | 13 | int queryTreeNodeCount(Long treeId); 14 | 15 | List queryTreeRulePoint(Long treeId); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-1/src/main/java/cn/bugstack/design/POPOrderDeliveredService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import cn.bugstack.design.mq.POPOrderDelivered; 4 | import com.alibaba.fastjson.JSON; 5 | 6 | public class POPOrderDeliveredService { 7 | 8 | public void onMessage(String message) { 9 | 10 | POPOrderDelivered mq = JSON.parseObject(message, POPOrderDelivered.class); 11 | 12 | mq.getuId(); 13 | mq.getOrderId(); 14 | mq.getOrderTime(); 15 | 16 | // ... 处理自己的业务 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cn-bugstack-design-20.0-0/src/main/java/cn/bugstack/design/ConfigMemento.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 配置文件备忘录 5 | */ 6 | public class ConfigMemento { 7 | 8 | private ConfigFile configFile; 9 | 10 | public ConfigMemento(ConfigFile configFile) { 11 | this.configFile = configFile; 12 | } 13 | 14 | public ConfigFile getConfigFile() { 15 | return configFile; 16 | } 17 | 18 | public void setConfigFile(ConfigFile configFile) { 19 | this.configFile = configFile; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-2/src/main/java/cn/bugstack/design/impl/InsideOrderServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | 4 | import cn.bugstack.design.OrderAdapterService; 5 | import cn.bugstack.design.service.OrderService; 6 | 7 | /** 8 | * 内部订单,判断首单逻辑 9 | */ 10 | public class InsideOrderServiceImpl implements OrderAdapterService { 11 | 12 | private OrderService orderService = new OrderService(); 13 | 14 | public boolean isFirst(String uId) { 15 | return orderService.queryUserOrderCount(uId) <= 1; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/src/main/java/cn/bugstack/design/Singleton_05.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class Singleton_05 { 4 | 5 | private static Singleton_05 instance; 6 | 7 | private Singleton_05() { 8 | } 9 | 10 | public static Singleton_05 getInstance(){ 11 | if(null != instance) return instance; 12 | synchronized (Singleton_05.class){ 13 | if (null == instance){ 14 | instance = new Singleton_05(); 15 | } 16 | } 17 | return instance; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-2/src/main/java/cn/bugstack/design/impl/POPOrderAdapterServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.OrderAdapterService; 4 | import cn.bugstack.design.service.POPOrderService; 5 | 6 | /** 7 | * 第三方订单,判断首单逻辑 8 | */ 9 | public class POPOrderAdapterServiceImpl implements OrderAdapterService { 10 | 11 | private POPOrderService popOrderService = new POPOrderService(); 12 | 13 | public boolean isFirst(String uId) { 14 | return popOrderService.isFirstOrder(uId); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-2/src/main/java/cn/bugstack/design/LotteryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.Date; 4 | 5 | public class LotteryServiceImpl extends LotteryService { 6 | 7 | private MinibusTargetService minibusTargetService = new MinibusTargetService(); 8 | 9 | @Override 10 | protected LotteryResult doDraw(String uId) { 11 | // 摇号 12 | String lottery = minibusTargetService.lottery(uId); 13 | // 结果 14 | return new LotteryResult(uId, lottery, new Date()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-2/src/main/java/cn/bugstack/design/IMenu.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public interface IMenu { 4 | 5 | /** 6 | * 吊顶 7 | */ 8 | IMenu appendCeiling(Matter matter); 9 | 10 | /** 11 | * 涂料 12 | */ 13 | IMenu appendCoat(Matter matter); 14 | 15 | /** 16 | * 地板 17 | */ 18 | IMenu appendFloor(Matter matter); 19 | 20 | /** 21 | * 地砖 22 | */ 23 | IMenu appendTile(Matter matter); 24 | 25 | /** 26 | * 明细 27 | */ 28 | String getDetail(); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/java/cn/bugstack/design/mediator/SqlSession.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.mediator; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 公众号 | bugstack虫洞栈 7 | * 博 客 | https://bugstack.cn 8 | * Create by 小傅哥 @2020 9 | */ 10 | public interface SqlSession { 11 | 12 | T selectOne(String statement); 13 | 14 | T selectOne(String statement, Object parameter); 15 | 16 | List selectList(String statement); 17 | 18 | List selectList(String statement, Object parameter); 19 | 20 | void close(); 21 | } 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-2/src/main/java/cn/bugstack/design/event/listener/MQEventListener.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.event.listener; 2 | 3 | import cn.bugstack.design.LotteryResult; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | public class MQEventListener implements EventListener { 8 | 9 | private Logger logger = LoggerFactory.getLogger(MQEventListener.class); 10 | 11 | @Override 12 | public void doEvent(LotteryResult result) { 13 | logger.info("记录用户 {} 摇号结果(MQ):{}", result.getuId(), result.getMsg()); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/Matter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * 装修物料 7 | */ 8 | public interface Matter { 9 | 10 | /** 11 | * 场景;地板、地砖、涂料、吊顶 12 | */ 13 | String scene(); 14 | 15 | /** 16 | * 品牌 17 | */ 18 | String brand(); 19 | 20 | /** 21 | * 型号 22 | */ 23 | String model(); 24 | 25 | /** 26 | * 平米报价 27 | */ 28 | BigDecimal price(); 29 | 30 | /** 31 | * 描述 32 | */ 33 | String desc(); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/java/cn/bugstack/design/rpc/config/ServerConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config; 2 | 3 | public class ServerConfig { 4 | 5 | protected String host; //注册中心地址 6 | protected int port; //注册中心端口 7 | 8 | public String getHost() { 9 | return host; 10 | } 11 | 12 | public void setHost(String host) { 13 | this.host = host; 14 | } 15 | 16 | public int getPort() { 17 | return port; 18 | } 19 | 20 | public void setPort(int port) { 21 | this.port = port; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/config/ServerConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config; 2 | 3 | public class ServerConfig { 4 | 5 | protected String host; //注册中心地址 6 | protected int port; //注册中心端口 7 | 8 | public String getHost() { 9 | return host; 10 | } 11 | 12 | public void setHost(String host) { 13 | this.host = host; 14 | } 15 | 16 | public int getPort() { 17 | return port; 18 | } 19 | 20 | public void setPort(int port) { 21 | this.port = port; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.LoginSsoDecorator; 4 | import org.junit.Test; 5 | 6 | public class ApiTest { 7 | 8 | @Test 9 | public void test_LoginSsoDecorator() { 10 | LoginSsoDecorator ssoDecorator = new LoginSsoDecorator(); 11 | String request = "1successhuahua"; 12 | boolean success = ssoDecorator.preHandle(request, "ewcdqwt40liuiu", "t"); 13 | System.out.println("登录校验:" + request + (success ? " 放行" : " 拦截")); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-0/src/test/java/cn/bugstack/design/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | */ 10 | public class ApiTest{ 11 | 12 | @Test 13 | public void test_ISkill(){ 14 | // 后裔 15 | HeroHouYi heroHouYi = new HeroHouYi(); 16 | heroHouYi.doArchery(); 17 | 18 | // 廉颇 19 | HeroLianPo heroLianPo = new HeroLianPo(); 20 | heroLianPo.doInvisible(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-2/src/main/java/cn/bugstack/design/event/listener/MessageEventListener.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.event.listener; 2 | 3 | import cn.bugstack.design.LotteryResult; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | public class MessageEventListener implements EventListener { 8 | 9 | private Logger logger = LoggerFactory.getLogger(MessageEventListener.class); 10 | 11 | @Override 12 | public void doEvent(LotteryResult result) { 13 | logger.info("给用户 {} 发送短信通知(短信):{}", result.getuId(), result.getMsg()); 14 | } 15 | 16 | } -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/resources/rpc-center.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/test/resources/rpc-center.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-4/src/main/java/cn/bugstack/design/rpc/export/domain/Hi.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.export.domain; 2 | 3 | public class Hi { 4 | 5 | private String userName; 6 | private String sayMsg; 7 | 8 | public String getUserName() { 9 | return userName; 10 | } 11 | 12 | public void setUserName(String userName) { 13 | this.userName = userName; 14 | } 15 | 16 | public String getSayMsg() { 17 | return sayMsg; 18 | } 19 | 20 | public void setSayMsg(String sayMsg) { 21 | this.sayMsg = sayMsg; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.1-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.1-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.2-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.2-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.3-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.3-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.3-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.3-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.4-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.4-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.4-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.4-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.5-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.5-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.6-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-2.6-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/java/cn/bugstack/design/rpc/config/ConsumerConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config; 2 | 3 | public class ConsumerConfig { 4 | 5 | protected String nozzle; //接口 6 | protected String alias; //别名 7 | 8 | public String getNozzle() { 9 | return nozzle; 10 | } 11 | 12 | public void setNozzle(String nozzle) { 13 | this.nozzle = nozzle; 14 | } 15 | 16 | public String getAlias() { 17 | return alias; 18 | } 19 | 20 | public void setAlias(String alias) { 21 | this.alias = alias; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/config/ConsumerConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config; 2 | 3 | public class ConsumerConfig { 4 | 5 | protected String nozzle; //接口 6 | protected String alias; //别名 7 | 8 | public String getNozzle() { 9 | return nozzle; 10 | } 11 | 12 | public void setNozzle(String nozzle) { 13 | this.nozzle = nozzle; 14 | } 15 | 16 | public String getAlias() { 17 | return alias; 18 | } 19 | 20 | public void setAlias(String alias) { 21 | this.alias = alias; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-4.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-5.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-6.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-7.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-7.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-8.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-8.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-9.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-10.0-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-10.0-2 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-11.0-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-11.0-2 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-12.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-2/src/main/java/cn/bugstack/design/SsoDecorator.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public abstract class SsoDecorator implements HandlerInterceptor { 4 | 5 | private HandlerInterceptor handlerInterceptor; 6 | 7 | private SsoDecorator(){} 8 | 9 | public SsoDecorator(HandlerInterceptor handlerInterceptor) { 10 | this.handlerInterceptor = handlerInterceptor; 11 | } 12 | 13 | public boolean preHandle(String request, String response, Object handler) { 14 | return handlerInterceptor.preHandle(request, response, handler); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-14.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-14.0-2 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-16.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-16.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-17.0-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-17.0-2 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cook/impl/ShanDongCook.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cook.impl; 2 | 3 | import cn.bugstack.design.cook.ICook; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | */ 12 | public class ShanDongCook implements ICook { 13 | 14 | private Logger logger = LoggerFactory.getLogger(ICook.class); 15 | 16 | public void doCooking() { 17 | logger.info("山东厨师,烹饪鲁菜,宫廷菜系,以孔府风味为龙头"); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cn-bugstack-design-18.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-18.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-20.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-20.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-21.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-22.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-22.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-23.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-23.0-1 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-23.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-23.0-2 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-24.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-24.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-25.0-0 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/tree/repository/ITreeRepository.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.tree.repository; 2 | 3 | import cn.bugstack.design.domain.tree.model.vo.TreeInfo; 4 | import cn.bugstack.design.domain.tree.model.vo.TreeRulePoint; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 微信公众号:bugstack虫洞栈 | 欢迎关注学习专题案例 10 | * 论坛:http://bugstack.cn 11 | * Create by 付政委 on @2019 12 | */ 13 | public interface ITreeRepository { 14 | 15 | TreeInfo queryTreeInfo(Long treeId); 16 | 17 | List queryTreeRulePointList(Long treeId); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cook/impl/GuangDongCook.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cook.impl; 2 | 3 | import cn.bugstack.design.cook.ICook; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | */ 12 | public class GuangDongCook implements ICook { 13 | 14 | private Logger logger = LoggerFactory.getLogger(ICook.class); 15 | 16 | public void doCooking() { 17 | logger.info("广东厨师,烹饪鲁菜,宫廷菜系,以孔府风味为龙头"); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cook/impl/JiangSuCook.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cook.impl; 2 | 3 | import cn.bugstack.design.cook.ICook; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | */ 12 | public class JiangSuCook implements ICook { 13 | 14 | private Logger logger = LoggerFactory.getLogger(ICook.class); 15 | 16 | public void doCooking() { 17 | logger.info("江苏厨师,烹饪苏菜,宫廷菜系,古今国宴上最受人欢迎的菜系。"); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cook/impl/SiChuanCook.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cook.impl; 2 | 3 | import cn.bugstack.design.cook.ICook; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | */ 12 | public class SiChuanCook implements ICook { 13 | 14 | private Logger logger = LoggerFactory.getLogger(ICook.class); 15 | 16 | public void doCooking() { 17 | logger.info("四川厨师,烹饪川菜,中国最有特色的菜系,也是民间喜欢的菜系。"); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/resources/rpc-consumer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-2/src/main/java/cn/bugstack/design/rpc/network/msg/Response.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.msg; 2 | 3 | public class Response { 4 | 5 | private String requestId; 6 | private String param; 7 | 8 | public String getRequestId() { 9 | return requestId; 10 | } 11 | 12 | public void setRequestId(String requestId) { 13 | this.requestId = requestId; 14 | } 15 | 16 | public String getParam() { 17 | return param; 18 | } 19 | 20 | public void setParam(String param) { 21 | this.param = param; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/test/resources/rpc-consumer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-0/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.VideoUserService; 4 | import org.junit.Test; 5 | 6 | /** 7 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 公众号:bugstack虫洞栈 9 | * Create by 小傅哥(fustack) @2020 10 | */ 11 | public class ApiTest { 12 | 13 | @Test 14 | public void test_serveGrade(){ 15 | VideoUserService service = new VideoUserService(); 16 | service.serveGrade("VIP用户"); 17 | service.serveGrade("普通用户"); 18 | service.serveGrade("访客用户"); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-1/src/main/java/cn/bugstack/design/impl/GuestVideoUserService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.IVideoUserService; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | * 10 | * 用户类型;访客用户 11 | */ 12 | public class GuestVideoUserService implements IVideoUserService { 13 | 14 | public void definition() { 15 | System.out.println("访客用户,视频480P高清"); 16 | } 17 | 18 | public void advertisement() { 19 | System.out.println("访客用户,视频有广告"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-1/src/main/java/cn/bugstack/design/impl/VipVideoUserService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.IVideoUserService; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | * 10 | * 用户类型;VIP用户 11 | */ 12 | public class VipVideoUserService implements IVideoUserService { 13 | 14 | public void definition() { 15 | System.out.println("VIP用户,视频1080P蓝光"); 16 | } 17 | 18 | public void advertisement() { 19 | System.out.println("VIP用户,视频无广告"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/service/logic/impl/UserAgeFilter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.service.logic.impl; 2 | 3 | import cn.bugstack.design.domain.rule.model.vo.DecisionMatter; 4 | import cn.bugstack.design.domain.rule.service.logic.BaseLogic; 5 | import org.springframework.stereotype.Service; 6 | 7 | @Service("userAgeFilter") 8 | public class UserAgeFilter extends BaseLogic { 9 | 10 | @Override 11 | public String matterValue(DecisionMatter decisionMatter) { 12 | return decisionMatter.getValMap().get("age").toString(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-2/src/main/java/cn/bugstack/design/rpc/network/msg/Request.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.msg; 2 | 3 | public class Request { 4 | 5 | private String requestId; 6 | private Object result; 7 | 8 | public String getRequestId() { 9 | return requestId; 10 | } 11 | 12 | public void setRequestId(String requestId) { 13 | this.requestId = requestId; 14 | } 15 | 16 | public Object getResult() { 17 | return result; 18 | } 19 | 20 | public void setResult(Object result) { 21 | this.result = result; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-1/src/main/java/cn/bugstack/design/impl/OrdinaryVideoUserService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.IVideoUserService; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | * 10 | * 用户类型;普通用户 11 | */ 12 | public class OrdinaryVideoUserService implements IVideoUserService { 13 | 14 | public void definition() { 15 | System.out.println("普通用户,视频720P超清"); 16 | } 17 | 18 | public void advertisement() { 19 | System.out.println("普通用户,视频有广告"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-2/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.Builder; 4 | import org.junit.Test; 5 | 6 | public class ApiTest { 7 | 8 | @Test 9 | public void test_Builder(){ 10 | Builder builder = new Builder(); 11 | 12 | // 豪华欧式 13 | System.out.println(builder.levelOne(132.52D).getDetail()); 14 | 15 | // 轻奢田园 16 | System.out.println(builder.levelTwo(98.25D).getDetail()); 17 | 18 | // 现代简约 19 | System.out.println(builder.levelThree(85.43D).getDetail()); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/main/java/cn/bugstack/design/pay/channel/Pay.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.pay.channel; 2 | 3 | import cn.bugstack.design.pay.mode.IPayMode; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | import java.math.BigDecimal; 8 | 9 | public abstract class Pay { 10 | 11 | protected Logger logger = LoggerFactory.getLogger(Pay.class); 12 | 13 | protected IPayMode payMode; 14 | 15 | public Pay(IPayMode payMode) { 16 | this.payMode = payMode; 17 | } 18 | 19 | public abstract String transfer(String uId, String tradeId, BigDecimal amount); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/src/main/java/cn/bugstack/design/user/User.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.user; 2 | 3 | import cn.bugstack.design.visitor.Visitor; 4 | 5 | // 基础用户信息 6 | public abstract class User { 7 | 8 | public String name; // 姓名 9 | public String identity; // 身份;重点班、普通班 | 特级教师、普通教师、实习教师 10 | public String clazz; // 班级 11 | 12 | public User(String name, String identity, String clazz) { 13 | this.name = name; 14 | this.identity = identity; 15 | this.clazz = clazz; 16 | } 17 | 18 | // 核心访问方法 19 | public abstract void accept(Visitor visitor); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/service/logic/impl/UserGenderFilter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.service.logic.impl; 2 | 3 | import cn.bugstack.design.domain.rule.model.vo.DecisionMatter; 4 | import cn.bugstack.design.domain.rule.service.logic.BaseLogic; 5 | import org.springframework.stereotype.Service; 6 | 7 | @Service("userGenderFilter") 8 | public class UserGenderFilter extends BaseLogic { 9 | 10 | @Override 11 | public String matterValue(DecisionMatter decisionMatter) { 12 | return decisionMatter.getValMap().get("gender").toString(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cuisine/impl/JiangSuCuisine.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cuisine.impl; 2 | 3 | import cn.bugstack.design.cook.ICook; 4 | import cn.bugstack.design.cuisine.ICuisine; 5 | 6 | /** 7 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 公众号:bugstack虫洞栈 9 | * Create by 小傅哥(fustack) @2020 10 | * 11 | * 江苏(苏菜) 12 | */ 13 | public class JiangSuCuisine implements ICuisine { 14 | 15 | private ICook cook; 16 | 17 | public JiangSuCuisine(ICook cook) { 18 | this.cook = cook; 19 | } 20 | 21 | public void cook() { 22 | cook.doCooking(); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-2/src/main/java/cn/bugstack/design/rpc/network/future/WriteFuture.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.future; 2 | 3 | import cn.bugstack.design.rpc.network.msg.Response; 4 | 5 | import java.util.concurrent.Future; 6 | 7 | public interface WriteFuture extends Future { 8 | 9 | Throwable cause(); 10 | 11 | void setCause(Throwable cause); 12 | 13 | boolean isWriteSuccess(); 14 | 15 | void setWriteResult(boolean result); 16 | 17 | String requestId(); 18 | 19 | T response(); 20 | 21 | void setResponse(Response response); 22 | 23 | boolean isTimeout(); 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/network/future/WriteFuture.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.future; 2 | 3 | import cn.bugstack.design.rpc.network.msg.Response; 4 | 5 | import java.util.concurrent.Future; 6 | 7 | public interface WriteFuture extends Future { 8 | 9 | Throwable cause(); 10 | 11 | void setCause(Throwable cause); 12 | 13 | boolean isWriteSuccess(); 14 | 15 | void setWriteResult(boolean result); 16 | 17 | String requestId(); 18 | 19 | T response(); 20 | 21 | void setResponse(Response response); 22 | 23 | boolean isTimeout(); 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.EngineController; 4 | import org.junit.Test; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | public class ApiTest { 9 | 10 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 11 | 12 | @Test 13 | public void test_EngineController() { 14 | EngineController engineController = new EngineController(); 15 | String process = engineController.process("Oli09pLkdjh", "man", 29); 16 | logger.info("测试结果:{}", process); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-2/src/main/java/cn/bugstack/design/door/config/StarterService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.door.config; 2 | 3 | import org.springframework.util.StringUtils; 4 | 5 | /** 6 | * 切面定义 7 | * 公众号:bugstack虫洞栈 | 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 博 客:http://bugstack.cn 9 | * Create by 小傅哥 on @2020 10 | */ 11 | public class StarterService { 12 | 13 | private String userStr; 14 | 15 | public StarterService(String userStr) { 16 | this.userStr = userStr; 17 | } 18 | 19 | public String[] split(String separatorChar) { 20 | return StringUtils.split(this.userStr, separatorChar); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cuisine/impl/ShanDongCuisine.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cuisine.impl; 2 | 3 | import cn.bugstack.design.cook.ICook; 4 | import cn.bugstack.design.cuisine.ICuisine; 5 | 6 | /** 7 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 公众号:bugstack虫洞栈 9 | * Create by 小傅哥(fustack) @2020 10 | * 11 | * 山东(鲁菜) 12 | */ 13 | public class ShanDongCuisine implements ICuisine { 14 | 15 | private ICook cook; 16 | 17 | public ShanDongCuisine(ICook cook) { 18 | this.cook = cook; 19 | } 20 | 21 | public void cook() { 22 | cook.doCooking(); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /cn-bugstack-design-20.0-0/src/main/java/cn/bugstack/design/ConfigOriginator.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class ConfigOriginator { 4 | 5 | private ConfigFile configFile; 6 | 7 | public ConfigFile getConfigFile() { 8 | return configFile; 9 | } 10 | 11 | public void setConfigFile(ConfigFile configFile) { 12 | this.configFile = configFile; 13 | } 14 | 15 | public ConfigMemento saveMemento(){ 16 | return new ConfigMemento(configFile); 17 | } 18 | 19 | public void getMemento(ConfigMemento memento){ 20 | this.configFile = memento.getConfigFile(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-2/src/main/java/cn/bugstack/design/door/annotation/DoDoor.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.door.annotation; 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 | /** 9 | * 切面定义 10 | * 公众号:bugstack虫洞栈 | 沉淀、分享、成长,让自己和他人都能有所收获! 11 | * 博 客:http://bugstack.cn 12 | * Create by 小傅哥 on @2020 13 | */ 14 | @Retention(RetentionPolicy.RUNTIME) 15 | @Target(ElementType.METHOD) 16 | public @interface DoDoor { 17 | 18 | String key() default ""; 19 | 20 | String returnJson() default ""; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cuisine/impl/SiChuanCuisine.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cuisine.impl; 2 | 3 | 4 | import cn.bugstack.design.cook.ICook; 5 | import cn.bugstack.design.cuisine.ICuisine; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | * 12 | * 四川(川菜) 13 | */ 14 | public class SiChuanCuisine implements ICuisine { 15 | 16 | private ICook cook; 17 | 18 | public SiChuanCuisine(ICook cook) { 19 | this.cook = cook; 20 | } 21 | 22 | public void cook() { 23 | cook.doCooking(); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-2/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.LoginSsoDecorator; 4 | import cn.bugstack.design.SsoInterceptor; 5 | import org.junit.Test; 6 | 7 | public class ApiTest { 8 | 9 | @Test 10 | public void test_LoginSsoDecorator() { 11 | LoginSsoDecorator ssoDecorator = new LoginSsoDecorator(new SsoInterceptor()); 12 | String request = "1successhuahua"; 13 | boolean success = ssoDecorator.preHandle(request, "ewcdqwt40liuiu", "t"); 14 | System.out.println("登录校验:" + request + (success ? " 放行" : " 拦截")); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/cuisine/impl/GuangDoneCuisine.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.cuisine.impl; 2 | 3 | import cn.bugstack.design.cook.ICook; 4 | import cn.bugstack.design.cuisine.ICuisine; 5 | 6 | /** 7 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 公众号:bugstack虫洞栈 9 | * Create by 小傅哥(fustack) @2020 10 | * 11 | * 广东(粤菜) 12 | */ 13 | public class GuangDoneCuisine implements ICuisine { 14 | 15 | private ICook cook; 16 | 17 | public GuangDoneCuisine(ICook cook) { 18 | this.cook = cook; 19 | } 20 | 21 | public void cook() { 22 | cook.doCooking(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-5/src/test/java/cn/bugstack/design/rpc/provider/test/ProviderTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.provider.test; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.test.context.ContextConfiguration; 6 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 7 | 8 | @RunWith(SpringJUnit4ClassRunner.class) 9 | @ContextConfiguration("/spring-config.xml") 10 | public class ProviderTest { 11 | 12 | @Test 13 | public void init() throws InterruptedException { 14 | while (true){ 15 | Thread.sleep(5000); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cn-bugstack-design-23.0-2/src/main/java/cn/bugstack/design/Context.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | */ 10 | public class Context { 11 | 12 | private ICouponDiscount couponDiscount; 13 | 14 | public Context(ICouponDiscount couponDiscount) { 15 | this.couponDiscount = couponDiscount; 16 | } 17 | 18 | public BigDecimal discountAmount(T couponInfo, BigDecimal skuPrice) { 19 | return couponDiscount.discountAmount(couponInfo, skuPrice); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-22.0-1/src/main/java/cn/bugstack/design/Result.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class Result { 4 | 5 | private String code; // 编码 6 | private String info; // 描述 7 | 8 | public Result(String code, String info) { 9 | this.code = code; 10 | this.info = info; 11 | } 12 | 13 | public String getCode() { 14 | return code; 15 | } 16 | 17 | public void setCode(String code) { 18 | this.code = code; 19 | } 20 | 21 | public String getInfo() { 22 | return info; 23 | } 24 | 25 | public void setInfo(String info) { 26 | this.info = info; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /cn-bugstack-design-22.0-2/src/main/java/cn/bugstack/design/Result.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class Result { 4 | 5 | private String code; // 编码 6 | private String info; // 描述 7 | 8 | public Result(String code, String info) { 9 | this.code = code; 10 | this.info = info; 11 | } 12 | 13 | public String getCode() { 14 | return code; 15 | } 16 | 17 | public void setCode(String code) { 18 | this.code = code; 19 | } 20 | 21 | public String getInfo() { 22 | return info; 23 | } 24 | 25 | public void setInfo(String info) { 26 | this.info = info; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /cn-bugstack-design-23.0-2/src/main/java/cn/bugstack/design/impl/NYGCouponDiscount.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.ICouponDiscount; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | * 12 | * n元购买 13 | */ 14 | public class NYGCouponDiscount implements ICouponDiscount { 15 | 16 | /** 17 | * n元购购买 18 | * 1. 无论原价多少钱都固定金额购买 19 | */ 20 | public BigDecimal discountAmount(Double couponInfo, BigDecimal skuPrice) { 21 | return new BigDecimal(couponInfo); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/resources/rpc-provider.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/test/resources/rpc-provider.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-0/src/main/java/cn/bugstack/design/HelloWorldApplication.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | /** 8 | * 微信公众号:bugstack虫洞栈 | 沉淀、分享、成长,专注于原创专题案例 9 | * 论坛:http://bugstack.cn 10 | * Create by 小傅哥 on @2020 11 | */ 12 | @SpringBootApplication 13 | @Configuration 14 | public class HelloWorldApplication { 15 | 16 | public static void main(String[] args) { 17 | SpringApplication.run(HelloWorldApplication.class, args); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.XiaoEr; 4 | import org.junit.Test; 5 | 6 | /** 7 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 公众号:bugstack虫洞栈 9 | * Create by 小傅哥(fustack) @2020 10 | */ 11 | public class ApiTest { 12 | 13 | @Test 14 | public void test(){ 15 | // 广东(粤菜)、江苏(苏菜)、山东(鲁菜)、四川(川菜) 16 | XiaoEr xiaoEr = new XiaoEr(); 17 | xiaoEr.order(1); 18 | xiaoEr.order(2); 19 | xiaoEr.order(3); 20 | xiaoEr.order(4); 21 | 22 | // 下单 23 | xiaoEr.placeOrder(); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /cn-bugstack-design-7.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.QuestionBankController; 4 | import org.junit.Test; 5 | 6 | public class ApiTest { 7 | 8 | @Test 9 | public void test_QuestionBankController() { 10 | QuestionBankController questionBankController = new QuestionBankController(); 11 | System.out.println(questionBankController.createPaper("花花", "1000001921032")); 12 | System.out.println(questionBankController.createPaper("豆豆", "1000001921051")); 13 | System.out.println(questionBankController.createPaper("大宝", "1000001921987")); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.PayController; 4 | import org.junit.Test; 5 | 6 | import java.math.BigDecimal; 7 | 8 | public class ApiTest { 9 | 10 | @Test 11 | public void test_pay() { 12 | PayController pay = new PayController(); 13 | 14 | System.out.println("\r\n模拟测试场景;微信支付、人脸方式。"); 15 | pay.doPay("weixin_1092033111", "100000109893", new BigDecimal(100), 1, 2); 16 | 17 | System.out.println("\r\n模拟测试场景;支付宝支付、指纹方式。"); 18 | pay.doPay("jlu19dlxo111","100000109894",new BigDecimal(100), 2, 3); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.hero.HeroHouYi; 4 | import cn.bugstack.design.hero.HeroLianPo; 5 | import org.junit.Test; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | */ 12 | public class ApiTest { 13 | 14 | @Test 15 | public void test(){ 16 | // 后裔 17 | HeroHouYi heroHouYi = new HeroHouYi(); 18 | heroHouYi.doArchery(); 19 | // 廉颇 20 | HeroLianPo heroLianPo = new HeroLianPo(); 21 | heroLianPo.doInvisible(); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-2/src/main/java/cn/bugstack/design/door/config/StarterServiceProperties.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.door.config; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | 5 | /** 6 | * 切面定义 7 | * 公众号:bugstack虫洞栈 | 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 博 客:http://bugstack.cn 9 | * Create by 小傅哥 on @2020 10 | */ 11 | @ConfigurationProperties("itstack.door") 12 | public class StarterServiceProperties { 13 | 14 | private String userStr; 15 | 16 | public String getUserStr() { 17 | return userStr; 18 | } 19 | 20 | public void setUserStr(String userStr) { 21 | this.userStr = userStr; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/java/cn/bugstack/design/mediator/DefaultSqlSessionFactory.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.mediator; 2 | 3 | /** 4 | * 公众号 | bugstack虫洞栈 5 | * 博 客 | https://bugstack.cn 6 | * Create by 小傅哥 @2020 7 | */ 8 | public class DefaultSqlSessionFactory implements SqlSessionFactory { 9 | 10 | private final Configuration configuration; 11 | 12 | public DefaultSqlSessionFactory(Configuration configuration) { 13 | this.configuration = configuration; 14 | } 15 | 16 | @Override 17 | public SqlSession openSession() { 18 | return new DefaultSqlSession(configuration.connection, configuration.mapperElement); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-23.0-2/src/main/java/cn/bugstack/design/ICouponDiscount.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | *

10 | * 优惠券折扣计算接口 11 | *

12 | * 优惠券类型; 13 | * 1. 直减券 14 | * 2. 满减券 15 | * 3. 折扣券 16 | * 4. n元购 17 | */ 18 | public interface ICouponDiscount { 19 | 20 | /** 21 | * 优惠券金额计算 22 | * @param couponInfo 券折扣信息;直减、满减、折扣、N元购 23 | * @param skuPrice sku金额 24 | * @return 优惠后金额 25 | */ 26 | BigDecimal discountAmount(T couponInfo, BigDecimal skuPrice); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.1-0/src/main/java/cn/bugstack/design/VideoUserService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 视频用户服务 9 | */ 10 | public class VideoUserService { 11 | 12 | public void serveGrade(String userType){ 13 | if ("VIP用户".equals(userType)){ 14 | System.out.println("VIP用户,视频1080P蓝光"); 15 | } else if ("普通用户".equals(userType)){ 16 | System.out.println("普通用户,视频720P超清"); 17 | } else if ("访客用户".equals(userType)){ 18 | System.out.println("访客用户,视频480P高清"); 19 | } 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-7.0-2/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.QuestionBankController; 4 | import org.junit.Test; 5 | 6 | public class ApiTest { 7 | 8 | @Test 9 | public void test_QuestionBank() throws CloneNotSupportedException { 10 | QuestionBankController questionBankController = new QuestionBankController(); 11 | System.out.println(questionBankController.createPaper("花花", "1000001921032")); 12 | System.out.println(questionBankController.createPaper("豆豆", "1000001921051")); 13 | System.out.println(questionBankController.createPaper("大宝", "1000001921987")); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-6/src/main/resources/spring/rpc-consumer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-1/src/main/java/cn/bugstack/design/AwardRes.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 发奖结果反馈对象 5 | */ 6 | public class AwardRes { 7 | 8 | private String code; // 编码 9 | private String info; // 描述 10 | 11 | public AwardRes(String code, String info) { 12 | this.code = code; 13 | this.info = info; 14 | } 15 | 16 | public String getCode() { 17 | return code; 18 | } 19 | 20 | public void setCode(String code) { 21 | this.code = code; 22 | } 23 | 24 | public String getInfo() { 25 | return info; 26 | } 27 | 28 | public void setInfo(String info) { 29 | this.info = info; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /cn-bugstack-design-14.0-2/src/main/java/cn/bugstack/design/ActivityController.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import cn.bugstack.design.util.RedisUtils; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | */ 10 | public class ActivityController { 11 | 12 | private RedisUtils redisUtils = new RedisUtils(); 13 | 14 | public Activity queryActivityInfo(Long id) { 15 | Activity activity = ActivityFactory.getActivity(id); 16 | // 模拟从Redis中获取库存变化信息 17 | Stock stock = new Stock(1000, redisUtils.getStockUsed()); 18 | activity.setStock(stock); 19 | return activity; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/java/cn/bugstack/design/rpc/config/spring/bean/ProviderBean.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config.spring.bean; 2 | 3 | import cn.bugstack.design.rpc.config.ProviderConfig; 4 | import org.springframework.beans.BeansException; 5 | import org.springframework.context.ApplicationContext; 6 | import org.springframework.context.ApplicationContextAware; 7 | 8 | public class ProviderBean extends ProviderConfig implements ApplicationContextAware { 9 | 10 | @Override 11 | public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 12 | System.out.format("生产者信息=> [接口:%s] [映射:%s] [别名:%s] \r\n", nozzle, ref, alias); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/src/main/java/cn/bugstack/design/user/impl/Teacher.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.user.impl; 2 | 3 | import cn.bugstack.design.user.User; 4 | import cn.bugstack.design.visitor.Visitor; 5 | 6 | import java.math.BigDecimal; 7 | 8 | // 老师 9 | public class Teacher extends User { 10 | 11 | public Teacher(String name, String identity, String clazz) { 12 | super(name, identity, clazz); 13 | } 14 | 15 | public void accept(Visitor visitor) { 16 | visitor.visit(this); 17 | } 18 | 19 | // 升本率 20 | public double entranceRatio() { 21 | return BigDecimal.valueOf(Math.random() * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-16.0-0/src/main/java/cn/bugstack/design/AuthService.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.Date; 4 | import java.util.Map; 5 | import java.util.concurrent.ConcurrentHashMap; 6 | 7 | /** 8 | * 模拟审核服务 9 | * 1. auth 审核流程 10 | * 2. queryAuthInfo 查询审核信息(时间) 11 | */ 12 | public class AuthService { 13 | 14 | private static Map authMap = new ConcurrentHashMap(); 15 | 16 | public static Date queryAuthInfo(String uId, String orderId) { 17 | return authMap.get(uId.concat(orderId)); 18 | } 19 | 20 | public static void auth(String uId, String orderId) { 21 | authMap.put(uId.concat(orderId), new Date()); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-0/src/main/java/cn/bugstack/design/HeroLianPo.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | */ 8 | public class HeroLianPo implements ISkill{ 9 | 10 | @Override 11 | public void doArchery() { 12 | // 无此技能的实现 13 | } 14 | 15 | @Override 16 | public void doInvisible() { 17 | System.out.println("廉颇的隐身技能"); 18 | } 19 | 20 | @Override 21 | public void doSilent() { 22 | System.out.println("廉颇的沉默技能"); 23 | } 24 | 25 | @Override 26 | public void doVertigo() { 27 | System.out.println("廉颇的眩晕技能"); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/src/main/java/cn/bugstack/design/user/impl/Student.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.user.impl; 2 | 3 | import cn.bugstack.design.user.User; 4 | import cn.bugstack.design.visitor.Visitor; 5 | 6 | import java.util.Random; 7 | 8 | // 学生 9 | public class Student extends User { 10 | 11 | public Student(String name, String identity, String clazz) { 12 | super(name, identity, clazz); 13 | } 14 | 15 | public void accept(Visitor visitor) { 16 | visitor.visit(this); 17 | } 18 | 19 | public int ranking() { 20 | return (int) (Math.random() * 100); 21 | } 22 | 23 | public int count() { 24 | return 105 - new Random().nextInt(10); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-2/src/main/java/cn/bugstack/design/factory/JDKProxyFactory.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.factory; 2 | 3 | import cn.bugstack.design.workshop.ICacheAdapter; 4 | 5 | import java.lang.reflect.InvocationHandler; 6 | import java.lang.reflect.Proxy; 7 | 8 | public class JDKProxyFactory { 9 | 10 | public static T getProxy(Class cacheClazz, Class cacheAdapter) throws Exception { 11 | InvocationHandler handler = new JDKInvocationHandler(cacheAdapter.newInstance()); 12 | ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 13 | return (T) Proxy.newProxyInstance(classLoader, new Class[]{cacheClazz}, handler); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-0/src/main/java/cn/bugstack/design/coupon/CouponResult.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.coupon; 2 | 3 | /** 4 | * 优惠券返回结果类 5 | */ 6 | public class CouponResult { 7 | 8 | private String code; // 编码 9 | private String info; // 描述 10 | 11 | public CouponResult(String code, String info) { 12 | this.code = code; 13 | this.info = info; 14 | } 15 | 16 | public String getCode() { 17 | return code; 18 | } 19 | 20 | public void setCode(String code) { 21 | this.code = code; 22 | } 23 | 24 | public String getInfo() { 25 | return info; 26 | } 27 | 28 | public void setInfo(String info) { 29 | this.info = info; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/floor/DerFloor.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.floor; 2 | 3 | import cn.bugstack.design.Matter; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 地板 9 | * 品牌;德尔(Der) 10 | */ 11 | public class DerFloor implements Matter { 12 | 13 | public String scene() { 14 | return "地板"; 15 | } 16 | 17 | public String brand() { 18 | return "德尔(Der)"; 19 | } 20 | 21 | public String model() { 22 | return "A+"; 23 | } 24 | 25 | public BigDecimal price() { 26 | return new BigDecimal(119); 27 | } 28 | 29 | public String desc() { 30 | return "DER德尔集团是全球领先的专业木地板制造商,北京2008年奥运会家装和公装地板供应商"; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /cn-bugstack-design-16.0-2/src/main/java/cn/bugstack/design/AuthInfo.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | public class AuthInfo { 4 | 5 | private String code; 6 | private String info = ""; 7 | 8 | public AuthInfo(String code, String ...infos) { 9 | this.code = code; 10 | for (String str:infos){ 11 | this.info = this.info.concat(str); 12 | } 13 | } 14 | 15 | public String getCode() { 16 | return code; 17 | } 18 | 19 | public void setCode(String code) { 20 | this.code = code; 21 | } 22 | 23 | public String getInfo() { 24 | return info; 25 | } 26 | 27 | public void setInfo(String info) { 28 | this.info = info; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /cn-bugstack-design-18.0-0/src/main/java/cn/bugstack/design/group/Link.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.group; 2 | 3 | /** 4 | * 树节点链路 5 | */ 6 | public class Link { 7 | 8 | private String fromId; // 雇员ID 9 | private String toId; // 雇员ID 10 | 11 | public Link(String fromId, String toId) { 12 | this.fromId = fromId; 13 | this.toId = toId; 14 | } 15 | 16 | public String getFromId() { 17 | return fromId; 18 | } 19 | 20 | public void setFromId(String fromId) { 21 | this.fromId = fromId; 22 | } 23 | 24 | public String getToId() { 25 | return toId; 26 | } 27 | 28 | public void setToId(String toId) { 29 | this.toId = toId; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/coat/LiBangCoat.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.coat; 2 | 3 | 4 | import cn.bugstack.design.Matter; 5 | 6 | import java.math.BigDecimal; 7 | 8 | /** 9 | * 涂料 10 | * 品牌;立邦 11 | */ 12 | public class LiBangCoat implements Matter { 13 | 14 | public String scene() { 15 | return "涂料"; 16 | } 17 | 18 | public String brand() { 19 | return "立邦"; 20 | } 21 | 22 | public String model() { 23 | return "默认级别"; 24 | } 25 | 26 | public BigDecimal price() { 27 | return new BigDecimal(650); 28 | } 29 | 30 | public String desc() { 31 | return "立邦始终以开发绿色产品、注重高科技、高品质为目标,以技术力量不断推进科研和开发,满足消费者需求。"; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/floor/ShengXiangFloor.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.floor; 2 | 3 | import cn.bugstack.design.Matter; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 地板 9 | * 品牌:圣象 10 | */ 11 | public class ShengXiangFloor implements Matter { 12 | 13 | public String scene() { 14 | return "地板"; 15 | } 16 | 17 | public String brand() { 18 | return "圣象"; 19 | } 20 | 21 | public String model() { 22 | return "一级"; 23 | } 24 | 25 | public BigDecimal price() { 26 | return new BigDecimal(318); 27 | } 28 | 29 | public String desc() { 30 | return "圣象地板是中国地板行业著名品牌。圣象地板拥有中国驰名商标、中国名牌、国家免检、中国环境标志认证等多项荣誉。"; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/tile/DongPengTile.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.tile; 2 | 3 | import cn.bugstack.design.Matter; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 地砖 9 | * 品牌:东鹏瓷砖 10 | */ 11 | public class DongPengTile implements Matter { 12 | 13 | public String scene() { 14 | return "地砖"; 15 | } 16 | 17 | public String brand() { 18 | return "东鹏瓷砖"; 19 | } 20 | 21 | public String model() { 22 | return "10001"; 23 | } 24 | 25 | public BigDecimal price() { 26 | return new BigDecimal(102); 27 | } 28 | 29 | public String desc() { 30 | return "东鹏瓷砖以品质铸就品牌,科技推动品牌,口碑传播品牌为宗旨,2014年品牌价值132.35亿元,位列建陶行业榜首。"; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-0/src/main/java/cn/bugstack/design/HeroHouYi.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 王者英雄 9 | */ 10 | public class HeroHouYi implements ISkill{ 11 | 12 | @Override 13 | public void doArchery() { 14 | System.out.println("后裔的灼日之矢"); 15 | } 16 | 17 | @Override 18 | public void doInvisible() { 19 | System.out.println("后裔的隐身技能"); 20 | } 21 | 22 | @Override 23 | public void doSilent() { 24 | System.out.println("后裔的沉默技能"); 25 | } 26 | 27 | @Override 28 | public void doVertigo() { 29 | // 无此技能的实现 30 | } 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-5/src/main/java/cn/bugstack/design/rpc/provider/web/HelloServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.provider.web; 2 | 3 | import cn.bugstack.design.rpc.export.HelloService; 4 | import cn.bugstack.design.rpc.export.domain.Hi; 5 | import org.springframework.stereotype.Controller; 6 | 7 | @Controller("helloService") 8 | public class HelloServiceImpl implements HelloService { 9 | 10 | @Override 11 | public String hi() { 12 | return "hi bugstack rpc"; 13 | } 14 | 15 | @Override 16 | public String say(String str) { 17 | return str; 18 | } 19 | 20 | @Override 21 | public String sayHi(Hi hi) { 22 | return hi.getUserName() + " say:" + hi.getSayMsg(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.CacheClusterServiceImpl; 4 | import cn.bugstack.design.CacheService; 5 | import org.junit.Test; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | public class ApiTest { 10 | 11 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 12 | 13 | @Test 14 | public void test_CacheServiceAfterImpl() { 15 | CacheService cacheService = new CacheClusterServiceImpl(); 16 | 17 | cacheService.set("user_name_01", "小傅哥", 1); 18 | String val01 = cacheService.get("user_name_01", 1); 19 | logger.info("缓存集群升级,测试结果:{}", val01); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-5/src/main/resources/spring/rpc-provider.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/ceiling/LevelOneCeiling.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.ceiling; 2 | 3 | import cn.bugstack.design.Matter; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 吊顶 9 | * 品牌;装修公司自带 10 | * 型号:一级顶 11 | */ 12 | public class LevelOneCeiling implements Matter { 13 | 14 | public String scene() { 15 | return "吊顶"; 16 | } 17 | 18 | public String brand() { 19 | return "装修公司自带"; 20 | } 21 | 22 | public String model() { 23 | return "一级顶"; 24 | } 25 | 26 | public BigDecimal price() { 27 | return new BigDecimal(260); 28 | } 29 | 30 | public String desc() { 31 | return "造型只做低一级,只有一个层次的吊顶,一般离顶120-150mm"; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/java/cn/bugstack/design/rpc/config/spring/bean/ConsumerBean.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config.spring.bean; 2 | 3 | import cn.bugstack.design.rpc.config.ConsumerConfig; 4 | import org.springframework.beans.factory.FactoryBean; 5 | 6 | public class ConsumerBean extends ConsumerConfig implements FactoryBean { 7 | 8 | @Override 9 | public Object getObject() throws Exception { 10 | System.out.format("消费者信息=> [接口:%s] [别名:%s] \r\n", nozzle, alias); 11 | return null; 12 | } 13 | 14 | @Override 15 | public Class getObjectType() { 16 | return null; 17 | } 18 | 19 | @Override 20 | public boolean isSingleton() { 21 | return false; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/coat/DuluxCoat.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.coat; 2 | 3 | import cn.bugstack.design.Matter; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 涂料 9 | * 品牌;多乐士(Dulux) 10 | */ 11 | public class DuluxCoat implements Matter { 12 | 13 | public String scene() { 14 | return "涂料"; 15 | } 16 | 17 | public String brand() { 18 | return "多乐士(Dulux)"; 19 | } 20 | 21 | public String model() { 22 | return "第二代"; 23 | } 24 | 25 | public BigDecimal price() { 26 | return new BigDecimal(719); 27 | } 28 | 29 | public String desc() { 30 | return "多乐士是阿克苏诺贝尔旗下的著名建筑装饰油漆品牌,产品畅销于全球100个国家,每年全球有5000万户家庭使用多乐士油漆。"; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/ceiling/LevelTwoCeiling.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.ceiling; 2 | 3 | import cn.bugstack.design.Matter; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 吊顶 9 | * 品牌;装修公司自带 10 | * 型号:二级顶 11 | */ 12 | public class LevelTwoCeiling implements Matter { 13 | 14 | public String scene() { 15 | return "吊顶"; 16 | } 17 | 18 | public String brand() { 19 | return "装修公司自带"; 20 | } 21 | 22 | public String model() { 23 | return "二级顶"; 24 | } 25 | 26 | public BigDecimal price() { 27 | return new BigDecimal(850); 28 | } 29 | 30 | public String desc() { 31 | return "两个层次的吊顶,二级吊顶高度一般就往下吊20cm,要是层高很高,也可增加每级的厚度"; 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /cn-bugstack-design-7.0-0/src/main/java/cn/bugstack/design/AnswerQuestion.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 解答题 5 | */ 6 | public class AnswerQuestion { 7 | 8 | private String name; // 问题 9 | private String key; // 答案 10 | 11 | public AnswerQuestion() { 12 | } 13 | 14 | public AnswerQuestion(String name, String key) { 15 | this.name = name; 16 | this.key = key; 17 | } 18 | 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public void setName(String name) { 24 | this.name = name; 25 | } 26 | 27 | public String getKey() { 28 | return key; 29 | } 30 | 31 | public void setKey(String key) { 32 | this.key = key; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.LotteryResult; 4 | import cn.bugstack.design.LotteryService; 5 | import cn.bugstack.design.LotteryServiceImpl; 6 | import com.alibaba.fastjson.JSON; 7 | import org.junit.Test; 8 | import org.slf4j.Logger; 9 | import org.slf4j.LoggerFactory; 10 | 11 | public class ApiTest { 12 | 13 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 14 | 15 | @Test 16 | public void test() { 17 | LotteryService lotteryService = new LotteryServiceImpl(); 18 | LotteryResult result = lotteryService.doDraw("2765789109876"); 19 | logger.info("测试结果:{}", JSON.toJSONString(result)); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/infrastructure/repository/cache/RuleCacheRepository.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.infrastructure.repository.cache; 2 | 3 | import cn.bugstack.design.domain.rule.model.aggregates.TreeRuleRich; 4 | import cn.bugstack.design.domain.rule.repository.IRuleRepository; 5 | import cn.bugstack.design.infrastructure.util.CacheUtil; 6 | import org.springframework.stereotype.Repository; 7 | 8 | /** 9 | * 微信公众号:bugstack虫洞栈 | 欢迎关注学习专题案例 10 | */ 11 | @Repository("ruleCacheRepository") 12 | public class RuleCacheRepository implements IRuleRepository { 13 | 14 | @Override 15 | public TreeRuleRich queryTreeRuleRich(Long treeId) { 16 | return (TreeRuleRich) CacheUtil.cacheMap.get(treeId); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/reflect/JDKProxy.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.reflect; 2 | 3 | import cn.bugstack.design.rpc.network.msg.Request; 4 | import cn.bugstack.design.rpc.util.ClassLoaderUtils; 5 | 6 | import java.lang.reflect.InvocationHandler; 7 | import java.lang.reflect.Proxy; 8 | 9 | public class JDKProxy { 10 | 11 | public static T getProxy(Class interfaceClass, Request request) throws Exception { 12 | InvocationHandler handler = new JDKInvocationHandler(request); 13 | ClassLoader classLoader = ClassLoaderUtils.getCurrentClassLoader(); 14 | T result = (T) Proxy.newProxyInstance(classLoader, new Class[]{interfaceClass}, handler); 15 | return result; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-0/src/main/java/cn/bugstack/design/tile/MarcoPoloTile.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.tile; 2 | 3 | import cn.bugstack.design.Matter; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 地砖 9 | * 品牌;马可波罗(MARCO POLO) 10 | */ 11 | public class MarcoPoloTile implements Matter { 12 | 13 | public String scene() { 14 | return "地砖"; 15 | } 16 | 17 | public String brand() { 18 | return "马可波罗(MARCO POLO)"; 19 | } 20 | 21 | public String model() { 22 | return "缺省"; 23 | } 24 | 25 | public BigDecimal price() { 26 | return new BigDecimal(140); 27 | } 28 | 29 | public String desc() { 30 | return "“马可波罗”品牌诞生于1996年,作为国内最早品牌化的建陶品牌,以“文化陶瓷”占领市场,享有“仿古砖至尊”的美誉。"; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /cn-bugstack-design-14.0-1/src/main/java/cn/bugstack/design/ActivityController.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | */ 10 | public class ActivityController { 11 | 12 | public Activity queryActivityInfo(Long id) { 13 | // 模拟从实际业务应用从接口中获取活动信息 14 | Activity activity = new Activity(); 15 | activity.setId(10001L); 16 | activity.setName("图书嗨乐"); 17 | activity.setDesc("图书优惠券分享激励分享活动第二期"); 18 | activity.setStartTime(new Date()); 19 | activity.setStopTime(new Date()); 20 | activity.setStock(new Stock(1000,1)); 21 | return activity; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-2/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.LotteryResult; 4 | import cn.bugstack.design.LotteryService; 5 | import cn.bugstack.design.LotteryServiceImpl; 6 | import com.alibaba.fastjson.JSON; 7 | import org.junit.Test; 8 | import org.slf4j.Logger; 9 | import org.slf4j.LoggerFactory; 10 | 11 | public class ApiTest { 12 | 13 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 14 | 15 | @Test 16 | public void test_draw() { 17 | LotteryService lotteryService = new LotteryServiceImpl(); 18 | LotteryResult result = lotteryService.draw("2765789109876"); 19 | logger.info("测试结果:{}", JSON.toJSONString(result)); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.DataView; 4 | import cn.bugstack.design.visitor.impl.Parent; 5 | import cn.bugstack.design.visitor.impl.Principal; 6 | import org.junit.Test; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | 10 | public class ApiTest { 11 | 12 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 13 | 14 | @Test 15 | public void test_show(){ 16 | DataView dataView = new DataView(); 17 | 18 | logger.info("\r\n家长视角访问:"); 19 | dataView.show(new Parent()); // 家长 20 | 21 | logger.info("\r\n校长视角访问:"); 22 | dataView.show(new Principal()); // 校长 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/resources/mapper/User_Mapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.DecorationPackageController; 4 | import org.junit.Test; 5 | 6 | import java.math.BigDecimal; 7 | 8 | public class ApiTest { 9 | 10 | @Test 11 | public void test_DecorationPackageController(){ 12 | DecorationPackageController decoration = new DecorationPackageController(); 13 | 14 | // 豪华欧式 15 | System.out.println(decoration.getMatterList(new BigDecimal("132.52"),1)); 16 | 17 | // 轻奢田园 18 | System.out.println(decoration.getMatterList(new BigDecimal("98.25"),2)); 19 | 20 | // 现代简约 21 | System.out.println(decoration.getMatterList(new BigDecimal("85.43"),3)); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-14.0-2/src/main/java/cn/bugstack/design/Stock.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | */ 8 | public class Stock { 9 | 10 | private int total; // 库存总量 11 | private int used; // 库存已用 12 | 13 | public Stock(int total, int used) { 14 | this.total = total; 15 | this.used = used; 16 | } 17 | 18 | public int getTotal() { 19 | return total; 20 | } 21 | 22 | public void setTotal(int total) { 23 | this.total = total; 24 | } 25 | 26 | public int getUsed() { 27 | return used; 28 | } 29 | 30 | public void setUsed(int used) { 31 | this.used = used; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.2-0/src/main/java/cn/bugstack/design/impl/CalculationArea.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.ICalculationArea; 4 | 5 | /** 6 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 7 | * 公众号:bugstack虫洞栈 8 | * Create by 小傅哥(fustack) @2020 9 | */ 10 | public class CalculationArea implements ICalculationArea { 11 | 12 | private final static double π = 3.14D; 13 | 14 | public double rectangle(double x, double y) { 15 | return x * y; 16 | } 17 | 18 | public double triangle(double x, double y, double z) { 19 | double p = (x + y + z) / 2; 20 | return Math.sqrt(p * (p - x) * (p - y) * (p - z)); 21 | } 22 | 23 | public double circular(double r) { 24 | return π * r * r; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/resources/mybatis/mapper/RuleTree_Mapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.4-0/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.Principal; 4 | import com.alibaba.fastjson.JSON; 5 | import org.junit.Test; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 13 | * 公众号:bugstack虫洞栈 14 | * Create by 小傅哥(fustack) @2020 15 | */ 16 | public class ApiTest { 17 | 18 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 19 | 20 | @Test 21 | public void test_Principal() { 22 | Principal principal = new Principal(); 23 | Map map = principal.queryClazzInfo("3年1班"); 24 | logger.info("查询结果:{}", JSON.toJSONString(map)); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.4-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.Principal; 4 | import com.alibaba.fastjson.JSON; 5 | import org.junit.Test; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 13 | * 公众号:bugstack虫洞栈 14 | * Create by 小傅哥(fustack) @2020 15 | */ 16 | public class ApiTest { 17 | 18 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 19 | 20 | @Test 21 | public void test_Principal() { 22 | Principal principal = new Principal(); 23 | Map map = principal.queryClazzInfo("3年1班"); 24 | logger.info("查询结果:{}", JSON.toJSONString(map)); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-0/src/main/java/cn/bugstack/design/application/CacheServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.application; 2 | 3 | import cn.bugstack.design.redis.RedisUtils; 4 | 5 | import java.util.concurrent.TimeUnit; 6 | 7 | public class CacheServiceImpl implements CacheService { 8 | 9 | private RedisUtils redisUtils = new RedisUtils(); 10 | 11 | public String get(String key) { 12 | return redisUtils.get(key); 13 | } 14 | 15 | public void set(String key, String value) { 16 | redisUtils.set(key, value); 17 | } 18 | 19 | public void set(String key, String value, long timeout, TimeUnit timeUnit) { 20 | redisUtils.set(key, value, timeout, timeUnit); 21 | } 22 | 23 | public void del(String key) { 24 | redisUtils.del(key); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-1/src/main/java/cn/bugstack/design/HelloWorldController.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | 4 | import cn.bugstack.design.domain.UserInfo; 5 | import org.springframework.web.bind.annotation.RequestParam; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class HelloWorldController { 11 | 12 | public UserInfo queryUserInfo(@RequestParam String userId) { 13 | 14 | // 做白名单拦截 15 | List userList = new ArrayList(); 16 | userList.add("1001"); 17 | userList.add("aaaa"); 18 | userList.add("ccc"); 19 | if (!userList.contains(userId)) { 20 | return new UserInfo("1111", "非白名单可访问用户拦截!"); 21 | } 22 | 23 | return new UserInfo("虫虫:" + userId, 19, "天津市南开区旮旯胡同100号"); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-2/src/main/java/cn/bugstack/design/factory/JDKInvocationHandler.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.factory; 2 | 3 | import cn.bugstack.design.util.ClassLoaderUtils; 4 | import cn.bugstack.design.workshop.ICacheAdapter; 5 | 6 | import java.lang.reflect.InvocationHandler; 7 | import java.lang.reflect.Method; 8 | 9 | public class JDKInvocationHandler implements InvocationHandler { 10 | 11 | private ICacheAdapter cacheAdapter; 12 | 13 | public JDKInvocationHandler(ICacheAdapter cacheAdapter) { 14 | this.cacheAdapter = cacheAdapter; 15 | } 16 | 17 | public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 18 | return ICacheAdapter.class.getMethod(method.getName(), ClassLoaderUtils.getClazzByArgs(args)).invoke(cacheAdapter, args); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-7.0-2/src/main/java/cn/bugstack/design/util/Topic.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.util; 2 | 3 | import java.util.Map; 4 | 5 | public class Topic { 6 | 7 | private Map option; // 选项;A、B、C、D 8 | private String key; // 答案;B 9 | 10 | public Topic() { 11 | } 12 | 13 | public Topic(Map option, String key) { 14 | this.option = option; 15 | this.key = key; 16 | } 17 | 18 | public Map getOption() { 19 | return option; 20 | } 21 | 22 | public void setOption(Map option) { 23 | this.option = option; 24 | } 25 | 26 | public String getKey() { 27 | return key; 28 | } 29 | 30 | public void setKey(String key) { 31 | this.key = key; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/src/main/java/cn/bugstack/design/visitor/impl/Principal.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.visitor.impl; 2 | 3 | import cn.bugstack.design.user.impl.Student; 4 | import cn.bugstack.design.user.impl.Teacher; 5 | import cn.bugstack.design.visitor.Visitor; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | // 校长 10 | public class Principal implements Visitor { 11 | 12 | private Logger logger = LoggerFactory.getLogger(Principal.class); 13 | 14 | @Override 15 | public void visit(Student student) { 16 | logger.info("学生信息 班级:{} 人数:{}", student.clazz, student.count()); 17 | } 18 | 19 | @Override 20 | public void visit(Teacher teacher) { 21 | logger.info("学生信息 姓名:{} 班级:{} 升学率:{}", teacher.name, teacher.clazz, teacher.entranceRatio()); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/java/cn/bugstack/design/rpc/config/ProviderConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config; 2 | 3 | /** 4 | * 接口提供方配置 5 | */ 6 | public class ProviderConfig { 7 | 8 | protected String nozzle; //接口 9 | protected String ref; //映射 10 | protected String alias; //别名 11 | 12 | public String getNozzle() { 13 | return nozzle; 14 | } 15 | 16 | public void setNozzle(String nozzle) { 17 | this.nozzle = nozzle; 18 | } 19 | 20 | public String getRef() { 21 | return ref; 22 | } 23 | 24 | public void setRef(String ref) { 25 | this.ref = ref; 26 | } 27 | 28 | public String getAlias() { 29 | return alias; 30 | } 31 | 32 | public void setAlias(String alias) { 33 | this.alias = alias; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/config/ProviderConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config; 2 | 3 | /** 4 | * 接口提供方配置 5 | */ 6 | public class ProviderConfig { 7 | 8 | protected String nozzle; //接口 9 | protected String ref; //映射 10 | protected String alias; //别名 11 | 12 | public String getNozzle() { 13 | return nozzle; 14 | } 15 | 16 | public void setNozzle(String nozzle) { 17 | this.nozzle = nozzle; 18 | } 19 | 20 | public String getRef() { 21 | return ref; 22 | } 23 | 24 | public void setRef(String ref) { 25 | this.ref = ref; 26 | } 27 | 28 | public String getAlias() { 29 | return alias; 30 | } 31 | 32 | public void setAlias(String alias) { 33 | this.alias = alias; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-2/src/main/java/cn/bugstack/design/workshop/impl/EGMCacheAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.workshop.impl; 2 | 3 | import cn.bugstack.design.workshop.ICacheAdapter; 4 | import cn.bugstack.design.redis.cluster.EGM; 5 | 6 | import java.util.concurrent.TimeUnit; 7 | 8 | public class EGMCacheAdapter implements ICacheAdapter { 9 | 10 | private EGM egm = new EGM(); 11 | 12 | public String get(String key) { 13 | return egm.gain(key); 14 | } 15 | 16 | public void set(String key, String value) { 17 | egm.set(key, value); 18 | } 19 | 20 | public void set(String key, String value, long timeout, TimeUnit timeUnit) { 21 | egm.setEx(key, value, timeout, timeUnit); 22 | } 23 | 24 | public void del(String key) { 25 | egm.delete(key); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-25.0-0/src/main/java/cn/bugstack/design/visitor/impl/Parent.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.visitor.impl; 2 | 3 | import cn.bugstack.design.user.impl.Student; 4 | import cn.bugstack.design.user.impl.Teacher; 5 | import cn.bugstack.design.visitor.Visitor; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | // 家长 10 | public class Parent implements Visitor { 11 | 12 | private Logger logger = LoggerFactory.getLogger(Parent.class); 13 | 14 | @Override 15 | public void visit(Student student) { 16 | logger.info("学生信息 姓名:{} 班级:{} 排名:{}", student.name, student.clazz, student.ranking()); 17 | } 18 | 19 | @Override 20 | public void visit(Teacher teacher) { 21 | logger.info("老师信息 姓名:{} 班级:{} 级别:{}", teacher.name, teacher.clazz, teacher.identity); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-2/src/main/java/cn/bugstack/design/workshop/impl/IIRCacheAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.workshop.impl; 2 | 3 | import cn.bugstack.design.workshop.ICacheAdapter; 4 | import cn.bugstack.design.redis.cluster.IIR; 5 | 6 | import java.util.concurrent.TimeUnit; 7 | 8 | public class IIRCacheAdapter implements ICacheAdapter { 9 | 10 | private IIR iir = new IIR(); 11 | 12 | public String get(String key) { 13 | return iir.get(key); 14 | } 15 | 16 | public void set(String key, String value) { 17 | iir.set(key, value); 18 | } 19 | 20 | public void set(String key, String value, long timeout, TimeUnit timeUnit) { 21 | iir.setExpire(key, value, timeout, timeUnit); 22 | } 23 | 24 | public void del(String key) { 25 | iir.del(key); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /cn-bugstack-design-15.0-0/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.IUserDao; 4 | import org.junit.Test; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.BeanFactory; 8 | import org.springframework.context.support.ClassPathXmlApplicationContext; 9 | 10 | public class ApiTest { 11 | 12 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 13 | 14 | @Test 15 | public void test_IUserDao() { 16 | BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring-config.xml"); 17 | IUserDao userDao = beanFactory.getBean("userDao", IUserDao.class); 18 | String res = userDao.queryUserInfo("100001"); 19 | logger.info("测试结果:{}", res); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/src/main/java/cn/bugstack/design/hero/HeroHouYi.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.hero; 2 | 3 | import cn.bugstack.design.ISkillArchery; 4 | import cn.bugstack.design.ISkillInvisible; 5 | import cn.bugstack.design.ISkillSilent; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | * 12 | * 王者英雄:后裔 13 | */ 14 | public class HeroHouYi implements ISkillArchery, ISkillInvisible, ISkillSilent { 15 | 16 | @Override 17 | public void doArchery() { 18 | System.out.println("后裔的灼日之矢"); 19 | } 20 | 21 | @Override 22 | public void doInvisible() { 23 | System.out.println("后裔的隐身技能"); 24 | } 25 | 26 | @Override 27 | public void doSilent() { 28 | System.out.println("后裔的沉默技能"); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.5-1/src/main/java/cn/bugstack/design/hero/HeroLianPo.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.hero; 2 | 3 | import cn.bugstack.design.ISkillInvisible; 4 | import cn.bugstack.design.ISkillSilent; 5 | import cn.bugstack.design.ISkillVertigo; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | * 12 | * 王者英雄:廉颇 13 | */ 14 | public class HeroLianPo implements ISkillInvisible, ISkillSilent, ISkillVertigo { 15 | 16 | @Override 17 | public void doInvisible() { 18 | System.out.println("廉颇的隐身技能"); 19 | } 20 | 21 | @Override 22 | public void doSilent() { 23 | System.out.println("廉颇的沉默技能"); 24 | } 25 | 26 | @Override 27 | public void doVertigo() { 28 | System.out.println("廉颇的眩晕技能"); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-23.0-2/src/main/java/cn/bugstack/design/impl/ZJCouponDiscount.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.ICouponDiscount; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | * 12 | * 直减 13 | */ 14 | public class ZJCouponDiscount implements ICouponDiscount { 15 | 16 | /** 17 | * 直减计算 18 | * 1. 使用商品价格减去优惠价格 19 | * 2. 最低支付金额1元 20 | */ 21 | public BigDecimal discountAmount(Double couponInfo, BigDecimal skuPrice) { 22 | BigDecimal discountAmount = skuPrice.subtract(new BigDecimal(couponInfo)); 23 | if (discountAmount.compareTo(BigDecimal.ZERO) < 1) return BigDecimal.ONE; 24 | return discountAmount; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-19.0-1 13 | 14 | 15 | 16 | mysql 17 | mysql-connector-java 18 | 5.1.20 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/tree/model/vo/TreeRulePoint.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.tree.model.vo; 2 | 3 | public class TreeRulePoint { 4 | 5 | private String ruleKey; //规则Key 6 | private String ruleDesc; //规则描述 7 | 8 | public TreeRulePoint() { 9 | } 10 | 11 | public TreeRulePoint(String ruleKey, String ruleDesc) { 12 | this.ruleKey = ruleKey; 13 | this.ruleDesc = ruleDesc; 14 | } 15 | 16 | public String getRuleKey() { 17 | return ruleKey; 18 | } 19 | 20 | public void setRuleKey(String ruleKey) { 21 | this.ruleKey = ruleKey; 22 | } 23 | 24 | public String getRuleDesc() { 25 | return ruleDesc; 26 | } 27 | 28 | public void setRuleDesc(String ruleDesc) { 29 | this.ruleDesc = ruleDesc; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-1/src/main/java/cn/bugstack/design/LotteryServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | import java.util.Date; 7 | 8 | public class LotteryServiceImpl implements LotteryService { 9 | 10 | private Logger logger = LoggerFactory.getLogger(LotteryServiceImpl.class); 11 | 12 | private MinibusTargetService minibusTargetService = new MinibusTargetService(); 13 | 14 | public LotteryResult doDraw(String uId) { 15 | // 摇号 16 | String lottery = minibusTargetService.lottery(uId); 17 | // 发短信 18 | logger.info("给用户 {} 发送短信通知(短信):{}", uId, lottery); 19 | // 发MQ消息 20 | logger.info("记录用户 {} 摇号结果(MQ):{}", uId, lottery); 21 | // 结果 22 | return new LotteryResult(uId, lottery, new Date()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-1/src/main/java/cn/bugstack/design/rpc/config/spring/MyNamespaceHandler.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config.spring; 2 | 3 | import cn.bugstack.design.rpc.config.spring.bean.ConsumerBean; 4 | import cn.bugstack.design.rpc.config.spring.bean.ProviderBean; 5 | import cn.bugstack.design.rpc.config.spring.bean.ServerBean; 6 | import org.springframework.beans.factory.xml.NamespaceHandlerSupport; 7 | 8 | public class MyNamespaceHandler extends NamespaceHandlerSupport { 9 | 10 | @Override 11 | public void init() { 12 | registerBeanDefinitionParser("consumer", new MyBeanDefinitionParser(ConsumerBean.class)); 13 | registerBeanDefinitionParser("provider", new MyBeanDefinitionParser(ProviderBean.class)); 14 | registerBeanDefinitionParser("server", new MyBeanDefinitionParser(ServerBean.class)); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/config/spring/MyNamespaceHandler.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.config.spring; 2 | 3 | import cn.bugstack.design.rpc.config.spring.bean.ConsumerBean; 4 | import cn.bugstack.design.rpc.config.spring.bean.ProviderBean; 5 | import cn.bugstack.design.rpc.config.spring.bean.ServerBean; 6 | import org.springframework.beans.factory.xml.NamespaceHandlerSupport; 7 | 8 | public class MyNamespaceHandler extends NamespaceHandlerSupport { 9 | 10 | @Override 11 | public void init() { 12 | registerBeanDefinitionParser("consumer", new MyBeanDefinitionParser(ConsumerBean.class)); 13 | registerBeanDefinitionParser("provider", new MyBeanDefinitionParser(ProviderBean.class)); 14 | registerBeanDefinitionParser("server", new MyBeanDefinitionParser(ServerBean.class)); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-0/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-17.0-0 13 | 14 | 15 | 16 | 17 | com.beust 18 | jcommander 19 | 1.72 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-19.0-2/src/main/java/cn/bugstack/design/mediator/Configuration.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.mediator; 2 | 3 | import java.sql.Connection; 4 | import java.util.Map; 5 | 6 | 7 | /** 8 | * 公众号 | bugstack虫洞栈 9 | * 博 客 | https://bugstack.cn 10 | * Create by 小傅哥 @2020 11 | */ 12 | public class Configuration { 13 | 14 | protected Connection connection; 15 | protected Map dataSource; 16 | protected Map mapperElement; 17 | 18 | public void setConnection(Connection connection) { 19 | this.connection = connection; 20 | } 21 | 22 | public void setDataSource(Map dataSource) { 23 | this.dataSource = dataSource; 24 | } 25 | 26 | public void setMapperElement(Map mapperElement) { 27 | this.mapperElement = mapperElement; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /cn-bugstack-design-24.0-0/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.NetMall; 4 | import cn.bugstack.design.impl.JDNetMall; 5 | import org.junit.Test; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | public class ApiTest { 10 | 11 | public Logger logger = LoggerFactory.getLogger(ApiTest.class); 12 | 13 | /** 14 | * 测试链接 15 | * 京东;https://item.jd.com/100008348542.html 16 | * 淘宝;https://detail.tmall.com/item.htm 17 | * 当当;http://product.dangdang.com/1509704171.html 18 | */ 19 | @Test 20 | public void test_NetMall() { 21 | NetMall netMall = new JDNetMall("1000001","*******"); 22 | String base64 = netMall.generateGoodsPoster("https://item.jd.com/100008348542.html"); 23 | logger.info("测试结果:{}", base64); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/infrastructure/common/Constants.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.infrastructure.common; 2 | 3 | public class Constants { 4 | 5 | public static final class Global { 6 | public static final Long TreeNullNode = 0L; //空节点值 7 | } 8 | 9 | public static final class NodeType{ 10 | public static final Integer STEM = 1; //树茎 11 | public static final Integer FRUIT = 2; //果实 12 | } 13 | 14 | public static final class RuleLimitType { 15 | public static final int EQUAL = 1; //等于 16 | public static final int GT = 2; //大于 17 | public static final int LT = 3; //小于 18 | public static final int GE = 4; //大于等于 19 | public static final int LE = 5; //小于等于 20 | public static final int ENUM = 6; //枚举 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/network/msg/Response.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.msg; 2 | 3 | import io.netty.channel.Channel; 4 | 5 | public class Response { 6 | 7 | private transient Channel channel; 8 | private String requestId; 9 | private Object result; 10 | 11 | public Channel getChannel() { 12 | return channel; 13 | } 14 | 15 | public void setChannel(Channel channel) { 16 | this.channel = channel; 17 | } 18 | 19 | public String getRequestId() { 20 | return requestId; 21 | } 22 | 23 | public void setRequestId(String requestId) { 24 | this.requestId = requestId; 25 | } 26 | 27 | public Object getResult() { 28 | return result; 29 | } 30 | 31 | public void setResult(Object result) { 32 | this.result = result; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/network/codec/RpcEncoder.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.codec; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import io.netty.channel.ChannelHandlerContext; 5 | import io.netty.handler.codec.MessageToByteEncoder; 6 | import cn.bugstack.design.rpc.util.SerializationUtil; 7 | 8 | public class RpcEncoder extends MessageToByteEncoder { 9 | 10 | private Class genericClass; 11 | 12 | public RpcEncoder(Class genericClass) { 13 | this.genericClass = genericClass; 14 | } 15 | 16 | @Override 17 | protected void encode(ChannelHandlerContext ctx, Object in, ByteBuf out) { 18 | if (genericClass.isInstance(in)) { 19 | byte[] data = SerializationUtil.serialize(in); 20 | out.writeInt(data.length); 21 | out.writeBytes(data); 22 | } 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-2/src/main/java/cn/bugstack/design/domain/service/engine/impl/TreeEngineHandle.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.service.engine.impl; 2 | 3 | import cn.bugstack.design.domain.model.aggregates.TreeRich; 4 | import cn.bugstack.design.domain.model.vo.EngineResult; 5 | import cn.bugstack.design.domain.model.vo.TreeNode; 6 | import cn.bugstack.design.domain.service.engine.EngineBase; 7 | 8 | import java.util.Map; 9 | 10 | public class TreeEngineHandle extends EngineBase { 11 | 12 | @Override 13 | public EngineResult process(Long treeId, String userId, TreeRich treeRich, Map decisionMatter) { 14 | // 决策流程 15 | TreeNode treeNode = engineDecisionMaker(treeRich, treeId, userId, decisionMatter); 16 | // 决策结果 17 | return new EngineResult(userId, treeId, treeNode.getTreeNodeId(), treeNode.getNodeValue()); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /cn-bugstack-design-11.0-2/src/main/java/cn/bugstack/design/domain/service/logic/LogicFilter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.service.logic; 2 | 3 | import cn.bugstack.design.domain.model.vo.TreeNodeLink; 4 | 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | /** 9 | * 微信公众号:bugstack虫洞栈 | 专注原创技术专题案例 10 | * 论坛:http://bugstack.cn 11 | * Create by 小傅哥 on @2020 12 | */ 13 | public interface LogicFilter { 14 | 15 | /** 16 | * 逻辑决策器 17 | * 18 | * @param matterValue 决策值 19 | * @param treeNodeLineInfoList 决策节点 20 | * @return 下一个节点Id 21 | */ 22 | Long filter(String matterValue, List treeNodeLineInfoList); 23 | 24 | /** 25 | * 获取决策值 26 | * 27 | * @param decisionMatter 决策物料 28 | * @return 决策值 29 | */ 30 | String matterValue(Long treeId, String userId, Map decisionMatter); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.2-0/src/main/java/cn/bugstack/design/ICalculationArea.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | */ 8 | public interface ICalculationArea { 9 | 10 | /** 11 | * 计算面积,长方形 12 | * 13 | * @param x 长 14 | * @param y 宽 15 | * @return 面积 16 | */ 17 | double rectangle(double x, double y); 18 | 19 | /** 20 | * 计算面积,三角形 21 | * @param x 边长x 22 | * @param y 边长y 23 | * @param z 边长z 24 | * @return 面积 25 | * 26 | * 海伦公式:S=√[p(p-a)(p-b)(p-c)] 其中:p=(a+b+c)/2 27 | */ 28 | double triangle(double x, double y, double z); 29 | 30 | /** 31 | * 计算面积,圆形 32 | * @param r 半径 33 | * @return 面积 34 | * 35 | * 圆面积公式:S=πr² 36 | */ 37 | double circular(double r); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /cn-bugstack-design-22.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-22.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-22.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-2/src/main/java/cn/bugstack/design/rpc/network/codec/RpcEncoder.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.network.codec; 2 | 3 | import cn.bugstack.design.rpc.network.util.SerializationUtil; 4 | import io.netty.buffer.ByteBuf; 5 | import io.netty.channel.ChannelHandlerContext; 6 | import io.netty.handler.codec.MessageToByteEncoder; 7 | 8 | public class RpcEncoder extends MessageToByteEncoder { 9 | 10 | private Class genericClass; 11 | 12 | public RpcEncoder(Class genericClass) { 13 | this.genericClass = genericClass; 14 | } 15 | 16 | @Override 17 | protected void encode(ChannelHandlerContext ctx, Object in, ByteBuf out) { 18 | if (genericClass.isInstance(in)) { 19 | byte[] data = SerializationUtil.serialize(in); 20 | out.writeInt(data.length); 21 | out.writeBytes(data); 22 | } 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-4.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-4.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-4.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-4.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-4.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-5.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-5.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-5.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-5.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-5.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-6.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-6.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-6.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-6.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-6.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-7.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-7.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-7.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-7.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-7.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-7.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-9.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-9.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-9.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-9.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-9.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-12.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-12.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-12.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-12.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-12.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-14.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-14.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-14.0-2 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-16.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-16.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-16.0-2 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-16.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-16.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-16.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-21.0-1 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-21.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-21.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-21.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-22.0-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-22.0-2 13 | 14 | 15 | cn.bugstack.design 16 | cn-bugstack-design-22.0-0 17 | 1.0-SNAPSHOT 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-23.0-2/src/main/java/cn/bugstack/design/impl/ZKCouponDiscount.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.impl; 2 | 3 | import cn.bugstack.design.ICouponDiscount; 4 | 5 | import java.math.BigDecimal; 6 | 7 | /** 8 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 9 | * 公众号:bugstack虫洞栈 10 | * Create by 小傅哥(fustack) @2020 11 | * 12 | * 折扣 13 | */ 14 | public class ZKCouponDiscount implements ICouponDiscount { 15 | 16 | 17 | /** 18 | * 折扣计算 19 | * 1. 使用商品价格乘以折扣比例,为最后支付金额 20 | * 2. 保留两位小数 21 | * 3. 最低支付金额1元 22 | */ 23 | public BigDecimal discountAmount(Double couponInfo, BigDecimal skuPrice) { 24 | BigDecimal discountAmount = skuPrice.multiply(new BigDecimal(couponInfo)).setScale(2, BigDecimal.ROUND_HALF_UP); 25 | if (discountAmount.compareTo(BigDecimal.ZERO) < 1) return BigDecimal.ONE; 26 | return discountAmount; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /cn-bugstack-design-13.0-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | CodeDesign 7 | cn.bugstack.design 8 | 1.0-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | cn-bugstack-design-13.0-1 13 | 14 | 15 | org.springframework.boot 16 | cn-bugstack-design-13.0-0 17 | 2.1.2.RELEASE 18 | compile 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-1/src/main/java/cn/bugstack/design/DrawRandom.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Collections; 6 | import java.util.List; 7 | 8 | /** 9 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 10 | * 公众号:bugstack虫洞栈 11 | * Create by 小傅哥(fustack) @2020 12 | *

13 | * 随机抽取指定数量的用户,作为中奖用户 14 | */ 15 | public class DrawRandom implements IDraw { 16 | 17 | @Override 18 | public List prize(List list, int count) { 19 | // 集合数量很小直接返回 20 | if (list.size() <= count) return list; 21 | // 乱序集合 22 | Collections.shuffle(list); 23 | // 取出指定数量的中奖用户 24 | List prizeList = new ArrayList<>(count); 25 | for (int i = 0; i < count; i++) { 26 | prizeList.add(list.get(i)); 27 | } 28 | return prizeList; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-14.0-1/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.Activity; 4 | import cn.bugstack.design.ActivityController; 5 | import com.alibaba.fastjson.JSON; 6 | import org.junit.Test; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | 10 | /** 11 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 12 | * 公众号:bugstack虫洞栈 13 | * Create by 小傅哥(fustack) @2020 14 | */ 15 | public class ApiTest { 16 | 17 | private Logger logger = LoggerFactory.getLogger(ApiTest.class); 18 | 19 | private ActivityController activityController = new ActivityController(); 20 | 21 | @Test 22 | public void test_queryActivityInfo() { 23 | Long req = 10001L; 24 | Activity activity = activityController.queryActivityInfo(req); 25 | logger.info("测试结果:{} {}", req, JSON.toJSONString(activity)); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/tree/model/aggregates/TreeCollect.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.tree.model.aggregates; 2 | 3 | import cn.bugstack.design.domain.tree.model.vo.TreeInfo; 4 | import cn.bugstack.design.domain.tree.model.vo.TreeRulePoint; 5 | 6 | import java.util.List; 7 | 8 | public class TreeCollect { 9 | 10 | private TreeInfo treeInfo; 11 | private List treeRulePointList; 12 | 13 | public TreeInfo getTreeInfo() { 14 | return treeInfo; 15 | } 16 | 17 | public void setTreeInfo(TreeInfo treeInfo) { 18 | this.treeInfo = treeInfo; 19 | } 20 | 21 | public List getTreeRulePointList() { 22 | return treeRulePointList; 23 | } 24 | 25 | public void setTreeRulePointList(List treeRulePointList) { 26 | this.treeRulePointList = treeRulePointList; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/interfaces/dto/DecisionMatterDTO.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.interfaces.dto; 2 | 3 | import java.util.Map; 4 | 5 | public class DecisionMatterDTO { 6 | 7 | private Long treeId; //规则树ID 8 | private String userId; //用户ID 9 | private Map valMap; //决策值 10 | 11 | public Long getTreeId() { 12 | return treeId; 13 | } 14 | 15 | public void setTreeId(Long treeId) { 16 | this.treeId = treeId; 17 | } 18 | 19 | public String getUserId() { 20 | return userId; 21 | } 22 | 23 | public void setUserId(String userId) { 24 | this.userId = userId; 25 | } 26 | 27 | public Map getValMap() { 28 | return valMap; 29 | } 30 | 31 | public void setValMap(Map valMap) { 32 | this.valMap = valMap; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /cn-bugstack-design-17.0-2/src/main/java/cn/bugstack/design/XiaoEr.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import cn.bugstack.design.cuisine.ICuisine; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | /** 11 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 12 | * 公众号:bugstack虫洞栈 13 | * Create by 小傅哥(fustack) @2020 14 | *

15 | * 饭店小二,负责点单 16 | */ 17 | public class XiaoEr { 18 | 19 | private Logger logger = LoggerFactory.getLogger(XiaoEr.class); 20 | 21 | private List cuisineList = new ArrayList(); 22 | 23 | public void order(ICuisine cuisine) { 24 | cuisineList.add(cuisine); 25 | } 26 | 27 | public synchronized void placeOrder() { 28 | for (ICuisine cuisine : cuisineList) { 29 | cuisine.cook(); 30 | } 31 | cuisineList.clear(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/model/vo/TreeRoot.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.model.vo; 2 | 3 | /** 4 | * 树根信息 5 | */ 6 | public class TreeRoot { 7 | 8 | private Long treeId; //规则树ID 9 | private Long treeRootNodeId; //规则树根ID 10 | private String treeName; //规则树名称 11 | 12 | public Long getTreeId() { 13 | return treeId; 14 | } 15 | 16 | public void setTreeId(Long treeId) { 17 | this.treeId = treeId; 18 | } 19 | 20 | public Long getTreeRootNodeId() { 21 | return treeRootNodeId; 22 | } 23 | 24 | public void setTreeRootNodeId(Long treeRootNodeId) { 25 | this.treeRootNodeId = treeRootNodeId; 26 | } 27 | 28 | public String getTreeName() { 29 | return treeName; 30 | } 31 | 32 | public void setTreeName(String treeName) { 33 | this.treeName = treeName; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-3/src/main/java/cn/bugstack/design/rpc/util/NetUtil.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.rpc.util; 2 | 3 | import java.io.IOException; 4 | import java.net.InetAddress; 5 | import java.net.Socket; 6 | import java.net.UnknownHostException; 7 | 8 | public class NetUtil { 9 | 10 | public static boolean isPortUsing(int port) throws UnknownHostException { 11 | boolean flag = false; 12 | try { 13 | Socket socket = new Socket("localhost", port); 14 | socket.close(); 15 | flag = true; 16 | } catch (IOException e) { 17 | 18 | } 19 | return flag; 20 | } 21 | 22 | public static String getHost() throws UnknownHostException { 23 | return InetAddress.getLocalHost().getHostAddress(); 24 | } 25 | 26 | public static void main(String[] args) throws UnknownHostException { 27 | NetUtil.isPortUsing(8080); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-5/src/main/resources/spring-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-1/src/main/java/cn/bugstack/design/DrawWeightRank.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 8 | * 公众号:bugstack虫洞栈 9 | * Create by 小傅哥(fustack) @2020 10 | *

11 | * 权重排名获取用户中奖名单,指定数量 12 | */ 13 | public class DrawWeightRank implements IDraw { 14 | 15 | @Override 16 | public List prize(List list, int count) { 17 | // 按照权重排序 18 | list.sort((o1, o2) -> { 19 | int e = o2.getUserWeight() - o1.getUserWeight(); 20 | if (0 == e) return 0; 21 | return e > 0 ? 1 : -1; 22 | }); 23 | // 取出指定数量的中奖用户 24 | List prizeList = new ArrayList<>(count); 25 | for (int i = 0; i < count; i++) { 26 | prizeList.add(list.get(i)); 27 | } 28 | return prizeList; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/test/java/cn/bugstack/design/test/ApiTest.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.test; 2 | 3 | import cn.bugstack.design.pay.channel.Pay; 4 | import cn.bugstack.design.pay.channel.WxPay; 5 | import cn.bugstack.design.pay.channel.ZfbPay; 6 | import cn.bugstack.design.pay.mode.PayFaceMode; 7 | import cn.bugstack.design.pay.mode.PayFingerprintMode; 8 | import org.junit.Test; 9 | 10 | import java.math.BigDecimal; 11 | 12 | public class ApiTest { 13 | 14 | @Test 15 | public void test_pay() { 16 | 17 | System.out.println("\r\n模拟测试场景;微信支付、人脸方式。"); 18 | Pay wxPay = new WxPay(new PayFaceMode()); 19 | wxPay.transfer("weixin_1092033111", "100000109893", new BigDecimal(100)); 20 | 21 | System.out.println("\r\n模拟测试场景;支付宝支付、指纹方式。"); 22 | Pay zfbPay = new ZfbPay(new PayFingerprintMode()); 23 | zfbPay.transfer("jlu19dlxo111","100000109894",new BigDecimal(100)); 24 | 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/service/logic/LogicFilter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.service.logic; 2 | 3 | import cn.bugstack.design.domain.rule.model.vo.DecisionMatter; 4 | import cn.bugstack.design.domain.rule.model.vo.TreeNodeLineInfo; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 微信公众号:bugstack虫洞栈 | 专注原创技术专题案例 10 | * 论坛:http://bugstack.cn 11 | * Create by 付政委 on @2019 12 | */ 13 | public interface LogicFilter { 14 | 15 | /** 16 | * 逻辑决策器 17 | * @param matterValue 决策值 18 | * @param treeNodeLineInfoList 决策节点 19 | * @return 下一个节点Id 20 | */ 21 | Long filter(String matterValue, List treeNodeLineInfoList); 22 | 23 | /** 24 | * 获取决策值 25 | * 26 | * @param decisionMatter 决策物料 27 | * @return 决策值 28 | */ 29 | String matterValue(DecisionMatter decisionMatter); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-0/src/main/java/cn/bugstack/design/BetUser.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 投注用户 9 | */ 10 | public class BetUser { 11 | 12 | private String userName; // 用户姓名 13 | private int userWeight; // 用户权重 14 | 15 | public BetUser() { 16 | } 17 | 18 | public BetUser(String userName, int userWeight) { 19 | this.userName = userName; 20 | this.userWeight = userWeight; 21 | } 22 | 23 | public String getUserName() { 24 | return userName; 25 | } 26 | 27 | public void setUserName(String userName) { 28 | this.userName = userName; 29 | } 30 | 31 | public int getUserWeight() { 32 | return userWeight; 33 | } 34 | 35 | public void setUserWeight(int userWeight) { 36 | this.userWeight = userWeight; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /cn-bugstack-design-2.6-1/src/main/java/cn/bugstack/design/BetUser.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | /** 4 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 5 | * 公众号:bugstack虫洞栈 6 | * Create by 小傅哥(fustack) @2020 7 | * 8 | * 投注用户 9 | */ 10 | public class BetUser { 11 | 12 | private String userName; // 用户姓名 13 | private int userWeight; // 用户权重 14 | 15 | public BetUser() { 16 | } 17 | 18 | public BetUser(String userName, int userWeight) { 19 | this.userName = userName; 20 | this.userWeight = userWeight; 21 | } 22 | 23 | public String getUserName() { 24 | return userName; 25 | } 26 | 27 | public void setUserName(String userName) { 28 | this.userName = userName; 29 | } 30 | 31 | public int getUserWeight() { 32 | return userWeight; 33 | } 34 | 35 | public void setUserWeight(int userWeight) { 36 | this.userWeight = userWeight; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /cn-bugstack-design-27.0-6/src/main/resources/spring-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/main/java/cn/bugstack/design/pay/channel/WxPay.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.pay.channel; 2 | 3 | import cn.bugstack.design.pay.mode.IPayMode; 4 | 5 | import java.math.BigDecimal; 6 | 7 | public class WxPay extends Pay { 8 | 9 | public WxPay(IPayMode payMode) { 10 | super(payMode); 11 | } 12 | 13 | public String transfer(String uId, String tradeId, BigDecimal amount) { 14 | logger.info("模拟微信渠道支付划账开始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); 15 | boolean security = payMode.security(uId); 16 | logger.info("模拟微信渠道支付风控校验。uId:{} tradeId:{} security:{}", uId, tradeId, security); 17 | if (!security) { 18 | logger.info("模拟微信渠道支付划账拦截。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); 19 | return "0001"; 20 | } 21 | logger.info("模拟微信渠道支付划账成功。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); 22 | return "0000"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/model/vo/DecisionMatter.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.model.vo; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * 决策物料 7 | */ 8 | public class DecisionMatter { 9 | 10 | private Long treeId; //规则树ID 11 | private String userId; //用户ID 12 | private Map valMap; //决策值 13 | 14 | public Long getTreeId() { 15 | return treeId; 16 | } 17 | 18 | public void setTreeId(Long treeId) { 19 | this.treeId = treeId; 20 | } 21 | 22 | public String getUserId() { 23 | return userId; 24 | } 25 | 26 | public void setUserId(String userId) { 27 | this.userId = userId; 28 | } 29 | 30 | public Map getValMap() { 31 | return valMap; 32 | } 33 | 34 | public void setValMap(Map valMap) { 35 | this.valMap = valMap; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /cn-bugstack-design-26.0-0/src/main/java/cn/bugstack/design/domain/rule/model/aggregates/TreeRuleRich.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.domain.rule.model.aggregates; 2 | 3 | import cn.bugstack.design.domain.rule.model.vo.TreeNodeInfo; 4 | import cn.bugstack.design.domain.rule.model.vo.TreeRoot; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * 规则树聚合 10 | */ 11 | public class TreeRuleRich { 12 | 13 | private TreeRoot treeRoot; //树根信息 14 | private Map treeNodeMap; //树节点ID -> 子节点 15 | 16 | public TreeRoot getTreeRoot() { 17 | return treeRoot; 18 | } 19 | 20 | public void setTreeRoot(TreeRoot treeRoot) { 21 | this.treeRoot = treeRoot; 22 | } 23 | 24 | public Map getTreeNodeMap() { 25 | return treeNodeMap; 26 | } 27 | 28 | public void setTreeNodeMap(Map treeNodeMap) { 29 | this.treeNodeMap = treeNodeMap; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-10.0-2/src/main/java/cn/bugstack/design/pay/channel/ZfbPay.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.pay.channel; 2 | 3 | import cn.bugstack.design.pay.mode.IPayMode; 4 | 5 | import java.math.BigDecimal; 6 | 7 | public class ZfbPay extends Pay { 8 | 9 | public ZfbPay(IPayMode payMode) { 10 | super(payMode); 11 | } 12 | 13 | public String transfer(String uId, String tradeId, BigDecimal amount) { 14 | logger.info("模拟支付宝渠道支付划账开始。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); 15 | boolean security = payMode.security(uId); 16 | logger.info("模拟支付宝渠道支付风控校验。uId:{} tradeId:{} security:{}", uId, tradeId, security); 17 | if (!security) { 18 | logger.info("模拟支付宝渠道支付划账拦截。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); 19 | return "0001"; 20 | } 21 | logger.info("模拟支付宝渠道支付划账成功。uId:{} tradeId:{} amount:{}", uId, tradeId, amount); 22 | return "0000"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /cn-bugstack-design-14.0-2/src/main/java/cn/bugstack/design/util/RedisUtils.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design.util; 2 | 3 | import java.util.concurrent.Executors; 4 | import java.util.concurrent.ScheduledExecutorService; 5 | import java.util.concurrent.TimeUnit; 6 | import java.util.concurrent.atomic.AtomicInteger; 7 | 8 | /** 9 | * 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! 10 | * 公众号:bugstack虫洞栈 11 | * Create by 小傅哥(fustack) @2020 12 | */ 13 | public class RedisUtils { 14 | 15 | private ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1); 16 | 17 | private AtomicInteger stock = new AtomicInteger(0); 18 | 19 | public RedisUtils() { 20 | scheduledExecutorService.scheduleAtFixedRate(() -> { 21 | // 模拟库存消耗 22 | stock.addAndGet(1); 23 | }, 0, 100000, TimeUnit.MICROSECONDS); 24 | 25 | } 26 | 27 | public int getStockUsed() { 28 | return stock.get(); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /cn-bugstack-design-21.0-1/src/main/java/cn/bugstack/design/LotteryResult.java: -------------------------------------------------------------------------------- 1 | package cn.bugstack.design; 2 | 3 | import java.util.Date; 4 | 5 | public class LotteryResult { 6 | 7 | private String uId; // 用户ID 8 | private String msg; // 摇号信息 9 | private Date dateTime; // 业务时间 10 | 11 | public LotteryResult(String uId, String msg, Date dateTime) { 12 | this.uId = uId; 13 | this.msg = msg; 14 | this.dateTime = dateTime; 15 | } 16 | 17 | public String getuId() { 18 | return uId; 19 | } 20 | 21 | public void setuId(String uId) { 22 | this.uId = uId; 23 | } 24 | 25 | public String getMsg() { 26 | return msg; 27 | } 28 | 29 | public void setMsg(String msg) { 30 | this.msg = msg; 31 | } 32 | 33 | public Date getDateTime() { 34 | return dateTime; 35 | } 36 | 37 | public void setDateTime(Date dateTime) { 38 | this.dateTime = dateTime; 39 | } 40 | } 41 | --------------------------------------------------------------------------------