最近的多点插入数据异常和字符串解析问题

标题多点插入数据异常

最近我参与的一个全国市场主体活跃度抽样调查系统已经上线了,不过又出了两个问题,一个是问卷填写到一半不能继续填写的问题,还有一个就是问卷结果表里面竟然出现了两条一模一样的数据。这是绝对不允许的。
       一开始我们登录同一个管理员账号来填写未完成原因,同时提交,果然数据库里面出现了两条一模一样的数据,因为我开发经验比较浅,我还天真的在接口里面加入了一个count判断,如果count不为0就不插入,改为更新。但是根本没有生效,因为如果实时性足够高,甲方要求账号可以异地同时登录,所以如果两个人几乎同时操作同一条数据,那么就会绕过这个验证,直接插入两条数据。
       和大神讨论了一下,一开始大神想的是插入的时候设置一个锁插入之前不能有其他操作,插入后也不能有其他操作。不过大神最终还是同意了我的方案,我的方案就是在插入数据的时候将企业统一信用代码作为主键,这样两条insert语句必然会有一个失败,因为会有一个dublicate异常,这时候再捕捉这个异常把这个异常返回给前端,就会有一个人修改成功另一个人失败。
       原理是比如我们两个同时操作,就涉及到了一个并发的问题。如果我加了count判断,比如对方只是进行了inset操作但是结果还没有落地,可能我这时候进行count判断,但是由于此时结果没有落地所以对于此时的我的插入前置判断肯定是没有生效的,所以这种方式根本没有作用。但是加了主键约束就不一样了,加了主键约束,如果进行了插入操作,两条命令必然会失败一条因为违反了主键唯一的约束。

三元组字符串解析问题

有一个我参与的新的科技风险项目,有个业务是我用新闻标题和内容去调用python写的算法,我对python没有特别多的了解,最多也就是写过几个爬虫玩玩罢了,这个算法会将它收到的数据解析成三元组字符串返回来。那么我的任务就是在把这个字符串解析后返回给前端这个原始字符串也就是python开始返回给我的如下:

[[['加速全球减碳进程 贡献坚实中国力量', '关联组织', '中国国家统计局'], ['加速全球减碳进程 贡献坚实中国力量', '关联时间', '日前'], ['加速全球减碳进程 贡献坚实中国力量', '关联时间', '今年'], ['加速全球减碳进程 贡献坚实中国力量', '关联时间', '上半年'], ['加速全球减碳进程 贡献坚实中国力量', '关联地点', '中国'], ['加速全球减碳进程 贡献坚实中国力量', '关联地点', '中国']], [[' 甘青宁将联合开展黄河生态环保地质工作', '关联时间', '20日'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '中国'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '甘肃'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '青海'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '宁夏'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联时间', '2022年'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '黄河流域']], [[' 家电回收新政加快行业绿色发展', '关联时间', '近日'], [' 家电回收新政加快行业绿色发展', '关联组织', '国家发改委'], [' 家电回收新政加快行业绿色发展', '关联组织', '工信部']]]

前端表示她想要一个一元数组,因为现在的数据就是一个三元组。所以我要去解析这个字符串,一开始我想的是用原始的字符串方法来处理然后组装成一个list,不过请教了一下大神,大神表示这个东西其实可以转化为list对象
大神给的代码如下:

 String str = "[[['加速全球减碳进程 贡献坚实中国力量', '关联组织', '中国国家统计局'], ['加速全球减碳进程 贡献坚实中国力量', '关联时间', '日前'], ['加速全球减碳进程 贡献坚实中国力量', '关联时间', '今年'], ['加速全球减碳进程 贡献坚实中国力量', '关联时间', '上半年'], ['加速全球减碳进程 贡献坚实中国力量', '关联地点', '中国'], ['加速全球减碳进程 贡献坚实中国力量', '关联地点', '中国']], [[' 甘青宁将联合开展黄河生态环保地质工作', '关联时间', '20日'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '中国'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '甘肃'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '青海'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '宁夏'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联时间', '2022年'], [' 甘青宁将联合开展黄河生态环保地质工作', '关联地点', '黄河流域']], [[' 家电回收新政加快行业绿色发展', '关联时间', '近日'], [' 家电回收新政加快行业绿色发展', '关联组织', '国家发改委'], [' 家电回收新政加快行业绿色发展', '关联组织', '工信部']]]";
        str = str.replace("'", "\"");
        System.out.println(str);
        List list = JsonUtils.fromJson(str, List.class);

这样很自然的就把这个三元组转化为一个List对象,其中的结构是:

在这里插入图片描述
大神表示这么做效率可能没有单纯的字符串解析效率高,但是也就不需要写那么多的正则表达式去解析字符串了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值