笔者很喜欢技术,从移动端、后台、再到算法都有学过。学过了各种技术之后,觉得技术很多技术其实相通的,有时候觉得这是对世界的一个朴素的理解。学技术首先要要去理解技术中涉及的一些英文的名字,以及一些主要的概念。如果把这些概念都理解了,有了主要的脉络,再看细节就很容易了。
Android移动端技术主要有哪些呢 ?应用层来说:Activity是如何启动的,view如何绘制,如何把数据刷新与界面刷新分开;网络数据请求怎么刷新;本地数据存储是用provider,文件,还是sqlite;数据是否需要加密;远程配置如何实现;Bitmap如何防止OOM; 3D效果如何用opengl实现。 对于框架层来说:activitymanager, windowmanager, packagemanager, surfaceflinger, mediaplay,stagefright,camera是什么,工作流程等等, 这些架构的设计确实有独特之处,这块是android的核心所在; 对于底层来说:linux系统内存管理,文件管理,进程管理,进程间通信,设备管理等等,其中设备管理是最重要,android的BSP工程师大部分时间在调设备的参数。
后台技术来说,很多人认为就是CRUD,只是这个很浅层次的。涉及到各个技术细节是挺多,尤其涉及到微服务分布式,云原生这些。应用框架:springboot,springcloud等框架的设计原理;rpc框架:gprc,dubbo等实现原理;中间件:maycat,sharding-jdbc等如何现实分库分表;数据库:mysql,pg,oracle等底层存储原理,索引如何实现,sql怎么解析;缓存数据库:redis,mongodb等实现原理,应用场景等等;接入层:LVS如何现实,nginx是什么,惊群是什么以及如何解决;分布式:paoxos,raft,zabb算法有什么区别,zookeeper 与etcd的差异;消息队列:rabbitmq,rocketmq,kafka的差异与应用场景;云原生:servicemesh,k8s等原理;分布式链路追踪告警等等如何实现。
对于算法来说,这里说的算法主要指的是机器学习算法和深度学习算法。传统的机器学习:线性回归,决策树,xgboost,lightgm,EM等等算法的推动;深度学习:rnn,lstm,gru,cnn,dnn,attention的原理推导与实现;强化学习:dqn,ddqn,ac,ddpg,ppo等算法的原理与实现。涉及到具体的图像、语音、文本、推荐等垂直领域的应用,其实离不开前面提到的基础技术与原理。对于算法来说训练与推理很重要,这就涉及到tenforflow、pytorch等,以及GPU,NPU,CPU的计算技术等等。
对于大数据来说,常用的大数据套件,hdfs,haase,spark,flink,hbase,clickhouse,kettle,数据湖等技术原理与实现。
当然很重要的是要掌握计算常用的算法与编程语言。对于算法来说:数组,链表,排序,树,图,动态规划等等,可以去刷刷leetcode等一些网站,练习之后会思维得到很大训练。对于语言来说:比如说java语言,JVM的工作原理,GC算法,hotspot如何实现。能现实一个自己的语言,从词法分析,语法分析,机器码的生成,以及优化的实现。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。