如果您对php计算问题感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于php计算问题的详细内容,我们还将为您解答php算法题的相关问题,并且为您提供关于C#char计算问题、
如果您对php 计算问题感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于php 计算问题的详细内容,我们还将为您解答php算法题的相关问题,并且为您提供关于C#char计算问题、c#之浮点数计算问题的解决、html – 浏览器的1px计算问题(子像素问题)、javascript – Vue计算问题 – 何时再次计算的有价值信息。
本文目录一览:php 计算问题(php算法题)
$res[''code''] = 200; //这里进行计算生成数据,但生成的数据不是用户急需的, //没有想到其它方式可以触发这个计算程序,所以只能设计最后一个用户提交后计算, //由于数据量大,用户等待返回的时间由计算时间决定,可不可以先返回给用户再计算,怎么操作? $this->ajaxReturn($res);//只需返回 code=200 给用户
回复内容:
$res[''code''] = 200; //这里进行计算生成数据,但生成的数据不是用户急需的, //没有想到其它方式可以触发这个计算程序,所以只能设计最后一个用户提交后计算, //由于数据量大,用户等待返回的时间由计算时间决定,可不可以先返回给用户再计算,怎么操作? $this->ajaxReturn($res);//只需返回 code=200 给用户
把要做的计算业务先推入mq,就是任务队列,这个可以用redis去做。
linux跑脚本,一直消费队列。
用redis实现一个队列,每次把相关信息放到队列中,然后返回给用户code,队列里的数据用脚本去跑
Gearman
http://gearman.org/
你需要的应该是这个
异步操作
立即学习“PHP免费学习笔记(深入)”;
把计算当做一个任务,放到队列中,有一个脚本在跑,从队列里获取任务,然后在后台处理.
这也就是需要所谓的消息队列,可以看下 rabbitmq,gearman 等消息队列.
我这里写了一篇 php rabbitmq 的使用方法,可以看下.
https://segmentfault.com/a/1190000004924668
上面各位大神提到将计算任务放到消息对队中, 确是一种不错的方案。 但是需要搭建队列服务。
如果计算量不是特别巨大的, 是不是可以fork一个进程来解决更简单呢。
参考一下YII框架的Request对象的onEndRequest方法,该方法是一个可以实现异步调用。
比较同意 @zyxcba 的回答,如果量不大的话是可以先把数据 flush 出去,然后再 fork 一个进程来处理具体的计算任务的,不过 pcntl 扩展只能在 Linux 上面使用。
如果计算的数据不需要返回给用户,可以先行返回继续执行代码的。php-fpm可以使用这个fastcgi_finish_request,echo 返回值,fastcgi_finish_request(),后面继续执行。。。。或者就是使用队列了
C#char计算问题
所以5! = 5x4x3x2x1 = 120 —-> 1 2 0 = 3.但我的下面的脚本给出了输出147:
120 1 2 0 147
我究竟做错了什么?我已经尝试了所有转换器,我开始只使用字符串[指针]东西,我尝试了不同的数组等…但它一直在提出147.它是某种表示的东西?
static void Main(string[] args) { IntX total=1; IntX totalsum = 0; int perm = 5; for (int i = perm; i > 0; i--) { total = total * i; } Console.WriteLine(total); string answerstring = Convert.ToString(total); char[] answerArray = answerstring.ToArray(); for (int x = 0; x < answerArray.Length; x++) { totalsum += Convert.ToInt32(answerArray[x]); Console.WriteLine(answerArray[x]); } Console.WriteLine(totalsum); }
解决方法
Convert.ToInt32(answerArray[x])
上面的行使用char 1并将其转换为int.这与将其解析为int不同. 1是ascii字符49所以在内部char的int表示为49,因此它被转换为(因为这只是尝试进行类型转换而不是任何类型的处理)
同样地,2 = 50和0 = 48,所以你得到的总数为147.
你想要做的是使用Integer.Parse将字符串解析为数字.我相信它应该在解析之前隐式地将char转换为字符串.
所以你的循环将是:
for (int x = 0; x < answerArray.Length; x++) { totalsum += int.Parse(answerArray[x].ToString()); Console.WriteLine(answerArray[x]); }
您也可以像其他人建议的那样减去字符.这是有效的,因为ascii值为1比ascii值高1,2为2,等等.
当然这仅适用于单位数字符号.如果你想从一个字符串中将两个以上的数字转换成int,你需要int.parse.
值得我怀疑的是,字符减法方法是最有效的,因为它实际上只是做了一些非常简单的类型转换和减法.解析方法可能会做更多的东西,所以更重量级.我不会’你会注意到性能差异.
c#之浮点数计算问题的解决
给大家看个计算题,看看大家的算术能力。
0.1 +0.1 +0.1 - 0.3 等于几?
大家可能会说这么简单的问题,是不是看不起我?肯定等于0啊。
如果大家直接算的是没有问题的,但是如果用计算机呢?
见证奇迹的时刻到了,看代码:
void Main() { var f = 0.1 +0.1 +0.1 -0.3; Console.WriteLine("f=={0}",f); }
运行结果:
这是因为计算机的精度的问题,在计算机的内部存储和运算的精度缺失等问题,我解释的可能不太明白,不过,大家可以用下面的方案进行解决:
void Main() { //var f = 0.1 +0.1 +0.1 -0.3; //Console.WriteLine("f=={0}",f); var f1 = new Decimal(0.1) + new Decimal(0.1) + new Decimal(0.1) - new Decimal(0.3); Console.WriteLine("f1 == {0}",f1); }
运行结果:
这样就是正常的运算结果了。
啦啦啦!!!!
以上就是c#之浮点数计算问题的解决的详细内容,更多请关注php中文网其它相关文章!
html – 浏览器的1px计算问题(子像素问题)
问题:
当您调整窗口大小时,您会注意到两个图像的高度有时会相差1px(当浏览器调整尺寸时,这是预期的).
如何“修复”此UI问题?我知道我可以通过使用flexBox来做到这一点.但我想有一个更好的解决方案.你们可以跳进去吗?
table{ width:100%; border-collapse: collapse; } img{ display: block; width: 100%; }
<table> <tr> <td><img src="http://placehold.it/100x100"/></td> <td><img src="http://placehold.it/100x100"/></td> </tr> </table>
甚至在这里我使用display:table:
.wrapper{ width:100%; display: table; } .wrapper div{ display: table-cell; } img{ display: block; width: 100%; }
<div> <div><img src="http://placehold.it/100x100"/></div> <div><img src="http://placehold.it/100x100"/></div> </div>
编辑:
Firefox浏览器中没有此问题,但Chrome中存在此问题.
请注意,当我使用flexBox时,问题不存在:
body{ margin: 0; } .wrapper{ width:100%; display: flex; } .wrapper div{ flex: 1; } img{ display: block; width: 100%; }
<div> <div><img src="http://placehold.it/100x100"/></div> <div><img src="http://placehold.it/100x100"/></div> </div>
或使用浮点数和内联块:
body{ margin: 0; } .wrapper{ width:100%; display: block; } .wrapper div{ display: inline-block; float: left; width:50%; } .wrapper:after{ content: ''; display: inline-block; clear:both; } img{ display: block; width: 100%; }
<div> <div><img src="http://placehold.it/100x100"/></div> <div><img src="http://placehold.it/100x100"/></div> </div>
解决方法
每张图片占据容器的50%.例如,如果容器宽度为100px,则每个图像的宽度为50px.
但是容器的宽度可以是奇数个像素,例如,101px.那么有三种合理的可能性:
>将一个图像宽50px,另一个51px.然后,即使您为这两个图像指定了相同的宽度,图像也不会同样宽.
>使两幅图像都宽50px.然后将有1px的差距
>使两幅图像都宽51px.然后它们将不适合,溢出容器或包裹到下一行.
每个选择都有其缺点,但现在浏览器似乎更喜欢第一个选项.然而,在这种情况下,图像具有固有的纵横比,因此不同的宽度将产生不同的高度,然后1px间隙是水平而不是垂直创建的.
似乎Firefox检测到,因此使较小的图像与另一个一样高,打破了宽高比. Chrome更喜欢强制使用宽高比.
没有办法改变这一点.它完全依赖于实现:
The especially strange part,in all of this,is that there’s really no right,or wrong,here. How this behavior is supposed to play out by the rendering engine isn’t dictated by the CSS specification,having it be left up to the implementation to render as it sees fit.
javascript – Vue计算问题 – 何时再次计算
什么时候会再次计算
条件1:
data() { return { cart:{ item:{ nums: 10,price: 10 } } }; },computed: { total() { return this.cart.item.nums * this.cart.item.price } },methods:{ set(){ this.cart.item = { nums: 5,price: 5 } } }
计算将工作
条件2:
data() { return { cart: [{ nums: 10,price: 10 }] }; },computed: { total() { return this.cart[0].nums * this.cart[0].price } },methods:{ set(){ this.cart[0] = { nums: 5,price: 5 } } }
计算不起作用
我知道这是解决方案,但为什么呢?
methods:{ set(){ this.cart[0].nums = 5 this.cart[0].price = 5 } } }
为什么不在条件2中观察到它?
为什么Vue不希望被观察到?
解决方法
在您的情况下,如果this.cart标记为已更改,则this.cart [0]被标记为已更改或者如果this.cart [0] .nums或this.cart [0] .price已更改,则将重新计算total.问题是你要替换this.cart [0]中的对象.这意味着this.cart [0] .price和nums不会改变,因为那些仍然指向旧对象.显然,this.cart [0]和this.cart没有标记为已更改,因此Vue仍然认为总计是最新的.
有几种方法可以解决这个问题.一种是使用Vue的辅助方法来处理对象/数组,即Vue.set,Vue.delete.您可以使用此.$set或this.$delete在SFC中访问它们.因为这个.$set明确标记你作为第一个参数传递的任何内容为“已更改”,你的总数也将被更新.
this.$set(this.cart,{ nums: 2,price: 100 });
另一种方法是修改对象本身,而不是替换它.由于您仍在使用同一个对象,因此Vue将检测到this.cart [0]已更改.
setItem() { this.cart[0] = Object.assign( this.cart[0],{ nums: 5,price: 5 } ); }
另一种方法是使用众多数组方法之一.在您的情况下,您可以使用Array.prototype.splice.由于这是一个函数调用,Vue可以检测到函数被调用并且可以将正确的项标记为已更改,这将触发更新依赖于它的任何内容.
this.cart.splice(0,1,{ nums: 50,price: 10 });
今天的关于php 计算问题和php算法题的分享已经结束,谢谢您的关注,如果想了解更多关于C#char计算问题、c#之浮点数计算问题的解决、html – 浏览器的1px计算问题(子像素问题)、javascript – Vue计算问题 – 何时再次计算的相关知识,请在本站进行查询。
本文标签: