
获得徽章 21
- 上周领导突然说 购物车的price接口很慢,让想想有没有什么办法优化一下,最后想到了用SSE - Server-Sent Events(服务器消息推送)来搞,大体是这样的
前端利用 EventSource 来建立监听实例,来创建长链接和获取数据的回调,后端利用Content-Type: text/event-stream;charset=UTF-8
Cache-Control: no-cache
Connection: keep-alive
这三个header来确定长链接和流传输,1个小时写了一个demo发现可行,然后第二天去搞的时候发现如果用 EventSource 只能query传参了,但是我们的购物车参数很多,最好是body传参,最后面向搜索引擎找解决方案找到了一个js库github.com,看了源码 发现只要是可以调起服务的都可以使用这个SSE,重点是后端的header设置,最后用这个库完成了 body的传参,后端依旧遵循SSE发送服务规则即可。
其实想写文章的,但是我太懒了 就这样吧,具体细节 什么时候有空再说。展开赞过评论3 - 接手的项目里有国际化背景,所以在时间展示上也有不同时区的展示,早上接到需求说之前时间展示都是后端做的兼容,前端传递的固定字符串格式‘YYYY-DD-MM’,这样问题其实很大,原因是不通过unix的时间戳来进行时间交互,那么多时区下 后端就要针对不对的时区来做转化,这无疑是比较麻烦而且容易出错的。
标准应该是前后端时间交互使用时间戳进行交互,unix时间戳是通用格式,这个可以保证前后端的数据交互上是统一的。
前端如果有多时区的展示 会有两种方案。
第一种就是 直接使用 new Date对象进行时间戳转化,这个时候的时区来自于浏览器识别你当前设备的时区,所以时间转化后也和你的设备时区保持一致,这种缺点就是 可测试性不强,优点是程序员需要做很少的事情就可以多时区处理。
第二种是 使用moment类的js时间处理库(JS本身的时区处理只有一个api 比较麻烦),进行多时区的处理,moment 有一个 Moment Timezone的扩展,是专门处理时区的,这样可测试性强,但是需要每个时区针对不同的解析方法。
细节比较多,自己再收集一下 下次写成文章展开赞过评论2 - 学到了 但也差点吓死了。
这次业务迭代中,后端接口一直没好,所以我在做业务的时候 用到了 git stash 暂存区这个操作,保证没完成的功能先不commit。
结果刚才在敲命令的时候 直接 按照终端提示敲了 git stash clear并且执行了,执行后 就立马意识到不对,四天的工作量啊!!!
不过幸好找到了补救方案,记录一下。
因为 stash 也有相应的 栈来保存你每次的log,所以先看log,命令如下
git log --graph --oneline --decorate $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
执行后可以看到相应的 log,找到你对应那次的log hash前缀然后执行 恢复命令如下
git stash apply 你的hash值
这样只能恢复一条,剩下的还需要你一条条找,但是有些情况你可能直接是 git stash 暂存的这个就得一条条hash试,所以建议大家暂存的时候 最好是 git stash push -m "message" 进行暂存操作,这样也好回溯。
现在想想还是有点后怕!!!展开等人赞过287