自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 glibc软链错误导致的事故

思考过程没有问题,只需要把其他/lib64的文件拷贝过来,主要思考其中硬盘格式,怎样访问到,也想过直接把硬盘拔了安装在另一台电脑里面,或者安装操作系统Knoppix在U盘里面操作,最后都放弃采用下面的方式。最后发现还是报bad mount option huge,没有用,依据文章内容,将u盘名称改为CentOS,里面配置文件都改为CentOS,进入救援模式,成功进入,办公室偶尔断网,发现ssh已经链接不上了,将服务器拿过来,重启,发现一直卡在登录界面,无法输入密码,我知道事情已经不简单了。

2023-03-17 16:03:20 625

原创 戴尔电脑安装centos7【踩坑】

因为某种原因需要在戴尔电脑上安装centos7系统,只有一个网卡的解决方案。

2022-07-16 15:04:02 990

原创 23种设计模式之备忘录模式

#备忘录模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。public class MemorandumTest { public static void main(String[] args) { Starter starter = new Starter(); Manager manager = new Manager(); starter.setState("

2022-01-22 14:23:23 172 1

原创 23种设计模式之观察者模式

观察者模式指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。例:利用观察者模式设计一个程序,分析“人民币汇率”的升值或贬值对进口公司进口产品成本或出口公司的出口产品收入以及公司利润率的影响。代码如下:public class ObserveTest { public static void main(String[] args) { Rate rmBrate = new RMBrate(); Compan

2022-01-19 17:26:43 371

原创 23种设计模式之责任链模式

责任链模式定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。假如规定学生请假小于或等于 2 天,班主任可以批准;小于或等于 7 天,系主任可以批准;小于或等于 10 天,院长可以批准;其他情况不予批准;代码如下:public class ChainOfResponsibilityTest { public static void main(String[] a

2022-01-19 11:32:16 196

原创 23种设计模式之策略模式

策略模式该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。以做鱼为例,可以做红烧鱼,水煮鱼,通过环境指定某一种鱼,具体做法由抽象类的实现类来做,且可以随意替换。public class CategoryTest { public static void main(String[] args) { Fish hotFish = new HotFish(); Fish redCookedFish = new Red

2022-01-18 09:44:15 93

原创 23种设计模式之命令模式

命令模式定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。以遥控器为例,我们只需要按一下遥控器的开关按钮,遥控器就会通知到电视,执行开关机操作。代码如下:public class CommandTest { public static void main(String[] args) { Command powerOn = new PowerOn();

2022-01-12 17:26:42 155

原创 23种设计模式之状态模式

状态模式定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。环境 -> 抽象状态 具体状态设置环境 (你中有我,我中有你)以学生成绩状态设计为例,不及格”“中等”和“优秀” 3 种状态,当学生的分数小于 60 分时为“不及格”状态,当分数大于等于 60 分且小于 90 分时为“中等”状态,当分数大于等于 90 分时为“优秀”状态。代码如下:public class StateTest { public static void

2022-01-07 21:00:06 217

原创 23种设计模式之解释器模式

解释器模式解释器(Interpreter)模式的定义:给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。优点:扩展性好。容易实现。缺点:执行效率较低。会引起类膨胀。可应用的场景比较少。代码如下public class InterpreterPatternTest { public static void main(String[] a

2022-01-07 14:28:58 98

原创 23种设计模式之享元模式

享元模式享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。享元模式的本质是缓存共享对象,降低内存消耗。享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。其主要缺点是:为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。读取享元模式的外部状态会使得运行时间稍微变长。pub

2022-01-06 21:52:21 86

原创 23种设计模式之模板方法模式

模板方法模式模板方法模式主要是立足点方法,方法分为以下三种抽象方法:在抽象类中声明,由具体子类实现。具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。依据实际情况对方法进行实现或者重写,或者不动。以网课业务流程为例网课业务,那么创建课程流程为:发布预习资料➡制作课件PPT➡在线直播➡提交课堂笔记➡提交源码➡布置作业➡检查作业。假设检查作业这一项不是必须的。public class Template

2022-01-04 11:34:36 232

原创 23种设计模式之组合模式

组合模式组合模式适用于“部分-整体”的关系。简而言之,通过树形结构来构建。例子以一个课程的树形构建为例。比如,我们有 Java 入门教程、SSM教程、Java设计模式、源码分析、软技能等,而 Java 设计模式、源码分析、软技能也可以属于 Java 架构师系列教程包,每个教程的定价都不一样。但是,这些教程不论怎么组合,都有一些共性,而且是整体和部分的关系,所以可以用组合模式来设计。代码如下public class CourseComponentTest { public static vo

2021-12-31 18:05:05 189

原创 23种设计模式之外观模式

外观模式外观模式主要是为多个复杂的子系统提供一个唯一的入口,它是迪米特法则的典型应用。举个网购的例子,当我购买一件物品时,它会经过支付系统,仓库系统,物流系统,对于用户来说,只需要有一个购买的动作就可以了。代码如下public class AppearanceTest { public static void main(String[] args) { // 客户端调用 Appearance appearance = new Appearance();

2021-12-20 16:25:41 201

原创 23种设计模式之装饰器模式

装饰器模式装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰器模式的主要优点:装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果装饰器模式完全遵守开闭原则有些人早餐可能会吃煎饼,煎饼中可以加鸡蛋,也可以加香肠,但是不管怎么“加码”,都还是一个煎饼。在现实生活中,常常需要对现有产品增加新的功能

2021-12-16 19:53:27 309

原创 23种设计模式之桥接模式

桥接模式桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。举个栗子。车企生产汽车,有不同类型以及不同颜色,例如生产suv,吉普车,轿车,颜色以红色与黄色举例。遵循了里氏替换原则和依赖倒置原则,最终实现了开闭原则,对修改关闭,对扩展开放。桥接(Bridge)模式的优点是:抽象与实现分离,扩展能力强符合开闭原则符合合成复用原则其实现细节对客户透明所以在学习设计模式的时候发现与设计原则在很大

2021-12-15 18:02:12 269

原创 23种设计模式之适配器模式

适配器模式将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。它有三个要素,适配者(Adaptee),适配器(Adaptor)和目标(Target)。他们的关系是目标通过通过调用适配器达到适配者的目的。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。类结构型模式public class ClassAdapterTest { public stat

2021-12-14 17:56:30 381

原创 23种设计模式之代理模式

代理模式代理模式有2种应用场景1.权限控制。2.功能增强。例:一酒厂不直接卖酒,通过代理商来卖酒,代理商进行包装及返点卖给客户。直接上代码public class WineProxyTest { public static void main(String[] args) { WineProxyStore wineProxyStore = new WineProxyStore(); wineProxyStore.sell(); }}int

2021-12-07 20:34:59 238

原创 23种设计模式之建造者模式

建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成。用建造者(Builder)模式描述客厅装修。这里客厅是产品,包括墙、电视和沙发等组成部分。具体装修工人是具体建造者,他们负责装修与墙、电视和沙发的布局。项目经理是指挥者,他负责指挥装修工人进行装修。public class ParlourDecorator { public static void main(String[] args) { try { Decorato

2021-12-05 22:25:56 247

原创 23种设计模式之工厂模式

工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。...

2021-12-02 20:44:08 203

原创 23种设计模式之原型模式

原型模式用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。原型模式有2种实现方式,浅克隆和深克隆。浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。由于 Java 提供了对象的 clone() 方法,所以用 Java 实现原型模式很简单。实现Cloneable接口,重写clone方法。例如,user类: /**

2021-11-20 11:51:34 91

原创 23种设计模式之单例模式

单例模式单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。饿汉式/** * 饿汉式 * @author zwzh_zj */public class HungrySingleton { private static HungrySingleton instance = new HungrySingleton(); private HungrySingleton() { } public static HungrySi

2021-11-17 21:00:52 55

原创 软件设计七大原则之合成复用原则

合成复用原则它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。汽车分类管理程序。汽车按“动力源”划分可分为汽油汽车、电动汽车等;按“颜色”划分可分为黄色汽车和红色汽车等,UML图如下汽车相关类public abstract class Car { Color color; public Car(Color color) { this.color = color; } void move() { }

2021-11-16 20:58:08 495 1

原创 软件设计七大原则之迪米特法则

迪米特法则迪米特法则的定义是:只与你的直接朋友交谈,不跟“陌生人”说话。它强调以下两点:1.从依赖者的角度来说,只依赖应该依赖的对象。2.从被依赖者的角度说,只暴露应该暴露的方法。目的是降低耦合性。例:明星与经纪人的关系实例。明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如与粉丝的见面会,与媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则,uml图如下/** * 媒体公司 * @author zwzh_zj */public

2021-11-16 20:13:26 156

原创 软件设计七大原则之接口隔离原则

接口隔离原则定义:一个类对另一个类的依赖应该建立在最小的接口上接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。例 学生成绩管理程序分析:学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、査询成绩信息等功能,如果将这些功能全

2021-11-15 20:52:08 185

原创 软件设计七大原则之单一职责原则

单一职责原则单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。例1:大学学生工作管理程序。分析:大学学生工作主要包括学生生活辅导和学生学业指导两个方面的工作,其中生活辅导主要包括班委建设、出勤统计、心理辅导、费用催缴、班级管理等工作,学业指导主要包括专业引导、学习辅导、科研指导、学习总结等工作。如果将这些工作交给一位老师负责显然不合理,正确的做法是生活辅导由辅导员负责,学业指导由学业导师负责。uml图如下三个类代码如下:public interface Student {

2021-11-15 14:32:41 504

原创 软件设计七大原则之依赖倒置原则

依赖倒置原则核心思想是:要面向接口编程,不要面向实现编程。例1:顾客购物程序。分析,顾客购物从然后从成都商店和兰州商店购物。uml图如下1.顾客会从很多家商店购物,抽象一个商店接口,public interface Shop { void sell();}2.兰州与成都商店实现shop购买方式public class ChengduShop implements Shop { @Override public void sell() { Syste

2021-11-13 17:26:26 1278

原创 软件设计七大原则之里氏替换原则

里氏替换原则简单描述:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。几维鸟不是鸟分析:鸟一般都会飞行,如燕子的飞行速度大概是每小时 120 千米。但是新西兰的几维鸟由于翅膀退化无法飞行。假如要设计一个实例,计算这两种鸟飞行 300 千米要花费的时间。显然,拿燕子来测试这段代码,结果正确,能计算出所需要的时间;但拿几维鸟来测试,结果会发生“除零异常”或是“无穷大”。几维鸟类重写了鸟类的 setSpeed(doubl

2021-11-13 14:22:22 735

原创 软件设计七大原则之开闭原则

开闭原则简单描述:对扩展开放,对修改关闭。开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。实例1:课程以C语言中文网的教程体系为例,来讲解如何使用开闭原则解决实际问题。创建一个 Java 教程的类 JavaCourse。现在要给 Java 教程做活动,价格优惠。如果修改 JavaCourse 类中的 getPrice() 方法,则会存在一定防线,可能影响到其它地方的调用结果。UML图1.首先创建一个教程接口 IC

2021-11-11 12:02:38 1773

原创 springboot多环境配置

application.yaml配置spring: # 环境 dev:开发环境|test:测试环境|produce:生产环境 profiles: active: @spring.active@ #激活的配置文件resource下新建文件,文件内部写具体配置在pop.xml project下级新增以下代码<profiles> <profile> <id>dev</id>

2021-10-20 17:26:02 48

原创 k8s集群搭建之安装篇

安装kubernetes高可用集群1.安装docker1.1 查看支持的docker版本yum list docker-ce --showduplicates|sort -r1.2 安装dockeryum install -y docker-ce-20.10.7-3.el7开启自启并且启动dockersystemctl enable docker && systemctl start docker1.3 修改docker配置cat > /etc/docker/daem

2021-07-14 17:50:27 501

原创 阿里云自变异病毒处理-clamav

阿里云自变异病毒处理前几天因为yapi的一个漏洞,导致服务器遭受攻击。说一下处理流程。1.通过top查找占用cup和内存高的可疑程序。2.通过进程号找到按照目录,删除文件,停用程序。一开始我就是这么干的,没过多久,阿里云报了一个自变异病毒,我准备去查询进程号,使用netstat,ps,lsof命令我发现不对劲了,没有任何反应登录到服务器查询/bin目录,文件大小不对,可以明确感染文件不止一处,所以需要通过软件进行全盘扫描。linux下比较常见的杀毒工具是clamav,于是决定安装扫描全盘。二、安

2021-07-14 12:22:20 761

原创 k8s高可用集群搭建之概念与基础环境

k8s基础概念1.什么是kubernetes?是一个可移植,可扩展开源的容器管理平台。提供程序的快速部署,维护和扩展的基本机制。2.kubernetes容器编排工具具有哪些优势?a.灵活部署私有云,工业云,混合云虚拟机物理机等。b.完善授权机制,自带审计功能rbac授权,达到相互之间的操作完全隔离。c.复杂均衡支持四层、七层负载均衡d.可扩展性强f.根据节点资源使用情况对pod进行合理调度g.完善的灾备方案用户有多种灾备预警方案,支持备份和容灾,出现故障可以秒级切换h.可以进行动

2021-06-21 17:31:02 643 5

原创 activiti操作之组任务与网关

组任务组任务的存在是指定给特定的一批人去操作任务,例如班长审核,既可以是正班长,也可以是副班长,但是并没有指定某一个人,只要符合条件的都可以去拾取任务,然后完成任务。a.查询组任务 String assignee = "wang"; String definitionKey = "calssAsk"; String taskId = "e8714d9d-8148-11eb-8ede-e0d55e485056"; // 任务查询 Li

2021-03-12 20:13:24 230

原创 activiti操作之流程状态、任务分配及流程变量

一、业务标记与流程的挂起与激活业务标记// 在流程开始时添加业务id,5555是业务标记的idruntimeService.startProcessInstanceByKey("work_over_time","5555");流程的挂起与激活单个挂起:针对流程实例。使用的服务:TaskServiceImpl@Test void processInstanceSuspend(){ // 查询当前运行流程实例 ProcessInstance processI

2021-03-01 14:55:43 2613 1

原创 工作流引擎activiti从陌生到入门

一、创建项目1.创建一个springboot项目,勾选自己需要的依赖,也可以后期在pom.xml添加引入activiti依赖<!--activiti--><dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M4&lt

2021-02-26 11:53:11 312 2

原创 查找算法

查找算法直接查找(遍历的方式查找,效率较低)折半查找(有顺序,类似猜数字大小,确定一个区间)插值查找(与折半查找类型差不多,确定区间范围时的计算方式不同)斐波拉契查找(与折半查找类型差不多,确定区间范围时的计算方式采用黄金分割比例)索引查找(分块索引,倒排索引–文章关键字索引)二叉排序树(二叉查找树)平衡二叉树(通过树的旋转构造一棵平衡二叉树,与哈夫曼树类似)多路查找树(应用,降低磁盘IO)散列函数(简单查找+分布均匀)以上是一些查找算法, 这里以折半查找与散列函数查找为例,至于为什么

2021-02-04 23:47:37 163 1

原创 图:java实现

知人者智,自知者明。人之所以痛苦,是因为无法跨越知道和做到的鸿沟。所以,我们要知道自己能做什么。定义图的范围比较广,类似下图,或者其实树,栈,队列也可以看做是一种特殊的图。图由一些点与线组合而成,我们称这些点为顶点,这些线为边或者弧。本质上图就是通过线来描述各个点之间的关系。图大类分为有向图与无向图。存储方式图有很多中存储方式,数组 + 二维数组存储通过顶点存在数组里面,二维数组内1代表有指向,0代表无指向...

2021-01-25 21:08:30 224 1

原创 哈夫曼树/编码:java实现

哈夫曼树哈夫曼编码

2021-01-18 12:25:06 756 2

原创 树及二叉树:java实现

https://codechina.csdn.net/mirrors/mcrwayfun/java-data-structure/-/blob/master/doc/source/tree/%E6%A0%91.md#6-%E8%8E%B7%E5%8F%96%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%AB%98%E5%BA%A6%E5%92%8C%E5%BA%A6

2021-01-10 16:19:41 175 2

原创 2020总结与2021展望:关于知行合一的思考

人们之所以痛苦,是因为无法跨越知道和做到的鸿沟。        2020真是发生了太多的事儿,对我有非常大的影响,同时对整个世界各国人民影响都非常大,原因大家都知道——新冠疫情嘛。总的来说,今年带过团队,写过代码,出过差,出差回家,还做了一些让自己都觉得自己疯了的事情,现在想来,真是crazy啊。让我深深的对平台和机会有了一些思考,同时,对于坚持也有了自己的定义,我想对我的人生是非常有意义的。经历  &

2021-01-10 15:19:18 295 2

空空如也

空空如也

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

TA关注的人

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