Deillusie:我在收淘宝的包裹时,快递可谓是五花八门(甚至有用京东快递送过来的),也衍生出了菜鸟驿站,蜂巢这种快递代收点,这些地方往往因包裹过多而使用非人力的各种验证方式,但我觉得仍旧会有很大的错误空间,所以在无法合理统筹人力与包裹数量类别等因素的情况下,由买家自主确认收货是很好的第二道保障(类似于正态分布?),另外淘宝商家良莠不齐,鱼龙混杂,买家确认商品无误收货后资金才由支付宝流入商家,可以有效保证买家的利益//我目前收的京东件无一不是快递小哥亲手递给我的,并且只有京东自己的物流,既然第一次验证足够给力,那么第二道确认收货就显得不是那么重要了,再加上京东的售后很多时候比淘宝好很多,京东的商家好像都经过认证?买家的权益往往能够有保障,如此,确认收货就可有可无了。(随便写的,不对的话,那就不对咯)
0 点赞 评论 收藏
分享
精神小伙:我用(a,b,c,d) 四个数表示刚开始老大爷的两个桶,以及两个顾客的5斤酒和4斤酒的桶中酒的重量,其实就是 bfs 跑一边几个桶的酒相互到,具体的流程是下面: (20,20,0,0) (20,15,5,0) (20,15,1,4) (20,19,1,0) (20,19,0,1) (20,14,5,1) (20,14,2,4) (20,18,2,0) (16,18,2,4) (16,20,2,2)
0 点赞 评论 收藏
分享
憨子哥:区别在于两者所处的网络位置。 云计算的数据中心在核心网络中,离用户较远(i.e.网络通信跳数高)。边缘计算近,如下图,终端用户的消息 要抵达 核心网络 要通过层层网络设备,边缘层设备在这条通信通路当中,通信跳数低。 最直接的有两方面:- 首先是上面已经提到的 网络延迟低, 能够适应实时性要求高的应用。- 省核心网络带宽,未来万物互联,会有大量的传感器不断产生数据,把如此大量的数据都传到数据中心会带来核心网络拥塞,而且也完全不必要把原始数据传向数据中心。一个很好的解决是在边缘层做初步的处理,筛选,和聚合,只把有价值的数据传向云服务器做存储或进一步的分析。 为什么不用边缘计算替代云? 边缘层设备往往资源有限,不像数据中心那样有大量的资源(CPU,内存,硬盘)。 两者协同配合才能够最大程度的发挥作用。
查看图片

0 点赞 评论 收藏
分享
nocwoder:说几个和大家不一样的(不用switch case) 你需要先弄清楚if-else的工作原理。if就像一个铁路分叉道口,在CPU底层这种通讯及其不好的地方,在火车开近之前,鬼知道火车要往哪边开,那怎么办?猜!如果猜对了,它直接通过,继续前行。如果猜错了,车头将停止,倒回去,你将铁轨扳至反方向,火车重新启动,驶过道口。如果是第一种情况,那很好办,那第二种呢?时间就这么浪过去了,假如你非常不走运,那你的程序就会卡在停止-回滚-热启动的过程中。上面猜的过程就是分支预测。虽然是猜,但编译器也不是随便乱猜,那怎么猜呢?答案是分析之前的运行记录。假设之前很多次都是true,那这次就猜true,如果最近连续很多次都是false,那这次就猜false。但这一切都要看你的CPU了,因此,一般把容易成立的条件写在前面判断,把不容易成立的条件放在else那里 三目运算符 三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。 <表达式1> ? <表达式2> : <表达式3>; "?"运算符的含义是:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。 可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为条件是否成立,条件成立为结果1,否则为结果2。 例如 int a=read();
if(a&1)puts("odd");
else puts("even"); 等价于 int a=read();
(a&1)?puts("odd"):puts("even"); 在代码的实现中,对于很多的if和else,可以三目套一个三目 int a=read();
if(a>0){
if(a&1)puts("odd");
else puts("even");
}
else{
if(a&1)puts("ODD");
else puts("EVEN");
} 此代码等价于 int a=read();
(a>0)?((a&1)?puts("odd"):puts("even")):((a&1)?puts("ODD"):puts("EVEN")); 短路运算符 我们知道&&和||是两个短路运算符,什么叫短路运算符,就是一旦可以确定了表达式的真假值时候,就直接返回真假值了,比如下面代码 int a=read();
(a&1)&&puts("odd");
(a&1)||puts("even");
} 因为&&运算符号表示两者都满足当左边为真的时候就判断右边是否为真(就运行右边)否则因为左边为假就不运行右边(因为右边无论是否为真的无法让整个为真) ||同理 左边为假,就调用右边否则就不运行右边 因此可以把它给合起来 int a=read();
((a&1)&&!puts("odd"))||puts("even"); 所以 if(A) B; → (A)&&(B) if(A) B; else C; → A&&(B,1)||C 但这些并不是短路运算符的精髓,短路运算符的精髓不仅在于优化时间,更是可以防止程序出错。 double t = rand();
if (t / RAND_MAX < 0.2 && t != 0)
printf ("%d", t);
double t = rand();
if (t != 0 && t / RAND_MAX < 0.2)
printf ("%d", t); 这两种判断,谁快谁慢。但对于CPU来说很有区别。第一段代码中的t/RAND_MAX<0.2为true的概率约为 20%,但t!=0为true的概率约为1/RAND_MAX,明显小于20% 因此,如果把计算一个不含逻辑运算符布尔表达式的计算次数设为 1 次,设计算了 X 次,则对于第 1 段代码,X 的数学期望为 6/5 次,但对于第二段代码,X 的数学期望2*(RAND_MAX-1) / RAND_MAX为 ,远远大于第一段代码。 不仅不同位置会优化时间,更是会防止程序错误,例如kuangbin搜索专题有题是Catch the Cow,就是搜索,不过判断走没走过得判断vis[n]和n < 1e6,我最最开始写的vis[n] && n < 1e6,提交上去RE了,看了很久才发现是这里的原因,得先判断n < 1e6,再做下一步操作。 所以, 遇到A&&B时,优先把可能为false的表达式放在前面。遇到A||B时,优先把可能为true的表达式放在前面。但也不一定是绝对这样,还得结合题目。 个人经验 我就得这样的优化主要还是在确保程序准确无误的时候再加上因为万一用了这个毒瘤了(特别是新手对变成不太熟悉,极容易出错) 其实不如在考虑一下剪枝吧!一些重复的结果被剪掉后会大大的减小时间而这种骚操作只会减掉几毫秒或几十毫秒 希望能对大家有用!
0 点赞 评论 收藏
分享
不啦:刘亦菲啊
查看图片

0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: