自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 【设计模式】命令模式

观察者模式观察者模式的定义定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于他的对象都会得到通知并被自动更新Subject:目标对象,通常具有如下功能一个目标可以被多个观察者观察目标提供对观察者注册和退订的维护当目标的状态发生变化时,目标负责通知所有注册的、有效的观察者Observer:定义观察者的接口,提供目标通知时对应的更新方法,这个更新方法进行相应的业务处理,可以在这个方法里面回调目标对象,以获取目标对象的数据ConcreteSubject:具体

2022-05-10 10:00:24 154

原创 【设计模式】观察者模式

观察者模式观察者模式的定义定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于他的对象都会得到通知并被自动更新Subject:目标对象,通常具有如下功能一个目标可以被多个观察者观察目标提供对观察者注册和退订的维护当目标的状态发生变化时,目标负责通知所有注册的、有效的观察者Observer:定义观察者的接口,提供目标通知时对应的更新方法,这个更新方法进行相应的业务处理,可以在这个方法里面回调目标对象,以获取目标对象的数据ConcreteSubject:具体

2022-04-26 19:11:23 140

原创 【设计模式】代理模式

代理模式代理模式的定义为其他对象提供一种代理以控制对这个对象的访问Proxy:代理对象实现与具体的目标对象一样的接口,这样就可以使用代理来代替具体的目标对象。保存一个指向具体目标对象的引用,可以在需要的时候调用具体的目标对象。可以控制对具体目标对象的访问,并可以负责创建和删除它Subject:目标接口,定义代理和具体目标对象的接口,这样就可以在任何使用具体目标对象的地方使用代理对象RealSubject:具体的目标对象,真正实现目标接口要求的功能/** 抽象的目标接口,定

2022-03-24 17:23:43 612

原创 【设计模式】中介者模式

中介者模式中介者模式的定义用一个中介对象来封装一系列的对象交互,中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互应用中介者模式来解决问题的思路多个对象需要相互引用,从而导致对象之间紧密耦合,不利于对象的修改和维护Mediator:中介者接口,在里面定义各个同事之间交互需要的方法,可以是公共的通信方法,比如changed方法,大家都用,也可以是小范围的交互方法ConcreteMediator:具体的中介者实现对象,它需要了解并维护各个同事对

2022-03-19 10:05:28 117

原创 【设计模式】原型模式

原型模式原型模式的定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象Prototype:声明一个克隆自身的接口,用来约束想要克隆自己的类,要求他们都要实现这里定义的克隆方法ConcretePrototype:实现Prototype接口的类,这些类真正实现了克隆自身的功能Client:使用原型的客户端,首先要获取到原型实例对象,然后通过原型实例克隆自身来创建新的对象实例/**声明一个克隆自身的接口*/public interface Prototype {/**

2022-03-17 10:32:00 307

原创 【设计模式】生成器模式

生成器模式生成器模式的定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示要实现同样的构建过程可以创建不同的表现,那么一个自然的思路就是先把构建过程独立出来,在生成器模式中把它称为指导者,有它来指导装配过程,但是不负责每步具体的实现。当然,光是有指导者是不够的,必须要有能具体实现每步的对象,在生成器模式中称这些实现对象为生成器Builder:生成器接口,定义创建一个Product对象所需的各个部件的操作ConcreteBuilder:具体的生成器实现,实现各个

2022-01-24 15:37:42 249

原创 【设计模式】抽象工厂模式

在这里插入代码片

2022-01-19 15:35:31 231

原创 【设计模式】工厂方法模式 续

工厂方法模式与IoC/DIIoC Inversion of Control 控制反转DI Dependency Injection 依赖注入对于IoC/DI的问题参与者都有谁:一般都有三方参与者,一个是某个对象;另一个是IoC/DI的容器;还有一个是某个对象的外部资源都依赖于谁:某个对象依赖于IoC/DI的容器为什么需要依赖:对象需要IoC/DI的容器来提供对象需要的外部资源谁注入于谁:IoC/DI的容器注入某个对象到底注入什么:注入某个对象所需要的外部资源谁控制谁:IoC/DI的容器

2022-01-10 19:48:20 238

原创 【设计模式】工厂方法模式

工厂方法模式

2022-01-07 20:36:46 92

原创 【设计模式】单例模式

单例模式单例(SIngleton)模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点在Java中单例模式又分为两种模式,分别为懒汉式和饿汉式,两个效果相同,只是书写方式有略微的差异懒汉式public class Singleton { // 定义一个变量来存储创建好的类实例 private static Singleton uniqueInstance = null; // 私有化构造方法,可以在内部控制创建实例的数目 private Singl

2022-01-06 17:46:11 273

原创 【设计模式】适配器模式

2022-01-03 21:04:16 153

原创 【设计模式】外观模式

外观模式(Facade)定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用public interface AModuleApi { public void testA();}public class AModuleImpl implements AModuleApi { public void testA() { System.out.println("现在在A模块中操作testA方法");

2021-12-31 17:16:38 258

原创 【设计模式】简单工厂

设计模式之简单工厂模式

2021-12-30 20:34:09 149

转载 领域模型中的四种模型

失血模型简单来说,就是domain object只有属性的getter/setter方法,没有任何业务逻辑。贫血模型简单来说,就是domain ojbect包含了不依赖于持久化的领域逻辑,而那些依赖持久化的领域逻辑被分离到Service层。Service(业务逻辑,事务封装) --> DAO ---> domain object这种模型的优点:1、各层单向依赖,结构清楚,易于实现和维护2、设计简单易行,底层模型非常稳定这种模型的缺点:1、domain obje

2021-12-17 10:42:08 349

原创 对象术语(PO/POJO/VO/BO/DAO/DTO/领域模型)

PO(persistant object)持久对象 理解为DAO层,通常也就是写在modal包中的model VO(value object)值对象/view object表现层对象 理解为view层 BO(business object)业务对象 关于BO主要有三种概念 只包含业务对象的属性 只包含业务方法 两者都包含 DTO(Data Transfer Object)数据传输对象 理解为controller层 用于需要跨进程或远程传输时,他不应该包含业

2021-12-17 10:41:02 372

原创 基于ant-design-vue的分页Selector

因为要做一个用户分页选择器,今天封装了一个,感觉用起来还挺简单方便的template部分<template> <a-select v-model="value" :placeholder="placeholder" :allow-clear="true" @change="chooseOption"> <div slot="dropdownRender" slot-scope="menu"> <v-nodes

2021-07-16 16:29:50 1526 1

原创 Django部分知识点-富文本-缓存-图片上传-中间件-面向切面编程等

静态文件配置在setting.py中最底下有一个叫做static的文件夹,主要用来加载一些模板中用到的资源,提供给全局使用这个静态文件主要用来配置CSS,HTML,图片,字体文件等STATIC_URL = '/static/'STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static')]之后在模板中,首先加载静态文件,之后调用静态,就不用写绝对全路径了图片上传文件存储在request.FILES属性中form表单上传文

2021-04-15 20:41:52 109

原创 django-rest-framework 中的model操作

迁移分两步实现生成迁移文件执行迁移文件迁移文件的生成根据models文件生成对应的迁移文件根据models和已有迁移文件差别生成新的迁移文件执行迁移文件前去迁移记录中查找那些文件未迁移过app_label + 迁移文件名字执行未迁移的文件执行完毕,记录执行过的迁移文件重新迁移删除迁移文件删除迁移文件产生的表删除迁移记录模型关系1:1应用场景用于复杂表的拆分扩展新功能Django中的OneToOneField使用时

2021-04-12 21:11:01 378

原创 Session交互、token、CSRF、算法

session交互:服务端会话技术数据存储在服务器中默认Session存储在内存中Django中默认会把Session持久化到数据库中Django中Session的默认过期时间时14天主键是字符串、数据是使用了数据安全使用的base64在前部添加了一个混淆字符串Session依赖于Cookieget(key, default=None) 根据键获取会话的值clear() 清除所有会话flush() 删除当前的会话数据并删除会话的cookiedelete request[‘

2021-04-12 21:09:39 177

原创 django ViewResponse

django ViewResponse;HttpResponse:属性: content 返回的内容 charset 编码格式 status_code 响应状态码 content-type MIME类型 方法: init 初始化内容 write(xx) 直接写出文本 flush() 冲刷缓存区 set_cookie(key,value=”xx”,max_age=None,exprise=None) delete_cooki

2021-04-09 21:41:54 152

原创 Django的基本使用

数据操作: 创建数据库: mysql -uroot -p123456 create database xxx charset=utf8; 1、级联查询一对多:#通过学生获取班级信息student = model.Student.objects.get(pk=1)grade = student.s_grade#通过班级获取所有学生信息grade = model.Grade.objects.get(pk=1)students = grade.stu

2021-04-08 20:19:03 105

原创 Django基本使用

MTV简单流程: 创建新的App:python manage.py startapp appname 在INSTALL_APPS中注册 在新App中创建路由(分发路由) 在url.py中导入from django.conf.urls impot url,再导入views django数据库操作;设置数据库: 在settings中的DATABASES中设置 常用连接mysql驱动: mysqlclient:优点 python2,3都...

2021-04-08 20:15:32 69

原创 Web前端面试题-应用CSS样式

1、嵌入在HTML文档中的图像格式有哪些,都有些什么特点?答案:ps alpha透明是指使用alpha通道实现的透明格式 透明 压缩 动画 颜色数 浏览器兼容性 特点 GIF 支持,但不是alpha透明 无损 支持 8位 全部支持 简单动画,颜色少,有锯齿 PNG alpha透明 无损 不支持 8位和24位 IE6不支持透明 压缩比高,色彩好,除了动 画,其余方面可替代

2020-10-13 23:35:31 288

原创 Web前端面试题-HTML元素和应用CSS样式

1、什么是Shadow DOM(影子中的DOM)?答案:Shadow DOM是浏览器的一种功能,能够自动添加子元素,例如audio元素,在网页中能使用进度条、音量控制等功能,这些相关元素都由浏览器自动生成2、元素属性src和href有何区别?答案:两者的功能不同。href能够建立一条通道,将当前文档和定义的资源连接起来。src是将定义的资源嵌入到当前文档中。3、img元素中的title和alt属性有何区别?答案:title是全局属性,提供额外的提示信息,当鼠标滑动到该元素时,..

2020-10-12 23:45:36 199

原创 Web前端面试题-HTML基础

1、标准的HTML文档必须包含那几个元素()A. p B. html C.head D.div答案:HTML文档必须包括4个HTML元素,分别是DOCTYPE、html、head和body2、以下选项是HTML的DTD的是()A. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">B. <!DOCTYPE html>C.<!DOCTYPE html P...

2020-10-11 21:32:58 501 1

转载 关于hibernate不同版本的命名策略

今天在配置spring boot和jpa集成的时候遇到的一个关于hibernate的版本问题主要原因是新版本的hibernate(即hibernate4以上的版本)实体映射到数据表时的命名策略可以参考这个:https://www.cnblogs.com/sxdcgaq8080/p/7910474.html...

2020-09-13 21:01:01 80

原创 serverTimezone

今天第一次写springboot的时候遇到了这个问题,页面一直刷新不出来,显示url有问题,后来发现在url后面加上serverTimezone = GMT即可spring.datasource.url=jdbc:mysql://127.0.0.1:3306/XXX?useUnicode=true&characterEncoding=utf8&serverTimezone = GMT1、概念:serverTimezone连接mysql数据库时指定了时差2、时区示例..

2020-09-12 23:14:31 21831

原创 html标签中含样式和语义的标签(面试的时候可能会考)

1、<em>标签 行内元素,表示语气中的强调词2、<i>标签 行内元素,表示专业词汇3、<b>标签 行内元素,表示文档中的关键字或者产品名4、<strong>标签 行内元素,表示非常重要的内容...

2020-09-10 21:38:02 96

转载 内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积)

内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积)    先略两个表        首先左连接:SELECT * FROM test1 a LEFT JOIN test2 b ON a.id = b.id;    (尴尬,join打错了,毕竟英语没有6级(#^_^!))    解释下就是以左边表id(案例里面是test1)为基础和右表id对比,左表有的右表也有就也出来,右表没有的就NULL咯,右连接和左连接相反    右连接:SELECT * FORM test1 a

2020-08-29 18:49:51 1388

转载 python中with的用法

with是从Python2.5引入的一个新的语法,它是一种上下文管理协议,目的在于从流程图中把 try,except 和finally 关键字和资源分配释放相关代码统统去掉,简化try….except….finlally的处理流程。with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常。所以使用with处理的对象必须有__enter__()和__exit__()这两个方法。其中__enter__()方法在语句体(with语句包裹起来的代码块)执行之前进入运行,_

2020-08-29 13:19:26 153

原创 暴力获取最长回文子串

def long_lca(str1): max_len, result = float("-inf"), "" for i in range(len(str1)): for j in range(i+1, len(str1)): if str1[i:j] == str1[i:j][::-1]: if j-i > max_len: max_len = j-i .

2020-08-17 20:09:31 124

转载 正负无穷float(‘inf‘)的一些用法

Python中可以用如下方式表示正负无穷:float("inf"), float("-inf")inf的运算规则遵从IEEE-754 standard不等式:当涉及 > 和 < 运算时,所有数都比-inf大 所有数都比+inf小等式:+inf 和 +inf相等-inf 和 -inf相等...

2020-08-17 20:08:49 1366

转载 epoll工作原理

epoll同样只告知那些就绪的文件描述符,而且当我们调用epollwait()获得就绪文件描述符时,返回的不是实际的描述符,而是一个代表就绪描述符数量的值,你只需要去epoll指定的一个数组中依次取得相应数量的文件描述符即可,这里也使用了内存映射(mmap)技术,这样便彻底省掉了这些文件描述符在系统调用时复制的开销。另一个本质的改进在于epoll采用基于事件的就绪通知方式。在lepoll中,进程只有在调用一-定的方法后,内核才对所有监视的文件描述符进行扫描,而epol事先通过epoll.ct(O来...

2020-08-17 16:29:04 191

转载 Libevent核心原理

Libevent 是一个事件驱动框架, 不能仅说他是一个网络库。Libevent支持三种事件:io事件、信号事件、时间事件,并且事件的设置和使用方式是一样的。libevent的核心原理是采用io多路复用的方式来单线程处理事件。io事件: io事件包含socket可读、可写、断开、设备可读、可写等和IO相关的事件, libevent主要采用了epoll模型来进行i/o事件的多路复用(我说的是linux上,libevent也封装了select,poll模型,下面仅说采用epoll的情况)。 一句话解

2020-08-16 21:32:25 479

转载 为什么构造函数不能声明为虚函数,析构函数可以

构造函数bai不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。 不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。2 虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在

2020-08-16 21:04:02 132

原创 TCP和UDP的区别

TCP和UDP是OSI模型中的bai运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。TCP与UDP基本区别:1、基于连接与无连接。2、TCP要求系统资源较多,UDP较少。3、UDP程序结构较简单。4、流模式(TCP)与数据报模式(UDP)。5、TCP保证数据正确性,UDP可能丢包。6、TCP保证数据顺序,UDP不保证。7、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。8、TCP提供可靠的服务。也

2020-08-16 19:45:49 102

原创 在网上看到的一个面试题

一个笔试题目:桌上有20张光滑的扑克牌,8张正面朝上,其余朝下怎么样在闭着眼睛、同时不借助外界辅助的情况之下将扑克牌分成两组,使得两组正面朝上的数量一样多呢??第一步:把20张扑克牌任意分为两堆,一堆8张(A堆),一堆12张(B堆)第二步:把A堆所有的牌全部翻面,B堆不动假设第一步分完后,A正面向上的牌为X(0<=X<=8)则A堆背面向上的牌数量为8-X;B堆正面向上的牌数为8-X然后执行第二步此时A堆正面向上的牌数量为原来的A堆背面向上的牌数8-..

2020-08-16 19:33:31 144

转载 全局变量的优缺点

优点:全局可视。减少传递实参带来的开销。缺点:降低程序的内聚性。名字冲突。生存期长,一直占用内存。任何函数都可能改变值,易发生意料之外的错误,调试困难。.全局变量是在程序开始时进行初始化的,这样会造成你的程序启动变慢。...

2020-08-16 19:02:49 745

原创 栈溢出

1,什么是栈溢出?由于栈一般默觉得1-2m,一旦出现死循环或者是大量的递归调用,在不断的压栈过程中,造成栈容量超过1m而导致溢出。2,解决方式:(1)用栈把递归转换成非递归(2)方法二:使用static对象替代nonstatic局部对象(3)方法三:增大堆栈大小值...

2020-08-16 18:55:23 293

原创 位示图

位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。有的系统把"0"作为盘块已分配的标记,把“1”作为空闲标志。(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。1. 定义:位示图(bitmap)又叫位图,它的最小单元是一个bit。每个bit有两种取值1或0。位示图是一种非常常用的结构,在索引,数据压缩等方面有广

2020-08-16 10:17:27 1562

Django开发知识点.md

主要介绍了django的基础使用,以及涉及部分开发知识点

2021-04-12

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

TA关注的人

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