JAVASE基础
文章平均质量分 55
伟子涵
每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛
展开
-
【CompletableFuture异步编排提升接口平均响应】
不要说你在项目当中没有用到多线程 只是你并不想去改变而已 还没用中间件 就提升接口一点效率 其实生命的意义在折腾。原创 2023-02-06 22:20:53 · 416 阅读 · 1 评论 -
重学设计模式之 解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子 简单来说 为了解释一种语言 而为语言创建的解释器。如图所示 spring 里面都帮我们考虑到了 没有自己写这么麻烦 所以说spring 里面源码还是值得去深入探究的。 1.语法由很多类表示,容易改变及扩展此 “语言”源码解析 在spring 当中这个类就是使用解释器设计模式。 1、某个特定类型问题发生频率足够高。1.当语法规则数目太多时,增加了系统复杂度。1.2 类型 : 行为型。...原创 2022-08-13 21:39:12 · 134 阅读 · 0 评论 -
重学设计模式-迭代器模式
提供一种方法,顺序访问一个集合对象中的各个元素 而又不暴露该对象的内部表示。 1、访问一个集合对象的内容而无需暴露它的内部表示。 2、为遍历不同的集合结构提供一个统一的接口。 1.分离了集合对象的遍历行为。在mybatis 当中的应用是这个类。1.2 类型 : 行为型。5.迭代器-相关设计模式。迭代器模式和访问者模式。这个类当中 使用迭代器。1.类的个数成对增加。...原创 2022-08-07 19:58:14 · 105 阅读 · 0 评论 -
重学设计模式-模板方法模式
2、各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复。 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。 1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。3.继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。定义了一个算法的骨架,并可以子类为一个或多个步骤提供现实。模板方法模式 不该变算法流程 而是交给子类去实现。模板方法模式和工厂方法模式。的应用 使用模板方法模式。模板方法模式和策略模式。...原创 2022-08-06 21:59:11 · 155 阅读 · 0 评论 -
重学设计模式之 动态代理二
动态代理代码实现以及mybatis 当中如何生成实现类原创 2022-08-04 22:35:11 · 143 阅读 · 0 评论 -
重学设计模式之代理模式一 静态代理
当Bean 有实现接口时 ,Spring 就会用JDK 的动态代理。2.在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢。 1.代理模式能将代理对象与真实被调用的目标对象分离。 代理对象在客户端和目标对象之间起到中介的作用。为其他对象提供一种代理,以控制对这个对象的访问。1.代理模式会造成系统设计中类的数目增加。6.Spring 代理选择-扩展。 3.保护目标对象。 4.增强目标对象。 1、保护目标对象。 2、增强目标对象。...原创 2022-08-03 22:09:56 · 164 阅读 · 0 评论 -
重学设计模式之-桥接模式
2、一个类存在两个或多个独立变化的维度且这两个或多个维度都需要独立进行扩展。将抽象部分与它的具体实现部分分离使它们都可以独立地变化解耦。通过组合的方式建议两个类之间联系,而不是继承。3、不希望使用继承或因为多层继承导致系统类的个数增加。1、抽象和具体实现之间增加更多的灵活性。1.分离抽象部分及具体实现部分解耦。2.需要正确地设别出系统中两个独立变化的维度。1.2类型结构型。桥接模式jdk当中应用解析。桥接模式和适配器模式。...原创 2022-08-01 21:55:04 · 234 阅读 · 0 评论 -
重学设计模式之-组合模式-mybatis-SqlNode使用组合模式
1.清楚地定义分层次的复杂对象,表示对象的全部或部分层次。2.让客户端忽略了层次的差异方便对整个层次结构进行控制。将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使客户端对单个对象和组合对象保持一致的方式处理。1、希望客户端可以忽略组合对象与单个对象的差异时。类它使用的是接口而我的案例当中使用抽象类。在mybatis使用组合模式类。当中是用组合模式的代码如图。5.组合-相关的设计模式。组合模式和访问者模式。...原创 2022-07-31 10:13:54 · 274 阅读 · 0 评论 -
重学设计模式-享元设计模式-tomcat当中使用
运用共享技术有效地支持大量细粒度的对象一句话来说的话就是减少创建对象的数量从而减少内存的占用。1.减少对象的创建降低内存中对象的数量,降低系统的内存,提高效率。1、常常应用于系统底层的开发以便解决系统的性能问题。提供了减少对象数量从而改善应用所需的对象结构的方式。2、系统有大量相似对象、需要缓冲池的场景。享元设计模式jdk当中应用解析。当中是用享元模式的代码如图。当中大量的使用享元设计模式。1.2类型结构型。6.享元-相关的设计模式。...原创 2022-07-28 22:48:56 · 234 阅读 · 0 评论 -
重学设计模式-适配器模式-spring当中的应用
2、不是软件设计阶段考虑的设计模式,是随着软件维护由于不同产品不同厂家造成功能类似而接口不相同情况下的解决方案。1、以及存在的类,它的方法和需求不匹配时(方法结果相同或相似)1.能提高类的透明性和复用,现有的类复用但不需要改变。1.适配器编写过程需要全面考虑,可能会增加系统的复杂性。在SpringMvc当中使用适配器设计模式应用。将一个类的接口转换成客户期望的另一个接口。适配器模式和外观模式两个适配的粒度不同。1.2类型结构型。6.适配-相关的设计模式。.........原创 2022-07-27 22:23:46 · 513 阅读 · 0 评论 -
重学设计模式之 装饰者模式
1.继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能。2、动态的给一个对象添加功能,这些功能可以再动态的撤销。2.通过使用不同装饰类以及这些装饰类的排列组合,可以实现不同效果。1、扩展一个类的功能或给一个类添加附加职责。在不改变原有对象的基础之上,将功能附加到对象上。1.会出现更多的代码,更多的类,增加程序复杂性。在mybatis当中使用装饰者模式应用为。1.2类型结构型。5.装饰者-相关的设计模式。装饰者模式和适配器模式。装饰者模式和代理模式。...原创 2022-07-26 22:56:29 · 162 阅读 · 0 评论 -
重学设计模式之外观模式
2、构建多层系统结构,利用外观对象作为每层的入口简化层间调用。又叫门面模式提供了一个统一的接口,用来访问子系统中的一群接口。1.简化了调用过程无需了解深入子系统,防止带来风险。外观模式定义了一个高层接口,让子系统更容易使用。1、子系统越来越复杂,增加外观模式提供简单调用接口。1.增加子系统扩展子系统行为容易引入风险。在mybatis当中使用外观设计模式应用。1.2类型结构型。外观模式和抽象工厂模式。外观模式和中介者模式。...原创 2022-07-25 23:13:57 · 208 阅读 · 0 评论 -
重学设计模式之 原型设计模式
定义1.类初始化消耗较多资源 2.new产生的一个对象需要非常繁琐的过程 数据准备 访问权限等 3.构造函数比较复杂 4.循环体中生产大量对象时1.简化创建过程 2.原型模式性能比直接new一个对象性能高1.必须配备克隆方法 2.对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引入风险。 3.浅拷贝 深拷贝要运用得当1.0 邮件类 2.0 发送邮件工具类 3.0 测试类......原创 2022-07-22 22:51:20 · 143 阅读 · 0 评论 -
单例模式(三)最佳实践枚举单例与ThreadLocal的单例
6.单例模式在springmybatis框架当中的使用如图所示。3.编写ThreadLocalInstance单例模式。5.测试类这里就不写了测试代码都在代码如下当中。6.1spring当中这个类。在mybatis当中使用该类。原创 2022-07-21 22:53:36 · 273 阅读 · 0 评论 -
单例模式(二)懒汉式之多线程与内部类
在之前单例模式一文章基础上进行编写代码如下。1.使用线程安全情况进行改造。原创 2022-07-19 23:34:00 · 154 阅读 · 0 评论 -
重学设计模式之 建造者模式
定义1.如果一个对象有非常复杂的内部结构 很多属性 2.想把复杂对象的创建和使用分离1.封装性好 创建和使用分离 2.扩展性好、建造类之间独立 一定程度上解耦1.产生多余的builder 对象 2.产品内部发生变化 建造者都需要进行修改 成本较大1.建造者 注重方法调用顺序 可以创建一些复杂的产品 由各种复杂的组件组成 2。工厂模式 注重创建产品 创建出来的都是一个样子 创建对象粒度不同 3.关注点 工厂模式 创建出来就ok 工厂不关心顺序 建造者 不当指创建出来 还要知道这些产品是那些组件组成的 关心顺原创 2022-07-14 00:00:38 · 178 阅读 · 0 评论 -
抽象工厂之设计模式三
定义1、客户端应用层不依赖于产品类实例如何被创建、实现等细节 2、强调一系列相关的产品对象属于同一产品族一起使用创建对象需要大量重复的代码 3、提供一个产品类的库、所有的产品以同样的接口出现,从而使客户端不依赖于具体的实现1、具体产品在应用层代码隔离 无须关心创建细节 2、将一个系列的产品族统一到一起创建1、规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口 2、增加了系统的抽象性和理解难度1.0 创建课程工厂 2.0 写一个 抽象 Article 类 并且里面有个抽象方法 3原创 2022-07-11 23:14:28 · 138 阅读 · 0 评论 -
重学设计模式---之工厂方法
定义1、创建对象需要大量重复的代码 2、客户端应用层 不依赖于产品类实例如何被创建 实现等细节 3、一个类通过其子类来指定创建那个对象1.用户只需要关心所需产品对应的工厂 无须关心创建细节 2.加入新的产品符合开闭原则 提高可扩展性1.类的个数容易过多 增加复杂度 2. 增加了系统的抽象性和理解难度1.基于第一章 简单工厂设计 重改VideoFactory 里面代码 2.0 写一个 JavaVideoFactory 去继承它 并且重写里面的方法 3.0 测试方法如下 uml 图 如图所示 代码如下..原创 2022-07-07 23:07:21 · 186 阅读 · 0 评论 -
重学设计模式之简单工厂
1.创建抽象类 2.写两个类继承抽象类 重写抽象方法 3.简单工厂 4.测试类原创 2022-07-06 21:40:29 · 100 阅读 · 0 评论 -
线程池面试 ThreadPoolExecutor -伟子涵java
1 请说说ThreadPoolExecutor的参数的意义 int corePoolSize, //核心线程数量 int maximumPoolSize, //最大线程数 long keepAliveTime, //超时时间,超出核心线程数量以外的线程空余存活时间 TimeUnit unit, //存活时间单位 BlockingQueue<Runnable> workQueue, //保存执行任务的队列 ThreadFactory threadFactory,//创建新线程使用的工厂 Reje原创 2022-02-10 11:26:59 · 299 阅读 · 0 评论 -
面向对象之神坑面试题
class X { Y b = new Y(); //1.0 执行这里 -----打印y X() { //进入这里 会看看有不有成员变量 有则初始化成员变量 //在执行构造代码块 System.out.print("X"); //2.0 x } //注意事项 如果本类有成员变量 那么先去执行成员变量初始化 //在执行构造里面 } class Y {原创 2017-05-19 23:10:47 · 295 阅读 · 0 评论 -
.分析以下需求,并用代码实现 1.定义List集合,存入多个字符串 2.删除集合元素字符串中包含0-9数字的字符串 只要字符串中包含0-9中的任意一个数字就需
public class MyText2 { public static void main(String[] args) { /* * 2.分析以下需求,并用代码实现 1.定义List集合,存入多个字符串 * 2.删除集合元素字符串中包含0-9数字的字符串 * (只要字符串中包含0-9中的任意一个数字就需要删除此整个字符串) * 3.然后利用迭代器遍历集合元素并输出 *原创 2017-05-25 22:25:51 · 5686 阅读 · 1 评论 -
数组一切操作
public class MyArrayDemo { // 遍历 /** * @author Zw * @param 数组遍历操作 */ public void getInfo(int[] arr) { String str = "["; for (int i = 0; i if (i == arr.length - 1) { str += arr[i]; brea原创 2017-04-30 20:30:29 · 166 阅读 · 0 评论 -
面向对象 接口之代理模式(ProxySubject)
面向对象接口之代理工厂模式原创 2017-05-19 23:09:15 · 424 阅读 · 0 评论 -
java之单例模式
java最简单单列模式之一原创 2017-05-19 23:01:47 · 205 阅读 · 0 评论 -
面向对象之一抽象类 抽象模板设计 (Servlet)就用到了模板设计
面向对象之一抽象类 抽象模板设计 (Servlet)就用到了模板设计原创 2017-05-16 22:25:31 · 258 阅读 · 1 评论 -
买可乐的编程问题 2种方法实现
package com.heima.array; public class MyDemo { public static void main(String[] args) { /*、28人买可乐喝,3个可乐瓶盖可以换一瓶可乐, 那么要买多少瓶可乐,够28人喝? 假如是50人,又需要买多少瓶可乐?*/ int i=28; int y=50; int s=i/3;原创 2017-04-25 20:08:43 · 1710 阅读 · 0 评论 -
有1,2,3能组成多少个互不相同且无重复数字的三位数?都是多少?
有1,2,3能组成多少个互不相同且无重复数字的三位数?都是多少?原创 2017-04-19 21:37:07 · 1165 阅读 · 0 评论 -
.....数组操作
package com.heima.day04; public class MyArrayDemo2 { public static void main(String[] args) { //(1)定义一个int类型的一维数组, //内容为{6,2,9,6,1,2,6,7,8} int [] num={6,2,9,6,1,2,6,7,8}; int [] arr=ne原创 2017-04-19 21:58:08 · 258 阅读 · 0 评论 -
Java 数组去重复值
数组去重复操作 定义一个新数组 新数组长度为老数组长度 定义标识符 定义一个新数组下标 外层for遍历老数组 内层循环取新元素 进行判断 是否相等原创 2017-04-19 21:01:38 · 1004 阅读 · 0 评论 -
for循环三角形
* ** *** **** package com.heima.day02; public class MyDemo05 { public static void main(String[] args){ //* //** //*** //***** for (int i = 0; i for (int j = 0; j System.out原创 2017-04-25 22:00:01 · 329 阅读 · 0 评论 -
数组最大元素与最后一位元素进行交换最小元素与第一位元素进行交换,
public class MyDemo05 { public static void main(String[] args) { /*第三题:分析以下需求,并用代码实现: (1)定义一个int类型的一维数组,内容为{6,2,9,15,1,5,20,7,18} 6 2 9 15 1 5 18 7 20 1 2 9 15 6 5 18原创 2017-04-25 22:03:03 · 3859 阅读 · 0 评论 -
二维数组的遍历
/*定义一个int类型的二维数组, * 内容为{{1,2,3},{5,6},{20,17,18,90}} (1)遍历二维数组。*/ public class MyDemo06 { public static void main(String[] args) { /*定义一个int类型的二维数组, * 内容为{{1,2,3},{5,6},{20,17,18,90}} (原创 2017-04-25 21:58:10 · 628 阅读 · 0 评论 -
循环对整数的位数进行统计
/*4.演示格式如下: (1)演示一: 请输入一个整数:1234 控制台输出:1234是4位数字 (2)演示二: 请输入一个整数:-34567 控制台输出:-34567是5位数字*/ package com.heima.array; import java.util.Scanner; public class MyDemo3 { public s原创 2017-04-25 21:11:37 · 488 阅读 · 0 评论 -
数组元素反转 奇数下标进行交换
/*(1)键盘录入6个int类型的数据存数数组arr中 (2)将arr数组中的内容反转 (3)将翻转后的数组下标为奇数的互相交换 1和3换, 3和5换,以此类推 (4)最后将数组最后一个角标为奇数的元素 和数组中 第一个角标为奇数的元素交换 (5)打印最终的数组(实现了1-4步之后的数组) (6)如:用户输入的6个int数字为[1,2,3,4,5,6],原创 2017-04-25 20:42:19 · 2050 阅读 · 0 评论 -
数组拷贝操作 从数组默认下标 到拷到我指定的长度
package com.heima.array; public class AarryDemo3 { public static void main(String[] args) { /* * 1.定义一个方法copyOf(int[] arr, int newLength), * 功能:将数组arr中的newLength个元素拷贝到新数组中, 并将新数组返回, 从索引为0原创 2017-04-25 20:38:18 · 1444 阅读 · 0 评论 -
数组进行奇数和偶数操作 把奇数放在数组前面 偶数放在数组后面
/* * 2.定义一个方法将奇数放在数组的左侧, * 偶数放在数组的右侧 * 3.定义一个方法打印原数组和处理后的数组 * 4.定义一个方法传入一个int类型数组, * 输出这个数组中只出现一次的数字及个数 */ package com.heima.array; public class ArrayDemo6 { public static void main原创 2017-04-25 21:29:46 · 4475 阅读 · 0 评论 -
把字符串放入集合中 取出它字符和统计它的次数
/* * 分析以下需求,并用代码实现 1.利用键盘录入,输入一个字符串 * 2.统计该字符串中各个字符的数量(提示:字符不用排序) * 3.如: * 用户输入字符串"If~you-want~to~change-your_fate_I_think~you~must~come-to-the-dark-horse-to-learn-java" * 程序输出结果:-(9)I(2)_(3)a原创 2017-05-25 22:48:43 · 519 阅读 · 0 评论 -
List集合去重复
/*代码题: 1. 已知 List 集合,添加一些字符串元素,要求去除重复元素 (请用set集合来处理) 比如: List 集合里的元素为: aaa bbb ccc ddd aaa ccc 去重后的List 里的元素为 : aaa bbb ccc ddd */ import java.util.ArrayList; import java.util.HashSet; import j原创 2017-05-25 22:42:59 · 414 阅读 · 0 评论 -
集合操作
/* 已知一个字符串"192-168-12-15" (1)做一个方法要求对里面的有效数据进行升序排列 (分别用自己写代码排序和调用Arrays类中的方法) (2)做一个方法把排序后的数组转成一个字符串(分别用自己写代码排序和调用Arrays类中的方法) (如果是这样的字符串呢? "192--168---12-15" ) 注意:要求加入健壮性判断*/ import java.ut原创 2017-05-25 22:34:52 · 177 阅读 · 0 评论