轻松理解设计模式(结构型):6、适配器模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容关于结构型设计模式中的适配器模式的设计与实现。
定义
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。——百度百科
就是说两个东西需要交互连接,或者客户端使用一个产品。但它们两方接口对不上没办法直接使用。这时候需要有一个适配器,让它们建立连接。适配器包裹产品,客户端与适配器进行交互。如下图
type-c与3. ...
轻松理解设计模式(创建型):5、原型模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容关于原型模式。包含原型模式的设计与实现。
定义
原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。——维基百科
原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
我们需要一系列对象,这些对象都是具有相同的特征,且它们都是独立的。就像马里奥里很多蘑菇人,它们是独立 ...
LeetCode初级算法之其他:118.杨辉三角
题目信息
题目地址:https://leetcode-cn.com/problems/pascals-triangle/
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
12输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
12输入: numRows = 1输出: [[1]]
提示:
1 <= numRows <= 30
题解依题意知道当前数组的第j个值等于前一个数组的j-1的值加上j位的值,也就是
1arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
也就是通过双循环,第一层遍历各个数组,第二层遍历当前数组各个元素,中间元素的每个值通过上述公式计算
题解如下:
1234567891011121314151617181920212223242526272829public List<List<Integer>> g ...
LeetCode初级算法之其他:190.颠倒二进制位
题目信息
题目地址:https://leetcode-cn.com/problems/reverse-bits/
颠倒给定的 32 位无符号整数的二进制位。
提示:
请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。
示例 1:
123输入:n = 00000010100101000001111010011100输出:964176192 (00111001011110000010100101000000)解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
示例 2:
123输入:n = 11 ...
轻松理解设计模式(创建型):4、建造者模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容关于建造者模式。包含建造者模式的设计、实现以及疑问点。
定义
建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。——百度百科
一般在去创建一个类的对象,都是直接使用其构造器得到。但对于复杂的产品,里面可能是包含多且复杂的属性。在代码使用这个产品对象进行直接创建就需要了解这个类所有的属性及它的运作流程,才能正常创建出自己想要的。
对于建造者模式就是把产品对象的创建委托给一个叫做建造者的家伙,客户代码就通过 ...
cookies、sessionStorage、localStorage三者有啥区别
前言
写项目用到了sessionStorage来存sessionid,之前一直都是用的cookie。调试又看到了还有localStorage。之前没有了解过好奇查了查,顺便在这里记录一下。
区别
cookies
sessionStorage
localStorage
存储空间
一般浏览器4KB
一般浏览器5MB
一般浏览器5MB
存储时效
默认是关闭浏览器失效,但可设置时间就以设置时间为准
仅在当前标签页,浏览器或者标签关闭则清除
永久保存,须手动删除
请求携带
请求时携带cookies在请求头
不携带
不携带
可见范围
同一主域
当前标签页
同一主域
失焦事件与回车事件冲突
前言
在自己的小网盘的开发过程中,需要在新建文件夹时产生一个文件夹和一个文件名的输入框,需要在输入名称后回车或者鼠标点击外面完成文件夹创建
问题1234<input @keyup.enter="confirmName(xxx)" @blur="confirmName(xxx)"/>
问题在与两个事件都是一个功能确认名称,但绑定两个事件之后回车事件失效了。
解决解决方式是让回车事件的内容关联上失去焦点事件,毕竟都是触发同一个功能。
1234<input @keyup.enter="$event.target.blur()" @blur="confirmName(xxx)"/>
上传大文件失败
前言
前段时间搞的网盘的项目,初始化好了基本的登录以及上传下载的功能就一直没碰了。今天懒得搞算法和设计模式了,接着写下项目,目前网盘上传1M以上的文件会上传失败
问题1413 Entity Too Large
分析首先锁定在Nginx上面,部署后是nginx反向代理后台,web前端与nginx直接交互。且发现确实nginx默认是限制1M的请求实体。
因此就先配置下Nginx的大小限制
1client_max_body_size 1024M; // 我这里配成1024M也就是1G
这个东西可配置在http、server或者location下,我就直接配在location下的:
123456789101112131415161718server { listen 80; listen [::]:80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; ...

