- BI的数据统计跑数结果一般是T+1生成的
- 实时性要求不高的功能,用于推荐等其他业务功能,可用于统计和监控等
- 对实时性要求高的功能,做后置的监控,及早发现逻辑错误
这里仅从一个业务开发的角度谈谈体会,格局较低,仅做个人记录
编程语言是程序员接触和使用最多的工具
后端技术基础的深度是快速学习和适应新语言的关键
基于对工作中接触过的几种编程语言及其部署架构的看法继续聊。
截至目前,职业生涯五分之四的时间都是在使用Java。出于个人意愿和兴趣,以及行业的发展形势,也系统的自学了Go语言,并在个人的小项目实践。在一次意外的组织变动中,我转岗到了新团队,并开始使用Go,由于之前自己的自学基础,基本是无缝切换到新语言。可能是由于团队人员大部分是从Lua或PHP开始转Go的,在那里甚至感觉自己稍稍领先。
Go抽象业务比Java麻烦,代码不美观,但是它原生高并发,而且微服务下很多时候就一个后端服务,业务足够小,不需要复杂的设计模式等,并不需要像以前写大型Java应用这样做非常多的抽象,还能打二进制包,甚至还能保证一个团队所有人代码都是相同风格
以下讲一些个人看法,比较乱甚至不正确,仅做个人记录
为什么现在大多数人都会认为Java启动慢占内存呢?
微服务下的编程语言
在内存利用效率上,Go语言确实比Java做得更好,在4个不同的角度来总结
为什么一些已经选择 Java 的公司,现在又开始考虑使用 Go?
由于业务需要,比如歌曲,我们需要对部分歌曲开放限免的功能,而且需要限制开放限免的场景。比如这首歌在场景A免费,在场景B收费。
先说正确的做法,下发另外一个字段比如free_token,通过这个字段判断业务来源,和判断是否可以免费。free_token是随着对应的场景查询时下发的,是变化的。即同一个歌曲的free_token不是唯一的。
现在有另外一种情况,想对现有的业务做限免(前端业务是不认free_token的)。这时可以把歌曲id使用free_token的值来下发,后续通过歌曲id来判断是否符合限免。
很多人普遍认为,不跟人起冲突,能得到别人满意的评价,那么就一定程度上证明他高情商以及沟通能力好。
然而,这种观点真的正确吗?在某些情况下,这样做是否必要呢?
先说结论,在高人才密度的公司中,基本也应该确实是这样。因为大家能相互理解,目标是做正确的事,简明扼要节约时间提升沟通效率,尊重别人及尊重自己,对有能力的人表示钦佩并愿意向他们学习。
相反在低密度人才的公司或者公司领导人不开明等情况下,情况就有所不同。举例来说,如果公司内部人际关系不够平等,或者产品地位高于技术。产品需求缺乏认真性和逻辑性,技术人员只能被动接受,甚至放任不管,那么这种沟通方式就变得有问题了。技术人员默默忍受、妥协,把自己变成产品的需求完善员,即使自己的时间被浪费也不可惜。
当金钱和地位给予足够时,技术人员选择妥协也可以理解。否则,那简直就是对自己的不尊重。
在工作中,大多数情况下,大家都喜欢积极跟进事情的人。但有时候,这事情你真的要跟进吗?
关于这个问题,其实并不是0或1这么简单。很多时候取决于公司的工作氛围或者分工、以及你对自己的定位等情况。
在工作中,在相当长的时间里,我执行力特别强的人。我的原则是事事有结论(不给别人挖坑,不让事情烂尾)。所以我会很积极的跟进事情。
但渐渐的,我开始怀疑,有些事情是你需要跟进的吗?
以技术人员为例。你需要把自己当项目经理那样跟进事情吗?答案是分情况。
有些情况你需要跟到底,而有些情况你只需要尽你责任即可,毕竟你有更重要的事情去做,或者说你的价值不应该在这里虚耗。
最近的工作原因,涉及到接口充权益的接口安全性问题,这里趁热再说说个人看法
基于之前写的这篇使用回调机制提高接口安全性继续聊。上次扩展中提到是不是可以使用非对称加密,替换回调验证?目前我所负责的业务确实使用这种方式。
业务中要对接多个渠道,渠道需要调业务的接口来加权益,为了安全性,目前的做法是由渠道自己生成RSA私钥,提供RSA公钥到业务这边。渠道使用私钥生成签名,业务这边则使用公钥解密验证,从而保证请求是合法的。
其实这里还是有潜在漏洞,之前的文章也提到过,如何保证私钥不泄漏?虽然说保证私钥不泄漏是渠道自己的问题,但是多年的经验告诉我,大多数公司并没有很好的保存这些私钥的方法。按照我的猜想,这些私钥在公司内部会被经常拷贝发送,至少开发人员基本都有办法知道的。万一知道私钥的人后续离职了作恶呢?
而我们经常对接一下小渠道,参差不齐。尽可能保证渠道的安全也是我们作为平台要积极考虑的问题。
所以个人的看法,即使使用RSA保证签名的合法,还是要提供回调的能力,提供给渠道,通过二次校验保证知道私钥的人也无法直接从自己的私人客户端发起请求并成功加权益。毕竟回调的请求是到达渠道方的正式服务器,要在正式服务器上线恶意代码,靠谱的公司都有一定的限制和管控。
先来两段经典的话:
一
为众人抱薪者,不可使其冻毙于风雪;
为大众谋福利者,不可使其孤军奋战;
为自由开路者,不可使其困顿于荆棘。
二
愿中国青年都摆脱冷气,只是向上走。
不要听自暴自弃者的话。
能做事的做事,能发声的发声。
有一份光,发一份热。
就令萤火一般,也可以在黑暗里发一点光。
不必等候炬火。
迫于由于现实的压迫,大家普遍焦虑,也会在工作中认怂,即使是不合理不正确负能量的等等;
这些其实都能理解,不管是迫于生活压力,还是对方给得实在太多等原因;
但有时,希望我们可以
以下内容格局比较小,仅做个人记录
从我个人接触过的ToB和ToC业务讲,有以下特点(当然肯定不是一定对的,毕竟业务形态实在太多,我没真正接触过的,就不提了):
关于ToB业务的规范
怎么看待职场中的“业务壁垒”?
在我的工作中,曾经发生过这样一件事:有一天我们在讨论,能不能实现一个业务通用组件,让各个业务接入,提升业务需求的开发效率等,这时候有一个同事就跟我说:‘那如果真的实现的话,那你这边的业务就啥都没了’,言外之意就是我这边“没事做了”。我给他的回答是:‘没关系,只要是有意义,有价值,对公司是正确的就行’
那么?我真的那么爱公司吗?
在工作中,你们到遇到很多“业务壁垒”。通俗来讲,这个东西只有他会,或者短期内只有他能搞定。你甚至会觉得一股恶心,就是很乱很难受,并惊叹对方的忍耐力。
然而,无数的事实证明了,这个世界不会因为没有谁就不行。
而我的原则是:做正确的事,不制造业务壁垒;保持出色的整理学习能力,输出业务文档,让自己随时可替换,甚至寻找可以替换自己的人;不做狭义对自己有利的事,尽量做广义对公司有利的事。
具体来说,可以这样阐述
关于“可替代性”另外补充:
以前刚毕业的时候,进入一个组,叫中间层,那时候还懵懵懂懂不知道想表达啥意思
图来源网上,已未知出处
这个组是直接给app提供接口的,主要的职能大概有以下
聚合服务,简单的来说就是聚合底层的各个业务系统,给用户端应用提供接口
那么这个组有存在的必要吗?特别是现在服务内部都微服务化,很多业务服务都是直接对app提供接口的。
先从表面上看看使不使用聚合层各自的特点和好处
仔细想想,简单理解,其实使用聚合层就是水平架构,不使用就是垂直架构;根据康威定律,其实公司决定使用哪种方案,一定程度还受公司组织关系的影响。
提外话:由于前后端分离的流行。聚合层服务有时候会由前端团队来维护。使用node服务用于聚合页面和后端接口,从而提升性能。相对于传统的聚合层,前端的聚合层比较轻量化,基本是无状态服务,不存储数据和加工数据,纯粹做聚合接口和页面。