动态规划的四个步骤: 刻画一个最优解的结构特征 递归地定义最优解的值 计算最优解的值,通常采用自底向上的方法 利用计算出的信息构造一个最优解
在 C++, C#, Java 等面向对象语言中,对象由两部分组成:属性和方法。通常属性是私有成员或保护成员,不能从对象外部直接访问;方法是公有成员,供外界间接访问对象的内部属性,以此来实现数据隔离。利用伪代码来简单演示如下: 构造一个只有一个私有成员而没有任何共有方法的对象 obj var obj = { private int attr1 = 1024, } 不能直接访问和修改attr1 print(obj.attr1) // Error: can't access attr1 of ...
策略模式 定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 观察者模式 即发布/订阅。 装饰者模式 扩展对象的能力。 工厂模式 由子类决定产生的对象类型。 单件模式 只能有一个对象的类。 命令模式 把请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。支持撤销。 适配器与外观模式 适配器: 更改原有接口使其可用。 外观:简化已有的一堆接口,使调用简单化。 模板方法模式 使子类有能力更改算法的局部实现。 迭代器与组合模式 提...
Rust's ownership mechanism limit there is only one owner of a variable. When the variable goes out of scope, Rust automatically recycle the space of that variable. What smart pointers do is that they allow multiple owner of a variable. And when the v...
同步代码,包括同步函数、表达式,以调用栈的方式执行;所有回调函数在任务会依次进入任务队列(Task Queue),依次等待执行,也就是 Event Loop。任务队列有多个, 可以分为两大类:Macro Tasks 和 Micro Tasks。下面以伪代码演示浏览器和 Node 中的 Event Loop 运行模型。 浏览器 // Event Loop可以看成程序的入口函数Main while (true) { // 任务队列的执行顺序是任意的,但同一来源的任务必须在同一队列中,同一队列中的...
JS 中 Array 常用的三个高阶函数 map,filter,reduce 中,前两个根据字面义就能理解:映射,过滤;而 reduce 单单根据字面义还是想不出其用法的,减少?怎么个减少法?比较容易联想到跟"减少”相关的一个地方可能就是 reduce 的输入是一个数组,其输出是一个单一值的场景,例如下面的求和和求平均数。 求和 const arr = [13, 23, 24, 50]; const total = arr.reduce((total, cur) => total + cur)...