自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 java23设计模式---class11.代理模式(Proxy)

文章目录一、静态代理1、定义2、角色3、代码实现一、静态代理1、定义我们什么时候会用到代理模式呢?主要是在测试时,例如测试时间和打印日志等情况。2、角色角色主要有接口、被代理者、代理类。其关系如下图,我们发现,被代理的具体实现类和代理抽象类都会实现一个统一的接口3、代码实现//接口package pattern.proxy.version1;public interface Runnable {void run();}//具体被代理实现类(系统A、系统B)packag

2021-03-03 12:57:20 165 4

原创 Leetcode12.整型转罗马数字

文章目录一、题目二、代码1、暴力解法2、贪心算法一、题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27

2021-03-02 20:31:05 163 1

原创 Java集合遍历器---迭代器(Iterator)

一、使用方法最常用的就是remove()、hasnext()、next()比较简单,直接贴上代码List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); //Integer[] array= {1,2,3,4}; //比较集合和数组的toString() //System.out.println(array.toString()); //System.

2021-03-02 10:01:42 606 3

原创 Leetcode11.盛最多水的容器

文章目录一、题目二、解题方法1、暴力枚举法2、双指针法一、题目给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水

2021-03-01 23:19:28 139 1

原创 PECS原则简介

文章目录一、定义二、使用情景一、定义Producer Extends Consumer Super即是生产者(父类或者接口)用Extends,消费者(实现的具体子类)用Super。二、使用情景笔实现了文具抽象类:我们希望文具盒是可以装笔的,但是如下图编译就出现了错误:如何解决呢??extends T表示存放的都是T或者T的子类与之相对的:? super T表示存放的都是T或者T的父类...

2021-02-28 22:42:14 596 1

原创 泛型可变长参数易错点

如果参数类型是泛型可变长参数,调用的时候只传参1个,而且参数还是数组,只要该数组的类型可以被泛型化(非基本数据类型的变量)则T为数组类型,否则(此时的数组类型为基本数据类型)T类型为$[](用$表示该基本数据类型),如下代码进行了测试:测试思想:首先定义了Intger[]、int[]类型的两个数组,我们如果只传入1个int数组,T就为int[];如果我们只传入一个Intger[],T为Integer;如果我们传入两个Integer[],T为Integer[];package foundation.

2021-02-28 20:37:18 250 2

原创 Leetcode10.给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.‘ 和 ‘*‘ 的正则表达式匹配。‘.‘ 匹配任意单个字符 ‘*‘ 匹配零个或多个前面的那一个元素

文章目录一、题目二、解题思路1、原始思路2、思路优化一、题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a” 输出:false 解释:“a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa” p = “a*” 输出:true 解释:因为 ‘*’ 代表

2021-02-27 21:15:22 5533 3

原创 java23设计模式---class09.组合模式(Composite)

文章目录一、定义二、例子三、代码实现一、定义这是来源于百度百科的解释:1.组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构。2.实质上,组合逻辑就是为树形结构服务的。3.通常,一个组合模式主要有三种角色:抽象类,叶子类(无子节点),容器类(有实现抽象类的子节点)二、例子以最常见的树形结构文件资源管理器举例,我们在电脑中有C、D两盘,C盘中有文件夹1,文件夹2,文件夹1中有记事本文件1,D盘中有文件夹3,文件夹3中有记事本文件2,如图。三、代码实现package pattern.

2021-02-26 21:58:28 141

原创 依赖倒置原则

一、定义1、抽象不应该依赖于具体,具体应该依赖于抽象。2、高层次模块不应该依赖于低层次模块,它们都应该依赖于抽象。二、例子对于一个小卖部来说,有许多饮料,比如可乐、雪碧、橙汁·····这时,我们把小卖部定义为一个具体类,如果我们没有选择依赖倒置原则的话,我们就应该在小卖部中new Coke(),new Sprit(),new OrangeJuice(),这样并无不妥。但是,如果我们要引入脉动呢?我们只能在该小卖部的实现类源码上去new maiDong(),如果要删除可乐呢,我们也只能在源码上进行删除

2021-02-26 20:53:01 148 1

原创 Leetcode09.回文数

文章目录一、题目二、代码1.方法12、方法23、官方答案一、题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例 1:输入:x = 121 输出:true 示例 2:输入:x = -121 输出:false 解释:从左向右读, 为 -1

2021-02-25 21:38:38 263 1

原创 Leetcode08-字符串转换整数 (atoi)

一、题目请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“1

2021-02-25 12:39:26 333 1

原创 Leetcode07.整数反转 给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返

文章目录一、题目二、代码一、题目给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [-2 147 483 648,2 147 483 647] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123 输出:321示例 2:输入:x = -123 输出:-321示 例 3:输入:x = 120 输出:21 示例 4:输入:x = 0 输出:0提示:-2 14

