方便回溯数据的mysql操作

CREATE TABLE `table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `path` varchar(255) DEFAULT NULL COMMENT 'owner path',
  `list` int(11) DEFAULT NULL COMMENT '目录数',
  `file` int(11) DEFAULT NULL COMMENT '文件数',
  `size` bigint(20) DEFAULT NULL COMMENT '文件总计大小',
  `cluster_path` varchar(255) DEFAULT NULL COMMENT '输入路径',
  `owner` varchar(100) DEFAULT NULL COMMENT '属于者',
  `datetime` datetime DEFAULT NULL,
  `date` int(11) DEFAULT NULL,
  PRIMARY KEY (`cluster_id`),
  UNIQUE KEY `reference` (`cluster_path`,`date`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3960 DEFAULT CHARSET=utf8;

给表加了唯一索引 依赖两个字段 cluster_path,date

insert into 
cluster 
$field values('{$path}','{$owner}','{$list}','{$file}','{$size}','{$cluster_path}','{$datetime}','{$date}') 
ON DUPLICATE KEY UPDATE cluster_list='{$list}',cluster_file='{$cluster_file}', cluster_size='{$size}',datetime='{$datetime}'"

当触发唯一索引的时候就会只更改
ON DUPLICATE KEY UPDATE
后的字段 而不会添加一行新数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回溯算法是一种通过不断地尝试所有可能的解决方案来解决问题的算法。它通常用于解决组合、排列、子集、棋盘等问题。回溯算法的基本思想是在每一步尝试所有可能的解决方案,如果当前方案无法解决问题,则回溯到上一步并尝试其他方案,直到找到解决方案或者所有可能的方案都被尝试过。 剪枝操作回溯算法中的一种优化技巧,它可以减少搜索空间,从而提高算法的效率。剪枝操作通常在搜索过程中进行,通过判断当前搜索路径是否有可能找到解决方案,来决定是否继续搜索。常见的剪枝操作包括:去重剪枝、可行性剪枝、最优性剪枝等。 下面是Java实现回溯算法及其剪枝操作的代码示例: 1. 未优化的回溯算法代码: ``` class Solution { List<List<Integer>> lists = new ArrayList<>(); List<Integer> path = new ArrayList<>(); public List<List<Integer>> combine(int n, int k) { backTracking(n, k, 1); return lists; } public void backTracking(int n, int k, int startIndex){ if(k == path.size()){ lists.add(new ArrayList<>(path)); return; } for(int i = startIndex; i <= n; i++){ path.add(i); backTracking(n, k, i + 1); path.remove(path.size() - 1); } } } ``` 2. 去重剪枝优化的回溯算法代码: ``` class Solution { List<List<Integer>> lists = new ArrayList<>(); List<Integer> path = new ArrayList<>(); public List<List<Integer>> combine(int n, int k) { backTracking(n, k, 1); return lists; } public void backTracking(int n, int k, int startIndex){ if(k == path.size()){ lists.add(new ArrayList<>(path)); return; } for(int i = startIndex; i <= n - (k - path.size()) + 1; i++){ path.add(i); backTracking(n, k, i + 1); path.remove(path.size() - 1); } } } ``` 在上面的代码中,我们使用了去重剪枝来避免重复搜索相同的解决方案。具体来说,我们在搜索过程中,限制了每个数字只能出现一次,从而避免了重复搜索相同的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值