自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 anaconda环境变量的配置

anaconda手动配置环境变量其中安装的时候注意自己配置环境变量,网上有些说自动配置的会出错,第一个环境变量就是找到python的路径第二个环境变量就是找到jupyter notebook 的动态库第二个环境变量就是找到conda自带脚本...

2022-05-13 17:42:29 1499

原创 组合模式

**组合模式:**也叫部分整体模式,他创建了对象组的树形结构,将对象组合成树状结构以表示整体和部分的层次关系组合模式依据树型结构来组合对象,用来表示部分和整体的层次,这样的设计模式属于结构型设计模式,组合模式使得我们用户单个对象和组合对象具有访问一致性,可以让客户以一致的方式处理个别对象以及组合对象.这是组合模式的类图Component是组合中对象声明的接口,在适当情况下,实现所有类共有的接口默认行为,用于访问和管理component子部件,component可以是抽象类或者接口leaf在接口中表

2021-04-07 11:53:40 100

原创 外观模式

我对于外观模式,就简单聊一下我自己的理解吧,比如我们对接项目的时候发现其系统子系统很多,我们调用很麻烦,我们可以再开一个Facade类,把其子系统的细节隐藏,让客户端和子系统进行解耦,然后通过我们的facade类进行实现我们需要实现的细节这里举个例子就是看病,我们要先挂号,然后付钱,再打针,我们要去各个部门进行操作很麻烦,如果我们有个引导者代我们去,那么我们的问题就迎刃而解.举个简单例子很好理解思想就是把挂号类和付钱类打针类都组合到我们的引导者,引导者指挥我们去做这些事情,就相当于把子系统的细

2021-04-07 11:12:34 116

原创 享元模式

享元模式:怎么理解,享就是共享,元就就是对象,官方来讲是运用共享技术支持大量细粒度的对象,常用于底层开发,比如我们的数据库连接池,里面都是创建好的对象,我们需要的直接拿来使用,如果没有我们需要的,则重新创建一个.它主要解决的是重复对象内存浪费问题,如果在我们的系统中有大量对象,需要缓冲池的时候,我们可以直接去缓冲池里拿,降低我们系统的内存,提高我们的效率享元模式应用就在Stirng常量池,数据库连接池,缓冲池,都是我们享元模式的应用,享元模式是我们池技术的重要实现享元模式提出了两个要求,细粒度和共享对

2021-04-07 10:50:33 80

原创 桥接模式

桥接模式是指将抽象和实现放在两个不同的类层次中,使得两个层次可以独立改变.他的特点就是把抽象和实现分开,从而保持各个部分的独立性以及对他们类的扩展昨天晚上刷抖音的时候刷到了一个特别好的例子,就是开枪案例我们人是抽象的,而我们开枪的实现是通过我们的枪进行实现的,所以这里我们的抽象就是人,实现就是枪,我们桥接模式,实际上就相当于搭了一座桥,让这两个之间进行联系,把实现聚合到我们的抽象之中,这样子,一方面解耦了,另一方面也有利于我们的扩展性比如我们的手机和品牌案例,如果我们按照传统的方法进行实现,手机的品

2021-04-06 11:00:20 60

原创 装饰者设计模式

装饰者模式的概念:动态的将新功能附加到对象上,在对象的扩展上来说,他比继承更加的具有弹性这里举一个例子比如我们进行点奶茶,我们可以添加奶盖,珍珠,椰果很多种选择,如果我们按照类与类之间的排列组合有多少种情况进行类的编写,那么我们的代码十分的臃肿,而且会产生类爆炸的现象,因为我们每次新增加一个类,我们就会多很多种组合,那么不利于我们的编写像这种附加新功能到对象上的情况,我们可以利用我们的装饰者设计模式这里从网上找了一个例子,就是点咖啡案例我们的装饰者大概实现,实际就是让装饰者和具体的主体继承同一个抽象

2021-04-06 10:34:45 55

原创 适配器模式

