自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 记一次Python多进程调优实践(自己实现并行KNN算法)

记一次Python多进程调优实践(自己实现并行KNN算法)环境服务器硬件:16核CPU,192GB内存操作系统:Ubuntu 16.04Python版本:3.6.5numpy版本:1.14.3为什么使用多进程和共享内存工作中需要写一个knn算法,用numpy实现,数据量N过大(N ~= 3,400,000)。knn算法输入的特征矩阵有8G,knn的一个中间步骤是计算特征相似度矩阵...

2020-02-28 17:04:00 1379

原创 vscode多行操作快捷键

版本声明:vscode 1.41.1 Mac版vscode多行操作快捷键笔者经常忘记,因此写下这个博客提醒自己。vscode多行快捷键可以通过菜单栏的『Help』-『Interactive Playground』打开Interactive Playground页面查看在打开的Interactive Playground页面中选择Multi-cursor Editing跳转到如下页面笔者...

2020-02-26 15:53:27 2148

原创 LeetCode Weekly Contest 177

日期之间隔几天请你编写一个程序来计算两个日期之间隔了多少天。日期以字符串形式给出,格式为 YYYY-MM-DD,如示例所示。示例 1:输入:date1 = “2019-06-29”, date2 = “2019-06-30”输出:1示例 2:输入:date1 = “2020-01-15”, date2 = “2019-12-31”输出:15提示:给定的日期是 1971 年到 2...

2020-02-23 11:38:57 152

原创 【问题记录】pip install遇到"No space left on device"

写在前面:这篇博文是本人解决问题的一个记录,但产生该问题的原因可能是多重多样的,本人的解决方案未必适用于所有问题,遇到问题还是要具体问题具体分析,此博文只是提供了一种思路问题描述pip install $PACKAGE_NAME某个包时下载.whl文件下载到一般报错"No space left on device"用wget把该whl文件下载到用户home目录下pip install $W...

2020-02-17 12:15:15 19555 9

原创 LeetCode Weekly Contest 176

