- 博客(62)
- 问答 (4)
- 收藏
- 关注
原创 【设计模式】命令模式(Command Pattren)
命令模式(CommandPattren)属于行为型模式,它又被称做动作(Action)模式或事务(Transaction)模式。命令模式将请求者发送的请求封装为命令对象,这个命令对象将携带请求者的相关信息被传递到接收者,以此来达到请求者和接收者的解耦操作,让对象之间的调用更加灵活。在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适,所以需要使用命令模式。
2023-02-05 22:10:14
845
1
原创 【设计模式】责任链模式(chain of responsibility)
责任链模式(Chain of Responsibility Pattren)属于是行为型模式。该模式构造一系列分别担当不同的职责的类对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称为责任链模式(或者职责链模式)
2023-02-04 17:04:41
600
原创 【Vue】Vue2基本使用
插值语法用于解析标签体中的内容。数据绑定最常见的形式就是使用Mustache语法 (双大括号) 进行文本插值,被Mustache标签包裹的对象的值将会插入Mustache标签的位置,并且,无论何时,绑定的数据对象上发生了改变,插值处的内容都会更新。但是通过使用v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上的其它数据绑定。指令语法用于解析标签(包括标签属性、标签体内容、绑定事件……)。指令 (Directives)是带有 v-前缀。
2022-12-12 21:57:44
1057
原创 【设计模式】代理模式(Proxy Pattern)
代理模式(Proxy Pattern)是最常用的设计模式之一,其根本意义是当客户程序不方便直接访问一个对象时,使用一个代理对象来间接的控制访问该对象。例如当我需要调用A类时,不直接实例化A类而是实例化它的代理对象B类(它们二者应当继承于同一个父类),在B类中持有A类的实例化对象,以此控制B类间接调用A类。
2022-12-08 23:29:13
370
原创 【设计模式】享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)又被称作轻量级模式、蝇量模式,它经典的体现就是对象池。享元模式的根本目的就是"共享单元",让对象能够共享复用,就像共享单车一样,路人甲(客户程序A)骑完路人丙(客户程序B)用,以此减少内存占用。
2022-12-07 22:25:12
329
原创 【设计模式】外观模式(Facade Pattern)
外观模式也被称作门面模式,作用是将客户程序与一组子系统进行解耦,使得客户程序只需要与一个外观类打交道,而不需要与多个子系统类打交道。原理是定义一个单一类(外观类)来处理客户程序需要调用的多个功能类(子系统类),此时客户程序只需要调用该单一类即可完成对多个子系统的调用。不符合开闭原则,如果设计不当,增加新的子系统可能需要修改外观类,继承重写都不合适不能限制客户程序使用子系统,外观模式不能很好地限制客户程序直接使用子系统,如果客户程序对访问子系统做太多的限制就会减少可变性与灵活性
2022-12-06 21:20:18
428
原创 【Hadoop 2.7.1】HDFS Shell操作的简单试验
HDFS提供了多种数据访问的方式,其中,命令行的形式是最简单的,同时也是开发者最容易掌握的方式
2022-12-05 22:30:14
367
原创 【设计模式】装饰器模式( Decorator Pattern)
装饰器(Decorator)模式也可叫包装模式(Wrapper Pattern) ,是为已有功能动态添加更多功能的一种方式。装饰器通过新建装饰类,用来包装原有的类,在保证原有类结构完整的情况下添加新功能。此模式将原有类当做组件,或者为原有类新建一个抽象类当做组件接口,原有类和装饰类通过继承该抽象类来实现关联。当需要使用装饰功能时只需要让装饰类包装原有类的对象即可完成装饰。
2022-11-25 21:09:20
843
原创 【设计模式】组合模式(Composite Pattern)
组合模式通过将一组相似的简单对象按照树形结构组合成一个单一的复杂对象,用以表示“部分-整体”的层次结构,使得客户程序在调用组合对象和单一对象时具有一致性。此时客户程序可以忽略组合对象与单一对象的不同,能够像处理单一对象一样处理组合对象。
2022-11-24 21:55:51
403
原创 【设计模式】过滤器模式(Filter Pattern)
过滤器模式(Filter Pattern)或称标准模式( Criteria Pattern),其目的是通过逻辑运算以解耦的方式,运用一个或多个标准来过滤一个对象列表。
2022-11-23 22:09:50
894
原创 【设计模式】桥接模式(Bridge Pattern)
桥接模式通过将抽象部分与实现部分抽离,使二者的关系有继承转变为聚合关联关系,以此来减少耦合性,让二者能够独立变化与扩展。这里的抽象与实现并不特指abstract和implements,更多是现实生活中所认知的事物。例如:相对一部折叠式的华为手机来说,手机这个类就显得抽象得多,所以可以把手机看做抽象部分,折叠式华为手机看做实现部分。
2022-11-23 22:04:45
325
原创 【设计模式】适配器模式
适配器模式属于结构型模式,主要解决两个已存在的功能相近的接口间不能兼容的问题。在准备将一个接口对接到另一个接口中时,发现另一个接口(目标)与准备对接的接口(适配者)因不兼容而无法正常运行功能时,就可以使用适配器模式来增加一个适配器对接二者。不要说二者谁是主谁是客,只有适配者通过适配器适配目标。当我想把一个功能模块加到另一个模块中时,要加的这个模块就是适配者。
2022-11-22 22:17:09
238
原创 【设计模式】原型模式
原型模式主要是为了解决创建一个新对象时产生的大量资源消耗(如硬件资源或网络资源)问题,它首先记录一个创建好的对象作为原型对象,之后需要创建新对象时直接通过该原型对象的克隆方法快速的复制出一个新对象,这样就跳过了对象的初始化过程,自然减少了初始化的资源消耗。当创建新对象的成本比较大,而同类型的对象间差别不大时,就可以使用原型模式来创建。
2022-11-22 16:40:22
264
原创 【设计模式】单例模式
单例模式属于,是最简单的一种设计模式。当一个类在程序中只需要创建唯一全局对象时(如网站计数类、日志管理类、线程池类……),就可以使用单例模式。单例模式规定一个类只能创建一个实例,之后不能再创建新的实例。所有线程无论何时获取的都是该类的唯一对象,这样做节省了创建一个新对象的资源开销。
2022-11-18 23:27:13
320
原创 【设计模式】工厂模式(Factory Pattern) 与抽象工厂模式(Abstract Factory Pattern)
工厂模式属于构造型模式,是项目中最常用到的一种设计模式。它的主要作用是提供一种简单的创建对象的方式,,只要告诉工厂类指定名字即可,工厂类会在内部创建好该实例后返回给使用者。
2022-11-17 21:24:14
440
原创 UML类图
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切地说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。
2022-11-16 23:47:19
190
原创 SpringBoot——请求头header中的token信息部署在服务器上显示为null
今天发现部署在服务器上的项目一直提示我token验证失败,看日志发现token值是空的。我马上在本地进行了测试,可本地却是正常的,心态顿时不好了。
2022-11-08 21:48:12
1819
原创 数据结构——堆排序(C语言)
昨天裸考软考,下午有一题就是堆排序。我21年的时候学过堆排序,可到现在全忘光了,结果就是面对那题发呆良久,脑子里始终想不起堆排序的核心流程,真是后悔莫及,现在重新来复习一遍堆排序。
2022-11-06 21:59:56
1399
原创 [python]用flask框架搭建微信公众号的后台
最近用python写了点爬虫,为了要让爬取的数据能够随时显示在我眼前,并实时根据我的指令返回数据。于是采用微信公众号做这个显示窗口,既能发送指令也能显示简单的相关数据。
2022-11-06 13:39:36
2507
2
原创 Python无需import自动加载指定包路径中所有python文件及其中的类和方法
我需要更新我的公众号,使它具备查询课表、查询电费及查询未完成作业的功能。这些功能使用爬虫实现,如果写在一两个文件里就太杂了,为进行解耦和便于扩展功能,准备更新下项目架构。具体是将每个功能写成一个类,然后通过分配器来决定实现哪个功能。当接收用户的数据后,经过分配器调用所有的功能,然后由每个功能的解析器解析用户文本,如果符合本功能就继续执行,直到返回结果,如果不符合则返回空,让分配器继续执行下一个功能。
2022-11-02 15:30:46
1028
原创 nginx配置反向代理时的路径问题
新搞了台服务器,开始部署下项目,但是使用域名加端口访问很不给力,决定使用Nginx的反向代理,统一到443端口。
2022-10-28 16:28:46
4417
1
原创 LeetCode(31题)——下一个排列
给定长度为n的数组,每位数取0-9之间的值,将这个数组视为一个长整数,通过调换元素位置来找到一个比它大的最小值,也就是大于它的,如果没有比它大的值则进行升序排列例如[3,2,1,5,4] 置换得到[3,2,4,1,5]
2022-10-14 17:40:08
246
原创 IDEA+Tomcat——前端输入数据乱码问题
给别人远程部署项目的时候,发现比较老的项目会出现接收前端数据是乱码的问题,但这个项目在我自己的电脑上却是正常的,通过对比发现,IDEA版本或Tomcat版本不同及过低是造成此问题的主要原因
2022-10-11 17:49:01
1388
1
原创 Linux下执行python定时任务找不到模块的解决方法
首先,使用指令 python script.py 可以执行然后,直接使用指令 ./script.py 找不到模块猜测,第二句python命令是找到的是/usr/bin/python这个软连接地址,而不是真正的python所在位置,所有无法找到存在于python真实地址下的模块所以,我使用whereis python3找到我的真实python路径:/opt/python38/bin/python3.8尝试了下,运行成功!现在,我可以在py脚本第一行声明真实路径还可以直接在crontab
2021-11-05 23:54:23
1046
原创 MySql忘记密码了怎么办?
忘记本地mysql密码后的操作第一步 跳过原密码操作:在mysql安装路径(如C:\Program Files\MySQL\MySQL Server 5.7)下的my.ini配置文件下添加skip-grant-tables提示:如果在mysql安装路径没有找到my.ini文件,则将需要自己创建my.ini并复制粘贴以下内容:[mysqld]basedir=F:\mysql-8.0.11-winx64datadir=F:\mysql-8.0.11-winx64\data port = 3306
2021-08-03 19:56:08
60
原创 数据结构 队列的构建(C语言)
顺序结构构建队列/*ADT 队列(Queue)Data ……Operation Init_Queue() 初始化队列 In_Queue(*q,e) 元素队尾入队 Out_Queue(*q) 队头元素出队 Get_Queue(q) 返回队头元素 Empty_Queue(q) 空返回1 非空返回0 Len_Queue(q) 长度 Put_Queue(q) 从前往后输出当前队列*///顺序结构队列#define QUEUE_MAXSIZE 100typedef struct Qu
2021-04-12 20:11:04
429
原创 数据结构 栈的构建(C语言)
顺序结构构建栈/* ADT 栈(Stack) Data …… Operation Init_Stack() 初始化,建立一个空栈 Destroy_Stack(*s) 若栈存在,销毁它 Clear_Stack(*s) 清空栈 Stack_Empty_Stack(s) 栈为空返回true,非空返回false Get_Top_Stack(s) 若为非空栈,返回栈顶元素 Push_Stack(*s,e) 元素入栈 Pop_Stack(*s) 删除栈顶元素并返回它 Leng
2021-04-12 20:08:50
1701
原创 数据结构 顺序结构线性表(C语言)
typedef struct SeqList{ int *data; int length; int max_size;}SeqList;typedef struct LinkList { SeqList link_list;};//初始化线性表//返回一个数据大小为size的空的线性表SeqList Init_List(int max_size) { SeqList ll; ll.data = calloc(max_size,sizeof(int)); ll.lengt.
2021-04-07 19:13:47
83
原创 数据结构 链式线性表的构建(C语言)
//线性链表结构typedef struct Node{ int data; struct Node *next;}Node;typedef struct LinkedList { Node* head_node; Node* current_node;}LinkedList;//初始化LinkedList* Init_Linked() { LinkedList *ll = malloc(sizeof(LinkedList)); Node *head_node=malloc(s
2021-04-07 19:12:08
624
原创 数据结构 斐波那契查找法(C语言)
斐波那契查找法将生成一个斐波那契数组来做为目标数组的长度、中心点,使中心点不再在中间点而在黄金分割点上。如目标数组长度为11,那么将生一个斐波拉契数列[1,1,2,3,5,8,13]将目标数组的长度增加到F[6]=13的长度,新增的空间的值都为数组最后一个数此时目标数组的中心点就是8,前部分为8,后部分为5在前部分(8)找的话中心点变为F[5-1] =F[4] =5在后部分(5)找的话中心点变为F[5-2] =F[3] =3斐波那契查找法其实和折半查找法一样,只不过斐波那契查找法规定中心点在
2021-03-28 15:53:33
1275
原创 数据结构 折半查找法(C语言)
//*arr:目标数组的指针//lenght:目标数组长度//key:要查找的值int BinarySearch(int *arr,int length,int key) { //前指针与后指针 int low=0 ,high=length; //中心指针,计算公式如下 int mid = (high+low)/2;//low + (high/low)/2 可以防止数据溢出 //前指针不大于后指针则一直循环 while (!(low>high)) { if (arr[mid]
2021-03-26 16:35:29
551
原创 数据结构 顺序查找法(C语言)
//*arr:目标数组的指针//lenght:目标数组长度//key:要查找的值int Search(int *arr,int lenght, int key) { //定义指针i,准备循环数组找到关键字 int i; //如果指针i小于数组长度并且当前值不等于关键字则循环 for (i = 0; i < lenght && key != arr[i]; i++); //指针i等于数组长度,证明循环数组一整遍都未找到关键字,返回-1 if (i == lenght)
2021-03-26 16:17:06
685
原创 SpringBoot BeanCreationException: Error creating bean with name ‘sqlSessionFactory‘……
service、mapper都看了,确定没错……最后发现是用了逆向工程的原因,连续运行了两次逆向工程导致的错误解决方法:把mapper相关内容的全部删除后再重新运行逆向工程我删除了一下文件再次运行逆向工程:结果成功!...
2021-03-06 03:20:32
515
原创 我的RecyclerView在旋转屏幕后未填满屏幕的解决办法
发现旋转屏幕时RecyclerView组件的宽度未发生变化 后来尝试修改了下布局的方式就解决了//recyclerView.setLayoutManager(new LinearLayoutManager(root.getContext()));recyclerView.setLayoutManager(new GridLayoutManager(root.getContext(),1));//将布局管理改成GridLayoutManager就可以了...
2020-08-26 17:03:22
412
1
空空如也
npm run dev报错 node不是内部命令
2020-11-03
npm run dev报错node不是内部命令
2020-11-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人