贾思谦前端
“应用层的软件开发其实就是对各个已有开源框架和公司本身造的轮子的一种综合运用,简单来讲,就是你有不少功能强大的工具,你要作的就是怎么组合这些工具,从而符合场景要求。”mysql
1面试
大前端的工做也是对spring
现有框架的技术选型,从而界定项目边界sql
iOS,Android,以及各类流行的H5框架,其实没有本质的区别,他们都是从硬件层,再加一层协议层,到组件层,再到应用层,每个层次都向外提供各类业务接口,从而达到提供知足APP 全部功能的能力。数据库
虽然,各自运用的语言都不相同,可是语言层面的只是写的形式不一样,但根本的东西都是相通的。也就是几行代码就表示一种能力。swift
对于一个通常的APP来讲,iOS的OC,swift,Android的Java,Kotlin, H5的好比Angular JS,ReactNative,ionic,等等,不用彻底掌握各类语言的细节,只要会一些基本的语言能力,就能够完成相应的基本APP开发。后端
对于一些特殊功能的接口的调用,等用的时候再查一下就能够了。好比硬件层,也无外乎都是一些硬件厂商提供的。对于一些成熟的社区,对不一样的硬件功能实现也都会有相应的开源库,这些开源库改一改也就能知足具体业务需求了。固然有的也要本身造轮子,但通常大公司都有基础开发团队,也就是有本身的专门造轮子的团队。缓存
若是没有相应的开源库,就须要本身研究一下,具体踩一些坑,运用一些逻辑也都会实现。性能优化
固然这是指通常的APP,一些用户量大的APP,也会有专门的人员作内存优化,界面优化,也会处理一些图像。一些基本的性能优化就会给客户明显的感受。更细粒度的优化其实已经算是追求用户极致体验的范畴了。坦白说,对用户的感官体验不会带来明显的感受。固然也会有一部分用户是可以察觉出来的。
2
后台的技术主要源自架构的设计,
技术的选型,以及对已有业务功能的划分
这里主要以Java为例,Java是比较重的,并且由于开源的缘由,整个JAVA的生态特别好,有各类各样的开源框架和库,因此相对于.NET的本身造轮子,选择Java开发比较大型的项目是一种节省成本的作法。
后台的技术主要是围绕的数据库而展开的。有网关层接受客户端的请求,从而业务层和数据逻辑层把收到的数据存入DB. 其中涉及到数据协议的转化,以及一些传输协议。
数据库有RDMS,好比mysql,oracle,SQL Server等。有NOSQL,好比MongoDB,以及NEWSQL。缓存的有Redis,memcached.
多台,多机房部署时为了保证数据一致性,也会用到分布式锁,分布式事务,幂等。
如今用到的微服务架构,也会涉及到限流,降级,熔断,服务治理,注册与发现,配置中心等。
好比如今流行的spring boot ,spring Cloud,ZK,Consul, etcd ,eureka等,经过对现有技术框架的选型和组合,造成一套高可用,高并发的架构体系。
3
先后端经过数据连通,
数据是整个项目的精髓。
对于后台程序而言,能够有能力处理大量的读写请求,而且准确记录数据一直以来都是后台的追求。
咱们经过各类各样的方式来保证数据的一致性和可靠性。并且也经过各类各样的技术手段来确保在海量请求的状况下,能够保证整个项目的稳定性,高可用,高并发。
一切软件的最终目的都是为了处理,记录,展现,分析数据。从而以可视化的展示来给人提供决策参考。传统的关系性数据库在数据量少的状况下,能够很好的链接不一样变量,从而大大简化数据的查询和调用展现的时间。
关系性数据库把多维度的变量经过主键关联,从而能够拥有方便处理和查询的能力。可是面对愈来愈大量的数据,为每个数据编制一种关联关系已经愈来愈难。不少数据之间是没有什么联系的。
因此这个时候非关系性数据库就产生了。他能够解决大量非关系数据的存储和查询问题。为海量数据的分析,处理,以及应对大数据的现实状况提供了可行性解决方案。
4
软件是一个综合性的系统项目,
这个系统可使人类打破空间和时间的局限
软件的诞生,大大的简化了人们获取优质咨询的过程。也缩短了人与人,人与组织的链接时间,软件能够大幅度提升人们的生活水平,也会高效的管理整个组织体系。使诸如资源管理,人力管理,财富管理,企业流程管理变得科学化和系统化。
软件的诞生,标志着人类进入了新的纪元。而接着的人工智能的到来,也将进一步加快社会的结构升级。也会进一步方便人们的生活,给人类以全新的生命体验,也会加速提高人们的认知水平。经过科技来改变整我的类的生活。
虽然新技术不断涌现,可是软件行业的技术本质不会改变,精髓部分始终都不会改变,只是表现形式有所变化。关于应用层的基本思惟方式,以及一些本质的东西都是以最简单方式表达出来。
固然,软件的技术形式,各个技术的具体实现细节,要踩的坑,也都是遵循着必定的规律。当咱们掌握了这个规律,就会有坚决的信心,作出来是早晚的,只是时间的问题。
其实,全部问题的本质均可以归结到时间的稀缺。咱们并非没有解决具体问题的能力和信心,而是怎么以有限的时间解决问题,达到降本增效的目的,才是咱们做为技术工做者的基本能力和应该持续学习的缘由。
精彩回顾:
面试点:Java 中 hashCode() 和 equals() 的关系
强烈推荐:
《Java 极客技术》知识星球限时优惠,如今加入只需 50 元,仅限前 1000 名,机不可失时再也不来。趁早行动吧!
https://t.zsxq.com/J6Em2nU
隆重介绍:
Java 极客技术公众号,是由一群热爱 Java 开发的技术人组建成立,专一分享原创、高质量的 Java 文章。若是您以为咱们的文章还不错,请帮忙赞扬、在看、转发支持,鼓励咱们分享出更好的文章。