ak = set(map(lambda x: x['key'], a))
bk = set(map(lambda x: x['key'], a))
c = list(filter(lambda x: x['key'] not in bk, a)) + list(filter(lambda x: x['key'] not in ak, b))
print(c)
有一定道理吧, 因为原子钟就是铯原子辐射的电磁波的周期的 xxxx 倍的时间, 但是受到相对论效应的影响, 这个周期是会变的, 所以时间自然也变了, 但是如果把这个因素从一开始就考虑进去, 应该就可以对准吧.
不是据说 gps 卫星收到相对论误差的影响, 每天慢个几微秒, 所以发射的时候就把误差调好了, 自然就对齐了吗.
反正以上是本物理渣渣的理解
确实很厉害, 让他夸夸 Java 的, 结果给我 JavaScript 的了, 哈哈
输入: Java is the best language
输出: Java is the best language to learn, so the best way to learn it is to start coding and see how it works. I've compiled a list of articles that provide step-by-step introductions to programming and JavaScript. This is not a comprehensive guide to JavaScript (I haven't covered the basics like the basics of classes, functions and object oriented programming), but it is a good starting point for those who want to get into JavaScript.
I also wanted to add a list of recommended books and courses on programming. If you don't want to look for those yourself, I've written a post on recommended resources.
Note: This post contains affiliate links.
Coding
The Complete Beginner's Guide to JavaScript Programming
JavaScript Basics
The Beginner's Guide to HTML5 Programming
Learn JavaScript in Minutes and
abc 的全排列={a,b,c}开头+其他字符的全排列={a+bc 的全排列, b+ac 的全排列, c+ab 的全排列}
里面再继续递归, 终结条件就是递归到尾, 然后打印
for 里面 前面是遍历当前递归字符串的字符, 并分别替换到头部, 中间就是递归除了头部以外的部分, 后面是把开始的替换再换回来, 还原并进行下一步
从朋友那里听到一个新的说法,说是上面 review 代码,如果请求直接带参数有安全问题,所以需要用 cookie 传参数。
是这样吗?
就像上面说的, 你必须指定时分秒, 否则就是一秒钟运行一次, 你可以写个测试看一下执行时间就知道了, 网上有些模拟器和 Quartz 的语法不太一样, 而且 Quartz 语法不同版本也不一样, 跑测试最直接了:
```java
@
Test public void test() throws ParseException {
CronTrigger cronTrigger = new CronTrigger("test", "test", "* * * */7 * ?");
Date nextFireTime = new Date();
for (int i = 0; i < 10; i++) {
nextFireTime = cronTrigger.getFireTimeAfter(nextFireTime);
String result = DateFormatUtils.format(nextFireTime, "yyyy-MM-dd HH:mm:ss");
System.out.println(result);
}
}
```
@
cmower 个人建议试试华硕 RoG 的某款, 之前用过罗技,steelseries 等等, 全是垃圾, 不到 1 年就双击, 后来发现 RoG 出了一款号称方便自已自助更换微动的鼠标, 就买了, 你猜怎么着, 4 年过去, 愣是没问题, 都没试过它的更换微动功能. 也可能是个例, 反正这个鼠标我用今天都好好的, 以后要是坏了我还买它
我感觉单看这个例子是不需要的, 因为变量 userName 已经说明含义了, 而赋值语句也只是一个简单的获取成员变量, 本身语义就有 get 的意思, 封装了一下, 只是把这个隐含的 get 显式的写出来了.
比如对我来说读这段代码, 脑子里读出来的是"username = get name from url parameter", 如果用函数就是"username = get user name", 我感觉是差不多的.
不过标题说这是意义不明确的赋值语句, 说明读它的人可能是不能一眼理解, 那封装成函数是一个可行的方法, 前提是确实能感受到这种可读性的提升, 否则就是过度封装, 毕竟可读性对不同的人来说是不一样的, 还是要从真正读代码的人的角度去抉择
但是如果这段赋值经常重复, 或者有好几个类似的东西, 那就需要考虑封装, 而且要根据重复的数量和范围用不同的封装方式, 比如这里的函数, 或者封装成类, 再复杂的可能还需要工厂之类的模式
loan 的和是 10000, repay 的和是 9000, 是题有问题吗? 还是可能会出现不对等的情况?
BaseConstants.INT_ONE 和 BaseConstants.INT_ZERO 应该就是 int 0 和 1 吧, 需要定一个常数吗?
单单为了避免魔数也不需要做到这个程度吧
试试 guard clause
```java
private boolean checkMobileExists(Long shopId, CreateSupplierParam param) {
List<Supplier> supplierList = this.get(shopId, param.getContactMobile());
if (CollectionUtils.isEmpty(supplierList)) {
return true;
}
if (supplierList.size() != BaseConstants.INT_ONE) {
return false;
}
Long existId = supplierList.get(BaseConstants.INT_ZERO).getId();
return Objects.equals(existId, param.getId());
}
```
@
chenyu8674 在不能换服务商之前就是要被坑啊!
@
R18 缓存是个好办法, 虽然感觉只是又加了一层保险, 但是好像也算是一个简单可行的方案了, 多谢!
@
marcong95 目前是有这个表的, 但是就像我说的可能会有锁超时的问题, 导致记录进不去, 我知道这里的代码可能有问题, 可能最终还是要改这里, 但是一个是这是老代码, 难搞, 另一个就是想问有没有更高级的方法或者框架直接解决这个事了
@
gaius 请求有可能超时的, 网络是很差, 国外的网站, 也想着把请求的服务器放国外去, 但是那不是动起来太复杂了, 先研究研究有没有其他简单的方法
如果当没成功, 但是实际成功了, 然后重新发送了, 就要重复了, 我知道这个情况有点不可控制, 但是后果还是挺严重, 不仅要扣钱还要扣一个信用分, 扣到一定程度就要限制发送额度了, 而且对方明确说了重复发送检查要自己做, 但是他们查到就要扣. 所以还是要想办法解决重复问题
有明确结果的现在没问题, 有标记检查, 不会重复的.
丢失记录就是有那么几次数据库事务超时了, 可能某个表被锁住了, 时间一长就自动挂了, 然后标记已发送就失败了, 然后又重复发送了
@
lstt 是的, 已经换 unlox 了, 现在感觉良好, 感觉比 nearlock 好用
感谢推荐, 换用 unlox 了, 这个比 apple watch 便宜...
刚看到 kenorizon 说的, 我觉得有道理, 应该是因为这个是非相关子查询, 但是因为里面含有 rand(), 所以这个子查询不会像普通的一样只跑一遍, 而是每一行都跑了, 所以实际查询的是所有记录里刚好可以和随机出来的那个 id 相等的记录, 所以条数不等, 而且数据量少估计难重现
实测可以重现, Mysql 5.7 随便找了 26w 条数据的一张表, 确定主键是唯一的, 0~4 条的情况都有, 目测最多的是 0 条,1 条和 2 条的情况, 但是无法解释为什么, 颠覆了我的认知, 我也想知道这个是 bug 还是 feature