2021-02-24 12:47:49 2916 4

原创 Leetcode06.将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

文章目录一、题目二、解决方法一、题目将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows

2021-02-23 22:04:31 5009 8

原创 Leetcode05-给你一个字符串 s,找到 s 中最长的回文子串。   示例 1: 输入:s = “babad“ 输出:“bab“ 解释:“aba“ 同样是符合题意的答案。 示例 2: 输

文章目录题目一、暴力解法二、动态规划题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd” 输出:“bb”示例 3:输入:s = “a” 输出:“a”示例 4:输入:s = “ac” 输出:“a”提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成来源:力扣(LeetCode)链接

2021-02-16 16:15:52 2405 2

原创 java23设计模式---class08.观察者模式(Observer)

观察者模式其实是一种和责任链比较相似的模式,在观察者模式中,有事件、观察者、事件源三部分。是一种一对多的关系,(通常把观察者封装到一起),一个事件源对应了多个观察者。类之间的关系是:事件封装了事件源,为了事件容易拓展,事件通常有一个父抽象类或者接口,当观察者观察一个事件时,可以通过事件中的getResource()方法得到事件源对象,对事件源对象进行一系列的改动。...

2021-02-08 14:24:26 137 1

原创 java23设计模式---class07.责任链模式(Responsibility Of Chain)

责任链模式其实是相对复杂的一个设计模式,所以一直不敢写这篇文章,在网上看了不少相关责任链模式的文章和视频才终于有所清醒,但是认识可能还是会很片面甚至出现错误,欢迎在评论区中指出。文章目录1、责任链模式的优点2、责任链模式的概念3、责任链模式的角色4、责任链模式的应用场景4、案例分析1)网站注册A.原始做法:用if elseB.优化做法2)过滤器1、责任链模式的优点请求发送者、请求处理者之间的解耦2、责任链模式的概念引用百度百科:责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对.

2021-02-07 13:21:11 172 3

原创 java23设计模式---class06.装饰者模式(Decorator)

@[toc]dai1、装饰者模式是什么装饰者模式,顾名思义,主要是用于装饰的一种设计模式。我们在这个背景下来思考:有一条小狗,我们给它穿衣服,戴围巾怎么做呢?  或许大多数新手都会用继承的方法,也就是先创建一个Dog类,然后建Dog_Clothes类去继承Dog就可以让小狗穿上衣服,Dog_Clothes_Scraft去继承Dog_Clothes就可以让穿上衣服的小狗戴上围巾。  或许你会认为这种模式并无什么明显的弊端,但是,如果装饰多了的时候呢?比如我们

2021-02-05 20:06:10 149 2

原创 java23设计模式---class05.调停者模式(Mediator)

1.概念调停者模式能减少对象之间混乱无序的依赖关系(网状结构的关系),该模式会限制对象的直接交互,迫使它们通过一个中介对象进行合作。2、优点1、简化对象的交互,讲所有参与者进行解耦。2、将多对多的交互转化成1对多的交互,利于理解、维护和拓展。(拓展行为只需要生成中介者接口的子类即可)3、符合开闭原则3、缺点中介者包含了所有参与者的细节,可能会使中介者对象本身复杂,并且难以维护。4、角色1、抽象中介者:接口。2、具体中介者:实现抽象中介者的类,每一种具体中介者都包含了一种协调工作的方式。

2021-02-02 17:05:37 154 2

原创 23设计模式---class04.外观模式

class04.外观模式主要是为了解开耦合,使复杂的逻辑变得简单。大家打交道都通过一个中间层,解决复杂接口带来的调用困难,简化用户的操作。是比较简单的模式,所以不多详细介绍,直接举一个例子。例子:例如我们需要建一个房子,我们或许会需要许多人共同完成,不仅要去找人来运送砖头水泥、还需要泥水匠、电工—这时,就会很麻烦,但是如果有一个中间层可以替我们跟其他人打交道,我们就只需要和中间层一个对象打交道,就会很简便了。也就是说:这是把客户一对多转化成了一对一。下面用代码阐释:假如客户端进入系统需要子系统A

2021-02-02 16:07:11 131 2

原创 java23设计模式---class02.策略模式

class02.策略模式文章目录class02.策略模式一、背景介绍1、概念2、为什么用策略3、策略模式的缺点二、具体实现一、背景介绍1、概念2、为什么用策略1)符合开闭原则:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭2)易于扩展,避免了多重if else和switch case,相比与if else或者switch case有较强的灵活性3)策略模式是面向对象中非常重要的一种设计模式,其本质上是为了更好的实现多态性。3、策略模式的缺点会增加系统需要维护的类的数量二、具体实现

