├── .DS_Store ├── .gitignore ├── BigData ├── 10-Flink集群的高可用(搭建篇补充).md ├── 10-Flink集群的高可用(搭建篇补充).resources │ └── 6278EDED-A65A-4539-A16D-7BCD9FE77864.png ├── DataSet.md ├── Flink_Data_Sink.md ├── Flink_Data_Source.md ├── Flink_Data_Transformation.md ├── Flink的DAG图的构建.md ├── Flink的运行架构.md ├── Hadoop.md ├── MapReduce.md ├── Spark的运行架构.md └── pictures │ ├── TaskManger和Slots.jpg │ └── 任务提交流程.jpg ├── Code ├── concurrent │ ├── ConcurrentCollection │ │ ├── T01ConcurrentMap.java │ │ ├── T02CopyOnWriteList.java │ │ ├── T03SynchronizedList.java │ │ ├── T04ConcurrentQueue.java │ │ ├── T05LinkedBlockingQueue.java │ │ ├── T06ArrayBlockingQueue.java │ │ ├── T07DelayQueue.java │ │ ├── T08TransferQueue.java │ │ ├── T09SynchronusQueue.java │ │ └── readme.md │ ├── Executor │ │ ├── T01MyExecutor.java │ │ ├── T02ExecutorService.java │ │ ├── T03Callable.java │ │ ├── T04Executors.java │ │ ├── T05ThreadPool.java │ │ ├── T06Future.java │ │ ├── T07ParallelComputing.java │ │ ├── T08CachedPool.java │ │ ├── T09SingleThreadPool.java │ │ ├── T10ScheduledPool.java │ │ ├── T11WorkStealingPool.java │ │ ├── T12ForkJoinPool.java │ │ ├── T13ThreadPoolExecutor.java │ │ ├── T14ParallelStreamAPI.java │ │ └── readme.md │ ├── MyContainer │ │ ├── MyContainer1.java │ │ ├── MyContainer2.java │ │ ├── MyContainer3.java │ │ ├── MyContainer4.java │ │ └── MyContainer5.java │ ├── MyContainer2 │ │ ├── MyContainer1.java │ │ └── MyContainer2.java │ ├── Others │ │ ├── Account.java │ │ ├── ForkJoin.java │ │ └── TwoPhaseTermination.java │ ├── ReentrantLock │ │ ├── ReentrantLock1.java │ │ ├── ReentrantLock2.java │ │ ├── ReentrantLock3.java │ │ ├── ReentrantLock4.java │ │ └── ReentrantLock5.java │ ├── Thread │ │ ├── Thread001.java │ │ ├── Thread002.java │ │ ├── Thread003.java │ │ ├── Thread004.java │ │ ├── Thread005.java │ │ ├── Thread006.java │ │ ├── Thread007.java │ │ ├── Thread009.java │ │ ├── Thread010.java │ │ ├── Thread011.java │ │ ├── Thread012.java │ │ ├── Thread013.java │ │ ├── Thread014.java │ │ ├── Thread015.java │ │ ├── Thread016.java │ │ ├── Thread017.java │ │ └── Thread018.java │ ├── ThreadLocal │ │ ├── ThreadLocal1.java │ │ └── ThreadLocal2.java │ └── TicketSeller │ │ ├── TicketSeller1.java │ │ ├── TicketSeller2.java │ │ ├── TicketSeller3.java │ │ └── TicketSeller4.java ├── design │ ├── behavioral │ │ ├── chain │ │ │ ├── MainTest.java │ │ │ ├── Teacher.java │ │ │ └── ext │ │ │ │ ├── CharacterFilter.java │ │ │ │ ├── EncodingFilter.java │ │ │ │ ├── Filter.java │ │ │ │ ├── FilterChain.java │ │ │ │ ├── HttpFilter.java │ │ │ │ ├── MainTest.java │ │ │ │ ├── My.java │ │ │ │ ├── Request.java │ │ │ │ └── Response.java │ │ ├── command │ │ │ ├── Command.java │ │ │ ├── LeiReceiver.java │ │ │ ├── MainTest.java │ │ │ ├── OnlineCommand.java │ │ │ ├── TeacherTongInvoker.java │ │ │ └── WuHanTravelCommand.java │ │ ├── interpreter │ │ │ ├── Area.java │ │ │ ├── IDCardExpression.java │ │ │ ├── MainTest.java │ │ │ ├── OrExpression.java │ │ │ └── TerminalExpression.java │ │ ├── iterator │ │ │ ├── BeautifulMan.java │ │ │ ├── MaYuCheng.java │ │ │ └── MainTest.java │ │ ├── mediator │ │ │ ├── Captain.java │ │ │ ├── ControlTower.java │ │ │ ├── HU8778.java │ │ │ ├── MainTest.java │ │ │ ├── SC8633.java │ │ │ └── XC9527.java │ │ ├── memento │ │ │ ├── GameRecord.java │ │ │ ├── GameServer.java │ │ │ ├── LeiGamer.java │ │ │ └── MainTest.java │ │ ├── observer │ │ │ ├── AbstractFans.java │ │ │ ├── AbstractTikToker.java │ │ │ ├── HumanFans.java │ │ │ ├── MMTikToker.java │ │ │ ├── MainTest.java │ │ │ └── RobotFans.java │ │ ├── state │ │ │ ├── BeafNodleState.java │ │ │ ├── MainTest.java │ │ │ ├── MatchState.java │ │ │ ├── SKTTeam.java │ │ │ ├── TeamState.java │ │ │ └── VocationState.java │ │ ├── strategy │ │ │ ├── GameStrategy.java │ │ │ ├── MainTest.java │ │ │ ├── RandomStrategy.java │ │ │ ├── SteadyStrategy.java │ │ │ ├── TeamGNR.java │ │ │ └── UziStrategy.java │ │ ├── template │ │ │ ├── AutoCookMachine.java │ │ │ ├── CookTemplate.java │ │ │ └── MainTest.java │ │ └── visitor │ │ │ ├── CPU.java │ │ │ ├── Disk.java │ │ │ ├── Foot.java │ │ │ ├── Hardware.java │ │ │ ├── MainTest.java │ │ │ ├── UpdatePackage.java │ │ │ ├── Vistor.java │ │ │ └── XiaoAi.java │ ├── creatation │ │ ├── builder │ │ │ ├── AbstractBuilder.java │ │ │ ├── MainTest.java │ │ │ ├── Phone.java │ │ │ └── XiaomiBuilder.java │ │ ├── factory │ │ │ ├── abstractfactory │ │ │ │ ├── AbstractCar.java │ │ │ │ ├── AbstractMask.java │ │ │ │ ├── CommonMask.java │ │ │ │ ├── MainTest.java │ │ │ │ ├── N95Mask.java │ │ │ │ ├── RacingCar.java │ │ │ │ ├── VanCar.java │ │ │ │ ├── WulinCarFactory.java │ │ │ │ ├── WulinFactory.java │ │ │ │ ├── WulinHangZhouMaskFactory.java │ │ │ │ ├── WulinMaskFactory.java │ │ │ │ ├── WulinRacingCarFactory.java │ │ │ │ ├── WulinVanCarFactory.java │ │ │ │ └── WulinWuHanMaskFactory.java │ │ │ ├── factorymethod │ │ │ │ ├── AbstractCar.java │ │ │ │ ├── AbstractCarFactory.java │ │ │ │ ├── MainTest.java │ │ │ │ ├── MiniCar.java │ │ │ │ ├── RacingCar.java │ │ │ │ ├── VanCar.java │ │ │ │ ├── WulinMinCarFactory.java │ │ │ │ ├── WulinRacingCarFactory.java │ │ │ │ └── WulinVanCarFactory.java │ │ │ └── simplefactory │ │ │ │ ├── AbstractCar.java │ │ │ │ ├── MainTest.java │ │ │ │ ├── MiniCar.java │ │ │ │ ├── VanCar.java │ │ │ │ └── WuLinSimpleFactory.java │ │ ├── prototype │ │ │ ├── MainTest.java │ │ │ ├── NewMybatis.java │ │ │ └── User.java │ │ └── singleton │ │ │ ├── MainTest.java │ │ │ └── Person.java │ └── structural │ │ ├── adapter │ │ ├── JPMovieAdapter.java │ │ ├── MainTest.java │ │ ├── MoviePlayer.java │ │ ├── Player.java │ │ ├── Translator.java │ │ ├── Zh_JPTranslator.java │ │ ├── clazz │ │ │ ├── JPMoviePlayerAdapter.java │ │ │ └── MainTest.java │ │ └── obj │ │ │ ├── JPMoviePlayerAdapter.java │ │ │ └── MainTest.java │ │ ├── bridge │ │ ├── AbstractPhone.java │ │ ├── AbstractSale.java │ │ ├── IPhone.java │ │ ├── MainTest.java │ │ ├── MiPhone.java │ │ ├── OfflineSale.java │ │ ├── OnlineSale.java │ │ └── StudentSale.java │ │ ├── composite │ │ ├── MainTest.java │ │ └── Menu.java │ │ ├── decorator │ │ ├── LeiTikTok.java │ │ ├── MainTest.java │ │ ├── ManTikTok.java │ │ ├── MeiYanDecorator.java │ │ ├── TiktokDecorator.java │ │ └── ZhangTikTok.java │ │ ├── facade │ │ ├── Edu.java │ │ ├── MainTest.java │ │ ├── Police.java │ │ ├── Social.java │ │ └── WeiXinFacade.java │ │ ├── flyweight │ │ ├── AbstractWaitressFlyweight.java │ │ ├── BeautifulWaitress.java │ │ ├── MainTest.java │ │ └── ZuDao.java │ │ └── proxy │ │ ├── MainTest.java │ │ ├── cglib │ │ ├── CglibProxy.java │ │ ├── CglibTest.java │ │ └── LeiTikTok.java │ │ ├── dynamic │ │ ├── JdkTiktokProxy.java │ │ ├── LeiTikTok.java │ │ ├── MainTest.java │ │ ├── ManTikTok.java │ │ └── SellTikTok.java │ │ └── statics │ │ ├── LeiTikTok.java │ │ ├── LiMingTiktokProxy.java │ │ ├── MainTest.java │ │ ├── ManTikTok.java │ │ └── ZhangTikTok.java ├── exam │ ├── Alibaba413_1.java │ ├── Alibaba43_1.java │ ├── Alibaba43_2.java │ ├── ByteDance01.java │ ├── ByteDance02.java │ ├── ByteDance03.java │ ├── ByteDance04.java │ ├── ByteDance05.java │ ├── ByteDance06.java │ ├── ByteDance07.java │ ├── ByteDance08.java │ ├── ByteDance09.java │ ├── ByteDance10.java │ ├── ByteDance11.java │ ├── ByteDance12.java │ ├── ByteDance13.java │ ├── DiDi1.java │ ├── DiDi2.java │ ├── DiDi3.java │ ├── DiDi4.java │ ├── DiDi_8_21_1.java │ ├── DiDi_8_21_2.java │ ├── Enterprise01.java │ ├── Enterprise02.java │ ├── HuaWei1.java │ ├── HuaWei2.java │ ├── HuaWei3.java │ ├── HuaWei4.java │ ├── HuaWei5.java │ ├── Huawei_8_19_1.java │ ├── Huawei_8_19_2.java │ ├── Main.java │ ├── Meituan_5_12_1.java │ ├── Meituan_5_12_2.java │ ├── Meituan_5_12_3.java │ ├── Meituan_5_12_5.java │ ├── Meituan_8_15_1.java │ ├── Meituan_8_15_2.java │ ├── Meituan_8_15_3.java │ ├── T360_8_24_1.java │ ├── T360_8_24_2.java │ ├── Tencent_8_23_1.java │ ├── Tencent_8_23_2.java │ ├── Tencent_8_23_3.java │ ├── Tencent_8_23_4.java │ ├── Tencent_Interview_01.java │ ├── Tencent_Interview_8_28.java │ ├── bilibili_9_4_01.java │ ├── bilibili_9_4_02.java │ ├── bilibili_9_4_03.java │ └── readme.md ├── leetcode │ ├── Sort │ │ ├── Sort.java │ │ └── Sort2.java │ ├── datastructure │ │ ├── BinarySearch.java │ │ ├── BinaryTree.java │ │ ├── BloomFilter.java │ │ ├── CQueue.java │ │ ├── LRUCacheDoublyList.java │ │ ├── LRUCacheLinkedHashMap.java │ │ ├── MaxQueue.java │ │ ├── MedianFinder.java │ │ ├── MinStack.java │ │ └── Trie.java │ ├── graph │ │ ├── LeetCode743.java │ │ └── LeetCode787.java │ ├── hotandtop │ │ ├── LeetCode1.java │ │ ├── LeetCode101.java │ │ ├── LeetCode102.java │ │ ├── LeetCode104.java │ │ ├── LeetCode105.java │ │ ├── LeetCode11.java │ │ ├── LeetCode110.java │ │ ├── LeetCode111.java │ │ ├── LeetCode112.java │ │ ├── LeetCode113.java │ │ ├── LeetCode114.java │ │ ├── LeetCode1143.java │ │ ├── LeetCode121.java │ │ ├── LeetCode122.java │ │ ├── LeetCode123.java │ │ ├── LeetCode124.java │ │ ├── LeetCode128.java │ │ ├── LeetCode13.java │ │ ├── LeetCode131.java │ │ ├── LeetCode132.java │ │ ├── LeetCode136.java │ │ ├── LeetCode139.java │ │ ├── LeetCode14.java │ │ ├── LeetCode141.java │ │ ├── LeetCode142.java │ │ ├── LeetCode145.java │ │ ├── LeetCode1455.java │ │ ├── LeetCode146.java │ │ ├── LeetCode148.java │ │ ├── LeetCode15.java │ │ ├── LeetCode152.java │ │ ├── LeetCode17.java │ │ ├── LeetCode19.java │ │ ├── LeetCode198.java │ │ ├── LeetCode2.java │ │ ├── LeetCode20.java │ │ ├── LeetCode206.java │ │ ├── LeetCode207.java │ │ ├── LeetCode21.java │ │ ├── LeetCode22.java │ │ ├── LeetCode221.java │ │ ├── LeetCode226.java │ │ ├── LeetCode23.java │ │ ├── LeetCode234.java │ │ ├── LeetCode236.java │ │ ├── LeetCode238.java │ │ ├── LeetCode25.java │ │ ├── LeetCode26.java │ │ ├── LeetCode3.java │ │ ├── LeetCode300.java │ │ ├── LeetCode31.java │ │ ├── LeetCode322.java │ │ ├── LeetCode33.java │ │ ├── LeetCode34.java │ │ ├── LeetCode39.java │ │ ├── LeetCode4.java │ │ ├── LeetCode42.java │ │ ├── LeetCode437.java │ │ ├── LeetCode438.java │ │ ├── LeetCode440.java │ │ ├── LeetCode459.java │ │ ├── LeetCode46.java │ │ ├── LeetCode461.java │ │ ├── LeetCode47.java │ │ ├── LeetCode48.java │ │ ├── LeetCode49.java │ │ ├── LeetCode491.java │ │ ├── LeetCode5.java │ │ ├── LeetCode512.java │ │ ├── LeetCode53.java │ │ ├── LeetCode54.java │ │ ├── LeetCode55.java │ │ ├── LeetCode56.java │ │ ├── LeetCode62.java │ │ ├── LeetCode64.java │ │ ├── LeetCode647.java │ │ ├── LeetCode7.java │ │ ├── LeetCode70.java │ │ ├── LeetCode72.java │ │ ├── LeetCode739.java │ │ ├── LeetCode75.java │ │ ├── LeetCode78.java │ │ ├── LeetCode79.java │ │ ├── LeetCode8.java │ │ ├── LeetCode85.java │ │ ├── LeetCode912.java │ │ ├── LeetCode92.java │ │ ├── LeetCode94.java │ │ ├── LeetCode96.java │ │ └── LeetCode98.java │ ├── normal │ │ ├── LeetCode0001.java │ │ ├── LeetCode0002.java │ │ ├── LeetCode0003.java │ │ ├── LeetCode0004.java │ │ ├── LeetCode0005.java │ │ ├── LeetCode0007.java │ │ ├── LeetCode0008.java │ │ ├── LeetCode0010.java │ │ ├── LeetCode0011.java │ │ ├── LeetCode0014.java │ │ ├── LeetCode0015.java │ │ ├── LeetCode0019.java │ │ ├── LeetCode0020.java │ │ ├── LeetCode0021.java │ │ ├── LeetCode0023.java │ │ ├── LeetCode0025.java │ │ ├── LeetCode0026.java │ │ ├── LeetCode0028.java │ │ ├── LeetCode0031.java │ │ ├── LeetCode0033.java │ │ ├── LeetCode0035.java │ │ ├── LeetCode0039.java │ │ ├── LeetCode0040.java │ │ ├── LeetCode0042.java │ │ ├── LeetCode0046.java │ │ ├── LeetCode0047.java │ │ ├── LeetCode0050.java │ │ ├── LeetCode0053.java │ │ ├── LeetCode0056.java │ │ ├── LeetCode0057.java │ │ ├── LeetCode0060.java │ │ ├── LeetCode0061.java │ │ ├── LeetCode0064.java │ │ ├── LeetCode0066.java │ │ ├── LeetCode0067.java │ │ ├── LeetCode0069.java │ │ ├── LeetCode0075.java │ │ ├── LeetCode0076.java │ │ ├── LeetCode0077.java │ │ ├── LeetCode0078.java │ │ ├── LeetCode0082.java │ │ ├── LeetCode0083.java │ │ ├── LeetCode0084.java │ │ ├── LeetCode0086.java │ │ ├── LeetCode0093.java │ │ ├── LeetCode0098.java │ │ ├── LeetCode0101.java │ │ ├── LeetCode0102.java │ │ ├── LeetCode0103.java │ │ ├── LeetCode0108.java │ │ ├── LeetCode0110.java │ │ ├── LeetCode0116.java │ │ ├── LeetCode0120.java │ │ ├── LeetCode0121.java │ │ ├── LeetCode0122.java │ │ ├── LeetCode0123.java │ │ ├── LeetCode0124.java │ │ ├── LeetCode0125.java │ │ ├── LeetCode0126.java │ │ ├── LeetCode0127.java │ │ ├── LeetCode0128.java │ │ ├── LeetCode0129.java │ │ ├── LeetCode0134.java │ │ ├── LeetCode0136.java │ │ ├── LeetCode0137.java │ │ ├── LeetCode0141.java │ │ ├── LeetCode0142.java │ │ ├── LeetCode0148.java │ │ ├── LeetCode0151.java │ │ ├── LeetCode0152.java │ │ ├── LeetCode0160.java │ │ ├── LeetCode0162.java │ │ ├── LeetCode0166.java │ │ ├── LeetCode0172.java │ │ ├── LeetCode0179.java │ │ ├── LeetCode0190.java │ │ ├── LeetCode0191.java │ │ ├── LeetCode0198.java │ │ ├── LeetCode0199.java │ │ ├── LeetCode0200.java │ │ ├── LeetCode0204.java │ │ ├── LeetCode0206.java │ │ ├── LeetCode0207.java │ │ ├── LeetCode0213.java │ │ ├── LeetCode0215.java │ │ ├── LeetCode0217.java │ │ ├── LeetCode0221.java │ │ ├── LeetCode0226.java │ │ ├── LeetCode0230.java │ │ ├── LeetCode0231.java │ │ ├── LeetCode0234.java │ │ ├── LeetCode0235.java │ │ ├── LeetCode0236.java │ │ ├── LeetCode0239.java │ │ ├── LeetCode0240.java │ │ ├── LeetCode0242.java │ │ ├── LeetCode0252.java │ │ ├── LeetCode0268.java │ │ ├── LeetCode0279.java │ │ ├── LeetCode0283.java │ │ ├── LeetCode0287.java │ │ ├── LeetCode0290.java │ │ ├── LeetCode0300.java │ │ ├── LeetCode0322.java │ │ ├── LeetCode0326.java │ │ ├── LeetCode0328.java │ │ ├── LeetCode0376.java │ │ ├── LeetCode0445.java │ │ ├── LeetCode0503.java │ │ ├── LeetCode0516.java │ │ ├── LeetCode0518.java │ │ ├── LeetCode0542.java │ │ ├── LeetCode0547.java │ │ ├── LeetCode0560.java │ │ ├── LeetCode0567.java │ │ ├── LeetCode0581.java │ │ ├── LeetCode0628.java │ │ ├── LeetCode0670.java │ │ ├── LeetCode0674.java │ │ ├── LeetCode0680.java │ │ ├── LeetCode0695.java │ │ ├── LeetCode0739.java │ │ ├── LeetCode0742.java │ │ ├── LeetCode0871.java │ │ ├── LeetCode0912.java │ │ ├── LeetCode1143.java │ │ ├── LeetCode1248.java │ │ ├── LeetCode1299.java │ │ └── LeetCode1371.java │ ├── offer1 │ │ ├── Offer10_1.java │ │ ├── Offer10_2.java │ │ ├── Offer11.java │ │ ├── Offer12.java │ │ ├── Offer13.java │ │ ├── Offer14_1.java │ │ ├── Offer14_2.java │ │ ├── Offer15.java │ │ ├── Offer16.java │ │ ├── Offer16_5.java │ │ ├── Offer17.java │ │ ├── Offer18.java │ │ ├── Offer19.java │ │ ├── Offer20.java │ │ ├── Offer21.java │ │ ├── Offer22.java │ │ ├── Offer26.java │ │ ├── Offer27.java │ │ ├── Offer28.java │ │ ├── Offer29.java │ │ ├── Offer3.java │ │ ├── Offer31.java │ │ ├── Offer32_3.java │ │ ├── Offer33.java │ │ ├── Offer34.java │ │ ├── Offer35.java │ │ ├── Offer36.java │ │ ├── Offer38.java │ │ ├── Offer39.java │ │ ├── Offer4.java │ │ ├── Offer40.java │ │ ├── Offer42.java │ │ ├── Offer43.java │ │ ├── Offer44.java │ │ ├── Offer45.java │ │ ├── Offer46.java │ │ ├── Offer47.java │ │ ├── Offer48.java │ │ ├── Offer49.java │ │ ├── Offer5.java │ │ ├── Offer50.java │ │ ├── Offer51.java │ │ ├── Offer52.java │ │ ├── Offer53_1.java │ │ ├── Offer53_2.java │ │ ├── Offer54.java │ │ ├── Offer55_1.java │ │ ├── Offer55_2.java │ │ ├── Offer56_1.java │ │ ├── Offer56_2.java │ │ ├── Offer57_1.java │ │ ├── Offer57_2.java │ │ ├── Offer58_1.java │ │ ├── Offer58_2.java │ │ ├── Offer59_1.java │ │ ├── Offer6.java │ │ ├── Offer60.java │ │ ├── Offer61.java │ │ ├── Offer62.java │ │ ├── Offer63.java │ │ ├── Offer64.java │ │ ├── Offer65.java │ │ ├── Offer66.java │ │ ├── Offer68_1.java │ │ └── Offer68_2.java │ └── offer2 │ │ ├── Offer001.java │ │ ├── Offer002.java │ │ ├── Offer003.java │ │ ├── Offer004.java │ │ ├── Offer005.java │ │ ├── Offer006.java │ │ ├── Offer007.java │ │ ├── Offer008.java │ │ ├── Offer009.java │ │ ├── Offer010.java │ │ ├── Offer011.java │ │ ├── Offer012.java │ │ ├── Offer013.java │ │ ├── Offer014.java │ │ ├── Offer015.java │ │ ├── Offer016.java │ │ ├── Offer017.java │ │ ├── Offer018.java │ │ ├── Offer019.java │ │ ├── Offer020.java │ │ ├── Offer021.java │ │ ├── Offer022.java │ │ ├── Offer023.java │ │ ├── Offer024.java │ │ ├── Offer025.java │ │ ├── Offer026.java │ │ ├── Offer027.java │ │ ├── Offer028.java │ │ ├── Offer029.java │ │ ├── Offer030.java │ │ ├── Offer031.java │ │ ├── Offer032.java │ │ ├── Offer033.java │ │ ├── Offer034.java │ │ ├── Offer035.java │ │ ├── Offer036.java │ │ ├── Offer037.java │ │ ├── Offer038.java │ │ ├── Offer039.java │ │ ├── Offer040.java │ │ ├── Offer041.java │ │ ├── Offer042.java │ │ ├── Offer043.java │ │ ├── Offer044.java │ │ ├── Offer045.java │ │ ├── Offer046.java │ │ ├── Offer047.java │ │ ├── Offer049.java │ │ ├── Offer050.java │ │ ├── Offer051.java │ │ ├── Offer053.java │ │ └── Offer056.java ├── nowcoder │ ├── HJ1.java │ ├── HJ14.java │ ├── HJ17.java │ ├── HJ2.java │ ├── HJ3.java │ ├── HJ4.java │ ├── HJ5.java │ ├── HJ6.java │ ├── HJ7.java │ ├── HJ8.java │ ├── HJ9.java │ ├── NC105.java │ ├── NC33.java │ ├── NC4.java │ ├── NC502.java │ ├── NC505.java │ ├── NC507.java │ ├── NC508.java │ ├── NC509.java │ ├── NC51.java │ ├── NC510.java │ ├── NC511.java │ ├── NC512.java │ ├── NC514.java │ ├── NC517.java │ ├── NC519.java │ ├── NC520.java │ ├── NC522.java │ ├── NC527.java │ ├── NC528.java │ ├── NC533.java │ ├── NC535.java │ ├── NC537.java │ ├── NC549.java │ ├── NC564.java │ ├── NC6.java │ ├── NC7.java │ ├── NC78.java │ ├── NC80.java │ ├── NC88.java │ ├── NC9.java │ └── NC93.java └── others │ ├── Calculate.java │ ├── DealList.java │ ├── Join.java │ ├── LRUCache.java │ ├── PrintAbcByOrder.java │ ├── PrintArray.java │ ├── ProducerAndComsumer.java │ ├── ProducerAndConsumer.java │ ├── ProducerAndConsumer2.java │ ├── ProducerAndConsumer3.java │ ├── ProducerAndConsumer4.java │ └── Singleton.java ├── DataBase ├── MySQL面试题总结.md └── Redis面试题总结.md ├── Design ├── design.assets │ ├── image-20220523202923682.png │ ├── image-20220523203018462.png │ ├── image-20220523203119954.png │ ├── image-20220523203854286.png │ ├── image-20220523204206720.png │ ├── image-20220523205616323.png │ ├── image-20220523211138267.png │ ├── image-20220523212112714.png │ ├── image-20220523214600537.png │ ├── image-20220523214653111.png │ ├── image-20220523215427974.png │ ├── image-20220523215732971.png │ ├── image-20220523220956085.png │ ├── image-20220523221749070.png │ ├── image-20220523234434576.png │ ├── image-20220524140511174.png │ ├── image-20220524142236898.png │ ├── image-20220524143956749.png │ ├── image-20220524172236207.png │ ├── image-20220524172432490.png │ ├── image-20220524172834368.png │ ├── image-20220524173120867.png │ ├── image-20220524173246430.png │ ├── image-20220524174341586.png │ ├── image-20220524174527992.png │ ├── image-20220524174807770.png │ ├── image-20220524175026762.png │ ├── image-20220524175406364.png │ ├── image-20220524175541610.png │ ├── image-20220524175928931.png │ ├── image-20220524183359909.png │ ├── image-20220524183453089.png │ └── image-20220524183555383.png ├── 常见设计模式总结.md └── 设计模式.md ├── Java ├── HashMap相关.md ├── HashTable.md ├── JVM │ ├── HotSpot垃圾收集器.md │ ├── HotSpot垃圾收集器.resources │ │ ├── 1238D175-FF81-4F5A-8899-CCA09DCCD5D9.png │ │ ├── 9790224E-BF78-4E47-A73D-94EC5845A554.png │ │ └── B8252EDC-045D-4565-AAF7-64C729EDE03D.png │ ├── HotSpot虚拟机对象探秘.md │ ├── HotSpot虚拟机对象探秘.resources │ │ ├── 0455EAC5-DBCC-4956-A843-DF363813D9E1.png │ │ ├── 4CFF1522-9C12-4100-9F5F-6251AB79991F.jpg │ │ └── FE9CC6BA-3D79-4CBD-8392-ABDB40E678E4.jpg │ ├── JVM 性能调优.md │ ├── JVM内存结构.md │ ├── JVM内存结构.resources │ │ ├── 355273B7-9D0C-4CA0-B422-4A869D35AA26.jpg │ │ └── 6F3902DB-275A-4FC6-8E3A-754DE6F987BA.jpg │ ├── jvm系列(一)java类的加载机制.md │ ├── jvm系列(一)java类的加载机制.resources │ │ ├── 1C74363B-1F9D-4423-90A3-C7F6B37D9B4F.jpg │ │ ├── 39F977A1-EAA5-4870-9752-0DAD0C9B2955.jpg │ │ ├── 3BA48906-A776-490A-BFF4-3C9312C424BB.jpg │ │ ├── 660D04B1-E9B5-4609-8CD6-6674BC130BA9.jpg │ │ ├── B33959C2-DD9E-4FA5-8BDE-0CFC04DDDB11.jpg │ │ └── E740CFEC-7AB1-445E-BEEF-E892E4B19075.png │ ├── jvm系列(三)GC算法 垃圾收集器.md │ ├── jvm系列(三)GC算法 垃圾收集器.resources │ │ ├── 02057726-396E-47F9-9339-2DEF5B338ED2.png │ │ ├── 1082B388-1A45-4177-98E2-30394876769B.png │ │ ├── 4F09EDEB-C98A-43BB-BF13-BAE28C01B961.png │ │ ├── 64EEE171-56CA-4292-B8C8-74512B629639.png │ │ ├── 7B29E97B-2070-485D-AACD-B47E5D8B6B65.png │ │ ├── 7F6F3B11-DDA0-4E80-8162-442B66A71632.png │ │ ├── A426A5C0-99CE-47B1-933C-EE2E0F34D408.png │ │ ├── B6AC79A9-21A8-48B4-B29E-CF755E0970FC.png │ │ ├── BC391A2A-4905-4708-9052-2422C0E9D692.png │ │ ├── C3FF8C8A-97F5-4DC1-8E90-54FFAACD3D25.jpg │ │ └── E8512714-576B-47AD-928D-72543F14014C.png │ ├── jvm系列(二)JVM内存结构.md │ ├── jvm系列(二)JVM内存结构.resources │ │ ├── 150E44D4-976A-4736-98B8-6E8681BA307B.png │ │ ├── 476AD977-8808-4422-8349-06754DB023F5.png │ │ └── CD206F3C-4EF8-47AC-9DB5-8B67574E8ADB.png │ ├── jvm系列(五)Java GC 分析.md │ ├── jvm系列(五)Java GC 分析.resources │ │ ├── 1550316679385.jpg │ │ ├── 1550316713780.jpg │ │ ├── 175F8410-B0BD-4288-A2C2-5C35AF57F933.jpg │ │ ├── 253C4E10-C025-406F-BCEC-360BD0B901AC.png │ │ ├── 3BC499FA-2D44-4448-9720-AA4734BA2290.jpg │ │ ├── AE9DCFB3-730C-4431-964A-6C54DDE8DCC0.jpg │ │ └── E41583CF-6306-4B8F-95D7-396A3B91FBB1.png │ ├── jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).md │ ├── jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources │ │ ├── 3358A9D6-B4C7-4831-B26B-AD24973357EB.png │ │ ├── 3605A5F2-6A46-41E2-9B26-60E8FDC0D331.png │ │ ├── 4607EEED-C31D-4732-A13E-1FFB1BA740DE.png │ │ ├── 62C34272-204D-411F-836F-A8FB3D6AF9D1.png │ │ ├── 8DE752AB-6C96-4A58-8E01-8970BA3E2014.png │ │ ├── B6A5EF35-72AF-46EF-8F2F-C96593E072D0.jpg │ │ └── E7DB83E0-2344-4149-8603-C606D78AB943.png │ ├── 内存分配与回收策略.md │ ├── 垃圾收集策略与算法.md │ ├── 我的Markdown笔记 │ │ ├── jvm系列(五)Java GC 分析.md │ │ └── jvm系列(五)Java GC 分析.resources │ │ │ ├── 175F8410-B0BD-4288-A2C2-5C35AF57F933.jpg │ │ │ ├── 253C4E10-C025-406F-BCEC-360BD0B901AC.png │ │ │ ├── 3BC499FA-2D44-4448-9720-AA4734BA2290.jpg │ │ │ ├── AE9DCFB3-730C-4431-964A-6C54DDE8DCC0.jpg │ │ │ └── E41583CF-6306-4B8F-95D7-396A3B91FBB1.png │ ├── 类加载器.md │ ├── 类加载器.resources │ │ └── 03A2290D-59DF-4E6C-9849-6E91930777E4.png │ ├── 类加载的时机.md │ ├── 类加载的时机.resources │ │ └── E809BD4A-272C-4092-8502-D79A423775CE.png │ ├── 类加载的过程.md │ └── 类文件结构.md ├── Java反射机制.md ├── Java容器和数据结构总结.md ├── Java并发编程(Part 1).md ├── Java并发编程(Part 2).md ├── Java并发编程(Part 3).md ├── Java并发编程(Part 4).md ├── Java并发编程(Part 5).md ├── Java并发编程(Part 6).md ├── Java锁分类.md ├── Java高级特性增强 │ ├── Java NIO之Buffer(缓冲区).md │ ├── Java NIO之Buffer(缓冲区).resources │ │ ├── 02EABCC7-6ECD-456C-BC6B-53D4C5A09E60.png │ │ ├── 03F3F860-14A4-4D45-A998-313304B775E1.png │ │ ├── 1E718F2D-CAEB-4378-8FDB-780BE9803BF5.png │ │ ├── 5DB418B1-5C83-4219-8C68-068B7406B93C.jpg │ │ ├── 8FE33880-0D29-4175-ABE7-5C8FA0911306.png │ │ ├── CDDCF910-B3A2-41C1-AB22-6EAFAAD9BE35.png │ │ └── F7810C5D-86FC-4B47-8A8B-1A9FE3B9B37A.png │ ├── Java NIO之Channel(通道).md │ ├── Java NIO之Channel(通道).resources │ │ ├── 0CC9E605-79FB-455E-AF3F-1CD41832B4A6.png │ │ ├── 19060EA5-78B2-49F1-A706-0C99F3BC51A5.png │ │ ├── 2958433B-EEAF-4D8B-98A2-39941C7C1733.png │ │ ├── 3A2E73E4-2445-4B90-93F0-0EB34EB8C82B.png │ │ ├── 3D29AB86-2102-4EEB-8AB2-B2A7FF602EA1.png │ │ ├── 63E2E9AD-32F1-4E97-A91A-290039907C59.png │ │ ├── 6AF85EF7-83C7-48B6-A6AB-C70AD22A91D4.png │ │ ├── 821A61BD-80DF-493F-99D8-4F5330211339.png │ │ ├── D2633F82-0A59-488A-AEC6-AB443A3125F4.png │ │ └── ED8C6DA7-8886-4CFF-8F51-9130FA36521F.png │ ├── Java NIO之Selector(选择器).md │ ├── Java NIO之Selector(选择器).resources │ │ ├── 03577455-F007-435C-9963-3F48AC3B8B20.png │ │ ├── 0F1FE283-EF91-4F85-8C8F-E29A4902A0FD.png │ │ ├── 3B614359-3026-4B01-938C-605FA70D1FCD.png │ │ ├── 5F7B616E-17D7-4657-A32D-384DCBC27AFB.png │ │ ├── 9510D281-0CDB-420A-95CB-BF49754414B8.png │ │ ├── B276F723-3C8E-419C-940F-E49E90B22350.png │ │ ├── C32A7750-CD6E-469A-8E9E-BEC983989522.png │ │ └── DA792031-0971-4437-B2E4-A1B535937E29.png │ ├── Java NIO之拥抱Path和Files.md │ ├── Java NIO之拥抱Path和Files.resources │ │ ├── 1E6CACD6-76A0-4D6C-8E05-C1D9353E293A.png │ │ └── B8DB4818-0624-4545-AEE7-97384BF15170.png │ ├── NIO概览.md │ ├── NIO概览.resources │ │ ├── 1EA58812-D4D0-40FA-9860-6F6C6E103FFA.png │ │ ├── 8F7AD527-634A-4D4E-B31B-6E1FB35BB4EC.jpg │ │ ├── CA9A534F-8DEF-448B-A946-3ADE41538F9D.png │ │ ├── D96C7B52-7E5A-44FA-9EB3-6D146ADE7EEF.png │ │ └── E97A1DBA-0CC4-4679-A081-B164B1645040.jpg │ ├── 大数据成神之路-Java高级特性增强(HashMap).md │ ├── 大数据成神之路-Java高级特性增强(HashMap).resources │ │ ├── 1120165-20180329133938645-733252704.png │ │ ├── 1120165-20180402091402743-458763981.png │ │ ├── 435C0F08-CE65-413F-8D3A-EE5B20EDCA0D.jpg │ │ ├── 6EBF1755-C6EA-48A3-A99F-55D598EDDFD2.png │ │ ├── 97F816CA-9593-4F26-A189-38BEEF2FEE24.png │ │ └── D02AB301-FD17-40DF-9B99-7B6C6911D4F9.jpg │ ├── 大数据成神之路-Java高级特性增强(HashSet).md │ ├── 大数据成神之路-Java高级特性增强(HashSet).resources │ │ ├── 131AFB63-19EF-4579-80D6-AE0B50A99ACD.png │ │ ├── 8C932B6E-3C26-40E7-B797-EAAE2194E5BF.jpg │ │ ├── C3AEAFA8-AB27-4F2D-978B-E8E8DA243C03.jpg │ │ ├── D377B6CA-0121-4D65-AC65-781043A01914.png │ │ └── F4569D6C-6A1E-4202-B33F-97B8C85A7844.jpg │ ├── 大数据成神之路-Java高级特性增强(LinkedHashMap).md │ ├── 大数据成神之路-Java高级特性增强(LinkedHashMap).resources │ │ ├── 2BC36CA6-D029-4249-A984-86F29FE10381.jpg │ │ ├── 84850E2A-8616-4544-A49F-E2737F4AAC8B.jpg │ │ └── A9332FA3-2758-40CD-95DC-2A2BAC724F73.jpg │ ├── 大数据成神之路-Java高级特性增强(Synchronized关键字).md │ ├── 大数据成神之路-Java高级特性增强(Synchronized关键字).resources │ │ ├── 07D5A65F-74BE-4357-8309-B0D71C4D45B4.png │ │ ├── 5204251D-6E5A-4ADC-A7E8-AE9AB28FF106.jpg │ │ ├── 57E615FE-9961-40F9-832C-FE2313570D85.png │ │ ├── 6C874101-939A-42B6-A2F8-4A502472DC6D.png │ │ ├── 7C2E9ADB-30DA-471E-B7FA-5A98C70A2B76.jpg │ │ ├── 8B18DFF9-3B9A-4EC6-A48C-15E8798C2E94.jpg │ │ ├── 98B9B038-BC51-4E1B-822B-2208D9B5A5B8.jpg │ │ ├── AA641D63-9E8D-4191-ABC1-C2284887148F.jpg │ │ ├── B079BB99-25B3-4365-8938-A75246E6237E.png │ │ ├── BF888DA2-72B3-4C44-9457-87DC233E6755.jpg │ │ ├── E12E020E-38EF-440E-B5F7-CFFFBC4DF755.jpg │ │ └── FFB5E732-82A0-4DDA-976D-E774B51C644B.jpg │ ├── 大数据成神之路-Java高级特性增强(volatile关键字).md │ ├── 大数据成神之路-Java高级特性增强(volatile关键字).resources │ │ ├── 14BF4468-D1E0-4FBF-B503-A888E309418D.png │ │ ├── 1DEE7801-BD26-447A-9CA7-DB6AFC4D7CF2.jpg │ │ ├── 40AAD840-5E57-40AF-A180-221E6527157E.jpg │ │ ├── 636D11F3-9900-4C0A-A3E1-B093B27D4DEA.jpg │ │ ├── C287D09B-1993-47C8-953B-462E4C9C59F3.jpg │ │ ├── C768ADD5-700B-49ED-ADCB-FA330CF12705.jpg │ │ ├── E8CE8791-C513-4D02-88A5-3875DF090F87.jpg │ │ ├── F057BDB7-BFF6-4637-B335-B67B38AC90BE.jpg │ │ └── FD595297-CC2C-4F20-A252-6E3850909FF7.jpg │ ├── 大数据成神之路-Java高级特性增强(多线程).md │ ├── 大数据成神之路-Java高级特性增强(多线程).resources │ │ ├── 01FB158E-3FF2-4E92-ADF6-4AD13AABE511.jpg │ │ ├── 0577FA66-6A97-4EE9-983B-1662AF6BC747.jpg │ │ ├── 6AC11272-0DE3-44D7-9533-2647D0A652BF.png │ │ ├── 91AFAC8A-2F11-43AA-96E2-285619A00844.jpg │ │ ├── B7D16AB0-886E-4151-9B6B-3E11384C6A2F.jpg │ │ ├── C4514189-AD37-430C-8B53-666975270CA8.jpg │ │ ├── DDC3432B-96E1-41BD-9A3F-3766F3EBDB30.jpg │ │ ├── E90159EC-A96C-413D-9684-2618601164E5.jpg │ │ ├── F18CB21B-41D4-4D8D-890D-4B632F69F96A.jpg │ │ ├── F44B75F4-A8BE-47F6-909B-E5BFA54A3EBA.jpg │ │ └── F78F854D-1CA0-4FD2-8C01-83F52C806DC2.jpg │ ├── 大数据成神之路-Java高级特性增强(锁).md │ ├── 大数据成神之路-Java高级特性增强(锁).resources │ │ ├── 09CC2CAB-7F91-4FC4-A508-42075D27EBA4.jpg │ │ ├── 28D7444D-5F3C-4AB3-94F4-6C46D14A19BC.jpg │ │ ├── 46AF9BE6-A1C5-418C-9836-CDE377311CC0.png │ │ ├── 70B2C414-19D7-4979-8C2E-20804851B09A.jpg │ │ ├── 866D55D7-CBAF-4269-BBC3-C89F2CA5CA5D.jpg │ │ ├── 9542056A-5ABA-4CB7-A2CC-3F73CF4B2F1F.jpg │ │ ├── C145FDBC-8373-451F-B570-FC4C87CE21F2.jpg │ │ └── CC980B46-5CF3-49EA-A101-2E3E037FB6C0.png │ ├── 大数据成神之路-Java高级特性增强(集合框架).md │ ├── 大数据成神之路-Java高级特性增强-NIO.md │ ├── 大数据成神之路-Java高级特性增强.md │ └── 大数据成神之路-Java高级特性增强.resources │ │ ├── 1120165-20180329133938645-733252704.png │ │ ├── 1120165-20180402091402743-458763981.png │ │ └── C5433386-A4DA-4D2E-A038-D92A79874B4E.png ├── Monitor总结.md ├── NIO │ ├── Java NIO之Buffer(缓冲区).md │ ├── Java NIO之Buffer(缓冲区).resources │ │ ├── 02EABCC7-6ECD-456C-BC6B-53D4C5A09E60.png │ │ ├── 03F3F860-14A4-4D45-A998-313304B775E1.png │ │ ├── 1E718F2D-CAEB-4378-8FDB-780BE9803BF5.png │ │ ├── 5DB418B1-5C83-4219-8C68-068B7406B93C.jpg │ │ ├── 8FE33880-0D29-4175-ABE7-5C8FA0911306.png │ │ ├── CDDCF910-B3A2-41C1-AB22-6EAFAAD9BE35.png │ │ └── F7810C5D-86FC-4B47-8A8B-1A9FE3B9B37A.png │ ├── Java NIO之Channel(通道).md │ ├── Java NIO之Channel(通道).resources │ │ ├── 0CC9E605-79FB-455E-AF3F-1CD41832B4A6.png │ │ ├── 19060EA5-78B2-49F1-A706-0C99F3BC51A5.png │ │ ├── 2958433B-EEAF-4D8B-98A2-39941C7C1733.png │ │ ├── 3A2E73E4-2445-4B90-93F0-0EB34EB8C82B.png │ │ ├── 3D29AB86-2102-4EEB-8AB2-B2A7FF602EA1.png │ │ ├── 63E2E9AD-32F1-4E97-A91A-290039907C59.png │ │ ├── 6AF85EF7-83C7-48B6-A6AB-C70AD22A91D4.png │ │ ├── 821A61BD-80DF-493F-99D8-4F5330211339.png │ │ ├── D2633F82-0A59-488A-AEC6-AB443A3125F4.png │ │ └── ED8C6DA7-8886-4CFF-8F51-9130FA36521F.png │ ├── Java NIO之Selector(选择器).md │ ├── Java NIO之Selector(选择器).resources │ │ ├── 03577455-F007-435C-9963-3F48AC3B8B20.png │ │ ├── 0F1FE283-EF91-4F85-8C8F-E29A4902A0FD.png │ │ ├── 3B614359-3026-4B01-938C-605FA70D1FCD.png │ │ ├── 5F7B616E-17D7-4657-A32D-384DCBC27AFB.png │ │ ├── 9510D281-0CDB-420A-95CB-BF49754414B8.png │ │ ├── B276F723-3C8E-419C-940F-E49E90B22350.png │ │ ├── C32A7750-CD6E-469A-8E9E-BEC983989522.png │ │ └── DA792031-0971-4437-B2E4-A1B535937E29.png │ ├── Java NIO之拥抱Path和Files.md │ ├── Java NIO之拥抱Path和Files.resources │ │ ├── 1E6CACD6-76A0-4D6C-8E05-C1D9353E293A.png │ │ └── B8DB4818-0624-4545-AEE7-97384BF15170.png │ ├── NIO概览.md │ └── NIO概览.resources │ │ ├── 1EA58812-D4D0-40FA-9860-6F6C6E103FFA.png │ │ ├── 8F7AD527-634A-4D4E-B31B-6E1FB35BB4EC.jpg │ │ ├── CA9A534F-8DEF-448B-A946-3ADE41538F9D.png │ │ ├── D96C7B52-7E5A-44FA-9EB3-6D146ADE7EEF.png │ │ └── E97A1DBA-0CC4-4679-A081-B164B1645040.jpg ├── pictures.resources │ ├── B+Tree.png │ ├── B-star-Tree.png │ ├── B-tree.png │ ├── 图解线程池实现原理.png │ ├── 红黑树case1.png │ ├── 红黑树case2.png │ ├── 红黑树case3.png │ └── 跳跃表存储结构.png ├── reentrantlock底层实现原理.md └── volatile面试.md ├── JavaInterviewSummary.iml ├── MidWare └── Kafka面试题总结.md ├── Others ├── HR.md ├── IO模型.md ├── Linux三剑客命令.md ├── Linux常见命令.md ├── Spring AOP原理分析.md ├── Spring IOC原理分析.md ├── Spring.md ├── epoll原理.md ├── git.md ├── nodejs.md ├── select poll epoll.md ├── 其他总结.md ├── 刷题规划.md ├── 排序算法.md ├── 数据库相关.md ├── 生产者消费者模型.md ├── 编程环境和软件工具安装手册.pdf └── 面试结尾.md ├── README.md └── 面经整理.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### JetBrains template 2 | /target/ 3 | /.idea/ 4 | *.iml 5 | rebel.xml 6 | *.DS_Store 7 | 8 | -------------------------------------------------------------------------------- /BigData/10-Flink集群的高可用(搭建篇补充).resources/6278EDED-A65A-4539-A16D-7BCD9FE77864.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/BigData/10-Flink集群的高可用(搭建篇补充).resources/6278EDED-A65A-4539-A16D-7BCD9FE77864.png -------------------------------------------------------------------------------- /BigData/pictures/TaskManger和Slots.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/BigData/pictures/TaskManger和Slots.jpg -------------------------------------------------------------------------------- /BigData/pictures/任务提交流程.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/BigData/pictures/任务提交流程.jpg -------------------------------------------------------------------------------- /Code/concurrent/ConcurrentCollection/T03SynchronizedList.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.ConcurrentCollection; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collections; 5 | import java.util.List; 6 | 7 | public class T03SynchronizedList { 8 | public static void main(String[] args) { 9 | List strs = new ArrayList<>(); 10 | List strsSync = Collections.synchronizedList(strs); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/concurrent/ConcurrentCollection/T04ConcurrentQueue.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.ConcurrentCollection; 2 | 3 | import java.util.Queue; 4 | import java.util.concurrent.ConcurrentLinkedQueue; 5 | 6 | public class T04ConcurrentQueue { 7 | public static void main(String[] args) { 8 | Queue strs = new ConcurrentLinkedQueue<>(); 9 | 10 | for(int i=0; i<10; i++) { 11 | strs.offer("a" + i); 12 | } 13 | 14 | System.out.println(strs); 15 | 16 | System.out.println(strs.size()); 17 | 18 | System.out.println(strs.poll()); 19 | System.out.println(strs.size()); 20 | 21 | System.out.println(strs.peek()); 22 | System.out.println(strs.size()); 23 | 24 | //双端队列Deque 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/concurrent/ConcurrentCollection/T06ArrayBlockingQueue.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.ConcurrentCollection; 2 | 3 | import java.util.Random; 4 | import java.util.concurrent.ArrayBlockingQueue; 5 | import java.util.concurrent.BlockingQueue; 6 | 7 | public class T06ArrayBlockingQueue { 8 | 9 | static BlockingQueue strs = new ArrayBlockingQueue<>(10); 10 | 11 | static Random r = new Random(); 12 | 13 | public static void main(String[] args) throws InterruptedException { 14 | for (int i = 0; i < 10; i++) { 15 | strs.put("a" + i); 16 | } 17 | 18 | strs.put("aaa"); //满了就会等待,程序阻塞 19 | //strs.add("aaa"); 20 | //strs.offer("aaa"); 21 | //strs.offer("aaa", 1, TimeUnit.SECONDS); 22 | 23 | System.out.println(strs); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/concurrent/ConcurrentCollection/T08TransferQueue.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.ConcurrentCollection; 2 | 3 | import java.util.concurrent.LinkedTransferQueue; 4 | 5 | public class T08TransferQueue { 6 | public static void main(String[] args) throws InterruptedException { 7 | LinkedTransferQueue strs = new LinkedTransferQueue<>(); 8 | 9 | /*new Thread(() -> { 10 | try { 11 | System.out.println(strs.take()); 12 | } catch (InterruptedException e) { 13 | e.printStackTrace(); 14 | } 15 | }).start();*/ 16 | 17 | //strs.transfer("aaa"); 18 | 19 | strs.put("aaa"); 20 | 21 | 22 | new Thread(() -> { 23 | try { 24 | System.out.println(strs.take()); 25 | } catch (InterruptedException e) { 26 | e.printStackTrace(); 27 | } 28 | }).start(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/concurrent/ConcurrentCollection/T09SynchronusQueue.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.ConcurrentCollection; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | import java.util.concurrent.SynchronousQueue; 5 | 6 | public class T09SynchronusQueue { //容量为0 7 | public static void main(String[] args) throws InterruptedException { 8 | BlockingQueue strs = new SynchronousQueue<>(); 9 | 10 | new Thread(()->{ 11 | try { 12 | System.out.println(strs.take()); 13 | } catch (InterruptedException e) { 14 | e.printStackTrace(); 15 | } 16 | }).start(); 17 | 18 | strs.put("aaa"); //阻塞等待消费者消费 19 | //strs.add("aaa"); 20 | System.out.println(strs.size()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Code/concurrent/ConcurrentCollection/readme.md: -------------------------------------------------------------------------------- 1 | Executor 2 | ExecutorService submit 3 | Callable = Runnable 4 | Executors 5 | ThreadPool 6 | Future 7 | 8 | fixed cached single scheduled workstealing forkjoin 9 | 10 | ThreadpoolExecutor 11 | 12 | PStreamAPI -------------------------------------------------------------------------------- /Code/concurrent/Executor/T01MyExecutor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 认识Executor 3 | */ 4 | package com.todd.concurrent.Executor; 5 | 6 | import java.util.concurrent.Executor; 7 | 8 | public class T01MyExecutor implements Executor{ 9 | 10 | public static void main(String[] args) { 11 | new T01MyExecutor().execute(()->System.out.println("hello executor")); 12 | } 13 | 14 | @Override 15 | public void execute(Runnable command) { 16 | //new Thread(command).run(); 17 | command.run(); 18 | 19 | } 20 | 21 | } 22 | 23 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/T02ExecutorService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 认识ExecutorService,阅读API文档 3 | * 认识submit方法,扩展了execute方法,具有一个返回值 4 | */ 5 | package com.todd.concurrent.Executor; 6 | 7 | public class T02ExecutorService { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/T03Callable.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 认识Callable,对Runnable进行了扩展 3 | * 对Callable的调用,可以有返回值 4 | */ 5 | package com.todd.concurrent.Executor; 6 | 7 | public class T03Callable { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/T04Executors.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 认识Executors 3 | */ 4 | package com.todd.concurrent.Executor; 5 | 6 | public class T04Executors { 7 | public static void main(String[] args) { 8 | //Executors 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/T08CachedPool.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Executor; 2 | 3 | import java.util.concurrent.ExecutorService; 4 | import java.util.concurrent.Executors; 5 | import java.util.concurrent.TimeUnit; 6 | 7 | public class T08CachedPool { 8 | public static void main(String[] args) throws InterruptedException { 9 | ExecutorService service = Executors.newCachedThreadPool(); 10 | System.out.println(service); 11 | for (int i = 0; i < 2; i++) { 12 | service.execute(() -> { 13 | try { 14 | TimeUnit.MILLISECONDS.sleep(500); 15 | } catch (InterruptedException e) { 16 | e.printStackTrace(); 17 | } 18 | System.out.println(Thread.currentThread().getName()); 19 | }); 20 | } 21 | System.out.println(service); 22 | 23 | TimeUnit.SECONDS.sleep(80); 24 | 25 | System.out.println(service); 26 | 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/T09SingleThreadPool.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Executor; 2 | 3 | import java.util.concurrent.ExecutorService; 4 | import java.util.concurrent.Executors; 5 | 6 | public class T09SingleThreadPool { 7 | public static void main(String[] args) { 8 | ExecutorService service = Executors.newSingleThreadExecutor(); 9 | for(int i=0; i<5; i++) { 10 | final int j = i; 11 | service.execute(()->{ 12 | 13 | System.out.println(j + " " + Thread.currentThread().getName()); 14 | }); 15 | } 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/T10ScheduledPool.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Executor; 2 | 3 | import java.util.Random; 4 | import java.util.concurrent.Executors; 5 | import java.util.concurrent.ScheduledExecutorService; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | public class T10ScheduledPool { 9 | public static void main(String[] args) { 10 | ScheduledExecutorService service = Executors.newScheduledThreadPool(4); 11 | service.scheduleAtFixedRate(()->{ 12 | try { 13 | TimeUnit.MILLISECONDS.sleep(new Random().nextInt(1000)); 14 | } catch (InterruptedException e) { 15 | e.printStackTrace(); 16 | } 17 | System.out.println(Thread.currentThread().getName()); 18 | }, 0, 500, TimeUnit.MILLISECONDS); 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/T13ThreadPoolExecutor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 自定义线程池 3 | */ 4 | package com.todd.concurrent.Executor; 5 | 6 | 7 | public class T13ThreadPoolExecutor { 8 | public static void main(String[] args) { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Code/concurrent/Executor/readme.md: -------------------------------------------------------------------------------- 1 | 总结: 2 | 1:对于map/set的选择使用 3 | HashMap 4 | TreeMap 5 | LinkedHashMap 6 | 7 | Hashtable 8 | Collections.sychronizedXXX 9 | 10 | ConcurrentHashMap 11 | ConcurrentSkipListMap 12 | 13 | 2:队列 14 | ArrayList 15 | LinkedList 16 | Collections.synchronizedXXX 17 | CopyOnWriteList 18 | Queue 19 | CocurrentLinkedQueue //concurrentArrayQueue 20 | BlockingQueue 21 | LinkedBQ 22 | ArrayBQ 23 | TransferQueue 24 | SynchronusQueue 25 | DelayQueue执行定时任务 26 | 27 | -------------------------------------------------------------------------------- /Code/concurrent/Thread/Thread001.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Thread; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/2 10:56 6 | * @description: synchronized关键字,对某个对象加锁,synchronized关键字锁定的是对象 7 | */ 8 | public class Thread001 { 9 | private int count = 10; 10 | 11 | //堆内存中的对象 12 | 13 | private Object o = new Object(); 14 | public void m() { 15 | 16 | //任何线程要执行下面的代码,必须先拿到o的锁 17 | 18 | synchronized (o) { 19 | count--; 20 | System.out.println(Thread.currentThread().getName() + "count =" + count); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/concurrent/Thread/Thread002.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Thread; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/2 11:02 6 | * @description: synchronized关键字,对某个对象加锁,synchronized关键字锁定的是对象 7 | */ 8 | public class Thread002 { 9 | private int count = 10; 10 | 11 | public void m() { 12 | 13 | //任何线程要执行下面的代码,必须先拿到this的锁 14 | 15 | synchronized(this) { 16 | count--; 17 | System.out.println(Thread.currentThread().getName() + " count = " + count); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Code/concurrent/Thread/Thread003.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Thread; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/2 11:05 6 | * @description: synchronized关键字,对某个对象加锁,synchronized关键字锁定的是对象 7 | */ 8 | public class Thread003 { 9 | private int count = 10; 10 | 11 | //等同于在方法的代码执行时要synchronized(this),等同于在执行代码时锁定当前对象。 12 | 13 | public synchronized void m() { 14 | count--; 15 | System.out.println(Thread.currentThread().getName() + " count = " + count); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/concurrent/Thread/Thread004.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Thread; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/2 11:06 6 | * @description: synchronized关键字,对某个对象加锁,synchronized关键字锁定的是对象 7 | */ 8 | public class Thread004 { 9 | private static int count = 10; 10 | 11 | //这里等同于synchronized(concurrent004.class) 12 | 13 | public synchronized static void m() { 14 | count--; 15 | System.out.println(Thread.currentThread().getName() + " count = " + count); 16 | } 17 | 18 | public static void mm() { 19 | 20 | //考虑一下这里写synchronized(this)是否可以?不行,静态方法和属性不需要new出来访问。 21 | 22 | synchronized(Thread004.class) { 23 | count --; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/concurrent/Thread/Thread005.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Thread; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/2 11:12 6 | * @description: synchronized的代码块是原子操作。 7 | */ 8 | public class Thread005 implements Runnable { 9 | private int count = 10; 10 | 11 | @Override 12 | public /*synchronized*/ void run() { 13 | count--; 14 | System.out.println(Thread.currentThread().getName() + " count = " + count); 15 | } 16 | 17 | public static void main(String[] args) { 18 | Thread005 t = new Thread005(); 19 | 20 | //5个线程访问同一个对象 21 | 22 | for (int i = 0; i < 5; i++) { 23 | new Thread(t, "THREAD" + i).start(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/concurrent/Thread/Thread006.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Thread; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/2 11:13 6 | * @description: TODO 7 | */ 8 | public class Thread006 implements Runnable { 9 | private int count = 10; 10 | 11 | @Override 12 | public synchronized void run() { 13 | count--; 14 | System.out.println(Thread.currentThread().getName() + " count = " + count); 15 | } 16 | 17 | public static void main(String[] args) { 18 | 19 | for (int i = 0; i < 5; i++) { 20 | Thread006 t = new Thread006(); 21 | new Thread(t, "THREAD" + i).start(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Code/concurrent/Thread/Thread018.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.Thread; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/2 12:22 6 | * @description: 不要以字符串常量作为锁定对象 7 | * 在下面的例子中,m1和m2其实锁定的是同一个对象 8 | * 这种情况还会发生比较诡异的现象,比如你用到了一个类库,在该类库中代码锁定了字符串“Hello”, 9 | * 但是你读不到源码,所以你在自己的代码中也锁定了"Hello",这时候就有可能发生非常诡异的死锁阻塞, 10 | * 因为你的程序和你用到的类库不经意间使用了同一把锁 11 | */ 12 | public class Thread018 { 13 | String s1 = "Hello"; 14 | String s2 = "Hello"; 15 | 16 | void m1() { 17 | synchronized(s1) { 18 | 19 | } 20 | } 21 | 22 | void m2() { 23 | synchronized(s2) { 24 | 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Code/concurrent/TicketSeller/TicketSeller1.java: -------------------------------------------------------------------------------- 1 | package com.todd.concurrent.TicketSeller; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * @author todd 8 | * @date 2020/6/2 15:10 9 | * @description: 有N张火车票,每张票都有一个编号,同时有10个窗口对外售票,请写一个模拟程序。分析一下,这样能解决问题吗? 10 | * 重复销售?超量销售? 11 | */ 12 | public class TicketSeller1 { 13 | static List tickets = new ArrayList<>(); 14 | 15 | static { 16 | for (int i = 0; i < 10000; i++) { 17 | tickets.add("票编号:" + i); 18 | } 19 | } 20 | 21 | public static void main(String[] args) { 22 | for (int i = 0; i < 10; i++) { 23 | new Thread(() -> { 24 | while (tickets.size() > 0) { 25 | System.out.println("销售了--" + tickets.remove(0)); 26 | } 27 | }).start(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain; 2 | 3 | /** 4 | * //1、链条的引用点 5 | * //2、下一个继续 6 | * //3、构造链条 7 | * 8 | * 回旋责任链 9 | * Filter:1 -- 2 -- 3 -- 本人 -- 3 -- 2 -- 1 10 | * 11 | */ 12 | public class MainTest { 13 | 14 | public static void main(String[] args) { 15 | 16 | Teacher leifengyang = new Teacher("Leifengyang"); 17 | 18 | Teacher xiaokui = new Teacher("xiaokui"); 19 | 20 | Teacher mengmeng = new Teacher("mengmeng"); 21 | 22 | 23 | leifengyang.setNext(xiaokui); 24 | xiaokui.setNext(mengmeng); 25 | 26 | 27 | 28 | leifengyang.handleRequest(); 29 | 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/CharacterFilter.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | public class CharacterFilter implements Filter{ 4 | @Override 5 | public void doFilter(Request request, Response response, FilterChain chain) { 6 | //功能 7 | request.msg +=" ===="; 8 | 9 | System.out.println("CharacterFilter...doFilter之前"); 10 | 11 | //放行 12 | chain.doFilter(request,response,chain); 13 | 14 | 15 | System.out.println("CharacterFilter...doFilter之后"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/EncodingFilter.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | public class EncodingFilter implements Filter{ 4 | @Override 5 | public void doFilter(Request request, Response response, FilterChain chain) { 6 | request.msg+=" oooo"; 7 | System.out.println("EncodingFilter...doFilter之前"); 8 | 9 | //放行 10 | chain.doFilter(request,response,chain); 11 | 12 | System.out.println("EncodingFilter...doFilter之后"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/Filter.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | public interface Filter { 4 | 5 | void doFilter(Request request,Response response,FilterChain chain); 6 | } 7 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/HttpFilter.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | public class HttpFilter implements Filter{ 4 | @Override 5 | public void doFilter(Request request, Response response, FilterChain chain) { 6 | //第一个filter的功能 7 | request.msg+=">>>"; 8 | 9 | System.out.println("HttpFilter...doFilter之前"); 10 | 11 | //放行 12 | chain.doFilter(request,response,chain); 13 | 14 | 15 | System.out.println("HttpFilter...doFilter之后"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | 4 | // 1---2---3--my---3---2---1 5 | public class MainTest { 6 | 7 | public static void main(String[] args) { 8 | FilterChain chain = new FilterChain(); 9 | 10 | //web.xml =- filter 11 | HttpFilter filter = new HttpFilter(); 12 | CharacterFilter characterFilter = new CharacterFilter(); 13 | EncodingFilter encodingFilter = new EncodingFilter(); 14 | chain.addFilter(filter); 15 | chain.addFilter(characterFilter); 16 | chain.addFilter(encodingFilter); 17 | 18 | 19 | chain.setTarget(new My()); 20 | 21 | //filter如何链式执行。 22 | 23 | chain.doFilter(new Request("hello world"), 24 | new Response("adhkjasdhak"),chain); 25 | 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/My.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | public class My { 4 | 5 | void hello(){ 6 | 7 | System.out.println("调用my.hello()"); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/Request.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | 4 | import lombok.Data; 5 | 6 | @Data 7 | public class Request { 8 | 9 | String msg; //请求内容 10 | public Request(String msg){ 11 | this.msg = msg; 12 | } 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/behavioral/chain/ext/Response.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.chain.ext; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class Response { 7 | String content; 8 | public Response(String content){ 9 | this.content = content; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/behavioral/command/Command.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.command; 2 | 3 | /** 4 | * 抽象命令类 5 | * Controller、Service、Dao接口 6 | * 7 | * Service 8 | */ 9 | public interface Command { 10 | 11 | /** 12 | * 命令的执行方法 13 | */ 14 | void execute(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Code/design/behavioral/command/LeiReceiver.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.command; 2 | 3 | /** 4 | * 命令接受者(执行者)。 5 | */ 6 | public class LeiReceiver { 7 | 8 | public void online(){ 9 | System.out.println("leifengyang 在线上直播大厂课......"); 10 | } 11 | public void travel(){ 12 | System.out.println("leifengyang 出差....."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/behavioral/command/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.command; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | 8 | // LeiReceiver leiReceiver = new LeiReceiver(); 9 | // leiReceiver.travel(); 10 | 11 | TeacherTongInvoker invoker = new TeacherTongInvoker(); 12 | invoker.setCommand(new OnlineCommand()); 13 | 14 | invoker.call(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Code/design/behavioral/command/OnlineCommand.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.command; 2 | 3 | /** 4 | * 线上课命令 5 | * 6 | * Controller { 7 | * xxService 8 | * aaService 9 | * 10 | * 11 | * //宏命令 12 | * order(){ 13 | * //结账 14 | * //扣库存 15 | * //出账单 16 | * .... 17 | * } 18 | * 19 | * } 20 | */ 21 | public class OnlineCommand implements Command{ 22 | 23 | //Dao 24 | private LeiReceiver receiver = new LeiReceiver(); 25 | @Override 26 | public void execute() { 27 | System.out.println("要去上(吹)课(牛)...."); 28 | receiver.online(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/design/behavioral/command/TeacherTongInvoker.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.command; 2 | 3 | /** 4 | * 命令调用者(发起者) 5 | * 6 | * Controller 7 | */ 8 | public class TeacherTongInvoker { 9 | Command command; 10 | 11 | public void call(){ 12 | //命令 13 | command.execute(); 14 | } 15 | 16 | 17 | public void setCommand(Command command) { 18 | this.command = command; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Code/design/behavioral/command/WuHanTravelCommand.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.command; 2 | 3 | /** 4 | * 武汉出(旅)差(游)命令 5 | */ 6 | public class WuHanTravelCommand implements Command{ 7 | 8 | private LeiReceiver receiver = new LeiReceiver(); 9 | 10 | @Override 11 | public void execute() { 12 | System.out.println("我要出(旅)差(游)...."); 13 | receiver.travel(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/behavioral/interpreter/IDCardExpression.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.interpreter; 2 | 3 | /** 4 | * 身份信息表达式 5 | * 表达式的解析 6 | * 7 | */ 8 | public abstract class IDCardExpression { 9 | 10 | /** 11 | * 定义解析逻辑 12 | * 假设我们需要解析的信息格式为: 13 | * 上海市:张文宏-医生 14 | * 武汉市:雷丰阳-程序员 15 | * 北京市:宋宋-老人 16 | * 表达式中,“:”以前的是城市,“-”以后的是职业 17 | * @param expression 18 | * @return 19 | */ 20 | abstract boolean interpret(String expression); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Code/design/behavioral/interpreter/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.interpreter; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | Area area = new Area(); 8 | /** 9 | * 上海市:张文宏-医生 10 | * 武汉市:雷丰阳-程序员 11 | * 北京市:宋宋-老人 12 | */ 13 | String sr = "武汉市:雷丰阳-程序员"; 14 | 15 | area.getTicket(sr); 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/design/behavioral/interpreter/OrExpression.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.interpreter; 2 | 3 | /** 4 | * 非终结表达式 5 | */ 6 | public class OrExpression extends IDCardExpression { 7 | 8 | //组合两个终结表达式。最终的判断结果是终结表达式判断出来的,这个表达式只是一个桥梁 9 | private IDCardExpression cityExp; 10 | private IDCardExpression typeExp; 11 | 12 | public OrExpression(IDCardExpression cityExp, IDCardExpression typeExp) { 13 | this.cityExp = cityExp; 14 | this.typeExp = typeExp; 15 | } 16 | 17 | @Override 18 | boolean interpret(String expression) { 19 | 20 | //定义所有终结表达式的合并逻辑 21 | return cityExp.interpret(expression) || typeExp.interpret(expression); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/design/behavioral/iterator/MaYuCheng.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.iterator; 2 | 3 | public class MaYuCheng extends BeautifulMan{ 4 | 5 | 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Code/design/behavioral/iterator/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.iterator; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | MaYuCheng cheng = new MaYuCheng(); 8 | 9 | cheng.likeYou("王刚"); 10 | cheng.likeYou("李强"); 11 | cheng.likeYou("赵根"); 12 | 13 | 14 | BeautifulMan.Itr itr = cheng.getIterator(); 15 | String s = itr.firstLove(); 16 | System.out.println(s); 17 | 18 | String current = itr.current(); 19 | System.out.println(current); 20 | 21 | System.out.println("================="); 22 | while (itr.hasNext()){ 23 | String next = itr.next(); 24 | System.out.println(next); 25 | } 26 | 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Code/design/behavioral/mediator/Captain.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.mediator; 2 | 3 | /** 4 | * 抽象机长 5 | */ 6 | public abstract class Captain { 7 | 8 | //起飞 9 | abstract void fly(); 10 | //降落 11 | abstract void land(); 12 | //完成 13 | abstract void success(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/behavioral/mediator/ControlTower.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.mediator; 2 | 3 | 4 | /** 5 | * 塔台:中介者 6 | * 7 | * 网状变为星状 8 | */ 9 | public class ControlTower { 10 | 11 | 12 | private boolean canDo = true; 13 | 14 | //接受请求... 15 | public void acceptRequest(Captain captain,String action){ 16 | if("fly".equals(action)||"land".equals(action)){ 17 | // 18 | if(canDo == true){ 19 | System.out.println("允许......"); 20 | canDo = false; 21 | }else { 22 | System.out.println("不允许....."); 23 | } 24 | } 25 | if("success".equals(action)){ 26 | canDo = true; 27 | } 28 | 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Code/design/behavioral/mediator/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.mediator; 2 | 3 | 4 | /** 5 | * 中介者: 6 | * 7 | */ 8 | public class MainTest { 9 | 10 | public static void main(String[] args) { 11 | HU8778 hu8778 = new HU8778(); 12 | SC8633 sc8633 = new SC8633(); 13 | 14 | ControlTower tower = new ControlTower(); 15 | hu8778.setControlTower(tower); 16 | sc8633.setControlTower(tower); 17 | 18 | hu8778.fly(); 19 | 20 | hu8778.success(); 21 | 22 | sc8633.fly(); 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/design/behavioral/mediator/XC9527.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.mediator; 2 | 3 | 4 | /** 5 | * 星星9527 6 | */ 7 | public class XC9527 extends Captain{ 8 | @Override 9 | void fly() { 10 | System.out.println("XC9527请求起飞...."); 11 | } 12 | 13 | @Override 14 | void land() { 15 | System.out.println("XC9527请求降落...."); 16 | } 17 | 18 | @Override 19 | void success() { 20 | System.out.println("XC9527请求降落...."); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Code/design/behavioral/memento/GameRecord.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.memento; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 游戏记录。需要保存的内部状态信息, 7 | * 8 | * 也叫备忘录信息 9 | * 10 | * 11 | */ 12 | @Data 13 | public class GameRecord { 14 | Integer id; //代表生成记录的id 15 | Integer coin;//剩余金币 16 | Integer hp;//血量 17 | Integer mp;//蓝量 18 | Integer level;//等级 19 | 20 | 21 | //获取当前备忘录信息 22 | void getCurrent(){ 23 | 24 | System.out.println("coin:"+coin+";\t"+"hp:"+hp+";\t mp:"+mp); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Code/design/behavioral/memento/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.memento; 2 | 3 | 4 | /** 5 | * 1、备忘录的设计(提取属性) 6 | * 2、备忘录对象和原对象的互转操作(BeanUtils属性对拷) 7 | * 序列化 8 | * 保存数据库 9 | */ 10 | public class MainTest { 11 | 12 | public static void main(String[] args) throws Exception { 13 | 14 | LeiGamer leiGamer = new LeiGamer(); 15 | 16 | leiGamer.playGame(); 17 | 18 | //第一次保存 19 | leiGamer.saveGameRecord(); 20 | 21 | leiGamer.playGame(); 22 | 23 | leiGamer.playGame(); 24 | 25 | leiGamer.saveGameRecord(); 26 | 27 | 28 | LeiGamer fromMemento = leiGamer.getFromMemento(1); 29 | 30 | fromMemento.playGame(); 31 | 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Code/design/behavioral/observer/AbstractFans.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.observer; 2 | 3 | 4 | import java.util.List; 5 | 6 | /** 7 | * 抽象观察者 8 | */ 9 | public abstract class AbstractFans { 10 | 11 | List tikTokers;//双向观察 12 | 13 | abstract void acceptMsg(String msg); 14 | 15 | void follow(AbstractTikToker tikToker){ 16 | //主播增粉了 17 | tikToker.addFans(this); 18 | // for (AbstractTikToker toker : tikTokers) { 19 | // 20 | // } 21 | }; 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Code/design/behavioral/observer/AbstractTikToker.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.observer; 2 | 3 | /** 4 | * 抖音主播 5 | * 6 | * 粉丝观察主播.... 7 | */ 8 | public abstract class AbstractTikToker { 9 | 10 | //添加粉丝 11 | abstract void addFans(AbstractFans fans); 12 | 13 | //通知粉丝 14 | abstract void notifyFans(String msg); 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/behavioral/observer/HumanFans.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.observer; 2 | 3 | public class HumanFans extends AbstractFans { 4 | @Override 5 | void acceptMsg(String msg) { 6 | System.out.println("主播说:"+msg); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/behavioral/observer/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.observer; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | MMTikToker lei = new MMTikToker(); 8 | 9 | lei.startSell(); 10 | 11 | RobotFans fans1 = new RobotFans(); 12 | RobotFans fans2 = new RobotFans(); 13 | RobotFans fans3 = new RobotFans(); 14 | fans1.follow(lei); 15 | fans2.follow(lei); 16 | fans3.follow(lei); 17 | 18 | HumanFans humanFans = new HumanFans(); 19 | humanFans.follow(lei); 20 | 21 | System.out.println("=====>"); 22 | 23 | 24 | lei.endSell(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/design/behavioral/observer/RobotFans.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.observer; 2 | 3 | public class RobotFans extends AbstractFans { 4 | @Override 5 | void acceptMsg(String msg) { 6 | System.out.println("呸...."); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/behavioral/state/BeafNodleState.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.state; 2 | 3 | /** 4 | * 吃牛肉面状态 5 | */ 6 | public class BeafNodleState implements TeamState { 7 | 8 | @Override 9 | public void playGame() { 10 | System.out.println("饱饱的一顿牛肉面......中了诅咒,输了"); 11 | } 12 | 13 | @Override 14 | public TeamState next() { 15 | return new MatchState(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/design/behavioral/state/MatchState.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.state; 2 | 3 | /** 4 | * 竞赛状态 5 | */ 6 | public class MatchState implements TeamState{ 7 | @Override 8 | public void playGame() { 9 | System.out.println("全力以赴打比赛...."); 10 | } 11 | 12 | 13 | //状态模式的核心 14 | @Override 15 | public TeamState next() { 16 | return new VocationState(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/design/behavioral/state/SKTTeam.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.state; 2 | 3 | 4 | /** 5 | * 环境类: 6 | */ 7 | public class SKTTeam { 8 | 9 | 10 | private TeamState teamState; 11 | 12 | public void setTeamState(TeamState teamState) { 13 | this.teamState = teamState; 14 | } 15 | 16 | //开始游戏 17 | public void startGame(){ 18 | //状态不同会导致不同的游戏结果 19 | teamState.playGame(); 20 | } 21 | 22 | 23 | //下一个状态 24 | void nextState(){ 25 | teamState = teamState.next(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/design/behavioral/state/TeamState.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.state; 2 | 3 | /** 4 | * 抽象状态 5 | */ 6 | public interface TeamState { 7 | 8 | 9 | //玩游戏 10 | void playGame(); 11 | 12 | //切换到下一个状态 13 | TeamState next(); 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/behavioral/state/VocationState.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.state; 2 | 3 | /** 4 | * 休假状态 5 | */ 6 | public class VocationState implements TeamState { 7 | @Override 8 | public void playGame() { 9 | System.out.println("三亚旅游真舒服....饿了...不玩游戏"); 10 | //状态流转 11 | 12 | } 13 | 14 | @Override 15 | public TeamState next() { 16 | return new BeafNodleState(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/design/behavioral/strategy/GameStrategy.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.strategy; 2 | 3 | /** 4 | * 游戏策略 5 | */ 6 | public interface GameStrategy { 7 | 8 | //战斗策略 9 | void warStrategy(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/behavioral/strategy/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.strategy; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | TeamGNR gnr = new TeamGNR(); 8 | 9 | gnr.setGameStrategy(new RandomStrategy()); 10 | gnr.startGame(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/behavioral/strategy/RandomStrategy.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.strategy; 2 | 3 | public class RandomStrategy implements GameStrategy{ 4 | 5 | @Override 6 | public void warStrategy() { 7 | System.out.println("大乱斗..."); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Code/design/behavioral/strategy/SteadyStrategy.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.strategy; 2 | 3 | 4 | /** 5 | * 稳健运营策略 6 | */ 7 | public class SteadyStrategy implements GameStrategy { 8 | @Override 9 | public void warStrategy() { 10 | System.out.println("各路小心...及时支援..."); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/behavioral/strategy/TeamGNR.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.strategy; 2 | 3 | 4 | /** 5 | * 环境类 6 | */ 7 | public class TeamGNR { 8 | 9 | //抽取游戏策略算法,并进行引用 10 | private GameStrategy gameStrategy; 11 | 12 | public void setGameStrategy(GameStrategy gameStrategy) { 13 | this.gameStrategy = gameStrategy; 14 | } 15 | 16 | public void startGame(){ 17 | System.out.println("游戏开始....."); 18 | //游戏策略 19 | gameStrategy.warStrategy(); 20 | System.out.println("win......"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Code/design/behavioral/strategy/UziStrategy.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.strategy; 2 | 3 | /** 4 | * 冲锋向前策略 5 | */ 6 | public class UziStrategy implements GameStrategy{ 7 | @Override 8 | public void warStrategy() { 9 | System.out.println("uzi....."); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/behavioral/template/AutoCookMachine.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.template; 2 | 3 | public class AutoCookMachine extends CookTemplate{ 4 | 5 | @Override 6 | public void addfood() { 7 | System.out.println("放了三个小白菜"); 8 | } 9 | 10 | @Override 11 | public void addsalt() { 12 | System.out.println("放了三勺盐"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/behavioral/template/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.template; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | AutoCookMachine cookMachine = new AutoCookMachine(); 8 | 9 | cookMachine.cook(); 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/CPU.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | public class CPU extends Hardware{ 4 | public CPU(String command) { 5 | super(command); 6 | } 7 | 8 | @Override 9 | public void work() { 10 | System.out.println("CPU处理指令:"+command); 11 | } 12 | 13 | @Override 14 | public void accept(Vistor vistor) { 15 | //给升级包提供一个改CPU指令等信息的办法 16 | vistor.visitCPU(this); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/Disk.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | public class Disk extends Hardware{ 4 | public Disk(String command) { 5 | super(command); 6 | } 7 | 8 | @Override 9 | public void work() { 10 | System.out.println("Disk保存指令的历史记录:"+command); 11 | } 12 | 13 | 14 | @Override 15 | public void accept(Vistor vistor) { 16 | vistor.visitDisk(this); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/Foot.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | public class Foot extends Hardware{ 4 | public Foot(String command) { 5 | super(command); 6 | } 7 | 8 | @Override 9 | public void work() { 10 | System.out.println("脚处理指令:"+command); 11 | } 12 | 13 | 14 | //元素需要接受一个访问者的访问 15 | @Override 16 | public void accept(Vistor vistor) { 17 | vistor.visitFoot(this); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/Hardware.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | 4 | /** 5 | * 硬件。 抽象元素类 6 | */ 7 | public abstract class Hardware { 8 | String command;//封装硬件的处理指令 9 | 10 | public Hardware(String command){ 11 | this.command = command; 12 | } 13 | 14 | 15 | //收到命令以后进行工作 16 | abstract public void work(); 17 | 18 | //定义接受软件升级包的方法。这个方法应该具体硬件去实现 19 | abstract public void accept(Vistor vistor); 20 | } 21 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | XiaoAi xiaoAi = new XiaoAi(); 8 | 9 | xiaoAi.answerQuestion(); 10 | 11 | 12 | //升级。cpu联网处理指令 13 | //升级。disk保存到云存储 14 | UpdatePackage aPackage = new UpdatePackage("联网增强功能"); 15 | xiaoAi.acceptUpdate(aPackage); 16 | 17 | 18 | 19 | //访问者 20 | xiaoAi.answerQuestion(); 21 | 22 | 23 | 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/UpdatePackage.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | /** 4 | * 升级包可以更改指令 5 | */ 6 | public class UpdatePackage implements Vistor{ 7 | 8 | 9 | private String ext; 10 | public UpdatePackage(String ext){ 11 | this.ext = ext; 12 | } 13 | 14 | @Override 15 | public void visitDisk(Disk disk) { 16 | disk.command += " >>> "+ext; 17 | } 18 | 19 | @Override 20 | public void visitCPU(CPU cpu) { 21 | //改属性为例 22 | cpu.command += ">>>> "+ext; 23 | //装饰模式。改方法 24 | } 25 | 26 | @Override 27 | public void visitFoot(Foot foot) { 28 | foot.command += " >>>> "+ext; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/Vistor.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | 4 | /** 5 | * 升级包的接口 6 | */ 7 | public interface Vistor { 8 | 9 | 10 | //访问者能访问元素。 11 | void visitDisk(Disk disk); 12 | 13 | void visitCPU(CPU cpu); 14 | 15 | void visitFoot(Foot foot); 16 | } 17 | -------------------------------------------------------------------------------- /Code/design/behavioral/visitor/XiaoAi.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.behavioral.visitor; 2 | 3 | 4 | /** 5 | * 小爱机器人 6 | */ 7 | public class XiaoAi { 8 | 9 | private CPU cpu = new CPU("武汉天气"); 10 | private Disk disk = new Disk("武汉天气"); 11 | private Foot foot = new Foot("武汉天气"); 12 | 13 | void answerQuestion(){ 14 | cpu.work(); 15 | disk.work(); 16 | foot.work(); 17 | } 18 | 19 | 20 | 21 | //接受升级包 22 | public void acceptUpdate(Vistor aPackage) { 23 | 24 | //访问模式 25 | 26 | 27 | //升级CPU 28 | aPackage.visitCPU(cpu); 29 | aPackage.visitDisk(disk); 30 | aPackage.visitFoot(foot); 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Code/design/creatation/builder/AbstractBuilder.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.builder; 2 | 3 | /** 4 | * 抽象建造者 5 | */ 6 | public abstract class AbstractBuilder { 7 | 8 | Phone phone; 9 | abstract AbstractBuilder customCpu(String cpu); 10 | abstract AbstractBuilder customMem(String mem); 11 | abstract AbstractBuilder customDisk(String disk); 12 | abstract AbstractBuilder customCam(String cam); 13 | 14 | Phone getProduct(){ 15 | return phone; 16 | } 17 | 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/AbstractCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 工厂的产品 5 | * 6 | * 怎么把一个功能提升一个层次:定义抽象(抽象类,接口) 7 | * 抽象类,接口 就会有多实现,多实现自然就有多功能 8 | */ 9 | public abstract class AbstractCar { 10 | 11 | String engine; 12 | public abstract void run(); 13 | } 14 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/AbstractMask.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 抽象产品 5 | */ 6 | public abstract class AbstractMask { 7 | 8 | Integer price; 9 | public abstract void protectedMe(); 10 | } 11 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/CommonMask.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | public class CommonMask extends AbstractMask{ 4 | public CommonMask(){ 5 | price = 1; 6 | } 7 | @Override 8 | public void protectedMe() { 9 | System.out.println("普通口罩....简单保护...请及时更换"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 抽象出来。 5 | * 可以抽象成接口(只有方法),可以抽象成抽象类(有些属性也需要用) 6 | */ 7 | public class MainTest { 8 | 9 | public static void main(String[] args) { 10 | 11 | // 12 | WulinFactory wulinFactory = new WulinWuHanMaskFactory(); 13 | AbstractCar abstractCar = wulinFactory.newCar(); 14 | 15 | AbstractMask abstractMask = wulinFactory.newMask(); 16 | abstractMask.protectedMe(); 17 | 18 | 19 | wulinFactory = new WulinHangZhouMaskFactory(); 20 | AbstractMask abstractMask1 = wulinFactory.newMask(); 21 | abstractMask1.protectedMe(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/N95Mask.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 具体产品 5 | */ 6 | public class N95Mask extends AbstractMask{ 7 | public N95Mask(){ 8 | this.price = 2; 9 | } 10 | 11 | @Override 12 | public void protectedMe() { 13 | System.out.println("N95口罩....超级防护"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/RacingCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | public class RacingCar extends AbstractCar { 4 | 5 | public RacingCar(){ 6 | this.engine = "v8发动机"; 7 | } 8 | @Override 9 | public void run() { 10 | System.out.println(engine+"=--嗖....."); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/VanCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 具体产品 5 | */ 6 | public class VanCar extends AbstractCar { 7 | public VanCar(){ 8 | this.engine = "单杠柴油机"; 9 | } 10 | 11 | @Override 12 | public void run() { 13 | System.out.println(engine+"--》嗒嗒嗒...."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/WulinCarFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * wulin 汽车集团 5 | */ 6 | public abstract class WulinCarFactory extends WulinFactory{ 7 | @Override 8 | abstract AbstractCar newCar(); 9 | 10 | @Override 11 | AbstractMask newMask() { 12 | return null; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/WulinFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 总厂规范: 7 | * Wulin集团 8 | * 9 | * 使用接口; 10 | */ 11 | public abstract class WulinFactory { 12 | 13 | List rules; 14 | 15 | abstract AbstractCar newCar(); 16 | abstract AbstractMask newMask(); 17 | } 18 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/WulinHangZhouMaskFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 只造口罩 5 | */ 6 | public class WulinHangZhouMaskFactory extends WulinMaskFactory { 7 | 8 | @Override 9 | AbstractMask newMask() { 10 | return new CommonMask(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/WulinMaskFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * wulin口罩集团 5 | */ 6 | public abstract class WulinMaskFactory extends WulinFactory{ 7 | @Override 8 | AbstractCar newCar() { 9 | return null; 10 | } 11 | 12 | 13 | abstract AbstractMask newMask(); 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/WulinRacingCarFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 具体工厂。只造车 5 | */ 6 | public class WulinRacingCarFactory extends WulinCarFactory { 7 | @Override 8 | AbstractCar newCar() { 9 | return new RacingCar(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/WulinVanCarFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 分厂:VanCar 5 | */ 6 | public class WulinVanCarFactory extends WulinCarFactory{ 7 | @Override 8 | AbstractCar newCar() { 9 | return new VanCar(); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/abstractfactory/WulinWuHanMaskFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.abstractfactory; 2 | 3 | /** 4 | * 分厂:否则口罩 5 | */ 6 | public class WulinWuHanMaskFactory extends WulinMaskFactory{ 7 | 8 | @Override 9 | AbstractMask newMask() { 10 | return new N95Mask(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/AbstractCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | /** 4 | * 工厂的产品 5 | * 6 | * 怎么把一个功能提升一个层次:定义抽象(抽象类,接口) 7 | * 抽象类,接口 就会有多实现,多实现自然就有多功能 8 | */ 9 | public abstract class AbstractCar { 10 | 11 | String engine; 12 | public abstract void run(); 13 | } 14 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/AbstractCarFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | import com.todd.design.creatation.factory.simplefactory.AbstractCar; 4 | 5 | /** 6 | * 抽象工厂的层级 7 | */ 8 | public abstract class AbstractCarFactory { 9 | 10 | public abstract AbstractCar newCar(); 11 | //我能造口罩..... 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | AbstractCarFactory carFactory = new WulinRacingCarFactory(); 7 | AbstractCar abstractCar = carFactory.newCar(); 8 | abstractCar.run(); 9 | 10 | carFactory = new WulinVanCarFactory(); 11 | AbstractCar abstractCar1 = carFactory.newCar(); 12 | abstractCar1.run(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/MiniCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | public class MiniCar extends AbstractCar { 4 | 5 | public MiniCar(){ 6 | this.engine = "四缸水平对置发动机"; 7 | } 8 | 9 | @Override 10 | public void run() { 11 | System.out.println(engine+"--> 嘟嘟嘟..."); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/RacingCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | public class RacingCar extends AbstractCar{ 4 | 5 | public RacingCar(){ 6 | this.engine = "v8发动机"; 7 | } 8 | @Override 9 | public void run() { 10 | System.out.println(engine+"=--嗖....."); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/VanCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | /** 4 | * 具体产品 5 | */ 6 | public class VanCar extends AbstractCar { 7 | public VanCar(){ 8 | this.engine = "单杠柴油机"; 9 | } 10 | 11 | @Override 12 | public void run() { 13 | System.out.println(engine+"--》嗒嗒嗒...."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/WulinMinCarFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | import com.todd.design.creatation.factory.simplefactory.AbstractCar; 4 | import com.todd.design.creatation.factory.simplefactory.MiniCar; 5 | 6 | /** 7 | * minicar分厂 8 | */ 9 | public class WulinMinCarFactory extends AbstractCarFactory{ 10 | @Override 11 | public AbstractCar newCar() { 12 | return new MiniCar(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/WulinRacingCarFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | import com.todd.design.creatation.factory.abstractfactory.RacingCar; 4 | import com.todd.design.creatation.factory.simplefactory.AbstractCar; 5 | 6 | /** 7 | * RacingCar分厂 8 | */ 9 | public class WulinRacingCarFactory extends AbstractCarFactory{ 10 | @Override 11 | public AbstractCar newCar() { 12 | return new RacingCar(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/factorymethod/WulinVanCarFactory.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.factorymethod; 2 | 3 | import com.todd.design.creatation.factory.simplefactory.AbstractCar; 4 | import com.todd.design.creatation.factory.simplefactory.VanCar; 5 | 6 | public class WulinVanCarFactory extends AbstractCarFactory { 7 | @Override 8 | public AbstractCar newCar() { 9 | return new VanCar(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/simplefactory/AbstractCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.simplefactory; 2 | 3 | /** 4 | * 工厂的产品 5 | */ 6 | public abstract class AbstractCar { 7 | 8 | String engine; 9 | 10 | public abstract void run(); 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/simplefactory/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.simplefactory; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | WuLinSimpleFactory factory = new WuLinSimpleFactory(); 8 | 9 | AbstractCar van = factory.newCar("van"); 10 | AbstractCar mini = factory.newCar("mini"); 11 | AbstractCar zz = factory.newCar("zz"); 12 | van.run(); 13 | mini.run(); 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/simplefactory/MiniCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.simplefactory; 2 | 3 | public class MiniCar extends AbstractCar{ 4 | 5 | public MiniCar(){ 6 | this.engine = "四缸水平对置发动机"; 7 | } 8 | 9 | @Override 10 | public void run() { 11 | System.out.println(engine+"--> 嘟嘟嘟..."); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Code/design/creatation/factory/simplefactory/VanCar.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.factory.simplefactory; 2 | 3 | /** 4 | * 具体产品 5 | */ 6 | public class VanCar extends AbstractCar{ 7 | public VanCar(){ 8 | this.engine = "单杠柴油机"; 9 | } 10 | 11 | @Override 12 | public void run() { 13 | System.out.println(engine+"--》嗒嗒嗒...."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/creatation/singleton/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.creatation.singleton; 2 | 3 | import java.util.Map; 4 | import java.util.Properties; 5 | 6 | public class MainTest { 7 | 8 | public static void main(String[] args) { 9 | Person person1 = Person.boss(); 10 | 11 | Person person2 = Person.boss(); 12 | 13 | System.out.println(person1 == person2); 14 | 15 | Properties properties = System.getProperties(); 16 | System.out.println(properties); 17 | 18 | // 获取当前系统的环境变量 19 | Map getenv = System.getenv(); 20 | System.out.println(getenv); 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/JPMovieAdapter.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter; 2 | 3 | /** 4 | * 1、在原有系统上增加一个适配器。让适配器可以把电影的中文字幕翻译成友人理解的日文字幕 5 | * 6 | * 客户调用方法的时候用适配器操作即可。 7 | * 8 | * 类结构型模式: 9 | * 对象结构型模式: 10 | * 11 | */ 12 | public class JPMovieAdapter implements Player { 13 | 14 | public JPMovieAdapter(){ 15 | } 16 | 17 | @Override 18 | public String play() { 19 | return null; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter; 2 | 3 | /** 4 | * 5 | * 适配器 6 | * 1、系统原有两个已存在接口 player、translate没有任何关系 7 | * 8 | * 需求,现在一个小....日本友人。看电影字幕是中文的不习惯。 9 | * 10 | * 2、我们在不改变原有系统的基础上实现这个功能就需要一个适配器 11 | * 12 | * 系统原来存在的所有接口都不能动。扩展一个新的类,来连接两个之前不同的类 13 | * 14 | */ 15 | public class MainTest { 16 | 17 | public static void main(String[] args) { 18 | 19 | //1、友人想要看电影带日文字幕 20 | MoviePlayer moviePlayer = new MoviePlayer(); 21 | moviePlayer.play(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/MoviePlayer.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter; 2 | 3 | /** 4 | * 电影播放器 5 | * 阅读器 6 | * .... 7 | */ 8 | public class MoviePlayer implements Player { 9 | @Override 10 | public String play() { 11 | System.out.println("正在播放:宋老师的宝贵时间.avi"); 12 | String content = "你好"; 13 | System.out.println(content); //并且打印出字幕 14 | return content; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/Player.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter; 2 | 3 | /** 4 | * 1、系统原有接口 player:可以播放电影,并且返回字幕 5 | */ 6 | public interface Player { 7 | 8 | String play(); 9 | } 10 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/Translator.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter; 2 | 3 | /** 4 | * 2、系统原有接口,可以翻译文字内容 5 | */ 6 | public interface Translator { 7 | String translate(String content); 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/Zh_JPTranslator.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter; 2 | 3 | /** 4 | * ZH_JP翻译器 5 | * ZH_EN翻译器 6 | * ..... 7 | */ 8 | public class Zh_JPTranslator implements Translator{ 9 | @Override 10 | public String translate(String content) { 11 | if("你好".equals(content)){ 12 | return "空尼几哇"; 13 | } 14 | if ("什么".equals(content)){ 15 | return "纳尼"; 16 | } 17 | return "*******"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/clazz/JPMoviePlayerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter.clazz; 2 | 3 | import com.todd.design.structural.adapter.Player; 4 | import com.todd.design.structural.adapter.Zh_JPTranslator; 5 | 6 | /** 7 | * 继承的方式:类结构模型,适配转换到了翻译器的功能上 8 | */ 9 | public class JPMoviePlayerAdapter extends Zh_JPTranslator implements Player { 10 | 11 | private Player target;//被适配对象 12 | public JPMoviePlayerAdapter(Player target){ 13 | this.target = target; 14 | } 15 | 16 | @Override 17 | public String play() { 18 | 19 | String play = target.play(); 20 | //转换字幕 21 | String translate = translate(play); 22 | System.out.println("日文:"+translate); 23 | return translate; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/clazz/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter.clazz; 2 | 3 | import com.todd.design.structural.adapter.MoviePlayer; 4 | 5 | public class MainTest { 6 | 7 | public static void main(String[] args) { 8 | 9 | MoviePlayer player = new MoviePlayer(); 10 | // JPMoviePlayerAdapter adapter = new JPMoviePlayerAdapter(player); 11 | // adapter.play(); 12 | player.play(); 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Code/design/structural/adapter/obj/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.adapter.obj; 2 | 3 | import com.todd.design.structural.adapter.MoviePlayer; 4 | 5 | public class MainTest { 6 | public static void main(String[] args) { 7 | 8 | // MeiYanDecorator decorator = new MeiYanDecorator(manTikTok); 9 | JPMoviePlayerAdapter adapter = new JPMoviePlayerAdapter(new MoviePlayer()); 10 | 11 | adapter.play(); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/AbstractPhone.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | /** 4 | * 1、抽象手机类 5 | * 手机有各种销售渠道价格都不一样 6 | */ 7 | public abstract class AbstractPhone { 8 | 9 | //桥接在此.....设计期间就得想好 10 | //【真正会引起此类变化的一个维度直接抽取出来,通过组合的方式接起来】 11 | //桥接+适配器 ... 12 | AbstractSale sale; //分离渠道【桥接的关注点】 13 | // abstract int getPrice(); 如果这么写需要多少个实现。违反开闭原则 14 | 15 | 16 | /** 17 | * 当前手机的描述 18 | * @return 19 | */ 20 | abstract String getPhone(); 21 | 22 | public void setSale(AbstractSale sale) { 23 | this.sale = sale; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/AbstractSale.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | /** 4 | * 抽象销售渠道 5 | * PhoneOnSale ==howToSale 6 | * PhoneOffSale == howToSale 7 | * PhoneStudentSale = howToSale 8 | * PhonePDD == howToSale 9 | * 10 | * 11 | */ 12 | public abstract class AbstractSale { 13 | 14 | private String type; 15 | private Integer price; 16 | public AbstractSale(String type,Integer price){ 17 | this.type = type; 18 | this.price = price; 19 | } 20 | 21 | String getSaleInfo(){ 22 | return "渠道:"+type+"==>"+"价格:"+price; 23 | } 24 | 25 | void howToSale(){ 26 | //都不一样 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/IPhone.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | public class IPhone extends AbstractPhone{ 4 | 5 | @Override 6 | String getPhone() { 7 | return "IPhone:"+sale.getSaleInfo(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | /** 4 | * 省去了创建很多类 5 | */ 6 | public class MainTest { 7 | 8 | public static void main(String[] args) { 9 | 10 | IPhone iPhone = new IPhone(); 11 | iPhone.setSale(new StudentSale("学生",1)); 12 | 13 | 14 | String phone = iPhone.getPhone(); 15 | System.out.println(phone); 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/MiPhone.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | public class MiPhone extends AbstractPhone{ 4 | @Override 5 | String getPhone() { 6 | return "小米:"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/OfflineSale.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | /** 4 | * 线下渠道 5 | */ 6 | public class OfflineSale extends AbstractSale{ 7 | public OfflineSale(String type, Integer price) { 8 | super(type, price); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/OnlineSale.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | /** 4 | * 线上渠道 5 | */ 6 | public class OnlineSale extends AbstractSale{ 7 | public OnlineSale(String type, Integer price) { 8 | super(type, price); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Code/design/structural/bridge/StudentSale.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.bridge; 2 | 3 | public class StudentSale extends AbstractSale{ 4 | public StudentSale(String type, Integer price) { 5 | super(type, price); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Code/design/structural/composite/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.composite; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | Menu root = new Menu(1, "系统管理"); 7 | Menu 角色管理 = new Menu(2, "角色管理"); 8 | root.addChildMenu(角色管理); 9 | 角色管理.addChildMenu(new Menu(6,"固定角色")); 10 | 角色管理.addChildMenu(new Menu(7,"临时授予")); 11 | 12 | 13 | Menu 用户管理 = new Menu(3, "用户管理"); 14 | root.addChildMenu(用户管理); 15 | 16 | 17 | 用户管理.addChildMenu(new Menu(4,"临时用户")); 18 | 用户管理.addChildMenu(new Menu(5,"注册用户")); 19 | 20 | 21 | //按照不同层级展示 22 | root.printMenu(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Code/design/structural/decorator/LeiTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.decorator; 2 | 3 | public class LeiTikTok implements ManTikTok{ 4 | @Override 5 | public void tiktok() { 6 | System.out.println("雷丰阳,tiktok.... "); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/decorator/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.decorator; 2 | 3 | /** 4 | * 核心:想要不改变原来接口方法的情况下扩展新功能,或者增强方法..... 5 | */ 6 | public class MainTest { 7 | 8 | public static void main(String[] args) { 9 | //被装饰对象 10 | ManTikTok manTikTok = new LeiTikTok(); 11 | // manTikTok.tiktok(); 12 | 13 | /** 14 | * LiMingTiktokProxy proxy = new LiMingTiktokProxy(new LeiTikTok()); 15 | * proxy.tiktok(); 16 | */ 17 | 18 | MeiYanDecorator decorator = new MeiYanDecorator(manTikTok); 19 | decorator.tiktok(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/design/structural/decorator/ManTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.decorator; 2 | 3 | /** 4 | * 抽象构建 5 | */ 6 | public interface ManTikTok { 7 | void tiktok(); 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/decorator/TiktokDecorator.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.decorator; 2 | 3 | /** 4 | * 抽象装饰器 5 | * 抖音直播装饰器 6 | */ 7 | public interface TiktokDecorator extends ManTikTok { 8 | 9 | void enable(); 10 | } 11 | -------------------------------------------------------------------------------- /Code/design/structural/decorator/ZhangTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.decorator; 2 | 3 | public class ZhangTikTok implements ManTikTok{ 4 | @Override 5 | public void tiktok() { 6 | System.out.println("张三,tiktok.... "); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/facade/Edu.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.facade; 2 | 3 | public class Edu { 4 | 5 | public void assignSchool(String name){ 6 | System.out.println(name+",你的孩子明天去 硅谷大学附属幼儿园 报道......"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/facade/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.facade; 2 | 3 | 4 | /** 5 | * 需求:来回跑太麻烦,按照最少知道原则,我就想和一个部门进行交互。 6 | * 7 | * 8 | * 9 | */ 10 | public class MainTest { 11 | 12 | public static void main(String[] args) { 13 | 14 | // Police police = new Police(); 15 | // police.resgister("雷丰阳"); 16 | // 17 | // Edu edu = new Edu(); 18 | // edu.assignSchool("雷丰阳"); 19 | // 20 | // Social social = new Social(); 21 | // social.handleSocial("雷丰阳"); 22 | 23 | WeiXinFacade facade = new WeiXinFacade(); 24 | 25 | facade.handleXxx("雷丰阳"); 26 | // 27 | // facade.resgister(""); 28 | // facade.assignSchool(""); 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Code/design/structural/facade/Police.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.facade; 2 | 3 | public class Police { 4 | 5 | public void resgister(String name){ 6 | System.out.println(name + "已办理落户"); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/facade/Social.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.facade; 2 | 3 | public class Social { 4 | 5 | public void handleSocial(String name){ 6 | System.out.println(name+",你的社保关系已经转移...."); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/facade/WeiXinFacade.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.facade; 2 | 3 | public class WeiXinFacade { 4 | 5 | Police police = new Police(); 6 | Edu edu = new Edu(); 7 | Social social = new Social(); 8 | 9 | 10 | /** 11 | * 封装起来只留一个方法 12 | * @param name 13 | */ 14 | public void handleXxx(String name){ 15 | police.resgister(name); 16 | edu.assignSchool(name); 17 | social.handleSocial(name); 18 | } 19 | 20 | public void resgister(String name){ 21 | police.resgister(name); 22 | } 23 | public void assignSchool(String name){ 24 | edu.assignSchool(name); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Code/design/structural/flyweight/AbstractWaitressFlyweight.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.flyweight; 2 | 3 | /** 4 | * 可共享和不可共享状态 5 | */ 6 | public abstract class AbstractWaitressFlyweight { 7 | 8 | boolean canService = true;//能否服务 9 | 10 | //正在服务。 享元的不可共享属性留给外部进行改变的接口 11 | abstract void service(); 12 | //服务完成。 享元的不可共享属性留给外部进行改变的接口 13 | abstract void end(); 14 | 15 | public boolean isCanService() { 16 | return canService; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/design/structural/flyweight/BeautifulWaitress.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.flyweight; 2 | 3 | import lombok.AllArgsConstructor; 4 | 5 | /** 6 | * 具体享元类 7 | */ 8 | @AllArgsConstructor 9 | public class BeautifulWaitress extends AbstractWaitressFlyweight{ 10 | String id;//工号 11 | String name;//名字 12 | int age;//年龄 13 | //以上是不变的 14 | 15 | @Override 16 | void service() { 17 | System.out.println("工号:"+id+";"+name+" "+age+" 正在为您服务..."); 18 | //改变外部状态 19 | this.canService = false; 20 | } 21 | 22 | @Override 23 | void end() { 24 | System.out.println("工号:"+id+";"+name+" "+age+" 服务结束...请给五星好评"); 25 | 26 | this.canService = true; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Code/design/structural/flyweight/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.flyweight; 2 | 3 | public class MainTest { 4 | 5 | public static void main(String[] args) { 6 | 7 | //1、我 8 | AbstractWaitressFlyweight waitress = ZuDao.getWaitress(""); 9 | waitress.service(); 10 | System.out.println(waitress); 11 | //2、你 12 | AbstractWaitressFlyweight waitress1 = ZuDao.getWaitress(""); 13 | waitress1.service(); 14 | System.out.println(waitress1); 15 | 16 | waitress1.end(); 17 | //3、他 18 | AbstractWaitressFlyweight waitress2 = ZuDao.getWaitress(""); 19 | System.out.println(waitress2); 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy; 2 | 3 | 4 | import com.atguigu.design.structural.proxy.dynamic.LeiTikTok; 5 | import net.sf.cglib.proxy.Enhancer; 6 | 7 | /** 8 | * 代理模式进行tiktok; 9 | * 客户----联系----宋喆---代理---宝强 10 | * 大家----联系----硅谷萌萌----代理----我 11 | * 12 | * 13 | * 1)、静态代理 14 | */ 15 | public class MainTest { 16 | 17 | public static void main(String[] args) { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/cglib/CglibTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.cglib; 2 | 3 | /** 4 | * 5 | * cglib 6 | * cglib 7 | * 3.3.0 8 | * 9 | */ 10 | public class CglibTest { 11 | 12 | public static void main(String[] args) { 13 | 14 | //原来的对象都不用new 15 | LeiTikTok tikTok = new LeiTikTok(); 16 | 17 | LeiTikTok proxy = CglibProxy.createProxy(tikTok); 18 | 19 | proxy.tiktokHaha(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/cglib/LeiTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.cglib; 2 | 3 | /** 4 | * Subject 主体 5 | * 6 | * 7 | */ 8 | public class LeiTikTok { 9 | 10 | public void tiktokHaha() { 11 | System.out.println("雷丰阳,tiktok.... haha...."); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/dynamic/LeiTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.dynamic; 2 | 3 | public class LeiTikTok implements ManTikTok, SellTikTok { 4 | // @Override 5 | public void tiktok() { 6 | System.out.println("雷丰阳,tiktok.... "); 7 | } 8 | 9 | @Override 10 | public void sell() { 11 | System.out.println("雷丰阳,只要666,赶紧来包..."); 12 | } 13 | 14 | public void haha(){ 15 | System.out.println("hahaha ,......"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/dynamic/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.dynamic; 2 | 3 | /** 4 | * 动态代理模式: 5 | * JDK要求被代理对象必须有接口 6 | * implement ManTikTok 7 | * 代理对象和目标对象的相同点在于都是同一个接口 8 | */ 9 | public class MainTest { 10 | public static void main(String[] args) { 11 | ManTikTok leiTikTok = new LeiTikTok(); 12 | 13 | /** 14 | * 动态代理机制。 15 | */ 16 | ManTikTok proxy = JdkTiktokProxy.getProxy(leiTikTok); 17 | proxy.tiktok(); 18 | 19 | ((SellTikTok)proxy).sell(); 20 | 21 | // 能不能代理被代理对象本类自己的方法? proxy只能转成接口类 22 | // ((LeiTikTok)proxy).haha(); 23 | System.out.println(Arrays.asList(proxy.getClass().getInterfaces())); 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/dynamic/ManTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.dynamic; 2 | 3 | public interface ManTikTok { 4 | void tiktok(); 5 | } 6 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/dynamic/SellTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.dynamic; 2 | 3 | public interface SellTikTok { 4 | void sell(); 5 | } 6 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/statics/LeiTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.statics; 2 | 3 | /** 4 | * Subject 主体 5 | */ 6 | public class LeiTikTok implements ManTikTok { 7 | @Override 8 | public void tiktok() { 9 | System.out.println("雷丰阳,tiktok.... "); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/statics/LiMingTiktokProxy.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.statics; 2 | 3 | import com.todd.design.structural.decorator.ManTikTok; 4 | 5 | /** 6 | * 代理一般都是和被代理对象属于同一个接口 7 | */ 8 | public class LiMingTiktokProxy implements com.todd.design.structural.decorator.ManTikTok { 9 | 10 | private com.todd.design.structural.decorator.ManTikTok manTikTok; //被代理对象 11 | public LiMingTiktokProxy(ManTikTok manTikTok){ 12 | this.manTikTok = manTikTok; 13 | } 14 | 15 | 16 | /** 17 | * 宋喆(代理) 宝强(被代理对象) 18 | */ 19 | @Override 20 | public void tiktok() { 21 | //增强功能 22 | System.out.println("渲染直播间...."); 23 | System.out.println("课程只要666,仅此一天...."); 24 | manTikTok.tiktok(); 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/statics/MainTest.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.statics; 2 | 3 | /** 4 | * 代理的东西不一样,每一种不同的被代理类Person、Dog、Cat,创建不同的静态代理类 5 | * 6 | */ 7 | public class MainTest { 8 | 9 | public static void main(String[] args) { 10 | LiMingTiktokProxy proxy = new LiMingTiktokProxy(new LeiTikTok()); 11 | proxy.tiktok(); 12 | 13 | //静态代理就是装饰器 14 | //装饰器模式是代理模式的一种 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/statics/ManTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.statics; 2 | 3 | /** 4 | * 抽象主体。被代理角色能干什么 5 | */ 6 | public interface ManTikTok { 7 | void tiktok(); 8 | } 9 | -------------------------------------------------------------------------------- /Code/design/structural/proxy/statics/ZhangTikTok.java: -------------------------------------------------------------------------------- 1 | package com.todd.design.structural.proxy.statics; 2 | 3 | import com.todd.design.structural.decorator.ManTikTok; 4 | 5 | public class ZhangTikTok implements ManTikTok { 6 | @Override 7 | public void tiktok() { 8 | System.out.println("张三,tiktok.... "); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Code/exam/ByteDance07.java: -------------------------------------------------------------------------------- 1 | package com.todd.exam; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author todd 7 | * @date 2020/6/25 14:31 8 | * @description: 数列的和 9 | * 数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。 10 | * 简单题。 11 | */ 12 | public class ByteDance07 { 13 | 14 | public static void main(String args[]) { 15 | 16 | Scanner in = new Scanner(System.in); 17 | 18 | while (in.hasNext()) { 19 | 20 | double N = in.nextDouble(); 21 | int M = in.nextInt(); 22 | double result = 0; 23 | 24 | for (int i = 0; i < M; i++) { 25 | result += N; 26 | N = Math.sqrt(N); 27 | } 28 | 29 | System.out.printf("%.2f\n", result); 30 | } 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Code/exam/ByteDance13.java: -------------------------------------------------------------------------------- 1 | package com.todd.exam; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author todd 7 | * @date 2020/7/22 21:06 8 | * @description: 求1~n中,每个数的二进制中1的总个数 9 | * 把一个整数n减去1,再和原来的整数与运算,会把该整数的最右边的1变成0, 10 | * 补充:一个整数的二进制中有多少个1,就可以进行多少次这样的操作。循环结束的条件是n为0(判断二进制中1的个数) 11 | * 那么:利用 n&(n-1) 这个操作可以去掉末尾的1。利用递推f(n) = 1+f(n&(n-1))。这样就是利用空间来换时间,时间复杂度为O(n)。 12 | */ 13 | 14 | public class ByteDance13 { 15 | public static void main(String[] args) { 16 | Scanner sc = new Scanner(System.in); 17 | int n = sc.nextInt(); 18 | int f[] = new int[n + 1]; 19 | int ans = 0; 20 | for (int i = 1; i <= n; i++) { 21 | f[i] = 1 + f[i & (i - 1)]; 22 | ans += f[i]; 23 | } 24 | System.out.println(ans); 25 | } 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Code/exam/DiDi2.java: -------------------------------------------------------------------------------- 1 | package com.todd.exam; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author todd 7 | * @date 2020/7/28 15:02 8 | * @description: 末尾为0的个数 9 | * 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 10 | */ 11 | public class DiDi2 { 12 | public static void main(String[] args) { 13 | Scanner sc = new Scanner(System.in); 14 | int n = sc.nextInt(); 15 | System.out.println(findZeroNum(n)); 16 | } 17 | 18 | public static int findZeroNum(int n) { 19 | int temp = n; 20 | int count = 0; 21 | while (temp != 0) { 22 | count += temp / 5; 23 | temp /= 5; 24 | } 25 | return count; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/exam/HuaWei3.java: -------------------------------------------------------------------------------- 1 | package com.todd.exam; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author todd 7 | * @date 2020/7/22 18:27 8 | * @description: 自守数是指一个数的平方的尾数等于该数自身的自然数。 9 | */ 10 | public class HuaWei3 { 11 | public static void main(String[] args) { 12 | Scanner sc = new Scanner(System.in); 13 | while (sc.hasNext()) { 14 | int n = sc.nextInt(); 15 | System.out.println(calcAutomorphicNumbers(n)); 16 | } 17 | } 18 | 19 | public static int calcAutomorphicNumbers(int n){ 20 | int base = 10; 21 | int count = 0; 22 | for (int i = 0; i <= n; i++) { 23 | if (base == i) { 24 | base *= 10; 25 | } 26 | if ((i * i) % base == i) { 27 | count++; 28 | } 29 | } 30 | return count; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Code/exam/bilibili_9_4_01.java: -------------------------------------------------------------------------------- 1 | package com.todd.exam; 2 | 3 | import java.util.Scanner; 4 | 5 | 6 | /** 7 | * 一个只包含0和1的数组,反转k个0之后最长的连续1 8 | */ 9 | public class bilibili_9_4_01 { 10 | public int GetMaxConsecutiveOnes (int[] arr, int k) { 11 | int a = 0; 12 | int ans = 0; 13 | for (int right = 0, left = 0; right < arr.length; right++) { 14 | if (arr[right] == 0) { 15 | a++; 16 | } 17 | while (a > k) { 18 | if (arr[left++] == 0) { 19 | a--; 20 | } 21 | left++; 22 | } 23 | ans = Math.max(ans, right - left + 1); 24 | } 25 | return ans; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/exam/bilibili_9_4_03.java: -------------------------------------------------------------------------------- 1 | package com.todd.exam; 2 | 3 | /** 4 | * 平均碎片长度 (aaabbbaac) = length / 4 = 2 . 5 | */ 6 | 7 | public class bilibili_9_4_03 { 8 | public int GetFragment (String str) { 9 | if (str.length() == 0) { 10 | return 0; 11 | } 12 | int count = 1; 13 | int sum = str.length(); 14 | for (int i = 1; i < str.length(); i++) { 15 | if (str.charAt(i) != str.charAt(i - 1)) { 16 | count++; 17 | } 18 | } 19 | return sum / count; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/exam/readme.md: -------------------------------------------------------------------------------- 1 | 这部分题目不保证全部是对的,只是我当时做的时候的思路。题目可以网上搜索具体公司和具体日期。 -------------------------------------------------------------------------------- /Code/leetcode/hotandtop/LeetCode1143.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.hotandtop; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/27 11:41 6 | * @description: 1143. 最长公共子序列 7 | */ 8 | public class LeetCode1143 { 9 | public int longestCommonSubsequence(String text1, String text2) { 10 | int len1 = text1.length(); 11 | int len2 = text2.length(); 12 | int[][] dp = new int[len1 + 1][len2 + 1]; 13 | for (int i = 1; i <= len1; i++) { 14 | for (int j = 1; j <= len2; j++) { 15 | if (text1.charAt(i - 1) == text2.charAt(j - 1)) { 16 | dp[i][j] = dp[i - 1][j - 1] + 1; 17 | } else { 18 | dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); 19 | } 20 | } 21 | } 22 | return dp[len1][len2]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Code/leetcode/hotandtop/LeetCode132.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.hotandtop; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/24 9:19 6 | * @description: 132. 分割回文串 II 7 | * 区间DP 8 | */ 9 | public class LeetCode132 { 10 | public int minCut(String s) { 11 | int length = s.length(); 12 | boolean[][] range = new boolean[length][length]; 13 | int[] dp = new int[length]; 14 | 15 | for (int i = 0; i < length; i++) { 16 | dp[i] = i; 17 | for (int j = 0; j <= i; j++) { 18 | if (s.charAt(j) == s.charAt(i) && (i - j < 2 || range[j + 1][i - 1])) { 19 | range[j][i] = true; 20 | dp[i] = j == 0 ? 0 : Math.min(dp[i], dp[j - 1] + 1); 21 | } 22 | } 23 | } 24 | 25 | return dp[length - 1]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/leetcode/hotandtop/LeetCode26.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.hotandtop; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/7 11:56 6 | * @description: 26. 删除排序数组中的重复项 7 | */ 8 | public class LeetCode26 { 9 | public int removeDuplicates(int[] nums) { 10 | if (nums.length <= 1) { 11 | return nums.length; 12 | } 13 | int length = nums.length; 14 | int quick = 1; 15 | int slow = 0; 16 | while (quick < length) { 17 | if (nums[quick] != nums[slow]) { 18 | slow++; 19 | nums[slow] = nums[quick]; 20 | } 21 | quick++; 22 | } 23 | return ++slow; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/leetcode/hotandtop/LeetCode7.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.hotandtop; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/6 21:58 6 | * @description: 7. 整数反转 7 | */ 8 | public class LeetCode7 { 9 | public int reverse(int x) { 10 | int ans = 0; 11 | while (x != 0) { 12 | int re = x % 10; 13 | if (ans > Integer.MAX_VALUE / 10 || ans < Integer.MIN_VALUE / 10) { 14 | return 0; 15 | } 16 | x /= 10; 17 | ans = ans * 10 + x; 18 | } 19 | return ans; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/leetcode/hotandtop/LeetCode96.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.hotandtop; 2 | 3 | /** 4 | * @author tongchengdong 5 | * @description 96. 不同的二叉搜索树 (*) 6 | * 整体思路: 7 | * dp五部曲: 8 | * 1.状态定义:dp[i]为当有i个节点时,一共可以组成的二叉搜索树数目 9 | * 2.状态转移:dp[3]=dp[0]*dp[2]+dp[1]*dp[1]+dp[2]*dp[0] 10 | * 可以比喻成前面一项是左子树情况数,后面一项是右子树情况数,相加即可 11 | * 即:dp[i]=∑dp[j]*dp[i-1-j],其中j∈[0,i-1] 12 | * 3.初始化:dp[0]=1,dp[1]=dp[0]*dp[0]=1 13 | * 4.遍历顺序:正序 14 | * 5.返回形式:返回dp[n] 15 | * @date 1:57 PM 2022/5/22 16 | */ 17 | public class LeetCode96 { 18 | public int numTrees(int n) { 19 | int[] dp = new int[n + 1]; 20 | dp[0] = 1; 21 | for (int i = 1; i <= n; i++) { 22 | for (int j = 0; j <= i - 1; j++) { 23 | dp[i] += dp[j] * dp[i - 1 - j]; 24 | } 25 | } 26 | return dp[n]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0053.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/8 10:22 6 | * @description: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 7 | */ 8 | public class LeetCode0053 { 9 | public int maxSubArray(int[] nums) { 10 | if (nums == null) { 11 | return 0; 12 | } 13 | int max = nums[0]; 14 | int subMax = nums[0]; 15 | 16 | for (int i = 1; i < nums.length; i++) { 17 | //负增益 18 | if (subMax < 0) { 19 | subMax = nums[i]; 20 | } else { //正增益 21 | subMax += nums[i]; 22 | } 23 | max = Math.max(subMax, max); 24 | } 25 | return max; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0066.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/21 12:52 6 | * @description: 66. 加一 7 | * 简单题。 8 | */ 9 | public class LeetCode0066 { 10 | public int[] plusOne(int[] digits) { 11 | for (int i = digits.length - 1; i >= 0; i--) { 12 | digits[i]++; 13 | digits[i] %= 10; 14 | if (digits[i] != 0) { 15 | return digits; 16 | } 17 | } 18 | int[] nums = new int[digits.length + 1]; 19 | nums[0] = 1; 20 | return nums; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0083.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/7/3 9:09 6 | * @description: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 7 | * 简单题 8 | */ 9 | public class LeetCode0083 { 10 | public class ListNode { 11 | int val; 12 | ListNode next; 13 | ListNode(int x) { val = x; } 14 | } 15 | public ListNode deleteDuplicates(ListNode head) { 16 | if (head == null) { 17 | return head; 18 | } 19 | ListNode temp = head; 20 | while (temp.next != null) { 21 | if (temp.next.val == temp.val) { 22 | temp.next = temp.next.next; 23 | } else { 24 | temp = temp.next; 25 | } 26 | } 27 | return head; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0121.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/5/18 13:54 6 | * @description: 买卖股票的最佳时机 7 | * 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 8 | * 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 9 | * 记录当前最低值。 10 | */ 11 | public class LeetCode0121 { 12 | public int maxProfit(int[] prices) { 13 | int maxProfit = 0; 14 | int minPrice = Integer.MAX_VALUE; 15 | for(int i = 0; i < prices.length; i++){ 16 | if(minPrice > prices[i]){ 17 | minPrice = prices[i]; 18 | } 19 | if(prices[i] - minPrice > maxProfit){ 20 | maxProfit = prices[i] - minPrice; 21 | } 22 | } 23 | return maxProfit; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0126.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:算法应该具有线性时间复杂度。 不使用额外空间来实现吗. 5 | * 数组中的全部元素的异或运算结果即为数组中只出现一次的数字。 6 | * @Author todd 7 | * @Date 2020/5/14 8 | */ 9 | public class LeetCode0126 { 10 | public int singleNumber(int[] nums) { 11 | int ans = 0; 12 | for(int i = 0; i < nums.length; i++) { 13 | ans ^= nums[i]; 14 | } 15 | return ans; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0136.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/16 9:01 6 | * @description: TODO 7 | * 1. 第一反应是用hash表(),没有思考细节,只是觉得hash表肯定是可以搞定的,但是空间复杂度是 O(n) 8 | * 2. 按位操作符的字面意思很好理解,即对值的二进制格式进行处理的操作符。而异或的作用为:假设有值甲、乙,当甲乙值相等时,异或操作后结果为不等(False,0),反之,为相等(True,1)。所以按位异或操作符的释义便显而易见了:对某值的每个位上的值(0或1)进行异或操作。 9 | */ 10 | public class LeetCode0136 { 11 | public int singleNumber(int[] nums) { 12 | int ans = 0; 13 | for(int i = 0; i < nums.length; i++) { 14 | ans ^= nums[i]; 15 | } 16 | return ans; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0137.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/9 14:22 6 | * @description: 137. 只出现一次的数字 II 7 | */ 8 | public class LeetCode0137 { 9 | public int singleNumber(int[] nums) { 10 | int a = 0, b = 0; 11 | for (int num : nums) { 12 | a = (a ^ num) & ~b; 13 | b = (b ^ num) & ~a; 14 | } 15 | return a; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0162.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/7/22 16:21 6 | * @description: 寻找峰值 7 | * 二分查找 8 | */ 9 | public class LeetCode0162 { 10 | public int findPeakElement(int[] nums) { 11 | int left = 0, right = nums.length - 1; 12 | while (left <= right) { 13 | int mid = left + ((right - left) >> 1); 14 | if (mid > 0 && nums[mid] < nums[mid - 1]) { 15 | right = mid - 1; 16 | } else if (mid < nums.length - 1 && nums[mid] < nums[mid + 1]) { 17 | left = mid + 1; 18 | } else { 19 | return mid; 20 | } 21 | } 22 | return left; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0172.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/9 16:05 6 | * @description: 172. 阶乘后的零 7 | */ 8 | public class LeetCode0172 { 9 | public int trailingZeroes(int n) { 10 | int count = 0; 11 | while (n > 0) { 12 | count += n / 5; 13 | n /= 5; 14 | } 15 | return count; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0190.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/9 16:08 6 | * @description: 190. 颠倒二进制位 7 | */ 8 | public class LeetCode0190 { 9 | public int reverseBits(int n) { 10 | int ans = 0; 11 | int times = 32; 12 | while (times-- > 0) { 13 | ans <<= 1; 14 | ans += n & 1; 15 | n >>>= 1; 16 | } 17 | return ans; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0191.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/16 16:31 6 | * @description: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 7 | * 舍弃最低位,继续判断下一位(会有负数情况,因此应该使用无符号右移) 8 | */ 9 | public class LeetCode0191 { 10 | public int hammingWeight(int n) { 11 | int count = 0; 12 | while (n != 0) { 13 | if ((n & 1) == 1) { 14 | count++; 15 | } 16 | n >>>= 1; 17 | } 18 | return count; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0198.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/9 17:45 6 | * @description: 198. 打家劫舍 7 | */ 8 | public class LeetCode0198 { 9 | public int rob(int[] nums) { 10 | int n = nums.length; 11 | if (n == 0) { 12 | return 0; 13 | } 14 | if (n == 1) { 15 | return nums[0]; 16 | } 17 | int[] dp = new int[n + 1]; 18 | dp[1] = nums[0]; 19 | for (int i = 2; i <= n; i++) { 20 | dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]); 21 | } 22 | return dp[n]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0217.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | import java.util.HashSet; 4 | import java.util.Set; 5 | 6 | /** 7 | * @author todd 8 | * @date 2020/6/16 20:10 9 | * @description: 给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回true 。如果数组中每个元素都不相同,则返回 false。 10 | * easy 11 | */ 12 | public class LeetCode0217 { 13 | public boolean containsDuplicate(int[] nums) { 14 | Set set = new HashSet<>(nums.length); 15 | for (int x: nums) { 16 | if (set.contains(x)) { 17 | return true; 18 | } 19 | set.add(x); 20 | } 21 | return false; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0231.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/3 20:14 6 | * @description: 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 7 | * 1. 数学方法。 8 | * 2. 位运算,n & (n - 1) 9 | * * 恒有 n & (n - 1) == 0,这是因为 n−1 二进制最高位为 0,其余所有位为 1; 10 | * * 并且有 n > 0; 11 | */ 12 | public class LeetCode0231 { 13 | public boolean isPowerOfTwo(int n) { 14 | return n > 0 && (n & (n - 1)) == 0; 15 | } 16 | 17 | public boolean isPowerOfTwo2(int n) { 18 | if (n <= 0) { 19 | return false; 20 | } 21 | while (n % 2 == 0) { 22 | n /= 2; 23 | } 24 | return n == 1; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0242.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 5 | * 思路 : 可以只利用一个长度为 26 的字符数组,将出现在字符串 s 里的字符个数加 1,而出现在字符串 t 里的字符个数减 1,最后判断每个小写字母的个数是否都为 0。 6 | * @Author todd 7 | * @Date 2020/5/15 8 | */ 9 | public class LeetCode0242 { 10 | public boolean isAnagram(String s, String t) { 11 | int num[] = new int[26]; 12 | if(s.length() != t.length()){ 13 | return false; 14 | } 15 | for(int i = 0; i < s.length(); i++){ 16 | num[s.charAt(i) - 'a']++; 17 | num[t.charAt(i) - 'a']--; 18 | } 19 | for(int i = 0; i < 26; i++){ 20 | if(num[i] != 0){ 21 | return false; 22 | } 23 | } 24 | return true; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0300.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * 最长上升子序列 5 | * 6 | * @Author todd 7 | * @Date 2020/4/4 8 | */ 9 | public class LeetCode0300 { 10 | public int lengthOfLIS(int[] nums) { 11 | if (nums.length == 0) { 12 | return 0; 13 | } 14 | int result = 1; 15 | int[] dp = new int[nums.length]; 16 | dp[0] = 1; 17 | for (int i = 1; i < nums.length; i++) { 18 | dp[i] = 1; 19 | for (int j = i - 1; j >= 0; j--) { 20 | if (nums[j] < nums[i]) { 21 | dp[i] = Math.max(dp[j] + 1, dp[i]); 22 | } 23 | } 24 | result = Math.max(result, dp[i]); 25 | } 26 | return result; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0326.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/9 17:04 6 | * @description: 326. 3的幂 7 | */ 8 | public class LeetCode0326 { 9 | public boolean isPowerOfThree(int n) { 10 | if (n <= 0) { 11 | return false; 12 | } 13 | while (n % 3 == 0) { 14 | n /= 3; 15 | } 16 | return n == 1; 17 | } 18 | 19 | public boolean isPowerOfThree2(int n) { 20 | if(n <= 0){ 21 | return false; 22 | } 23 | double d = Math.log(n)/Math.log(3); 24 | long i = Math.round(d); 25 | return Math.abs(d - i) < 1e-10; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0674.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/27 16:53 6 | * @description: 给定一个未经排序的整数数组,找到最长且连续的的递增序列,并返回该序列的长度。 7 | * 简单题。 8 | */ 9 | public class LeetCode0674 { 10 | public int findLengthOfLCIS(int[] nums) { 11 | if (nums == null || nums.length == 0) { 12 | return 0; 13 | } 14 | int ans = 1; 15 | int count = 1; 16 | for (int i = 1; i < nums.length; i++) { 17 | if (nums[i] > nums[i - 1]) { 18 | count++; 19 | ans = Math.max(ans, count); 20 | } else { 21 | count = 1; 22 | } 23 | } 24 | return ans; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode0871.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/17 11:12 6 | * @description: 汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。 7 | * 假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。 8 | * 为了到达目的地,汽车所必要的最低加油次数是多少?如果无法到达目的地,则返回 -1。注意:如果汽车到达加油站时剩余燃料为 0,它仍然可以在那里加油。如果汽车到达目的地时剩余燃料为 0,仍然认为它已经到达目的地。 9 | * 10 | */ 11 | public class LeetCode0871 { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Code/leetcode/normal/LeetCode1299.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.normal; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/7/3 11:22 6 | * @description: 1299. 将每个元素替换为右侧最大元素 7 | * 给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。 8 | * 完成所有替换操作后,请你返回这个数组。 9 | */ 10 | public class LeetCode1299 { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer10_1.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。 5 | * @Author todd 6 | * @Date 2020/5/15 7 | */ 8 | public class Offer10_1 { 9 | public int fib(int n) { 10 | int curr = 0, next = 1, sum; 11 | for(int i = 0; i < n; i++){ 12 | sum = (curr + next) % 1000000007; 13 | curr = next; 14 | next = sum; 15 | } 16 | return curr; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer10_2.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 5 | * @Author todd 6 | * @Date 2020/5/15 7 | */ 8 | public class Offer10_2 { 9 | public int numWays(int n) { 10 | int a = 1, b = 1, sum; 11 | for(int i = 0; i < n; i++){ 12 | sum = (a + b) % 1000000007; 13 | a = b; 14 | b = sum; 15 | } 16 | return a; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer15.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 5 | * 6 | * @Author todd 7 | * @Date 2020/5/15 8 | */ 9 | public class Offer15 { 10 | // you need to treat n as an unsigned value 11 | public int hammingWeight(int n) { 12 | int count = 0; 13 | while(n != 0){ 14 | count += n & 1; 15 | n = n >> 1; 16 | } 17 | return count; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer16_5.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/6/17 11:40 6 | * @description: 设计一个算法,算出 n 阶乘有多少个尾随零。 7 | * 其实n!中的零全部是5和2的倍数贡献的,由于因子为2的个数大于5的,所以,只需计算其中有多少个5的倍数即可。 8 | * 有多少个尾随 0,其实也就是有多少个尾数为 5、尾数为 0 的数字,即可以整除 5,所以可以遍历一遍,每次遇到可以整除 5 的数字 +1,但是对于诸如 25,125等包含多个 5 的数字,就需要循环取出因子了。 9 | * 数从1 - n之间,有多少个数含有5为因子,并要把所有的5因子的个数加起来。 10 | */ 11 | public class Offer16_5 { 12 | public int trailingZeroes(int n) { 13 | int m5 = 0; 14 | while (n > 0) { 15 | n /= 5; 16 | m5 += n; 17 | } 18 | return m5; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer17.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。 5 | * 比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 6 | * 应该用大数模板 7 | * 8 | * @Author todd 9 | * @Date 2020/4/15 10 | */ 11 | public class Offer17 { 12 | public static int[] printNumbers(int n) { 13 | int max = (int) Math.pow(10, n); 14 | int[] ans = new int[max - 1]; 15 | for (int i = 1; i <= max - 1; i++) { 16 | ans[i - 1] = i; 17 | } 18 | return ans; 19 | } 20 | 21 | public static void main(String[] args) { 22 | System.out.println(printNumbers(2)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer3.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 5 | * 6 | * @Author todd 7 | * @Date 2020/5/15 8 | */ 9 | public class Offer3 { 10 | public int findRepeatNumber(int[] nums) { 11 | int n = nums.length; 12 | int[] stat = new int[n]; 13 | for(int i = 0; i < n; i++){ 14 | stat[nums[i]]++; 15 | if(stat[nums[i]] > 1){ 16 | return nums[i]; 17 | } 18 | } 19 | return -1; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer39.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | import java.util.Arrays; 4 | 5 | /** 6 | * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 7 | * @Author todd 8 | * @Date 2020/5/15 9 | */ 10 | public class Offer39 { 11 | public int majorityElement(int[] nums) { 12 | Arrays.sort(nums); 13 | return nums[nums.length / 2]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer4.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 5 | * 6 | * @Author todd 7 | * @Date 2020/5/15 8 | */ 9 | public class Offer4 { 10 | public boolean findNumberIn2DArray(int[][] matrix, int target) { 11 | int i = matrix.length - 1, j = 0; 12 | while(i >= 0 && j < matrix[0].length){ 13 | if(matrix[i][j] > target) { 14 | i--; 15 | } 16 | else if(matrix[i][j] < target) { 17 | j++; 18 | } 19 | else { 20 | return true; 21 | } 22 | } 23 | return false; 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer45.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | import java.util.Arrays; 4 | 5 | /** 6 | * 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 7 | * 自定义排序:如果m,n拼接。当mn < nm时, m排在n前面。 8 | * 9 | * @Author todd 10 | * @Date 2020/4/23 11 | */ 12 | public class Offer45 { 13 | public String minNumber(int[] nums) { 14 | String[] strs = new String[nums.length]; 15 | for (int i = 0; i < nums.length; i++) { 16 | strs[i] = String.valueOf(nums[i]); 17 | } 18 | Arrays.sort(strs, (x, y) -> (x + y).compareTo(y + x)); 19 | StringBuilder res = new StringBuilder(); 20 | for (String s : strs) { 21 | res.append(s); 22 | } 23 | return res.toString(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer48.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 5 | * 6 | * @Author todd 7 | * @Date 2020/5/12 8 | */ 9 | public class Offer48 { 10 | public int lengthOfLongestSubstring(String s) { 11 | int len = s.length(); 12 | if (len == 0) { 13 | return 0; 14 | } 15 | int[] dict = new int[256]; 16 | int index = 0; 17 | int key = 0; 18 | int ans = 0; 19 | while (index < len) { 20 | int a = s.charAt(index); 21 | if (dict[a] > 0) { 22 | key = Math.max(dict[a], key); 23 | } 24 | dict[a] = index + 1; 25 | ans = Math.max(ans, index + 1 - key); 26 | index++; 27 | } 28 | return ans; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer5.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 5 | * @Author todd 6 | * @Date 2020/5/15 7 | */ 8 | public class Offer5 { 9 | public String replaceSpace(String s) { 10 | StringBuilder res = new StringBuilder(); 11 | for(char a : s.toCharArray()){ 12 | if(a == ' '){ 13 | res.append("%20"); 14 | } else { 15 | res.append(a); 16 | } 17 | } 18 | return res.toString(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer58_2.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 5 | * 没啥好说的,一行代码的事。不过可以看下反编译后的代码:(new StringBuilder()).append(s.substring(i)).append(s.substring(0, i)).toString(); 6 | * 7 | * @Author todd 8 | * @Date 2020/5/14 9 | */ 10 | public class Offer58_2 { 11 | public String reverseLeftWords(String s, int n) { 12 | return s.substring(n) + s.substring(0, n); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer6.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | import java.util.LinkedList; 4 | 5 | /** 6 | * 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 7 | * 8 | * @Author todd 9 | * @Date 2020/5/15 10 | */ 11 | public class Offer6 { 12 | class ListNode { 13 | int val; 14 | ListNode next; 15 | ListNode(int x) { val = x; } 16 | } 17 | public int[] reversePrint(ListNode head) { 18 | LinkedList stack = new LinkedList(); 19 | while(head != null) { 20 | stack.addLast(head.val); 21 | head = head.next; 22 | } 23 | int[] res = new int[stack.size()]; 24 | for(int i = 0; i < res.length; i++) { 25 | res[i] = stack.removeLast(); 26 | } 27 | return res; 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer64.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 5 | * 6 | * @Author todd 7 | * @Date 2020/5/14 8 | */ 9 | public class Offer64 { 10 | public int sumNums(int n) { 11 | return (1 + n) * n / 2; 12 | } 13 | 14 | public int sumNums2(int n) { 15 | int res = 0; 16 | for (int i = 1; i <= n; i++) { 17 | res += i; 18 | } 19 | return res; 20 | } 21 | 22 | public int sumNums3(int n) { 23 | if (n == 1) { 24 | return 1; 25 | } 26 | n += sumNums3(n - 1); 27 | return n; 28 | } 29 | 30 | //短路效应实现 31 | public int sumNums4(int n) { 32 | boolean x = n > 1 && (n += sumNums(n - 1)) > 0; 33 | return n; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Code/leetcode/offer1/Offer65.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer1; 2 | 3 | /** 4 | * 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 5 | * 非进位和:异或运算 n = a ^ b 6 | * 进位:与运算 + 左移一位 c = (a & b) << 1 7 | * sum = a + b => n + c ,由于不能使用加法,因此再进行与操作,将进位加到前面的数中。循环 n 和 c 直到 c = 0, 返回sum 8 | * 9 | * @Author todd 10 | * @Date 2020/5/14 11 | */ 12 | public class Offer65 { 13 | public int add(int a, int b) { 14 | while (b != 0) { 15 | int c = (a & b) << 1; 16 | a ^= b; 17 | b = c; 18 | } 19 | return a; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Code/leetcode/offer2/Offer002.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer2; 2 | 3 | /** 4 | * @author tongchengdong 5 | * @description 剑指 Offer II 002. 二进制加法 6 | * 简单题:字符串数字相加减 7 | * @date 4:31 PM 2022/6/12 8 | */ 9 | public class Offer002 { 10 | 11 | public String addBinary(String a, String b) { 12 | if (a == null || b == null) { 13 | return a == null ? b : a; 14 | } 15 | StringBuilder sb = new StringBuilder(); 16 | int n = a.length() - 1, m = b.length() - 1, carry = 0; 17 | while (n >= 0 || m >= 0 || carry != 0) { 18 | int x = n >= 0 ? a.charAt(n--) - '0' : 0; 19 | int y = m >= 0 ? b.charAt(m--) - '0' : 0; 20 | carry = x + y + carry; 21 | sb.append(carry % 2); 22 | carry /= 2; 23 | } 24 | return sb.reverse().toString(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Code/leetcode/offer2/Offer003.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer2; 2 | 3 | /** 4 | * @author tongchengdong 5 | * @description 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 6 | * 整体思路: 7 | * 1. 奇数 dp[i] = dp[i - 1] + 1 8 | * 2. 偶数 dp[i] = dp[i / 2] 9 | * @date 4:38 PM 2022/6/12 10 | */ 11 | public class Offer003 { 12 | public int[] countBits(int n) { 13 | if (n < 0) { 14 | return new int[0]; 15 | } 16 | if (n == 0) { 17 | return new int[]{0}; 18 | } 19 | int[] dp = new int[n + 1]; 20 | dp[0] = 0; 21 | dp[1] = 1; 22 | for (int i = 2; i <= n; i++) { 23 | if ((i & 1) == 1) { 24 | dp[i] = dp[i - 1] + 1; 25 | } else { 26 | dp[i] = dp[i >> 1]; 27 | } 28 | } 29 | return dp; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Code/leetcode/offer2/Offer004.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer2; 2 | 3 | /** 4 | * @author tongchengdong 5 | * @description 剑指 Offer II 004. 只出现一次的数字 6 | * 整体思路: 7 | * 1. 将整数的各个数位上的加起来,然后对3取余,若结果为0,则待求数字在该位上是0。 8 | * 2. 若结果为1,则待求数字在该位上是1。 9 | * @date 9:09 AM 2022/6/13 10 | */ 11 | public class Offer004 { 12 | public int singleNumber(int[] nums) { 13 | int[] count = new int[32]; 14 | for (int num : nums) { 15 | for (int i = 0; i < 32; i++) { 16 | count[i] += num & 1; 17 | num >>>= 1; 18 | } 19 | } 20 | int ans = 0, m = 3; 21 | for (int i = 0; i < 32; i++) { 22 | ans <<= 1; 23 | ans |= count[31 - i] % m; 24 | } 25 | return ans; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/leetcode/offer2/Offer006.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer2; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * @author tongchengdong 8 | * @description 剑指 Offer II 006. 排序数组中两个数字之和 9 | * @date 10:21 PM 2022/6/13 10 | */ 11 | public class Offer006 { 12 | public int[] twoSum(int[] numbers, int target) { 13 | int n = numbers.length; 14 | int left = 0, right = n - 1; 15 | while (left < right) { 16 | int sum = numbers[left] + numbers[right]; 17 | if (sum == target) { 18 | return new int[]{left, right}; 19 | } else if (sum < target) { 20 | left++; 21 | } else { 22 | right--; 23 | } 24 | } 25 | return new int[0]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/leetcode/offer2/Offer032.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer2; 2 | 3 | /** 4 | * @author tongchengdong 5 | * @description 242. 有效的字母异位词 6 | * @date 12:40 AM 2022/6/17 7 | */ 8 | public class Offer032 { 9 | public boolean isAnagram(String s, String t) { 10 | if(s.length() != t.length() || s.equals(t)){ 11 | return false; 12 | } 13 | int num[] = new int[26]; 14 | for(int i = 0; i < s.length(); i++){ 15 | num[s.charAt(i) - 'a']++; 16 | num[t.charAt(i) - 'a']--; 17 | } 18 | for(int i = 0; i < 26; i++){ 19 | if(num[i] != 0){ 20 | return false; 21 | } 22 | } 23 | return true; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/leetcode/offer2/Offer042.java: -------------------------------------------------------------------------------- 1 | package com.todd.leetcode.offer2; 2 | 3 | import java.util.LinkedList; 4 | import java.util.Queue; 5 | 6 | /** 7 | * @author tongchengdong 8 | * @description 剑指 Offer II 042. 最近请求次数 9 | * @date 4:55 PM 2022/6/17 10 | */ 11 | public class Offer042 { 12 | class RecentCounter { 13 | 14 | Queue queue; 15 | 16 | public RecentCounter() { 17 | queue = new LinkedList<>(); 18 | } 19 | 20 | public int ping(int t) { 21 | while(!queue.isEmpty() && queue.peek() < t - 3000){ 22 | queue.poll(); 23 | } 24 | queue.offer(t); 25 | return queue.size(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Code/nowcoder/HJ1.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author tongchengdong 7 | * @description 字符串最后一个单词的长度 8 | * @date 10:15 AM 2022/7/2 9 | */ 10 | public class HJ1 { 11 | public static void main(String[] args){ 12 | Scanner sc = new Scanner(System.in); 13 | while (sc.hasNext()) { 14 | String str = sc.nextLine(); 15 | System.out.println(lengthOfLast(str)); 16 | } 17 | } 18 | 19 | public static int lengthOfLast(String str) { 20 | String[] s = str.split(" "); 21 | return s[s.length - 1].length(); 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Code/nowcoder/HJ14.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | /** 7 | * @author tongchengdong 8 | * @description HJ14 字符串排序 9 | * @date 9:48 PM 2022/7/2 10 | */ 11 | public class HJ14 { 12 | public static void main(String[] args) { 13 | Scanner sc = new Scanner(System.in); 14 | while (sc.hasNext()) { 15 | int n = sc.nextInt(); 16 | String[] arr = new String[n]; 17 | for (int i = 0; i < n; i++) { 18 | String str = sc.next(); 19 | arr[i] = str; 20 | } 21 | Arrays.sort(arr); 22 | for (int i = 0; i < arr.length; i++) { 23 | System.out.println(arr[i]); 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Code/nowcoder/HJ2.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author tongchengdong 7 | * @description 计算某字符出现次数 8 | * @date 5:19 PM 2022/7/2 9 | */ 10 | public class HJ2 { 11 | public static void main(String[] args) { 12 | Scanner sc = new Scanner(System.in); 13 | while (sc.hasNext()) { 14 | String str = sc.nextLine(); 15 | String s = sc.nextLine(); 16 | System.out.println(countCharacter(str.toUpperCase(), s.toUpperCase())); 17 | } 18 | } 19 | 20 | public static int countCharacter(String str, String s) { 21 | char a = s.charAt(0); 22 | int cnt = 0; 23 | for (int i = 0; i < str.length(); i++) { 24 | if (a == str.charAt(i)) { 25 | cnt++; 26 | } 27 | } 28 | return cnt; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Code/nowcoder/HJ7.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | import java.util.Scanner; 4 | 5 | /** 6 | * @author tongchengdong 7 | * @description HJ7 取近似值 8 | * 当float转换为int的时候会丢失小数点之后的数 9 | * @date 9:25 PM 2022/7/2 10 | */ 11 | public class HJ7 { 12 | public static void main(String[] args) { 13 | Scanner in = new Scanner(System.in); 14 | double number = in.nextDouble(); 15 | System.out.println((int) (number + 0.5)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Code/nowcoder/NC105.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/9/3 17:28 6 | * @description: 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。 7 | */ 8 | public class NC105 { 9 | public int upper_bound_ (int n, int v, int[] a) { 10 | if (n == 0) { 11 | return n + 1; 12 | } 13 | int left = 0; 14 | int right = n - 1; 15 | while (left <= right) { 16 | int mid = left + ((right - left) >> 1); 17 | if (a[mid] >= v) { 18 | right = mid - 1; 19 | } else { 20 | left = mid + 1; 21 | } 22 | } 23 | return left < n ? left + 1 : n + 1; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/nowcoder/NC4.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/9/5 11:52 6 | * @description: 判断给定的链表中是否有环 7 | */ 8 | public class NC4 { 9 | class ListNode { 10 | int val; 11 | ListNode next; 12 | 13 | ListNode(int x) { 14 | val = x; 15 | next = null; 16 | } 17 | } 18 | public boolean hasCycle(ListNode head) { 19 | if (head == null) { 20 | return false; 21 | } 22 | ListNode slow = head; 23 | ListNode quick = head; 24 | while (quick != null && quick.next != null) { 25 | quick = quick.next.next; 26 | slow = slow.next; 27 | if (quick == slow) { 28 | return true; 29 | } 30 | } 31 | return false; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Code/nowcoder/NC512.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/6 11:02 6 | * @description: TODO 7 | * 众所周知,牛妹非常喜欢吃蛋糕。 8 | * 第一天牛妹吃掉蛋糕总数三分之一(向下取整)多一个,第二天又将剩下的蛋糕吃掉三分之一(向下取整)多一个,以后每天吃掉前一天剩下的三分之一(向下取整)多一个, 9 | * 到第n天准备吃的时候只剩下一个蛋糕。牛妹想知道第一天开始吃的时候蛋糕一共有多少呢? 10 | */ 11 | public class NC512 { 12 | public static void main(String[] args) { 13 | System.out.println(cakeNumber(4)); 14 | } 15 | 16 | public static int cakeNumber (int n) { 17 | int ans = 1; 18 | while (n-- > 1) { 19 | ans = (ans * 3 + 3) / 2; 20 | } 21 | return ans; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Code/nowcoder/NC517.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/8/6 12:29 6 | * @description: TODO 7 | * 对于i位数的答案,是与i-1位和i-2位的答案有关系的 8 | * 假设a[i]表示i位数中满足条件的数,如果没有连续的6 9 | * (1)第i位是0,1,2,3,4,5,7,8,9,第i-1位随便 10 | * (2)第i位是6,第i-1位是0,1,2,3,4,5,7,8,9,第i-2位随便 11 | * a[i] += (a[i-1] + a[i-2]) * 9; 12 | */ 13 | public class NC517 { 14 | public String calculate(int n) { 15 | long dp[] = new long[n + 1]; 16 | dp[1] = 10; 17 | dp[2] = 99; 18 | for (int i = 3; i <= n; i++) { 19 | dp[i] = (dp[i - 1] + dp[i - 2]) * 9; 20 | } 21 | 22 | Long count = dp[n]; 23 | return count.toString(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Code/nowcoder/NC564.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/9/5 11:10 6 | * @description: 牛牛打怪兽 7 | * 简单贪心 8 | */ 9 | public class NC564 { 10 | public int slove (int n, int[] A) { 11 | if (n <= 2 || (n & 1) == 0) { 12 | return -1; 13 | } 14 | int ans = 0; 15 | for (int i = n / 2; i >= 1; i--) { 16 | int count = Math.max(A[i * 2 - 1], A[i * 2]); 17 | A[i - 1] = Math.max(0, A[i - 1] - count); 18 | ans += count; 19 | } 20 | ans += A[0]; 21 | return ans; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/nowcoder/NC7.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/9/9 19:51 6 | * @description: 买卖股票的最佳的时机 7 | */ 8 | public class NC7 { 9 | public int maxProfit (int[] prices) { 10 | if (prices == null || prices.length == 0) { 11 | return 0; 12 | } 13 | int curMinValue = prices[0]; 14 | int ans = 0; 15 | for (int i = 1; i < prices.length; i++) { 16 | if (curMinValue > prices[i]) { 17 | curMinValue = prices[i]; 18 | } 19 | ans = Math.max(ans, prices[i] - curMinValue); 20 | } 21 | return ans; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Code/nowcoder/NC78.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | import com.sun.deploy.util.LinkMouseListener; 4 | 5 | /** 6 | * @author todd 7 | * @date 2020/9/3 17:18 8 | * @description: 输入一个链表,反转链表后,输出新链表的表头。 9 | */ 10 | public class NC78 { 11 | 12 | public class ListNode { 13 | int val; 14 | ListNode next = null; 15 | 16 | ListNode(int val) { 17 | this.val = val; 18 | } 19 | } 20 | 21 | public ListNode ReverseList(ListNode head) { 22 | ListNode pre = null; 23 | ListNode curr = head; 24 | while (curr != null) { 25 | ListNode next = curr.next; 26 | curr.next = pre; 27 | pre = curr; 28 | curr = next; 29 | } 30 | return pre; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Code/nowcoder/NC9.java: -------------------------------------------------------------------------------- 1 | package com.todd.nowcoder; 2 | 3 | /** 4 | * @author todd 5 | * @date 2020/9/9 19:56 6 | * @description: 二叉树中是否存在和为指定sum的路径 7 | */ 8 | public class NC9 { 9 | public class TreeNode { 10 | int val = 0; 11 | TreeNode left = null; 12 | TreeNode right = null; 13 | } 14 | 15 | public boolean hasPathSum (TreeNode root, int sum) { 16 | if (root == null) { 17 | return false; 18 | } 19 | if (root.left == null && root.right == null) { 20 | int value = sum - root.val; 21 | return value == 0 ? true : false; 22 | } 23 | boolean left = hasPathSum(root.left, sum - root.val); 24 | boolean right = hasPathSum(root.right, sum - root.val); 25 | return left || right; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Design/design.assets/image-20220523202923682.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523202923682.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523203018462.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523203018462.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523203119954.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523203119954.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523203854286.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523203854286.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523204206720.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523204206720.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523205616323.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523205616323.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523211138267.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523211138267.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523212112714.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523212112714.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523214600537.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523214600537.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523214653111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523214653111.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523215427974.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523215427974.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523215732971.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523215732971.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523220956085.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523220956085.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523221749070.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523221749070.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220523234434576.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220523234434576.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524140511174.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524140511174.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524142236898.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524142236898.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524143956749.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524143956749.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524172236207.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524172236207.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524172432490.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524172432490.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524172834368.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524172834368.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524173120867.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524173120867.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524173246430.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524173246430.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524174341586.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524174341586.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524174527992.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524174527992.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524174807770.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524174807770.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524175026762.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524175026762.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524175406364.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524175406364.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524175541610.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524175541610.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524175928931.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524175928931.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524183359909.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524183359909.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524183453089.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524183453089.png -------------------------------------------------------------------------------- /Design/design.assets/image-20220524183555383.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Design/design.assets/image-20220524183555383.png -------------------------------------------------------------------------------- /Java/JVM/HotSpot垃圾收集器.resources/1238D175-FF81-4F5A-8899-CCA09DCCD5D9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/HotSpot垃圾收集器.resources/1238D175-FF81-4F5A-8899-CCA09DCCD5D9.png -------------------------------------------------------------------------------- /Java/JVM/HotSpot垃圾收集器.resources/9790224E-BF78-4E47-A73D-94EC5845A554.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/HotSpot垃圾收集器.resources/9790224E-BF78-4E47-A73D-94EC5845A554.png -------------------------------------------------------------------------------- /Java/JVM/HotSpot垃圾收集器.resources/B8252EDC-045D-4565-AAF7-64C729EDE03D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/HotSpot垃圾收集器.resources/B8252EDC-045D-4565-AAF7-64C729EDE03D.png -------------------------------------------------------------------------------- /Java/JVM/HotSpot虚拟机对象探秘.resources/0455EAC5-DBCC-4956-A843-DF363813D9E1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/HotSpot虚拟机对象探秘.resources/0455EAC5-DBCC-4956-A843-DF363813D9E1.png -------------------------------------------------------------------------------- /Java/JVM/HotSpot虚拟机对象探秘.resources/4CFF1522-9C12-4100-9F5F-6251AB79991F.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/HotSpot虚拟机对象探秘.resources/4CFF1522-9C12-4100-9F5F-6251AB79991F.jpg -------------------------------------------------------------------------------- /Java/JVM/HotSpot虚拟机对象探秘.resources/FE9CC6BA-3D79-4CBD-8392-ABDB40E678E4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/HotSpot虚拟机对象探秘.resources/FE9CC6BA-3D79-4CBD-8392-ABDB40E678E4.jpg -------------------------------------------------------------------------------- /Java/JVM/JVM内存结构.resources/355273B7-9D0C-4CA0-B422-4A869D35AA26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/JVM内存结构.resources/355273B7-9D0C-4CA0-B422-4A869D35AA26.jpg -------------------------------------------------------------------------------- /Java/JVM/JVM内存结构.resources/6F3902DB-275A-4FC6-8E3A-754DE6F987BA.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/JVM内存结构.resources/6F3902DB-275A-4FC6-8E3A-754DE6F987BA.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(一)java类的加载机制.resources/1C74363B-1F9D-4423-90A3-C7F6B37D9B4F.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(一)java类的加载机制.resources/1C74363B-1F9D-4423-90A3-C7F6B37D9B4F.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(一)java类的加载机制.resources/39F977A1-EAA5-4870-9752-0DAD0C9B2955.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(一)java类的加载机制.resources/39F977A1-EAA5-4870-9752-0DAD0C9B2955.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(一)java类的加载机制.resources/3BA48906-A776-490A-BFF4-3C9312C424BB.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(一)java类的加载机制.resources/3BA48906-A776-490A-BFF4-3C9312C424BB.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(一)java类的加载机制.resources/660D04B1-E9B5-4609-8CD6-6674BC130BA9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(一)java类的加载机制.resources/660D04B1-E9B5-4609-8CD6-6674BC130BA9.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(一)java类的加载机制.resources/B33959C2-DD9E-4FA5-8BDE-0CFC04DDDB11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(一)java类的加载机制.resources/B33959C2-DD9E-4FA5-8BDE-0CFC04DDDB11.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(一)java类的加载机制.resources/E740CFEC-7AB1-445E-BEEF-E892E4B19075.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(一)java类的加载机制.resources/E740CFEC-7AB1-445E-BEEF-E892E4B19075.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/02057726-396E-47F9-9339-2DEF5B338ED2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/02057726-396E-47F9-9339-2DEF5B338ED2.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/1082B388-1A45-4177-98E2-30394876769B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/1082B388-1A45-4177-98E2-30394876769B.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/4F09EDEB-C98A-43BB-BF13-BAE28C01B961.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/4F09EDEB-C98A-43BB-BF13-BAE28C01B961.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/64EEE171-56CA-4292-B8C8-74512B629639.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/64EEE171-56CA-4292-B8C8-74512B629639.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/7B29E97B-2070-485D-AACD-B47E5D8B6B65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/7B29E97B-2070-485D-AACD-B47E5D8B6B65.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/7F6F3B11-DDA0-4E80-8162-442B66A71632.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/7F6F3B11-DDA0-4E80-8162-442B66A71632.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/A426A5C0-99CE-47B1-933C-EE2E0F34D408.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/A426A5C0-99CE-47B1-933C-EE2E0F34D408.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/B6AC79A9-21A8-48B4-B29E-CF755E0970FC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/B6AC79A9-21A8-48B4-B29E-CF755E0970FC.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/BC391A2A-4905-4708-9052-2422C0E9D692.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/BC391A2A-4905-4708-9052-2422C0E9D692.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/C3FF8C8A-97F5-4DC1-8E90-54FFAACD3D25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/C3FF8C8A-97F5-4DC1-8E90-54FFAACD3D25.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/E8512714-576B-47AD-928D-72543F14014C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(三)GC算法 垃圾收集器.resources/E8512714-576B-47AD-928D-72543F14014C.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(二)JVM内存结构.resources/150E44D4-976A-4736-98B8-6E8681BA307B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(二)JVM内存结构.resources/150E44D4-976A-4736-98B8-6E8681BA307B.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(二)JVM内存结构.resources/476AD977-8808-4422-8349-06754DB023F5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(二)JVM内存结构.resources/476AD977-8808-4422-8349-06754DB023F5.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(二)JVM内存结构.resources/CD206F3C-4EF8-47AC-9DB5-8B67574E8ADB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(二)JVM内存结构.resources/CD206F3C-4EF8-47AC-9DB5-8B67574E8ADB.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(五)Java GC 分析.resources/1550316679385.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(五)Java GC 分析.resources/1550316679385.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(五)Java GC 分析.resources/1550316713780.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(五)Java GC 分析.resources/1550316713780.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(五)Java GC 分析.resources/175F8410-B0BD-4288-A2C2-5C35AF57F933.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(五)Java GC 分析.resources/175F8410-B0BD-4288-A2C2-5C35AF57F933.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(五)Java GC 分析.resources/253C4E10-C025-406F-BCEC-360BD0B901AC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(五)Java GC 分析.resources/253C4E10-C025-406F-BCEC-360BD0B901AC.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(五)Java GC 分析.resources/3BC499FA-2D44-4448-9720-AA4734BA2290.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(五)Java GC 分析.resources/3BC499FA-2D44-4448-9720-AA4734BA2290.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(五)Java GC 分析.resources/AE9DCFB3-730C-4431-964A-6C54DDE8DCC0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(五)Java GC 分析.resources/AE9DCFB3-730C-4431-964A-6C54DDE8DCC0.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(五)Java GC 分析.resources/E41583CF-6306-4B8F-95D7-396A3B91FBB1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(五)Java GC 分析.resources/E41583CF-6306-4B8F-95D7-396A3B91FBB1.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/3358A9D6-B4C7-4831-B26B-AD24973357EB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/3358A9D6-B4C7-4831-B26B-AD24973357EB.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/3605A5F2-6A46-41E2-9B26-60E8FDC0D331.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/3605A5F2-6A46-41E2-9B26-60E8FDC0D331.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/4607EEED-C31D-4732-A13E-1FFB1BA740DE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/4607EEED-C31D-4732-A13E-1FFB1BA740DE.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/62C34272-204D-411F-836F-A8FB3D6AF9D1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/62C34272-204D-411F-836F-A8FB3D6AF9D1.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/8DE752AB-6C96-4A58-8E01-8970BA3E2014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/8DE752AB-6C96-4A58-8E01-8970BA3E2014.png -------------------------------------------------------------------------------- /Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/B6A5EF35-72AF-46EF-8F2F-C96593E072D0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/B6A5EF35-72AF-46EF-8F2F-C96593E072D0.jpg -------------------------------------------------------------------------------- /Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/E7DB83E0-2344-4149-8603-C606D78AB943.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/jvm系列(四)jvm调优-命令大全(jps jstat jmap jhat jstack jinfo).resources/E7DB83E0-2344-4149-8603-C606D78AB943.png -------------------------------------------------------------------------------- /Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/175F8410-B0BD-4288-A2C2-5C35AF57F933.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/175F8410-B0BD-4288-A2C2-5C35AF57F933.jpg -------------------------------------------------------------------------------- /Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/253C4E10-C025-406F-BCEC-360BD0B901AC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/253C4E10-C025-406F-BCEC-360BD0B901AC.png -------------------------------------------------------------------------------- /Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/3BC499FA-2D44-4448-9720-AA4734BA2290.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/3BC499FA-2D44-4448-9720-AA4734BA2290.jpg -------------------------------------------------------------------------------- /Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/AE9DCFB3-730C-4431-964A-6C54DDE8DCC0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/AE9DCFB3-730C-4431-964A-6C54DDE8DCC0.jpg -------------------------------------------------------------------------------- /Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/E41583CF-6306-4B8F-95D7-396A3B91FBB1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/我的Markdown笔记/jvm系列(五)Java GC 分析.resources/E41583CF-6306-4B8F-95D7-396A3B91FBB1.png -------------------------------------------------------------------------------- /Java/JVM/类加载器.resources/03A2290D-59DF-4E6C-9849-6E91930777E4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/类加载器.resources/03A2290D-59DF-4E6C-9849-6E91930777E4.png -------------------------------------------------------------------------------- /Java/JVM/类加载的时机.resources/E809BD4A-272C-4092-8502-D79A423775CE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/JVM/类加载的时机.resources/E809BD4A-272C-4092-8502-D79A423775CE.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/02EABCC7-6ECD-456C-BC6B-53D4C5A09E60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/02EABCC7-6ECD-456C-BC6B-53D4C5A09E60.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/03F3F860-14A4-4D45-A998-313304B775E1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/03F3F860-14A4-4D45-A998-313304B775E1.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/1E718F2D-CAEB-4378-8FDB-780BE9803BF5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/1E718F2D-CAEB-4378-8FDB-780BE9803BF5.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/5DB418B1-5C83-4219-8C68-068B7406B93C.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/5DB418B1-5C83-4219-8C68-068B7406B93C.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/8FE33880-0D29-4175-ABE7-5C8FA0911306.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/8FE33880-0D29-4175-ABE7-5C8FA0911306.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/CDDCF910-B3A2-41C1-AB22-6EAFAAD9BE35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/CDDCF910-B3A2-41C1-AB22-6EAFAAD9BE35.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/F7810C5D-86FC-4B47-8A8B-1A9FE3B9B37A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Buffer(缓冲区).resources/F7810C5D-86FC-4B47-8A8B-1A9FE3B9B37A.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/0CC9E605-79FB-455E-AF3F-1CD41832B4A6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/0CC9E605-79FB-455E-AF3F-1CD41832B4A6.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/19060EA5-78B2-49F1-A706-0C99F3BC51A5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/19060EA5-78B2-49F1-A706-0C99F3BC51A5.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/2958433B-EEAF-4D8B-98A2-39941C7C1733.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/2958433B-EEAF-4D8B-98A2-39941C7C1733.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/3A2E73E4-2445-4B90-93F0-0EB34EB8C82B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/3A2E73E4-2445-4B90-93F0-0EB34EB8C82B.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/3D29AB86-2102-4EEB-8AB2-B2A7FF602EA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/3D29AB86-2102-4EEB-8AB2-B2A7FF602EA1.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/63E2E9AD-32F1-4E97-A91A-290039907C59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/63E2E9AD-32F1-4E97-A91A-290039907C59.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/6AF85EF7-83C7-48B6-A6AB-C70AD22A91D4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/6AF85EF7-83C7-48B6-A6AB-C70AD22A91D4.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/821A61BD-80DF-493F-99D8-4F5330211339.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/821A61BD-80DF-493F-99D8-4F5330211339.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/D2633F82-0A59-488A-AEC6-AB443A3125F4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/D2633F82-0A59-488A-AEC6-AB443A3125F4.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Channel(通道).resources/ED8C6DA7-8886-4CFF-8F51-9130FA36521F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Channel(通道).resources/ED8C6DA7-8886-4CFF-8F51-9130FA36521F.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/03577455-F007-435C-9963-3F48AC3B8B20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/03577455-F007-435C-9963-3F48AC3B8B20.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/0F1FE283-EF91-4F85-8C8F-E29A4902A0FD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/0F1FE283-EF91-4F85-8C8F-E29A4902A0FD.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/3B614359-3026-4B01-938C-605FA70D1FCD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/3B614359-3026-4B01-938C-605FA70D1FCD.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/5F7B616E-17D7-4657-A32D-384DCBC27AFB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/5F7B616E-17D7-4657-A32D-384DCBC27AFB.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/9510D281-0CDB-420A-95CB-BF49754414B8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/9510D281-0CDB-420A-95CB-BF49754414B8.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/B276F723-3C8E-419C-940F-E49E90B22350.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/B276F723-3C8E-419C-940F-E49E90B22350.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/C32A7750-CD6E-469A-8E9E-BEC983989522.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/C32A7750-CD6E-469A-8E9E-BEC983989522.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之Selector(选择器).resources/DA792031-0971-4437-B2E4-A1B535937E29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之Selector(选择器).resources/DA792031-0971-4437-B2E4-A1B535937E29.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之拥抱Path和Files.resources/1E6CACD6-76A0-4D6C-8E05-C1D9353E293A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之拥抱Path和Files.resources/1E6CACD6-76A0-4D6C-8E05-C1D9353E293A.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/Java NIO之拥抱Path和Files.resources/B8DB4818-0624-4545-AEE7-97384BF15170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/Java NIO之拥抱Path和Files.resources/B8DB4818-0624-4545-AEE7-97384BF15170.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/NIO概览.resources/1EA58812-D4D0-40FA-9860-6F6C6E103FFA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/NIO概览.resources/1EA58812-D4D0-40FA-9860-6F6C6E103FFA.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/NIO概览.resources/8F7AD527-634A-4D4E-B31B-6E1FB35BB4EC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/NIO概览.resources/8F7AD527-634A-4D4E-B31B-6E1FB35BB4EC.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/NIO概览.resources/CA9A534F-8DEF-448B-A946-3ADE41538F9D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/NIO概览.resources/CA9A534F-8DEF-448B-A946-3ADE41538F9D.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/NIO概览.resources/D96C7B52-7E5A-44FA-9EB3-6D146ADE7EEF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/NIO概览.resources/D96C7B52-7E5A-44FA-9EB3-6D146ADE7EEF.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/NIO概览.resources/E97A1DBA-0CC4-4679-A081-B164B1645040.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/NIO概览.resources/E97A1DBA-0CC4-4679-A081-B164B1645040.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/1120165-20180329133938645-733252704.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/1120165-20180329133938645-733252704.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/1120165-20180402091402743-458763981.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/1120165-20180402091402743-458763981.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/435C0F08-CE65-413F-8D3A-EE5B20EDCA0D.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/435C0F08-CE65-413F-8D3A-EE5B20EDCA0D.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/6EBF1755-C6EA-48A3-A99F-55D598EDDFD2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/6EBF1755-C6EA-48A3-A99F-55D598EDDFD2.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/97F816CA-9593-4F26-A189-38BEEF2FEE24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/97F816CA-9593-4F26-A189-38BEEF2FEE24.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/D02AB301-FD17-40DF-9B99-7B6C6911D4F9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashMap).resources/D02AB301-FD17-40DF-9B99-7B6C6911D4F9.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/131AFB63-19EF-4579-80D6-AE0B50A99ACD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/131AFB63-19EF-4579-80D6-AE0B50A99ACD.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/8C932B6E-3C26-40E7-B797-EAAE2194E5BF.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/8C932B6E-3C26-40E7-B797-EAAE2194E5BF.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/C3AEAFA8-AB27-4F2D-978B-E8E8DA243C03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/C3AEAFA8-AB27-4F2D-978B-E8E8DA243C03.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/D377B6CA-0121-4D65-AC65-781043A01914.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/D377B6CA-0121-4D65-AC65-781043A01914.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/F4569D6C-6A1E-4202-B33F-97B8C85A7844.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(HashSet).resources/F4569D6C-6A1E-4202-B33F-97B8C85A7844.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(LinkedHashMap).resources/2BC36CA6-D029-4249-A984-86F29FE10381.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(LinkedHashMap).resources/2BC36CA6-D029-4249-A984-86F29FE10381.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(LinkedHashMap).resources/84850E2A-8616-4544-A49F-E2737F4AAC8B.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(LinkedHashMap).resources/84850E2A-8616-4544-A49F-E2737F4AAC8B.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(LinkedHashMap).resources/A9332FA3-2758-40CD-95DC-2A2BAC724F73.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(LinkedHashMap).resources/A9332FA3-2758-40CD-95DC-2A2BAC724F73.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/07D5A65F-74BE-4357-8309-B0D71C4D45B4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/07D5A65F-74BE-4357-8309-B0D71C4D45B4.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/5204251D-6E5A-4ADC-A7E8-AE9AB28FF106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/5204251D-6E5A-4ADC-A7E8-AE9AB28FF106.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/57E615FE-9961-40F9-832C-FE2313570D85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/57E615FE-9961-40F9-832C-FE2313570D85.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/6C874101-939A-42B6-A2F8-4A502472DC6D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/6C874101-939A-42B6-A2F8-4A502472DC6D.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/7C2E9ADB-30DA-471E-B7FA-5A98C70A2B76.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/7C2E9ADB-30DA-471E-B7FA-5A98C70A2B76.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/8B18DFF9-3B9A-4EC6-A48C-15E8798C2E94.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/8B18DFF9-3B9A-4EC6-A48C-15E8798C2E94.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/98B9B038-BC51-4E1B-822B-2208D9B5A5B8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/98B9B038-BC51-4E1B-822B-2208D9B5A5B8.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/AA641D63-9E8D-4191-ABC1-C2284887148F.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/AA641D63-9E8D-4191-ABC1-C2284887148F.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/B079BB99-25B3-4365-8938-A75246E6237E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/B079BB99-25B3-4365-8938-A75246E6237E.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/BF888DA2-72B3-4C44-9457-87DC233E6755.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/BF888DA2-72B3-4C44-9457-87DC233E6755.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/E12E020E-38EF-440E-B5F7-CFFFBC4DF755.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/E12E020E-38EF-440E-B5F7-CFFFBC4DF755.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/FFB5E732-82A0-4DDA-976D-E774B51C644B.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(Synchronized关键字).resources/FFB5E732-82A0-4DDA-976D-E774B51C644B.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/14BF4468-D1E0-4FBF-B503-A888E309418D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/14BF4468-D1E0-4FBF-B503-A888E309418D.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/1DEE7801-BD26-447A-9CA7-DB6AFC4D7CF2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/1DEE7801-BD26-447A-9CA7-DB6AFC4D7CF2.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/40AAD840-5E57-40AF-A180-221E6527157E.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/40AAD840-5E57-40AF-A180-221E6527157E.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/636D11F3-9900-4C0A-A3E1-B093B27D4DEA.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/636D11F3-9900-4C0A-A3E1-B093B27D4DEA.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/C287D09B-1993-47C8-953B-462E4C9C59F3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/C287D09B-1993-47C8-953B-462E4C9C59F3.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/C768ADD5-700B-49ED-ADCB-FA330CF12705.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/C768ADD5-700B-49ED-ADCB-FA330CF12705.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/E8CE8791-C513-4D02-88A5-3875DF090F87.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/E8CE8791-C513-4D02-88A5-3875DF090F87.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/F057BDB7-BFF6-4637-B335-B67B38AC90BE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/F057BDB7-BFF6-4637-B335-B67B38AC90BE.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/FD595297-CC2C-4F20-A252-6E3850909FF7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(volatile关键字).resources/FD595297-CC2C-4F20-A252-6E3850909FF7.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/01FB158E-3FF2-4E92-ADF6-4AD13AABE511.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/01FB158E-3FF2-4E92-ADF6-4AD13AABE511.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/0577FA66-6A97-4EE9-983B-1662AF6BC747.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/0577FA66-6A97-4EE9-983B-1662AF6BC747.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/6AC11272-0DE3-44D7-9533-2647D0A652BF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/6AC11272-0DE3-44D7-9533-2647D0A652BF.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/91AFAC8A-2F11-43AA-96E2-285619A00844.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/91AFAC8A-2F11-43AA-96E2-285619A00844.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/B7D16AB0-886E-4151-9B6B-3E11384C6A2F.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/B7D16AB0-886E-4151-9B6B-3E11384C6A2F.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/C4514189-AD37-430C-8B53-666975270CA8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/C4514189-AD37-430C-8B53-666975270CA8.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/DDC3432B-96E1-41BD-9A3F-3766F3EBDB30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/DDC3432B-96E1-41BD-9A3F-3766F3EBDB30.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/E90159EC-A96C-413D-9684-2618601164E5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/E90159EC-A96C-413D-9684-2618601164E5.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/F18CB21B-41D4-4D8D-890D-4B632F69F96A.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/F18CB21B-41D4-4D8D-890D-4B632F69F96A.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/F44B75F4-A8BE-47F6-909B-E5BFA54A3EBA.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/F44B75F4-A8BE-47F6-909B-E5BFA54A3EBA.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/F78F854D-1CA0-4FD2-8C01-83F52C806DC2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(多线程).resources/F78F854D-1CA0-4FD2-8C01-83F52C806DC2.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/09CC2CAB-7F91-4FC4-A508-42075D27EBA4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/09CC2CAB-7F91-4FC4-A508-42075D27EBA4.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/28D7444D-5F3C-4AB3-94F4-6C46D14A19BC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/28D7444D-5F3C-4AB3-94F4-6C46D14A19BC.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/46AF9BE6-A1C5-418C-9836-CDE377311CC0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/46AF9BE6-A1C5-418C-9836-CDE377311CC0.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/70B2C414-19D7-4979-8C2E-20804851B09A.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/70B2C414-19D7-4979-8C2E-20804851B09A.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/866D55D7-CBAF-4269-BBC3-C89F2CA5CA5D.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/866D55D7-CBAF-4269-BBC3-C89F2CA5CA5D.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/9542056A-5ABA-4CB7-A2CC-3F73CF4B2F1F.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/9542056A-5ABA-4CB7-A2CC-3F73CF4B2F1F.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/C145FDBC-8373-451F-B570-FC4C87CE21F2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/C145FDBC-8373-451F-B570-FC4C87CE21F2.jpg -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/CC980B46-5CF3-49EA-A101-2E3E037FB6C0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强(锁).resources/CC980B46-5CF3-49EA-A101-2E3E037FB6C0.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强-NIO.md: -------------------------------------------------------------------------------- 1 | ### **Java高级特性增强-NIO** 2 | 本部分网络上有大量的资源可以参考,在这里做了部分整理并做了大量勘误,感谢前辈的付出,每节文章末尾有引用列表~ 3 | 4 | 5 | #### **多线程** 6 | 7 | 8 | ### **集合框架** 9 | 10 | 11 | ### **NIO** 12 | 13 | 14 | 15 | ### **Java并发容器** 16 | 17 | 18 | ## NIO大纲 19 | 20 | 21 | NIO概览 22 | 23 | 24 | Java NIO之Buffer(缓冲区) 25 | 26 | 27 | Java NIO之Channel(通道) 28 | 29 | 30 | Java NIO之Selector(选择器) 31 | 32 | 33 | Java NIO之拥抱Path和Files 34 | -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强.resources/1120165-20180329133938645-733252704.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强.resources/1120165-20180329133938645-733252704.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强.resources/1120165-20180402091402743-458763981.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强.resources/1120165-20180402091402743-458763981.png -------------------------------------------------------------------------------- /Java/Java高级特性增强/大数据成神之路-Java高级特性增强.resources/C5433386-A4DA-4D2E-A038-D92A79874B4E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/Java高级特性增强/大数据成神之路-Java高级特性增强.resources/C5433386-A4DA-4D2E-A038-D92A79874B4E.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Buffer(缓冲区).resources/02EABCC7-6ECD-456C-BC6B-53D4C5A09E60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Buffer(缓冲区).resources/02EABCC7-6ECD-456C-BC6B-53D4C5A09E60.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Buffer(缓冲区).resources/03F3F860-14A4-4D45-A998-313304B775E1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Buffer(缓冲区).resources/03F3F860-14A4-4D45-A998-313304B775E1.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Buffer(缓冲区).resources/1E718F2D-CAEB-4378-8FDB-780BE9803BF5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Buffer(缓冲区).resources/1E718F2D-CAEB-4378-8FDB-780BE9803BF5.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Buffer(缓冲区).resources/5DB418B1-5C83-4219-8C68-068B7406B93C.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Buffer(缓冲区).resources/5DB418B1-5C83-4219-8C68-068B7406B93C.jpg -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Buffer(缓冲区).resources/8FE33880-0D29-4175-ABE7-5C8FA0911306.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Buffer(缓冲区).resources/8FE33880-0D29-4175-ABE7-5C8FA0911306.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Buffer(缓冲区).resources/CDDCF910-B3A2-41C1-AB22-6EAFAAD9BE35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Buffer(缓冲区).resources/CDDCF910-B3A2-41C1-AB22-6EAFAAD9BE35.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Buffer(缓冲区).resources/F7810C5D-86FC-4B47-8A8B-1A9FE3B9B37A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Buffer(缓冲区).resources/F7810C5D-86FC-4B47-8A8B-1A9FE3B9B37A.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/0CC9E605-79FB-455E-AF3F-1CD41832B4A6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/0CC9E605-79FB-455E-AF3F-1CD41832B4A6.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/19060EA5-78B2-49F1-A706-0C99F3BC51A5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/19060EA5-78B2-49F1-A706-0C99F3BC51A5.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/2958433B-EEAF-4D8B-98A2-39941C7C1733.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/2958433B-EEAF-4D8B-98A2-39941C7C1733.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/3A2E73E4-2445-4B90-93F0-0EB34EB8C82B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/3A2E73E4-2445-4B90-93F0-0EB34EB8C82B.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/3D29AB86-2102-4EEB-8AB2-B2A7FF602EA1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/3D29AB86-2102-4EEB-8AB2-B2A7FF602EA1.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/63E2E9AD-32F1-4E97-A91A-290039907C59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/63E2E9AD-32F1-4E97-A91A-290039907C59.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/6AF85EF7-83C7-48B6-A6AB-C70AD22A91D4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/6AF85EF7-83C7-48B6-A6AB-C70AD22A91D4.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/821A61BD-80DF-493F-99D8-4F5330211339.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/821A61BD-80DF-493F-99D8-4F5330211339.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/D2633F82-0A59-488A-AEC6-AB443A3125F4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/D2633F82-0A59-488A-AEC6-AB443A3125F4.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Channel(通道).resources/ED8C6DA7-8886-4CFF-8F51-9130FA36521F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Channel(通道).resources/ED8C6DA7-8886-4CFF-8F51-9130FA36521F.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/03577455-F007-435C-9963-3F48AC3B8B20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/03577455-F007-435C-9963-3F48AC3B8B20.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/0F1FE283-EF91-4F85-8C8F-E29A4902A0FD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/0F1FE283-EF91-4F85-8C8F-E29A4902A0FD.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/3B614359-3026-4B01-938C-605FA70D1FCD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/3B614359-3026-4B01-938C-605FA70D1FCD.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/5F7B616E-17D7-4657-A32D-384DCBC27AFB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/5F7B616E-17D7-4657-A32D-384DCBC27AFB.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/9510D281-0CDB-420A-95CB-BF49754414B8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/9510D281-0CDB-420A-95CB-BF49754414B8.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/B276F723-3C8E-419C-940F-E49E90B22350.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/B276F723-3C8E-419C-940F-E49E90B22350.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/C32A7750-CD6E-469A-8E9E-BEC983989522.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/C32A7750-CD6E-469A-8E9E-BEC983989522.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之Selector(选择器).resources/DA792031-0971-4437-B2E4-A1B535937E29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之Selector(选择器).resources/DA792031-0971-4437-B2E4-A1B535937E29.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之拥抱Path和Files.resources/1E6CACD6-76A0-4D6C-8E05-C1D9353E293A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之拥抱Path和Files.resources/1E6CACD6-76A0-4D6C-8E05-C1D9353E293A.png -------------------------------------------------------------------------------- /Java/NIO/Java NIO之拥抱Path和Files.resources/B8DB4818-0624-4545-AEE7-97384BF15170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/Java NIO之拥抱Path和Files.resources/B8DB4818-0624-4545-AEE7-97384BF15170.png -------------------------------------------------------------------------------- /Java/NIO/NIO概览.resources/1EA58812-D4D0-40FA-9860-6F6C6E103FFA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/NIO概览.resources/1EA58812-D4D0-40FA-9860-6F6C6E103FFA.png -------------------------------------------------------------------------------- /Java/NIO/NIO概览.resources/8F7AD527-634A-4D4E-B31B-6E1FB35BB4EC.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/NIO概览.resources/8F7AD527-634A-4D4E-B31B-6E1FB35BB4EC.jpg -------------------------------------------------------------------------------- /Java/NIO/NIO概览.resources/CA9A534F-8DEF-448B-A946-3ADE41538F9D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/NIO概览.resources/CA9A534F-8DEF-448B-A946-3ADE41538F9D.png -------------------------------------------------------------------------------- /Java/NIO/NIO概览.resources/D96C7B52-7E5A-44FA-9EB3-6D146ADE7EEF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/NIO概览.resources/D96C7B52-7E5A-44FA-9EB3-6D146ADE7EEF.png -------------------------------------------------------------------------------- /Java/NIO/NIO概览.resources/E97A1DBA-0CC4-4679-A081-B164B1645040.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/NIO/NIO概览.resources/E97A1DBA-0CC4-4679-A081-B164B1645040.jpg -------------------------------------------------------------------------------- /Java/pictures.resources/B+Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/B+Tree.png -------------------------------------------------------------------------------- /Java/pictures.resources/B-star-Tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/B-star-Tree.png -------------------------------------------------------------------------------- /Java/pictures.resources/B-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/B-tree.png -------------------------------------------------------------------------------- /Java/pictures.resources/图解线程池实现原理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/图解线程池实现原理.png -------------------------------------------------------------------------------- /Java/pictures.resources/红黑树case1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/红黑树case1.png -------------------------------------------------------------------------------- /Java/pictures.resources/红黑树case2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/红黑树case2.png -------------------------------------------------------------------------------- /Java/pictures.resources/红黑树case3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/红黑树case3.png -------------------------------------------------------------------------------- /Java/pictures.resources/跳跃表存储结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Java/pictures.resources/跳跃表存储结构.png -------------------------------------------------------------------------------- /JavaInterviewSummary.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Others/编程环境和软件工具安装手册.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Flamewaker/JavaPersonalSummary/8e93eb2b009527c7e898dad9df0aeed8ac9c20d1/Others/编程环境和软件工具安装手册.pdf -------------------------------------------------------------------------------- /Others/面试结尾.md: -------------------------------------------------------------------------------- 1 | ## 你有什么问题问我? 2 | 3 | 在面试结束的时候,一般面试官都会问:你有什么问题问我。 4 | 5 | 这个时候我个人最经常问的就是:**这个部门正在做什么,如果我进来我会接触到什么。**面试官才是最了解这个部门的人,只有从他的口里得到的信息才是最真实也是最有用的,通过他的回答你会了解到这个部门做的产品或者是使用的技术,对于自己的学习方向也有很大的指向作用。 6 | 7 | 其次,我会问的问题就是:**您认为我在哪些方面可以提高自己。**这个问题其实从侧面可以让你获取你此次面试的结果。因为这个问题不像问我面试能不能过这样直白的面试禁忌。一般面试官会指明他认为你的缺点,如果他在说的时候带有建议的语气以及对你其他方面的肯定那基本是十拿九稳了,再不济有大佬对你的一个建议指导对你自己查漏补缺也是非常有帮助的。说下我自己的经历吧,我在面阿里云3面的时候,那位p9大佬在我问完这个问题之后不仅肯定了我的一些表现还给我推荐了2本书建议我去阅读,这真的是非常良好的面试体验。 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DailySummary 2 | 校招/社招过程中的个人面经总结。5月~6月重新迭代中。 3 | --------------------------------------------------------------------------------