月度归档: 2021年9月

24 篇文章

联想NAS A1调研
优点 网速快 相比百度云,上传下载速度快,上传网速一般在10M到50M左右,下载50-100M,看个人网络 BUT:阿里云盘网速也快 功耗 每月耗电:30(天)*18(每天运行时间8点-24点)*5(瓦)/1000=2.4(度) 电费:2.4*0.7(电费单价)=1.68(元) 很不错,比其他NAS产品好多了 无风扇 发热量不大,散热不成问题 噪音…
LeetCode:K个一组翻转链表_25
思路 反转链表II_92的进阶,主要是利用递归思想,拆解重复问题。 题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 进阶: 你可以设计一个只使用常数额外空间的…
LeetCode:反转链表II_92
思路 这种题就很烦,你说它难吧,它就是在反转链表_206的基础上增加了个数量限制。你说它不难吧,边界问题折磨死你。提交几次,调试半天才AC。 题目 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后…
十四、桥接模式
Bridge Design Pattern 两种理解方式 GoF的《设计模式》 桥接模式定义为:让抽象和实现解耦,让他们可以独立变化。这里的实现不是指语法上的实现接口、实现抽象方法,抽象也不是指接口或者抽象类。而是从业务的角度来定义的。例如JDBC定义了数据库访问层的规范,mysql数据库驱动实现了JDBC定义的规范,这里的JDBC和MySQL驱动…
十三、门面模式
Facade Design Pattern 前言 之前遇到过一个场景,绩效分为标注绩效,质检绩效,不同的公司展示不同的绩效。例如运营公司展示标注绩效,质检绩效;标注公司展示标注绩效;为了保证接口的单一职责,可复用性强,就把接口粒度控制得很小。导致的问题是,接口调用方需要根据不同情况调用一个或多个绩效接口,接口易用性差。 增加外观类 在现有基础上,“…
LeetCode:相交链表_160
思路 这题的解法有些独特,可能是我太久没接触几何相关的问题了,要是放在初中,应该还是能想出来。 两个链表都需要遍历,很容易想到双指针。先考虑简单情况,假如两个链表长度相等。双指针同时往前走,每走一步判断下是否相等。 假如链表长度不等,双指针同时往前走就不行了,即使调整速度也不好使。我们的目的是判断两个指针是否相等,链表相交部分长度是相等的,如果末端…
LeetCode:反转链表_206
思路 基础的递归思维,再一次用到了虚拟头结点。 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围是…
十二、命令模式
Command Design Pattern 定义 将命令(函数)封装成对象。 实现方式 Command public interface Command { void excute(); } ReadCommand public class ReadCommand implements Command { @Override public voi…
十一、组合模式
Composite Design Patten 定义 使用树形结构来表示业务场景里的数据,业务逻辑通过递归来实现,达到简化代码的目的。 适用场景 很局限,必须能用树形结构来表示。例如人员部门的组织机构,文件系统等。 注意 递归计算时,可以考虑将结果保存起来,不用每次使用时计算。但又会引发新的问题:改变一个节点,会影响所有父节点,这时候就得权衡了。
十、享元模式
Flyweight 定义 共享存储单元,节约内存空间。 使用场景 例如文本编辑器里,每个字符都有字体大小,显示颜色,背景颜色等属性。将这些属性抽取为字体,每个字体的属性在内存中只保留一份即可。感觉和CSS挺像的,不过享元模式侧重点不是代码复用,而是对象复用。 JDK里使用的地方 Integer缓存 int类型在自动装箱时,调用java.lang.I…