5340. 统计有序矩阵中的负数给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。请你统计并返回 grid 中 负数 的数目。示例 1:输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]输出:8解释:矩阵中共有 8 个负数。示例 2:输入:grid = [[3,2],[1,...

2020-02-16 11:53:05 154

原创 访问者模式

访问者模式访问者模式用于编译器前端抽象语法树静态语法检查访问者模式访问者模式是23种设计模式中最复杂、最难理解的设计模式。访问者模式属于行为模式,将对象(被访问者)与操作(访问者)分离,适用于对象本身具有复杂结构且对象相对固定但需要频繁增加对于对象的操作的场景。访问者模式主要由被访问者和访问者组成,访问者对象通过visit方法访问被访问者对象,被访问者对象通过accept方法接受访问者的...

2020-02-14 10:29:15 694

原创 命令模式

命令模式通过命令类封装方法,常用于需要对方法的执行进行记录、缓存、撤销或是在方法执行时需要附加日志等操作的情形。下面以仓库卖货为例说明命令模式。仓库类:Stock.java,其中的sell方法从仓库中卖出货物。为了实现卖货订单缓存延迟处理以及订单撤销的操作,使用命令模式封装sell方法。public class Stock { private int storage; pub...

2020-02-13 09:56:42 138

原创 状态模式

状态模式是一种通过改变对象状态来改变对象行为的设计模式,最典型的应用是有限状态自动机。下面以一个自动售票机的例子说明状态模式。该自动售票机负责出售一种2元的车票,只能接受1元硬币。售票机有4个状态(S0: 起始状态,等待投币状态,等待再次投币状态,等待出票状态),允许3种输入(a0: 点击开始按钮,投入1元硬币,点击出票按钮)。售票机根据当前状态和用户输入动作的组合,决定售票机的响应(输出提示信...

2020-02-12 09:27:39 183

原创 备忘录模式

备忘录模式用于在不侵入原对象的情况下保存和回复对象状态。主要组成有原生类Originator,备忘录类Mementor,备忘录管理类CareTaker. Mementor负责记录Originator,CareTaker持有Mementor的引用,负责备忘录状态的管理。下面以一个可撤销的加减计算器为例说明备忘录模式。为了满足计算器类Calculator(相当于Originator)的功能完备性,Ca...

2020-02-11 11:52:25 125

原创 模板方法模式

模板方法模式的应用场景是某个算法由多个子算法构成,子算法的顺序是确定的,但子算法可以有多种选择。下面以做饭的例子说明该设计模式。抽象模板类:Cooker.javapublic abstract class Cooker { public abstract void prepareFood(); public abstract void cookFood(); publi...

2020-02-10 15:31:58 111

原创 LeetCode Weekly Contest 175

1346. 检查整数及其两倍数是否存在给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。更正式地,检查是否存在两个下标 i 和 j 满足:i != j0 <= i, j < arr.lengtharr[i] == 2 * arr[j]示例 1:输入:arr = [10,2,5,3]输出:true解释:N...

2020-02-10 12:29:34 295

原创 迭代器模式与Java Iterator源码

迭代器模式迭代器模式是一种将集合的增删改操作与集合的顺序遍历操作分离的设计模式。集合只负责增删改操作,迭代器对于集合的内部类,专门负责顺序遍历。Java的Iterator是迭代器模式的经典实现。笔者jdk版本是11.0.4,不同版本的jdk的Iterator相关类及其实现有所不同,下面以jdk11.0.4为例。Iteratorjdk定义了一个Iterator接口,声明了hasNext, ne...

2020-02-08 12:06:44 272

原创 责任链模式

责任链模式中的各个职责对象具有明确的职责范围,超出职责范围内的职责,调用其他职责对象处理,最终形成一个链式的调用链。责任链模式的最显著特点就是抽象职责基类持有自身的引用,用于链式调用。责任链模式广泛见于web请求处理程序和事件响应程序中。 下面用一个整数数组过滤器为例介绍责任链模式。抽象职责基类:Filter.javaimport java.util.List;public abstrac...

2020-02-07 10:49:45 155

原创 中介者模式

中介者模式是一种行为模式,中介者模式中的中介者类协调多个类对象的交互行为,减少耦合。MVC模式中的controller是中介者模式的典型应用,controller作为中介者,协调model和view之间的交互。下面以简单的股票交易为例说明中介者模式。股民类:ShareHolder.javapublic class ShareHolder { private long id; p...

2020-02-06 10:36:16 246

原创 适配器模式

适配器模式用于系统修改时,新的外部类无法与旧系统兼容(或旧的类无法与新系统),增加适配器使得系统能够兼容外部类。适配器模式有两种实现方式:1. 适配器类继承外部类;2. 适配器持有外部类的引用。各个感觉考虑接口一致性,继承的方案对旧系统代码的改动会少一些。适配器模式是一种系统迭代时被迫采取的设计模式,而不是在系统设计之初就考虑的设计模式。因为在系统设计时,是不应该出现不兼容现象的。下面以电源适...

2020-02-05 11:01:19 169

原创 桥接模式

桥接模式把抽象化和具体化解耦,抽象化类通过持有具体化类的一个引用,实现桥接。下面以一个绘图程序为例说明桥接模式。具体化类接口:FillUtil.java,负责定义填充颜色。public interface FillUtil { public String fill();}具体化类:RedFill.java,定义红色填充。public class RedFill implemen...

2020-02-04 13:31:17 132

原创 组合模式

组合模式是一种用于表示同类对象间树形关系的设计模式。下面以行政区划为例介绍组合模式。统一的行政区划类(包含国家、省、市等各级行政区划单位):Area.javaimport java.util.LinkedList;public class Area { private String name; private LinkedList<Area> children;...

2020-02-04 11:24:22 257

原创 外观模式

外观模式是客户端和子系统的一个中介——外观类,统筹各子系统的功能,各客户端只需和中介交互而无需关心各子系统。子系统A:SystemA.javapublic class SystemA { public void operate() { System.out.println("System A works ..."); }}子系统B:SystemB.java...

2020-02-03 10:42:58 109

原创 代理模式

代理模式通过代理对象为原对象增加某种功能,是Spring AOP的实现方式。代理模式主要分为静态代理和动态代理. 静态代理模式与装饰器模式类似,在此就不展示代码了。静态代理的主要缺点是一个代理类只能用于一个被代理类,是一种『类专用』的代理,被代理类和代理类的组合数是乘积关系。下面通过代码演示Java中的动态代理模式。Java动态代理模式通过InvocationHandler接口和Proxy类实现...

2020-02-02 21:16:13 129

原创 LeetCode Weekly Contest 174

5328. 方阵中战斗力最弱的 K 行给你一个大小为 m * n 的方阵 mat,方阵由若干军人和平民组成,分别用 0 和 1 表示。请你返回方阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。...

2020-02-02 12:07:31 314

原创 享元模式

享元(Flyweight, 『轻量级』)模式,指的是一种构造对象时对于完全相同的对象直接返回之前已经构造的对象而无需重新构造的设计模式,用于大量创建相同对象的场景,减小内存使用。享元模式的关键是享元工厂类中用于缓存享元对象的哈希表。Java的字符串常量池就是享元模式的典型应用。下面用一个字符封装类SharedCharacter为例介绍享元模式,通过享元模式,同样的字符用同一个封装类对象,无需构造...

2020-02-01 15:53:03 120

原创 观察者模式

观察者模式主要由被观察者Subject类和观察者Observer类组成。Subject通过持有一个含有Observer类的引用的容器,绑定到多个观察者;Observer类通过持有一个Subject类的引用,绑定到一个固定的被观察者。当被观察者内部维护一个状态,当被观察者更新状态时,通知绑定的所有观察者。驱动类:Main.javapublic class Main { public st...

2020-02-01 11:40:06 123

空空如也

空空如也

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

TA关注的人

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