2021-01-31 18:39:49 160 1

原创 java23设计模式---class01.单例设计模式

Class01.单例设计模式写在前面:最近重温设计模式,所以决定在学习的同时也把笔记发在csdn以便加深印象和之后复习。在学习单例这种设计模式之前,我们或多或少已经和它打过交道,诸如LocalDateTime.now(),在学习这个调用方法时,或许大家都会有疑惑,为什么只能调用不能构造呢?为什么要把构造方法私有化呢?这样做有什么好处呢?学完单例设计模式,或许你就会找到想要的答案。本文会概述单例设计模式的概念和意义,主要在文中再现常见的单例实现方法。最后,由于我学习java的时间较短,所以可能也难免观点会

2021-01-30 17:54:18 315 2

原创 阿里云ECS 7天实践训练营进阶班06天

Class6.案例分享——钉钉       写在前面:案例分享言简意赅,主要是回答了三个问题:1.钉钉背后的技术架构是怎样的?运用了阿里云的哪些服务?2.可否具体谈谈使用云计算后为钉钉解决的问题或者是价值?3.企业级用户对应用的安全性有跟高的要求,钉钉如何借助阿里云保障企业信息安全?       案例多次强调了核心关键词:"安全性、稳定性",“阿里云的基础设施安全为钉

2021-01-26 12:15:41 219

原创 阿里云ECS 7天实践训练营进阶班05天

Class5.搭建个人Leanote云笔记本写在前面:步骤很简单易懂,但是却花了一两个小时,主要是卡在了MongoDB的启动上,换了三个服务器,一直报Faild to start mongod.service:Unit not found.,幸好有个大佬也遇见了这个问题,最终成功解决了(文中有解决方法)阿里云ECS7天实践训练营本文关键字:阿里云,ECS,数据库文章目录Class5.搭建个人Leanote云笔记本阿里云ECS7天实践训练营一. 创建资源二、 远程连接ECS服务器1.选择一个终端工

2021-01-25 11:59:22 263 2

原创 阿里云ECS 7天实践训练营进阶班04天

Class4.使用PolarDB和ECS搭建门户网站写在前面:       通过这个课程,对于我来说其实是非常有所收获的,体验了LAMP环境(Linux下安装 apache、mysql、php),以前一直在使用tomcat,这其实也是我第一次安装apche,还是挺激动的。其次,最近正在学习SQL语言,我选择的DBMS正是mysql,所以对于我来说还不算陌生。从这门课程中,了解了阿里云的PolarDB数据库管理系统,我印象最深刻的就是

2021-01-24 16:18:54 344

原创 阿里云ECS 7天实践训练营进阶班03天

Class3.ECS+SLB负载均衡实践写在前面:       利用阿里云提供的功能搭建SLB是非常简单的,按照步骤很快就能搭建成功。所以本文会在介绍搭建负载均衡步骤的同时,也着重在背景介绍中讲一下SLB负载均衡的概念、各种实现负载均衡的方式以及它们之间的区别和优缺点,以及阿里云实现负载均衡的方法。阿里云ECS7天实践训练营本文关键字:阿里云,ECS,SLB负载均衡文章目录Class3.ECS+SLB负载均衡实践阿里云ECS

2021-01-23 12:40:03 282

原创 阿里云ECS 7天实践训练营进阶班02天

Class2.基于ECS快速搭建Docker环境写在前面: 利用ECS搭建Docker环境其实是相对比较简单的,在连接服务器时,我也出现了error: connection timed out,在客户端防火墙没有拦截的情况下,解决办法是重新创建一个服务器端。言归正传,今天的内容主要是讲解的容器技术,我们选择的应用容器引擎是Docker。本文将先介绍容器技术和Docker的背景,再具体基于ECS讲解快速搭建Docker环境的步骤。阿里云ECS7天实践训练营本文关键字:阿里云,ECS,Docker,容

2021-01-22 18:09:00 248

原创 阿里云ECS 7天实践训练营进阶班01天

基于ECS搭建FTP服务文章目录基于ECS搭建FTP服务一. 创建资源二、 远程连接ECS服务器**三、 安装vsftpd四. 配置vsftpd五、 配置安全组六、 客户端测试七、总结一. 创建资源1.创建资源非常容易,只需要按照两个步骤做就可以了:1). 在页面左侧,单击 云产品资源 下拉菜单,查看本次实验资源。2). 单击 免费开通 创建所需资源。开通界面如下:注:资源开通需要耐心等待1-3分钟。2.创建成功后我们会得到以下界面该界面包含了ESC服务器的创建状态(已创建),运行

2021-01-21 22:39:22 335

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除