11 2019 档案
摘要:定义 观察者模式:定义了一种对象间的一对多依赖关系,一旦被依赖对象改变状态,所有观察者都会得到通知并自动更新。 实例 我们在日常生活中,微信公众号的运作模式便是典型的观察者模式的实现,一旦公众号新推了内容,所有关注公众号的账号都会得到通知。 优缺点 观察者模式的优点是可以实现表示层与数据逻辑层的分离
阅读全文
摘要:静态工厂模式是一种改进的获取实例的方法。 通常我们会使用new关键字调用类的构造方法来创建一个对象,静态工厂模式相对于传统的创建对象的方式有以下优点: 1. 可以更加富有语义的创建实例:当一个类的构造方法有非常多的参数或被重载过很多次的话,因为JAVA对构造方法命名的规定(与类名相同),我们必须编写
阅读全文
摘要:装饰器模式是JAVA开发过程中常用的一种设计模式,该设计模式用于对类进行横向的功能扩展,也就是达到对类进行“装饰”的目的。JDK中的IO流便是使用了装饰类模式。 装饰器模式的类图一般如下: 以实体类基类的引用为入参,装饰类可以装饰整个继承链上的实体类。 I/O流的继承关系更为直接: 很多刚刚接触装饰
阅读全文
摘要:在道家的世界观中,无极生太极,是这个世界的从0到1。 天地之道,以阴阳二气造化万物。天地、日月、雷电、风雨、四时、于前午后,以及雄雌、刚柔、动静、显敛,万事万物,莫不分阴阳。人生之理,以阴阳二气长养百骸。经络、骨肉、腹背、五脏、六腑,乃至七损八益,一身之内,莫不合阴阳之理。这一理论建立至今凡两三千年
阅读全文
摘要:《红楼梦》第十二回,贾瑞因痴迷王熙凤,被王熙凤折腾的眼看就快不行了。当然这里面是没有多少爱的,完全因王熙凤的美貌而起。就在这时来了一个跛足道人,带来了一面宝镜,说能治好贾瑞的病。当然这可不是一面普通的镜子,而是由警幻仙子做制。并且道人还告诫贾瑞,这面镜子专治邪思妄动之症,有济世保生之功。所以带他到世
阅读全文
摘要:前言 中断的概念属于硬件层。虽然在进行软件编程时不会直接使用中断,但理解它对我们来说依然重要。 在使用线程切换及状态管理、异常处理、硬件与处理器的交互、I/O操作等指令时,中断都在默默的服务。 处理器基于硬件封装对外的指令集,底层语言封装指令集提供更加简单的抽象,高级语言基于底层语言赋予程序更明确的
阅读全文
摘要:人类发明了轮子,提高了力的使用效率。 人类发明了自动化机械,将自己从重复的工作中解脱出来。 提高效率的方法好像总是离不开两点:拒绝无效劳动,拒绝重复劳动。人类如此,计算机亦如是。 前面我们说过了四数之和的递归和递推思路,递归和递推是一个比较通用的解题方法,我们可以以此为基础对解空间有一个整体的认识,
阅读全文
摘要:以我的经验为例(如有不对欢迎指正),在生产过程中,经常会遇到下面两种情况: 1.封装的某个类不包含具有具体业务含义的类成员变量,是对业务动作的封装,如MVC中的各层(HTTPRequest对象以Threadlocal方式传递进来的)。 2.某个类具有全局意义,一旦实例化为对象则对象可被全局使用。如某
阅读全文
摘要:以我的经验为例(如有不对欢迎指正),在生产过程中,经常会遇到下面两种情况: 1.封装的某个类不包含具有具体业务含义的类成员变量,是对业务动作的封装,如MVC中的各层(HTTPRequest对象以Threadlocal方式传递进来的)。 2.某个类具有全局意义,一旦实例化为对象则对象可被全局使用。如某
阅读全文
摘要:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 二分查找思路非常简单,由粗暴的遍历查找改为了将元素排序后不断的进行折半查找,将搜索的时间复杂度由O(N)降到了O(log2N)。 二分查找的思
阅读全文
摘要:这是一篇杂记,记录了操作系统层面与I/O管理的零散知识点,用于温习使用。由于I/O管理是一个很大的范畴,后续会不断按照自己的生产需求来补充用的到的知识点。计算机系统是人造系统,没有绝对的对错(相对于自然系统的绝对性),只有特定场景下的优劣。我们在理解一块知识时应当从它提出的背景以及要解决的问题出发,
阅读全文
摘要:今天手撕八皇后。 问题背景:八皇后问题最早是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出。之后陆续有数学家对其进行研究,其中包括高斯和康托,并且将其推广为更一般的n皇后摆放问题。八皇后问题的第一个解是在1850年由弗朗兹·诺克给出的。诺克也是首先将问题推广到更一般的n皇后摆放问题的人之一。1874
阅读全文
摘要:由于硬件昂贵,多人分享一个终端,也就是多任务并行的需求引出了进程的概念。 随着硬件的发展和为了提高单个任务的效率,进程内部并发的需求引出了线程。 首先从cpu说起,我们知道,cpu执行指令(三级流水线情况下)分为三个阶段:取指令阶段、指令译码阶段、指令执行阶段。 对于cpu来说,并不存在线程这一概念
阅读全文
摘要:在leetcode刷到两数之和、三数之和、四数之和的问题,发现题解都在使用滑动窗口、双指针的方法,在此补充一下递归与递推的解题思路(因为我的解题思路都是思考解空间-遍历解空间-聪明的遍历解空间-发现方法到达优化瓶颈,再思考其它方式如双指针、hash等,对递归和递推总有执念)。 注:递归解法往往效率不
阅读全文