
Java
改变自己2022
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Inet6AddressImpl.lookupAllHostAddr异常
使用第三方sdk接口时出现以下错误java.net.Inet6AddressImpl.lookupAllHostAddr应该是获取本机ip的逻辑的时候根据hostname获取不到导致错误。配置了就好了。解决办法:vim /etc/hosts文件绑定主机名和ip即可查看主机命令:hostname,ip:ifconfig...原创 2021-08-25 16:46:31 · 3580 阅读 · 0 评论 -
Idea使用问题 Failed to save settings. Please restart IntelliJ IDEA
问题描述idea使用的时候突然。在每次编辑文件之后,ctril+s 保存文件的时候报错14:23 Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA问题解决网上查说是插件插件identifier highlighter 导致的。但是我卸载之后重启。还是没解决。莫名其妙突然出现。我也没做啥配置,怪操作。突然想到运行了一个后端应用。日志一直在刷。果然看了下磁盘占用情况。E盘被占满。删了日志原创 2021-03-23 14:31:10 · 682 阅读 · 0 评论 -
中介者模式17
概述基本介绍中介者模式(Mediator Pattern)。用一个中介对象来封装一系列的对象交互。中介者使各个对象直之间不需要显式相互引用,从而使其耦合松散,而且可以独立地改变它们的交互。中介者模式属于行为型模式。有利于代码维护比如MVC模式。Controller 就是中介者角色原理类图案例智能家庭项目:智能家庭包括各种设备,闹钟,咖啡机,电视机,窗帘等主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自原创 2021-03-13 08:39:57 · 116 阅读 · 0 评论 -
观察者模式16
概述观察者模式类似订牛奶:1)奶站/气象局:Object2)用户/第三方网站:ObserverSubject:registerObserver() 注册removeObserver() 移除notifyObservers() 通知所有注册的用户,根据不同需求,可以更新数据。让用户来取,也可能是实施推送。Object: 接收输入update()对象之间多对一依赖的一种设计方案。被依赖的对象位subject。依赖的对象位observer。Subject通知Observer变化。比如奶站是Su原创 2021-03-13 07:26:50 · 90 阅读 · 0 评论 -
迭代器模式
概述Iterator Pattern 行为型模式如果集合元素是用不同的方式实现的,有数组,还有java的集合类或者还有其他方式,当客户端需要遍历这些集合元素的时候就要使用多种遍历方式。会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器模式提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示。原理类图Iterator :迭代器接口ConcreteIterator: 迭代器实现类,对于不同类型集合,不同的实现类Aggregate: 统一聚合接口。返回一个原创 2021-03-11 22:22:42 · 83 阅读 · 0 评论 -
String replaceAll()踩过的坑。
问题描述想做一个模板动态替换的功能于subTime已转发给{subTime}已转发给subTime已转发给{receiverOrgName}receiverName({receiverName}(receiverName({receiver})${} 中为动态替换变量看起来用String的replaceAll()可以轻松搞定。然而还是太年轻。由于#,$,{都是特殊字符。一开始没有转义,就会报如下的异常java.util.regex.PatternSyntaxException: Illega原创 2021-03-10 23:24:09 · 615 阅读 · 0 评论 -
设计模式学习之十四-访问者模式
概述需求将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价。评价有不同的种类(成功,失败)。传统方案方案扩展性差,当新增评价时,Man和Woman都需要改动。原理类图访问者模式基本Vistor Pattern 封装一些作用于某种数据结构的各元素的操作,他可以在不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构于数据操作分离,解决数据结构和操作耦合性问题访问者模式的基本工作原则:在被访问的类里面加一个对外提供接待访问者的接口访问者模式原创 2021-03-09 22:49:43 · 124 阅读 · 0 评论 -
设计模式学习之十三-命令模式
概述需求一套智能家电,电灯,风扇,冰箱,洗衣机不同厂家的分别需要不同app控制希望一个app控制所有的家电需求实现原理图简单代码实现https://gitee.com/zhipanwang/code4java/tree/master/design/src/main/java/com/wang/command基本Command Pattern 。软件设计中,我们经常需要想某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个。命令模式可以实现请求发送者和请求原创 2021-03-03 23:41:37 · 215 阅读 · 1 评论 -
设计模式学习之十二-模板方法模式
概述豆浆制作问题制作豆浆的流程,选材–添加配料—浸泡—豆浆机中打碎通过不同的配料。可以制作不同口味的豆浆选材。浸泡,和打碎这几个步骤对于制作每种口味的豆浆都是一样的通过模板方法模式完成基本介绍模板方法模式(Template Method Pattern) 又叫模板模式。在一个抽象类公开定义执行它的方法的模板。它的子类可以按需重写方法实现。但调用将以抽象类中定义的方式进行。模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构,就可以重定义该算原创 2021-03-03 22:04:08 · 164 阅读 · 1 评论 -
设计模式学习之十一-代理模式
简述代理模式(Proxy)代理模式:为一个目标对象提供一个替身,以控制对这个对象得访问。即通过代理对象访问目标对象。这样做得好处:可以在目标对象实现得基础上增加额外得功能操作。即扩展目标对象得功能。被代理得对象可以是远程对象,创建开销大得对象或需要安全控制得对象。代理模式有:静态代理,动态代理(JDK代理),Cglib代理(可以在内存中动态创建对象,而不需要实现接口)代理模式示意图静态代理静态代理在使用时,需要定义接口或者父类,被代理对象(目标对象)与代理对象一起实现相同的接口或者继承相原创 2021-03-03 20:33:52 · 131 阅读 · 0 评论 -
Mysql实现create_time,update_time自动填写
表里面的创建时间create_time,更新时间modify_time逻辑每次代码里面设值比较麻烦,利用数据库自带逻辑可以简单实现该需求:ALTER TABLE alarm_situation MODIFY COLUMN create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’;ALTER TABLE alarm_situation MODIFY COLUMN modify_time TIMESTAMP NOT NU原创 2021-02-24 15:56:08 · 550 阅读 · 0 评论 -
设计模式学习之十-享元模式
1 概述Flyweight Pattern 蝇量模式 运用共享技术有效地支持大量细粒度得对象常用于系统底层开发,解决系统得性能问题,例如 数据库连接池,里面都是创建好得连接对象,在这些连接对象有我们需要得则直接拿过来用,避免重复创建享元模式能够解决重复对象得内存浪费得问题,当系统中有大量相似对象,需要缓冲池时,不需要总是创建对象,可以从缓冲池里面拿。享元模式经典应用场景池技术。String常量池,数据库连接池,缓冲池。2 需求小型外包项目,给客户A做一个产品展示网站,客户A得朋友感觉效原创 2021-02-09 19:48:49 · 189 阅读 · 2 评论 -
设计模式学习之九-外观模式
1 概述Facade 外观模式 ,也叫过程模式,外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需要跟这个接口发生调用,而无需关心这个子系统得内部细节。2 需求3 原理类图外观类:为调用端提供统一得调用接口。外观类知道哪些子系统负责处理请求,从而将调用端得请求代理给适当得系统对象。调用者,外观接口得调用者。子系统得集合:处理Facade对象指派得任务。功能得实际提原创 2021-02-09 18:30:52 · 158 阅读 · 0 评论 -
设计模式学习之九-组合模式
1概述Composite Pattern组合模式,又叫部分整体模式。它创建了对象组的树形结构2 需求要在一个页面中展示出学校的院系组成,一个学校有多个系。例如:-----清华大学-----计算机系计算机科学与技术软件工程网络工程信息工程学院通信工程信息工程原理类图3 原理类图Component:这是组合中对象声明接口,在适当情况下,实现所有类共有的接口默认行为用于访问和管理Component子部件,Component可以是抽象类或者接口Leaf:在组合中表示叶子节点,叶子原创 2021-02-08 21:53:33 · 113 阅读 · 0 评论 -
设计模式学习之八-装饰者模式
1概述1.1 工作原理动态的将新功能附加到对象上,在对象功能扩展方面,他比继承更有弹性,装饰着模式体现了ocp就像打包一个快递:主体:被装饰者包装:2 需求星巴克咖啡订单项目咖啡种类/单品咖啡:意大利浓咖啡,美式咖啡,无因咖啡调料:Milk,Soy,Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性,改动方便,维护方便使用OO计算不同咖啡的费用,客户可以点单品咖啡,也可以单品咖啡+调料组合3...原创 2021-02-08 20:12:57 · 119 阅读 · 0 评论 -
设计模式学习之七-桥接模式
概述原理原创 2021-02-06 10:15:35 · 98 阅读 · 0 评论 -
设计模式学习之六-适配器模式
概述Adapter Pattern适配器模式将某个类得接口转换为客户端期望得另一个接口表示,主要得目的是兼容性,让原本因接口不匹配不能一起工作得两个类可以协同工作。别名为Wrapper。属于结构型模式,就像现实中得转换器。适配器主要分为3类:类适配器模式,对象适配器模式,接口适配器模式工作原理将一个类得接口转换成另一种接口。让原本不兼容得类可以兼容从用户得角度看不到被适配器,是解耦得用户调用适配器转化出来得目标接口方法,适配器再调用被适配者得相关接口方法。用户收到反馈结果,感觉只是和目标原创 2021-02-05 15:02:42 · 137 阅读 · 0 评论 -
设计模式学习之五-建造者模式
概述Builder Pattern 又叫生成器模式将复杂对象的建造过程抽象出来,使这个抽象的不同实现方式可以构造出不同表现得对象。建造者模式是一步一步创建一个复杂得对象,它允许用户只通过指定复杂对象得类型和内容就可以构建它们,用户不需要直到内部得具体构建细节。四个核心角色:Product 产品角色Builder 建造抽象ConcreteBuilder 建造者Director 指挥者1 需求盖房子:打桩,砌墙,封顶房子分为普通房,高楼,别墅传统方式:继承方式,client原创 2021-02-05 12:31:58 · 125 阅读 · 0 评论 -
设计模式学习之四-原型模式
概述Java中Object类是所有类的根类,Object有一个clone()方法。该方法可以将一个java对象复制一份,但是需要实现接口Cloneable,该接口表示该类能够复制且具有复制的能力== 原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。案例一只羊tom,姓名:tom年龄:1颜色:白色编写程序创建和tom羊属性完全相同的10只羊。—利用原型模式实现。模式类图Prototype:原型类,声明一个克隆自己的接口ConcretePrototype:具体原创 2021-02-05 10:47:03 · 108 阅读 · 0 评论 -
设计模式七大原则
1.设计模式的目的1代码可重用性2可读性3 可扩展4可靠性5 高内聚,低耦合2.设计模式七大原则单一职责接口隔离依赖倒置里氏替换开闭原则迪米特法则合成复用原则2.1单一职责原则一个类只负责一项职责,降低类的复杂度。提高可读性。降低变更带来的风险。2.2 接口隔离原则Interface Segregation Principle客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。2.3依赖倒置高层模块不应该依赖低层模块抽象不应该依赖细原创 2021-02-04 09:42:42 · 97 阅读 · 0 评论 -
设计模式学习之三抽象工厂模式
概念定义一个interface用于创建相关或有依赖关系的对象族。而无需指明具体的类。抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。模式类图用一个接口定义创建对象的方法。让工厂类实现该接口。当使用者需要用对象时,聚合该接口即可。...原创 2021-02-04 22:43:44 · 127 阅读 · 0 评论 -
设计模式学习之二-工厂方法模式
概述定义一个创建对象的抽象方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类。类图说明把createPizza()方法抽象。下沉到子类去实现,关联需要使用的对象。原创 2021-02-04 18:22:19 · 91 阅读 · 0 评论 -
设计模式学习之一-简单工厂模式
概述简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。定义了一个创建对象的类,由这个类来封装实例化对象的行为。需要大量创建某类或者某批对象使用工厂模式。类图使用者(OrderBean)使用的对象(Bean)不直接创建,而是通过工厂类(SimpleFactory)获得,这样在后续(Bean)再扩展就更方便,只需要修改工厂类。使用方直接通过工厂对象获取到实例即可使用。...原创 2021-02-04 17:52:46 · 114 阅读 · 0 评论 -
设计模式学习之-单例模式
概念采取一定的方式保证整个软件系统中,保证某一个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。1饿汉式1.1饿汉式-静态常量) 代码package com.wang.design.singleton;import java.io.FileInputStream;/** * 饿汉式(静态变量) * 有点:1.简单,没有线程同步问题 * 缺点:类装载时就实例化,容易造成内存浪费 * * @author WangZhiPan * @date 2021/2/4 12:0原创 2021-02-04 13:00:46 · 117 阅读 · 1 评论 -
01设计模式学习之-概述
本质提高软件维护性,通用性,扩展性,分类1. 创建型模式:单例模式,抽象工厂模式,原型模式,建造者模式,工厂模式2. 结构型模式:适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式3. 行为型模式:模板方法模式,命令模式,访问者模式,迭代器模式,中介者模式,备忘率模式,解释器模式,状态模式,策略模式...原创 2021-02-04 11:55:00 · 94 阅读 · 0 评论 -
@Value的使用
what?一个注解,可以通过配置为系统中变量注入值。how?在对象属性使用@Value注解获取配置值package mabatispluslearn;import mabatispluslearn.com.wang.mp.config.UserConfigProperties;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Value;import..原创 2020-07-03 14:40:37 · 484 阅读 · 1 评论 -
注解@ConfigurationProperties使用方法
what?@ConfigurationProperties 是一个配置注解,在spring boot中大量使用。该注解可以使用在类和方法上面。how?1 配置在类上1.1 配置类编写需要在容器中实例化使用,所以要加注解@Componentpackage mabatispluslearn.com.wang.mp.config;import org.springframework.boot.context.properties.ConfigurationPropertie..原创 2020-07-03 11:28:24 · 2574 阅读 · 0 评论 -
注解简单理解
注解在spring框架中经常使用。java从1.5开始支持注解。注解的理解:注解是什么?从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。注解怎么用?@XXXXX定义...原创 2020-04-07 18:47:10 · 429 阅读 · 0 评论 -
java可变参数的简单理解与使用
可变参数是jdk5支持的。方法中可以设定不定个数的参数。这些参数需要同类型。使用方式,在定义方法时,参数类型后跟三个'.':function(type... argname){}使用的时候需要遍历,可以传数组或者分开传参。package com.wang.changeable;import java.util.ArrayList;import java.util.List;...原创 2020-04-07 10:34:25 · 182 阅读 · 0 评论 -
springmvc--乱码问题
前台传入中文得到乱码index.jsp中post提交name到服务端:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>$Title$</title> </head> <...原创 2020-04-04 16:42:36 · 162 阅读 · 0 评论 -
springmvc的重定向和转发
重定向和转发默认的是forward方式,显式指定重定向:redirect @RequestMapping("/testRedirect") public String testRedirect(Model model){ model.addAttribute("msg","redirectTo...");// 不能直接重定向到w...原创 2020-04-04 13:17:33 · 235 阅读 · 0 评论 -
springmvc-01原理理解
springmvc的执行过程理解spring提供一个servlet 做了分发联结各个模块的功能。开发时只需要关注model和vew入门程序:1.新建maven项目2.导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0...原创 2020-04-02 11:21:04 · 141 阅读 · 0 评论 -
spring-mybatis-事务
事务ACID的理解:原子性:事务是不可分割的工作单位。要么都发送,要么都不发生。一致性:事务前后数据的完整性必须保持一致。事务下面可能有多个子操作,事务前后的数据状态要一致,例如转账,总钱数是不会发生改变的。隔离性:其他事务不能干扰本事务,当一个事务开启,那么这些数据被独占,该事务关闭之前,其他事务不能操作这些数据。持久性:事务结束后不再发生改变。除非另外的事务进行操作。...原创 2020-04-01 12:22:06 · 132 阅读 · 0 评论 -
Mybatis 学习:配置
mybatis-config.xml详细可以参考:https://mybatis.org/mybatis-3/zh/configuration.html#配置顺序:"(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plug...原创 2020-03-25 17:04:36 · 86 阅读 · 0 评论 -
Mybatis学习
步骤:环境搭建1 配置文件pom.xmlmybatis-config.xml2 工具类编写mybatis使用1.写接口2.映射文件,sql3.测试映射文件UserMapper.xml<!-- id对应的dao的方法--><!-- resultType:结果类型--><!-- paramete...原创 2020-03-24 19:36:16 · 209 阅读 · 0 评论 -
Mybatis学习
mybatis中文参考文档路径:https://mybatis.org/mybatis-3/zh/getting-started.html***Mapper.xml文件找不到问题maven项目,执行访问mysql数据库报如下错误:Caused by: org.apache.ibatis.exceptions.PersistenceException:### Erro...原创 2020-03-24 15:57:07 · 110 阅读 · 0 评论 -
maven学习记录
mvn compile 编译mvn clean 清除targetmvn test 单元测试mvn package 打包命令mvn install 安装生成的jar到本地仓库中,以便其他项目引用也可以组合使用:mvn clean installmvn clean pachage....myeclipse 中maven插件执...原创 2020-03-23 11:58:02 · 132 阅读 · 0 评论 -
单例模式
单例模式针对java的实例。单例体现在单,保证在程序执行过程中,只产生一个java实例。需求实现步骤:1 .私有化构造方法,不允许通过构造方法随意生成类实例。2.提供自己的静态方法,以返回一个类实例。饱汉式:public class SingleTon{ private SingleTon(){ }; public static fin...原创 2020-01-13 21:27:01 · 78 阅读 · 0 评论 -
Session对象
得到session:HttpServletRequest.getSession()1.获取名称为JSESSIONID的cookie值。2.没有则创建新的HttpSession对象,分配一个唯一的SessionId,并且向客户端写一个名称为JSESSIONID的cookie3.如有,获取cookie的值,根据id从服务器中找到HttpSession对象。 找到...原创 2020-01-07 22:19:00 · 210 阅读 · 0 评论 -
Cookie对象
1 概述Cookie是由客户端保存和携带的---所以属于客户端技术。cookie: 是servlet发送到Web浏览器的少量信息,cookie是通过HttpServletResonse#addCookie方法将cookie发送到浏览器。该方法将字段添加到HTTP响应头。大小限定为4KB,每台20个,总共300个。服务器获取方式:HttpServletRequest#get...原创 2020-01-07 15:04:38 · 207 阅读 · 0 评论