自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 适配器模式

适配器模式定义将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。​ ——维基百科Demo类适配器Adaptee.java//无法直接调用的类,需要使用被适配public class Adaptee { void doSomeThing() { System.out.pr

2022-02-15 11:51:45 383

原创 策略设计模式

策略模式定义策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。 ——维基百科DemoPay.javapublic interface Pay { void pay();}AliPay.javapublic class AliPay implements Pay { @Override public void pay() { System.out.println("支付宝付款成功

2022-02-15 11:50:59 342

原创 委派设计模式

委派模式定义委派模式(delegation pattern)是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 ——维基百科委派模式比较简单,就是A/B一起干活,A不会,然后把活委托给B,B做完以后把结果反馈给A这里的A类似于领导的角色,把任务根据手下的特长都分配出去,谁会什么干什么DemoEmployee.javapu

2022-02-15 11:49:14 442

原创 模板方法模式

模板方法模式定义模板方法是一种行为设计模式。模板方法是一个定义在父类的方法,在模板方法中会调用多个定义在父类的其他方法,而这些方法有可能只是抽象方法并没有实现,模板方法仅决定这些抽象方法的执行顺序,这些抽象方法的实现由子类负责,并且子类不允许重写模板方法。 ——维基百科当做一组事情的步骤是固定的,就可以把这些步骤抽象出来比如说把大象放进冰箱需要几步3步,打开冰箱,把大象放进去,关上冰箱那把长颈鹿放进冰箱呢还是3步,打开冰箱,把长颈鹿放进去,关上冰箱这3个步骤就可以抽象出来,

2022-02-15 11:47:38 242

原创 装饰器模式

装饰器模式定义装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。解释举个例子,小倩颜值一般,很喜欢拍照,但是拍出来的照片颜值只有60分,她非常想拍出来的照片颜值高一些,这时候有什么办法?一种是整容,整完以后,人好看了,照片颜值自然就上去了,但是这种办法成本太高,还有风险,不推荐还有一种方法呢,就是我们的P图大法,比如加个磨皮可以增加10点颜值,瘦脸可以增加15点颜值,滤镜可以增加10点颜值…这个成本就很低了,而且还可以按照自己的意愿进行叠加效果

2022-02-15 11:46:50 170

原创 代理设计模式

代理模式定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用 ——百度百科想象一个需求张三有一个方法doSomeThing,现在需要在这个方法调用前后做一些事情,比如打印日志条件是不能改动张三的doSomeThing方法,而且还想继续之前的调用方式先来看一种简单的实现方式静态代理IP

2022-02-09 16:00:01 131

原创 建造者模式

建造者模式是什么?建造者模式(Builder Pattern)是一种设计模式,又名:生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 ——维基百科建造者模式的概念有点抽象…先来简单介绍一下建造者模式中的几个角色概念建造者模式中的几个角色Product:表示被构造的复杂对象,这个比较好理解,就是需要构建的对象Builder:为

2022-02-09 15:57:53 394

原创 原型设计模式

原型模式概念定义:给出一个原型对象实例来指定创建对象的类型,并通过拷贝这些原型的方式来创建新的对象。 ——百度百科简单来说原型模式就是不通过new关键字创建对象,而是通过一个已经存在的对象来复制一个新的对象。使用场景两种情况下会用到原型模式1、需要创建复杂的对象,创建复杂对象需要大量的初始化工作,这时候就可以使用现有对象直接复制一个新的对象出来2、需要创建一个和现有对象一样的对象,如果重新new一个的话,我们还需要遍历所有属性进行set实现原型模式比较简单,直接贴一个从维基百科看到

2022-02-09 15:54:12 114

原创 单例设计模式

前言单例模式是面试中非常常见的问题,我们在项目中应该或多或少都用到过单例模式,这次来聊一聊一下比较经典的几种单例模式的使用以及优缺点。定义单例模式(Singleton Pattern),属于创建类型的一种常用的软件设计模式。确保一个类在任何情况下只有一个实例,并提供一个全局访问点。常见的几种单例实现方式说到单例模式,我们最先想到的肯定是饿汉式单例模式和懒汉式单例模式OK,分别来看一下这两种饿汉式单例模式//饿汉式单例模式public class HungrySingleton {

2022-02-09 15:49:11 262

原创 工厂设计模式

简单工厂模式简单工厂模式(SimpleFactoryPattern)是指由一个工厂对象决定创建出哪一种产品类的实例,但它不属于GOF,23种设计模式。适用场景:​ 1.工厂类要创建的类比较少。​ 2.只需要传入正确的参数,不需要知道对象创建的细节。缺点:​ 1.增加新的产品时需要修改工厂类的判断逻辑,违背开闭原则。​ 2.不易于创建逻辑复杂的对象。工厂方法模式工厂方法模式(FatoryMethodPattern)是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪

2022-02-09 15:47:34 1017

原创 七大软件设计原则

1.开闭原则定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。优点:提高软件系统的可复用性及可维护性2.依赖倒置原则定义:高层模块不应该依赖低层模块,二者应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象针对接口编程,不应该针对实现编程优点:可以减少类间的耦合性,提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险。3.单一职责原则定义:不要存在多于一个导致类变更的原因一个类、 接口、方法只负责一项职责优点:降低

2022-02-09 15:45:59 621

原创 Instant Client Light:unsupported server character set ZHS16GBK

问题:用Navacat连接Oracle数据库的时候,报错:提示ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK原因:这个问题是因为本地的Navicat客户端不支持服务器端的字符集。我们知道Navicat连接Oracle使用的是OCI方式,而我安装的Navicat 10 Premium使用的是OCI的Instant Client 10 是不支持除英文以外的其他的字符集的,所以替换掉Navicat使用的OCI的

2021-01-16 20:47:45 3271 2

原创 SQL中where和on的区别

where是从查询的结果中筛选符合的记录,on是在查询时进行过滤,使查询的结果只有符合条件的记录。定义一个学生表stu(id,name,scoreid)和一个成绩表score(id,value),假设需要查询name为张三的学生的成绩。select * from stu inner join score on stu.scoreid=score.id and stu.name='张三';select * from stu inner join score on stu.scoreid=score.i

2020-11-17 14:19:00 1021

原创 MySQL中cross join、inner join、outer join的区别

1.交叉连接-CROSS JOIN交叉连接返回t1、t2的笛卡尔积,即t1行数*t2行数条数据,一般在不需要任何过滤条件的情况下使用。1.select * from t1,t2;2.select * from t1 cross join t2;1和2两条语句是等效的,第一条语句是隐式的交叉连接,第二条是显示的交叉连接。1.select * from t1 cross join t2 where t1.id=t2.id;2.select * from t1 inner join t2 on t1

2020-11-05 09:37:28 1361 1

原创 通过模板生成pdf文件(一页或多页)-java

流程1.使用Adobe acrobat pro(pdf编辑工具)创建pdf表单模板文件。2.Java(使用itext的jar包)获取并填充表单。创建表单1.使用Adobe acrobat pro打开需要作为模板的pdf文件,空的有内容的都可以,具体看自己需求吧,我这里打开的是一个空的pdf。2.点击右上角工具-表单-编辑,进入表单编辑页面。3.点击添加新域,有很多组件可以选择。4.在页面需要填充数据的地方选择相应的组件,文本域的名称就是一会需要填充的表单的键值,也就是标识。我写的例子是一个发票

2020-09-17 11:35:58 3327

原创 Java反射(2)-通过反射实现动态代理

静态代理讲动态代理之前,首先用静态代理做个铺垫。假设有一个Boy类继承自Person接口,接口里有一个方法print,现在有一个需求是不改变Boy类的情况下,在每次调用Boy的print方法前后各输出一句话。Person.javainterface Person { public void print();}Boy.javapublic class Boy implements Person{ @Override public void print() {

2020-08-07 17:57:01 1191

原创 Java注解-元注解&&自定义注解

从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。注解有jdk提供的,也可以使用自定义注解,本文介绍jdk提供的几种常见元注解和自定义注解的方法。1.元注解元注解就是注解的注解,元注解有4个,分别为@Retention、@Documented 、@Target 、@Inherited下面依次介绍4.

2020-08-06 22:46:15 218

原创 java项目文件及类变量方法命名规范

1.项目名称:全部小写字母,如"stuinfo"2.包名:全部小写字母,如"com.baidu"3.类名:类名首字母要大写,如果类名有两个以上单词,每个单词的首字母要大写,如"StuInfo"4.方法、变量、对象、属性:均为首单词字母小写,从第二个单词开始首字母大写,如"name"、"stuName"6.常量:大写字母,单词之间以下划线分隔,如"STU_SEX"...

2020-08-06 21:15:16 262

原创 Java反射(1)-通过反射获取使用Class对象、方法、属性

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。反射非常强大,JDBC以及主流的框架如Spring、Mybatis等等都使用到了反射机制,可以说只要使用Java,反射无处不在。本文详细介绍如何使用反射获取到Class对象,类的方法和属性。1.Class对象Class对象包括一个类的方法、变量、接口、类名、类修饰符等等信息,获取Class对象有三种方法。.

2020-08-01 12:23:37 6847

原创 a标签中的指定框架iframe的target属性失效,导致点击链接跳转时加载在新窗口里

工作中经常会用到这样的主页面(简化版),左边是菜单栏,右边是一个iframe,点击菜单栏中的链接(使用a标签target属性),页面会加载在右面的iframe框架里。问题:第一次点击左边的链接,右边加载到了页面,但是第二次以后再点击链接,右边就加载不到页面了,直接弹出了新的窗口打开链接。原因及解决:我在需要加载的页面js里使用了一个名为name的变量,网上查到是name和iframe某一属性冲突,导致target失效,把name改为其他名字就解决了。...

2020-07-26 17:08:26 1397

原创 使用js动态加载ul列表li标签

思路:获取到ul的控件,然后根据数据生成<a>标签的html,追加到ul中。​​HTML代码:<ul id="ullist"></ul>js代码://获取ulvar list=document.getElementById("ullist");//动态内容,可通过接口获取jsonvar title={"t1","t2","t3"};for (var i=0;i<title.length;i++){ //新建li var li.

2020-07-26 15:11:46 3399

原创 servlet连接数据库出错

jdbc驱动的jar包导入了,单独连接数据库没问题,使用servlet连接数据库报错原因:web项目中,编译器会将项目布置到Tomcat中,所以原来jar包的路径找不到了。解决方法:将jdbc的jar复制一份到Tomcat的lib文件夹下。...

2020-07-26 14:37:22 769

原创 Java函数参数为对象时是按值传递还是引用传递问题

结论放前面,Java中只有一种参数传递方式——按值传递。 当参数类型为基本类型时,传递值进去。当参数为对象时,传递对象的引用地址值进去。 复习Java语法时,偶然看到一道很神奇的例题,同样是传递了对象进去,一个值变了,一个值没变,这是怎么回事!!! 这个问题勾起了我的好奇心,一番查阅资料,现将分析流程记录如下: 首先 Human a=new Human(),这一步实际上是分为三部...

2020-06-28 23:03:03 843

itext-4.2.0.jar

使用itext生成pdf用到的jar包,版本为itext-4.2.0.jar

2020-09-17

空空如也

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

TA关注的人

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