适配器模式大致分为三类:类适配器对象适配器接口适配器其中类和对象适配器,很相像,先说类适配器吧我们这里举个例子,比如手机充电,我们家庭安全电压是220V,而我们的手机只能支持5V电压,就有了我们的充电头也就是我们的适配器,我们可以把电源看做src经过适配器转换的电压看做dest目标电压,只有我们的手机等于5V我们才能充电这是我们的电源类这是我们的转换器接口而我们具体的适配器需要继承电源类实现我们的转换器接口,(这里有个不好的地方就是我们java中是单继承,所以有一定的局限性,但是我们继

2021-04-02 16:58:51 93

原创 建造者设计模式

这是构建者模式的类图, 我们把产品类组合到我们的抽象构建者中,由我们具体的构建者进行实现其细节方法操作,并将我们的抽象构建者聚合到我们的指挥者中,利用指挥者的construct方法进行把构建者中的细节方法进行组合这里我也看过其他人的构建者博客,其中最好理解的就是KFC案例,把我们需要的套餐(饮料品种加汉堡品种)作为我们的product,我们的构建者就是方案A,B,我们的Director就是点单系统,构建者模式就是把一些制作过程相似的东西抽象出来这里我做了一个案例这是我们的产品类这是我们的抽象构.

2021-04-01 22:50:47 66

原创 快速选择排序(找到第k小的数)

这里讲的不是通用的选择排序,而是基于快排的选择排序,因为这样的话我们只需要递归一边,我们的时间复杂度就是O(n)思路非常的简单,先利用快排就进行排序,但是这里有一个好处,就是我们只需要递归其中一边,思路就是快排排好我们所需要的部分的序列,然后再打印数组arr[k-1]及为我们找到的第k小的数...

2021-03-30 17:15:22 177

原创 一个类加载小案例

以这个例子为案例,我们的main方法只有一个创建子类对象,这是打印的结果内容我们可以观察到几个现象:**1:**为什么父类的show方法没有执行,其调用的是子类的show方法,其实这个很好理解,我们在程序运行的时候,我们把子类加载进内存,会继续找它的父类,如果找到父类就把父类加载进我们的内存里,如果子类有重写或者重载,我们子类的方法引用就会指向我们的子类方法,如果我们的子类没有重写或者重载,那我们的子类方法引用就指向我们的父类方法引用**2:**什么时候会发生类加载1:实例化对象2:使用类...

2021-03-30 14:06:40 70

原创 设计模式七大原则

设计模式目的:1.具有更好的代码重用性2.更好的可读性3.更好的扩展性4.可靠性(增加新的功能对原来的功能没有任何的影响)5.使得程序高聚合低耦合设计模式的七大原则1.单一职责原则2.接口隔离原则3.依赖倒转原则4.里氏替换原则5.开闭原则6.迪米特原则7.合成复用原则1.单一职责原则:这个很好理解,就是一个类只负责一项职责这里举个例子,比如我们对于像这样的代码就违反了单一职责,这里的轮船是不能在公路运行的,所以我们设计类与类的时候就要保持单一职责模式,比如设计这个小案例

2021-03-29 15:16:59 75

原创 为什么浮点类型的数会数据丢失

比如 0.1*3==0.3这个打印出来的 结果是false原因就是计算机中对于数的计算是利用二进制进行存储数据就像十进制中的三分之一一样,二进制的十分之一小数点后面都是死循环,在计算机中是无法明确表示的,这样就导致了精度的丢失但是我们在银行业务里面不能允许任何精度的丢失,这个时候就涉及到了BigDecimal这个类,这里可以参考这个文章进行了解https://blog.csdn.net/tr1912/article/details/79690099...

2021-03-27 11:24:21 273 2

原创 冒泡排序

public static void maopaoSort(int arr[]) {boolean flag=false;//控制比较轮数for(int i=1;i<arr.length;i++) {//每轮比较多少for(int j=0;j<arr.length-1;j++) {if(arr[j]>arr[j+1]) {flag=true;int temp=arr[j+1];arr[j+1]=arr[j];arr[j]=temp;}}System.out.pri

2021-03-26 17:06:52 59

原创 快速排序

快排的代码我也找了很多,这一个是最好理解的,最对上我们的思路的这个快排的思路就是找一个基准点,然后把小于这个基准点的数全部放在左边,大于这个基准的数全部放在右边,然后两边不断递归排序就好了,这就是快排的基本思想.图中代码是我找了很多,最浅显易懂,也是最符合我们核心思想的代码,首先我们快排传入我们需要的数组,左边边界,右边边界,我们这里取i,j两个指针为什么要减一,这里是因为我们下面是do while循环所以要减一和加一操作,如果i<j我们就一直循环找数,左边找比我们基准大的数,右边找比我们基准小

2021-03-11 17:13:25 56

原创 关于jstl中的foreach标签无效

这里转载自https://www.cnblogs.com/yangxdblog/p/9107971.html实际上就是里面web.xml中的版本信息不一致,换上这个转载中的web.xml约束的即可

2021-03-03 17:20:29 594 1

原创 观察者设计模式

按照我的理解,观察者设计模式,最简单好理解的例子就是气象台和观察站,大部分是1对多的关系,一旦气象台的数据进行改变,那么就会通知观察站自己的数据已经发生了改变,也可以理解为货仓,其他小商家进行进货,当仓库有货就会通知所有的小商家来进行购买这里我们用气象台和观察站的例子先上其uml图,因为我们是1对多进行操作,所以我们把观察者对象存入一个arraylist集合中,把集合聚合在我们的气象站中,接口提供三个抽象的方法,注册观察者,删除观察者,以及通知观察者,当我们的气候进行改变,就通过我们的气象站中的通知方

2020-10-08 21:20:49 104

原创 单例模式

饿汉式一般用这两种,一种静态常量一种静态代码块优点:线程安全缺点:类似于立即加载没有延迟加载,所以会造成内存资源的浪费,因为这两种方案都是通过类加载的时候进行创建对象的,而类加载的方法有很多种这里插一点题外话,类加载有哪几种,一种就是我们熟悉的静态方法或者静态域被调用,还有就是对象的创建,也就是对象的实例化,类会被加载,还有一种就是java编程思想中提到的继承,继承的话类加载器会先加载其.class文件,然后如果发现基类,还会去加载其基类,也就是其父类也会被加载,比如下图我们在main方法中只用.

2020-10-08 13:43:11 188 2

原创 select last_insert_id()

有一些要求才能用这个语句,当你设置的表是自增的主键,那么插入记录后会保存该id值,保存之后,就会select 这个bai值并付给一个变量后可以在后面的SQL里面使用,通常用于外键关联。

2020-09-01 23:02:56 180

原创 org.apache.ibatis.exceptions.PersistenceException 可能的错误

今天复习mybatis的时候敲代码的时候,出了一个错误,它上面出现异常,仔细看发现他说数据封装不上去,可能在mapper文件出错,后来我看了我的mapper文件发现都是对的,后来想起之前在学java web的时候,用druid连接池的时候,自己重写方法封装数据进返回的对象的时候,好像系统自动会调用无参数的构造方法,所以后来去我的domain包下看了看,发现的确这里出现了问题,写了有参的构造方法,没有写无参数的构造方法.所以以后写实体类的时候一定要注意写数据的无参的构造方法....

2020-09-01 17:38:32 331

原创 原型模式以及深克隆和浅克隆

原型模式有很多好处:创建比较复杂的对象,无需考虑过程,简化了创建对象的创建过程,同时也能提高效率比如浅克隆的好处就是因为浅克隆克隆的是对象的引用,也就是克隆出来的原来的对象指向同一个内存空间,那么我们只需要修改其中一个,然后其他的也会被修改深克隆可以通过对象流来实现但是一定要注意,涉及到的每个类都需要序列化接口以及实现cloneable接口所以这也算原型模式的一个缺点,而且深克隆的化代码也会复杂...

2020-08-31 23:50:49 323

原创 工厂设计模式

下面图是简单工厂模式类图,以下工厂模式都是关于披萨的制作下面图是工厂方法模式类图,其实就是把抽象类中的方法进行抽象,由其子类进行实现抽象类的创建方法,把实例化对象推延到子类下面图是抽象工厂模式类图,其实就是简单工厂模式的进阶,从单一的工厂变成了工厂簇总结代码就不贴了,当我们设计一个东西,就比如这个披萨订购系统.为了考虑到设计模式中的对扩展开放,对修改关闭,首先在只有北京披萨和伦敦披萨的情况下,我们设计是把对象的创建交给了工厂进行创建,而我们以后修改代码就不用去修改order订单代码,就可以通过修

2020-08-30 23:48:21 83

原创 was actually of type com.sun.proxy.$Proxy21

最后发现是这里传入错了,应该传入的是接口类型,实际上spring动态代理的原因,因为报的异常是实现接口的就使用JDK的动态代理,此时获取到的代理对象是基于接口的;不实现接口bean就是采用cglib代理生成的,所以不用接口。spring会自动识别jdk proxy还是cglib动态代理,而cglib必须依赖于CGLib的类库,所以我们写的时候一定要注意获取的时候一定要返回接口类型才可以...

2020-05-27 22:38:22 288

原创 IAccountDao is not known to the MapperRegistry

今天在用maven进行父子工程创建中的mybatis和spring中间的连接配置文件报了一个异常,其实就是没有把映射配置文件导入进去我这里的错误其实就是多加了一个IAccountDao,如果单配mybatis一定要注意注解和xml的路径有一丢丢区别所以写路径一定要仔细,不要多写了然后顺便提一下mybatis和spring的连接,其实就是配置一下数据源,4个连接数据库的参数,然后配置一下sqlSessionfactorybean工厂,这里为什么不配sqlsession是因为不安全应该还有其他原因,.

2020-05-27 21:09:55 134

原创 springmvc基础知识2

首先是返回值不同的问题,分为三个返回值string void modelandview

2020-05-25 21:08:45 97

原创 关于解决maven工程创建过慢的问题

博主地址(主要参考了这两个博主写得):https://www.cnblogs.com/del88/p/6286887.htmlhttps://www.cnblogs.com/ruiliu21/p/8302951.html只需要利用idea添加一个键值对archetypeCatalog internal这对键值对即可解决,经过查阅资料为什么这样会快速解决呢,idea根据maven archetype的本质实际上就是只用maven archetype:generate这个命令,该命令的参数cat

2020-05-24 11:01:30 141

空空如也

空空如也

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

TA关注的人

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