引言
坐而论道,汉语成语,拼音是zh shng tn bng,意思是指在纸面上谈论打仗。比喻空谈理论,不能处理实际问题。也比喻空谈不能成为现实。
WEB 开发发展到现在,各种优异的框架以及丰富的网络资源,让 WEB 开发入门门槛降到了很低很低,可是并不是证明 WEB 开发没有门槛了,也不能证明 WEB 开发就没有难度了
最近在校园做项目,模糊能听到这种工作:教师给了一个XXX标题,甲同学看了看标题,思考了一下,觉得这个项目挺简略的,甚至有或许看不上这个简略的项目……说真话,曾经我也是抱着这种心态,觉得教师给的那些项目又简略又 low,做出来也是浪费时间,没有什么太多意义
不过,后来在我做了一个“秒杀商城”的项目今后,我就开端认真对待每一个看似简略的项目了。为什么呢?
秒杀商城
讲真话,这个项目便是纯拿来练手,为了往简历上写项目经历的项目。可是我也是在这个项目里边遇到了许多许多的问题……
期初想到这个项目的时分,我就在想,网上一大堆电商项目,也有许多高并发的商城秒杀项目供我参考,那我做这个还不是简简略单么
然后,在我真实开端做这个项目的时分,我遇到了许多许多的没有意料的甚至见都没见过的问题,我想,假设我是面试官,我想要判别一个人是否真的做过这个项目,下面这些问题就够了
在运用音讯行列的时分,前端怎么判别音讯是否正确消费
第一次接触音讯行列的时分,由于音讯行列没有返回值让我挺难过的。可是在做高并发,尤其是秒杀项目的时分,音讯行列仍然是首选
那么怎么处理前端判别音讯是否消费呢(比如订单是否现已支付完成)?
其实这个问题的答案很简略,简略到我在第一次听到这个答案的时分都有点不敢相信:轮询(即设置一个周期定时器,一直调用接口进行查询)。当然,也可以用其他的方法,这种方法仅仅最简略最好了解的一种
前端JavaScript的Number型与Java的long型最大长度问题
遇到这个问题的时分是由于项目里边生成大局唯一 id 运用到了雪花算法,雪花算法生成的便是一个64位的唯一 id,正好便是 Java 的 long 型最大位数。也正是由于这个算法用到了64位数字,所以就会遇到与 JavaScript 的 Number 类型数字的最大长度问题了
咱们先来输出一下 Java 和 JavaScript 的最大值
public class Main{
public static void main(String[] args) {
System.out.println(Long.MAX_VALUE);
}
}
// 9223372036854775807
// 0x7fffffffffffffffL
console.log(Number.MAX_VALUE)
// 1.7976931348623157e+308
通过上面两段代码可以最直观的看出来一个问题,Java 的 long 型最大值与 JavaScript 的 Number 最大值不一样
然后咱们再看一下下面这个代码:
var x = 9223372036854775807;
console.log(x)
// 9223372036854776000
这里仅仅把 Java 的 long 型最大值在 JavaScript 中输出出来,结果是最终三位数字变为0,倒数第四位数字进行四舍五入了。那么在开发的时分肯定就会遇到问题
这个问题处理办法其实也很好了解,做过大数相加的那种算法题的应该都知道,那便是用字符串表明数字。这个问题的处理办法便是后端传这种 long 型数据的时分运用字符串就好了
feign长途调用问题
这个问题只会让习惯欠好的同学遇到(比如我),由于我在传统的 spring boot 开发的时分,一般不会在RequestMapping
接口处写@RequestParam
注解,然后在我第一次运用 feign 的时分,我仍旧在服务生产者处不写@RequestParam
注解,结果导致 feign 长途调用失利
当然,这个问题的处理过程也是很顺利,由于网上许多人(估量大部分都是新手)都遇到了这个坑
小结
实际上,上面的这些问题都不是特别难的问题,都是咱们平时开发遇到的一些遇到了随便查一下就知道的问题。可是这些问题足以证明自己是否真真实正的做过这些项目
回到正题,如果仍旧是坐而论道,不去实在的自己着手尝试一遍,那么这个项目又怎么乐意写在简历上呢?咱们常说见微知著,其实我以为往往便是这些当地就可以见微知著