DP 设计模式
策略模式
class MallardDuck extends Duck { |
识别应用中变化的方面,把它们和不变的方面分开。
针对接口编程,而不是针对实现编程。
// Implement |
优先使用组合而不是继承。
summary
策略模式定义了算法族并分别封装。策略让算法变化独立于使用它的客户。
class MallardDuck extends Duck { |
识别应用中变化的方面,把它们和不变的方面分开。
针对接口编程,而不是针对实现编程。
// Implement |
优先使用组合而不是继承。
策略模式定义了算法族并分别封装。策略让算法变化独立于使用它的客户。
微服务:解决接口越来越多,单体应用运行缓慢问题。
*************************** |
原因是mybatis版本有问题!
<dependencyManagement> |
又开始了ICS之旅,这次又给自己下了一个难度,找到了汪亮老师讲解的ICS 5!
第一课的目标是修正一个register错误声明
:%s/163/tuna/g
非常爽!ccache
加速我的PAunion
和 struct
的区别?unioin
在同一个内存空间中存储不同的数据类型。struct
则是同时存储不同的数据类型。union
?阅读i386手册实现ALU中的各类运算,包括设置标志位
Name | Function |
---|---|
CF | Carry Flag ── Set on high-order bit carry or borrow; cleared otherwise. |
PF | Parity Flag ── Set if low-order eight bits of result contain an even number of 1 bits; cleared otherwise. |
ZF | Zero Flag ── Set if result is zero; cleared otherwise. |
SF | Sign Flag ── Set equal to high-order bit of result (0 is positive, 1 if negative). |
OF |
Overflow Flag ── Set if result is too large a positive number or too small a negative number (excluding sign-bit) to fit in destination operand; cleared otherwise. |
composer create-project topthink/think tp |
localhost/tp/public/
首页首页/index.php/index
controller下的Index类首页/index.php/index/?s=hello/value
调用controller下Index类的hello方法,并传入参数value(URL兼容模式)首页/index.php/hello_world
调用controller下HelloWorld类首页/index.php/group.blog
调用controller/group下的Blog类$data = array('a' => 1, 'b' => 2, 'c' => 3); |
在应用根目录下新建.env文件
APP_DEBUG = true |
$user = Db::connect('mysql')->table('tp_user')->select(); |
<?php |
Db::getLastSql();可以看上一条sql语句
Db::table('tableName')->where('fieldName', fieldValue)->find(); // 查询不到返回null |
Db::table('tableName')->select(); |
Db::name('tableName')->where('id', $id)->value('field'); |
Db::name('name')->column('fieldAsValue', 'fieldAsKey'); |
// strict 表示强行插入 |
Db::name('user')->insertAll($data); |
Db::name('user')->where('id', 232) |
// 根据主键删除多条数据 |
composer require topthink/think-view |
from pyecharts.charts import Bar |
DB:数据库可以是ibd文件、放在内存的文件,是物理操作系统文件或其他形式文件类型的集合。
Instance:Mysql数据库由后台线程及一个共享内存区组成。
数据库实例才是真正操作数据库文件的。在集群情况下,可能存在一个DB被多个Instance使用的情况。
Mysql被设计为单进程多线程,在OS上的表现是一个进程。
存储引擎基于表,而不是DB。
存储引擎对开发人员透明。
MySQL使用的是B+树作为索引的数据结构
B树是一个分支内按顺序存放多个节点数据的数据结构;而B+树在此基础上,在分支内只存储索引,只在叶子节点存储数据(这样每一层可以存储更多索引,减少层数),并且在叶节点之间用指针互相连接,提高访问效率。
标题 | Title | 标题 |
---|---|---|
左对齐 | Justify Align | 右对齐 |
Delete Line
Blod
Italic
Code
E=MC2
Link
public static void main(String[] args) { |
--- auto_detect: ture |
No Silver Bullet
By Brooks
[!NOTE]
Note that it is a note.
[!WARNING]
WARNING!
[!DANGER]
Notice the DANGER!
[!SUCCESS]
Now it is SUCCESS.
[!INFO]
Here is some INFO.
#走两次dp
如果只走一次,这题是非常经典的DP。但是要走两次,就变得非常有难度。
首先,可以简单地推广:要走两次,dp就存四个下标:
int[][][][] dp = new int[N][N][N][N]; |
我们只需要遍历所有可能,并且比较四种走法(同下、同右、一下一右),取最大值就可以了。
注意,一个数只能取一次,需要一个判断防止重复取数。
for (int i1 = 1; i1 < N; i1 += 1) { |
当然,4个循环时间复杂度太高了。我们可以用一个k == i1 + j1 == i2 + j2
来减少一重循环。
这个k利用得很巧妙,因为每次要么向下走,要么向右走,所以k-1 == i-1 + j == i + j-1
,全程使用k-1
就能代表所有情况。
pre_start_tag
void sum_max_sequence(void) |