做投资,有个思路是:抓住不变量。
无论世界形势怎么变化,时代怎么发展,创新永远是最难跟踪的,但那些不变的确实非常确定的。
茅台酒的商业模式基本不变,研发投入是固定的,很难因为时代发展,突然被人颠覆。
格力空调,商业模式总体不变,生产制造会做一些优化。
而科技股需要不断创新,医药股需要不断创新研发新药,投入巨大,收获却不一定大。只要不努力,随时被颠覆。
从2019年开始,我也明确把这个思路用到技术领域。
技术永远也学不完,天天去学习新技术,今天有精力,明天有精力,总有一天会筋疲力竭。
相反,应该专注自己的持续积累。
今天的积累,明天可能就过时了,所有可以侧重那些永不过时、长期有效、长期有价值的技术。
下面列一些后端研发人员,几乎必须掌握的一些技术,尤其是做业务系统的。
2019到2020,尽可能全部掌握,目标是熟练使用,灵活解决实际问题,不追求源码原理的掌握。
1、登录
PC端:Cookie登录
App端:Token登录
第三方登录:微信、支付宝等
2、权限控制
功能权限拦截,最好用拦截器实现
3、权限系统
准确说是,权限配置系统,统一的权限配置。
权限的控制,由具体业务系统去实现。
4、爬虫
爬取互联网公开非隐私数据,非结构化数据,然后结构化存储,也可能是非结构化存储。
python语言据说有个强大的爬虫工具库。
java里,还没注意到特别强大的,WebMagic值得学习。还有其他一些Spider库。
5、索引和搜索
ES,已经非常普及了。主要解决文本索引,文本搜索。
使用爬虫,再索引,多用来实现 站内搜索,甚至是 全网搜索。
全网搜索引擎比较少,某个领域的搜索引擎还是不错的小钱思路。
6、同步和异步
程序员,大多都是API工程师,各种API调用。理想情况下,只需要学一些逻辑,调用各种API满足需求就行了。
本地API调用,生产服务能力有限,因此出现了RPC远程方法调用。
另外一些,非紧急实时的事情,也可以用异步调用。
同步:PRC框架,Dubbo,Spring Cloud。
异步:MQ。MQ主要是后端的异步。
7、消息通知
移动端,消息通知的需求比较强烈一些。
PC端,有些网站也会主动去拉去新的消息。
比如,一些社交网站,本页面不刷新的情况下,如果有新消息来了,也会给予通知提示。
8、缓存
每个系统都在用的。
最简单的用Map缓存不过期的数据,比如配置文件。
还可以使用一些本地缓存组件,比如Guava工具包中的Cache模块。还有专门的JCache/EhCache等。
如果没有分布式的需求,用EhCache基本够用。
如果需要多节点,分布式,用Redis更好一些。首先是网上吹的比较好。实际感受是,Redis特别稳定,几乎没有出现异常停止的情况。也没出现过访问Redis延时的情况。
一些建议,如果用了Redis作为分布式缓存,或者Session保存,最好不要再使用本地缓存。
一是没必要,Redis一般在内网,访问很快,也很稳定。二是会增加技术复杂度,本地有缓存,远程有缓存,排查问题不方便。
三是针对“踢下线”等特定需求,也不方便实现。
9、支付
银联、微信支付宝等第三方支付,已经非常普及了。
支付和收钱是刚需中的刚需,这个如果做不好,生意根本没法玩了。
10、SEO优化
PC Web端的站点,现在增量没那么多了。
比较适合官网和一些内容社区,SEO的优化需求还是有一些的。
SEO做得好,节省流量。
移动端也有这个需求,方便别人找到自己,总是有好处的。
11、自动化
Jenkins是比较知名和普及的,和Git、Maven、Shell脚本结合起来,实现“一键更新”。
12、代码生成器
做业务系统,项目型,或者产品持续升级,侧重功能的,代码生成器非常有用。
一个人写的代码,风格套路通常应该是固定的。
来一个新的模块,自动化生成标准通用代码。
代码生成器的核心,其实不是“自动生成”,而是“避免重复劳动”、“减少重复劳动”、“提高生产效率”。
13、软件复用
企业发展,会不断积累 品牌影响力、客户、关系、资金。
而技术人员,如果没有积累,那迟早要完蛋。
思想经验可以积累,需要输出,或者分享给别人扩大价值。
而工具库、通用代码、某个场景下的成型解决方案等,可以拿来即用,极速提高生产力。
14、跨平台开发能力
PC站点、移动站点、PC客户端、移动客户端(Android、iOS、平板)、小程序(百度、微信、支付宝)。
系统的终端、渠道、场景,越来越丰富。
后端怎么去支撑,前端怎么跨平台。
后端,其实还好,做好接口定义,通用性,相对容易。
前端,看需求复杂度,Uniapp, Taro等值得研究。
15、可选的
1、人工智能A。今后的趋势是,大厂搞定原理和实现,输出API。普通企业,调用API即可。
这是一个门槛较高的技术行业。
普通企业适合,搞搞模型调优之类的。
对于个人,大厂的人工智能API绝对有必要去学习和掌握,花不了多少时间。
你如果不会,就会被某些人的花言巧语所蒙蔽,还以为很高端的样子。
2、大数据B
比较接地气一些。
现在IT、软件、互联网、物联网,应用越来越多,数据大大增加了。
高效处理,已经有了实际需求。
以微信为例,10亿用户,假设就是统计下数据,传统的sql统计,肯定不行了。
Spark、Flink、Storm之类的,可以研究学习下。
3、云计算C
这个有点鬼扯蛋。新瓶装旧酒。
只有极少数企业有这个资金去做这个。
4、Docker和K8s
若干企业有这个需求。