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; ...
轻松理解设计模式(创建型)3、抽象工厂模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容关于抽象工厂模式。包含抽象工厂模式的概念以及差异
定义
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类 —— 《Head First 设计模式》
按照这个定义的描述,好像是和工厂方法模式没有啥不同的。同样是提供一个抽象类或者接口,里面提供一个方法用于创建对象且不需要指明具体类。——关于工厂方法模式看这篇《轻松理解设计模式(创建型)2、工厂方法模式》
这里画一个抽象工厂大概的UML图:
就图的区别而言,工厂方法模式只提供一 ...
LeetCode初级算法之其他:461.汉明距离
题目信息
题目地址:https://leetcode-cn.com/problems/hamming-distance/
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。
示例 1:
1234567输入:x = 1, y = 4输出:2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。
示例 2:
12输入:x = 3, y = 1输出:1
提示:
0 <= x, y <= 2^31 - 1
题解一这题看提示上面写了是正数,所以不用管负数补码。直接看数字的二进制比较即可。
很容易就能想到,肯定是哪种位运算能够get到二进制数字不同。那不就是异或和同或么,一个是不同为1相同为0,一个相反。
10101 ^ 0010 = 0111
我们使用异或运算,有几个不同,得到的结果就有几个1.
那岂不是上一题。直接搞过来:
123456789// 求位1的个数public int hammingWeight(in ...
轻松理解设计模式(创建型):2、工厂方法模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容在工厂方法模式之前还加了一段关于简单工厂模式的介绍以及相关实现,再引入到工厂方法模式
简单工厂在聊工厂方法模式之前,先了解简单工厂模式,它虽然不属于23种之一但它是工厂模式家族里最基础的一种编码概念
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂 ...