梳理学习技术的脉络,助你一臂之力

断断续续学习技术,包括编程技术,也有6,7个年头了。这期间看过很多大牛,大神,大佬的博客,文章,是时候输出一些我的理解和认知了。

纵观编程技术这一行,不外乎打基础,造轮子,复用轮子,整合轮子。应用在实际生活中就是遇山凿山,遇水架桥。你所看到的那些高级的、复杂的技术比如多线程、高并发、分布式、缓存等等各种中间件技术,都是工程师们在遇到现实的问题、难题前想到的解决方法和应对对策。

想想多线程是不是解决了多个程序不能同时执行的问题,用时间换空间。

高并发是电商等客户量巨大的系统经常会出现的问题,最常见的就是淘宝的双十一,从一开始的数十万人到后来的数百万人再到后来的数千万人。这个高并发的问题难在在一个瞬间,极短时间内系统接收到来自客户端(现在一般都是浏览器)发来的比平时请求量翻几百倍,几千倍,甚至更多倍数的请求,这种问题随着淘宝的双十一活动越来越为人所知而变得越来越寻常,为此淘宝的工程师们才不得不已花费精力和功夫去研究怎样让系统接受那么多数量的请求访问系统。同时,随之而来的还有高可用的问题。

为了解决这个难题,他们研究出了分布式服务架构,让服务器以分布式集群的形式去提供服务给客户端来满足更多客户的业务需求。

这期间,还加入了能让高并发、高可用成功运转的中间件技术,如缓存(常见的有redis),消息队列(常用的有RabbitMQ, kafka等),负载均衡nginx(利用它的反向代理功能)等技术。这里的每个技术都很有来头,也都意义重大。

包括后来阿里提出的数据中台,是把一些各个业务线会用到的基础、公用的功能都归化到一个中台的层面上,统一管理公司内部的数据。

那么说说什么是编程技术的打基础?

其实编程语言本身的设计就是一种打基础,它是为了帮助我们实现我们想要创造的软件产品打基础的。

从java的语言演化来说吧。刚开始,java设计了8种基本数据类型和类。还造了集合等类型供工程师进行开发程序使用。试想,只有基本类型,没有存储基本类型的容器怎么行?于是它造了集合这种数据的容器类型,用来存储和操作数据。

java的集合又考虑得比较细致,分为了两种类型,一种是每个位置只能存放一个数据(对象)的如Collection集合,一种是每个位置可以存放一个键值对数据(对象)的如Map集合。

再后来,由于现实情况的复杂,java又有了多线程的概念,对线程的操作又应运而生。线程满足了我们同时进行多个程序的运行的需求。这让复杂的系统业务得以能够良好地运转和处理。

java对于多线程专门做了java.util.concurent这个包,封装了一些常用的操作方法供程序员进行现实工作的开发和完成。

说说轮子吧,java可是造了很多轮子。比如操作文件的InputStream, OutputStream, BufferedReader, BufferedWriter, 对网络操作的Socket, Http协议,HttpClient等,对excel文件的读写出了很多不同的轮子,有poi, jxl,easyPoi等,对邮件的发送和接收有了javax.mail, javax.activation轮子等等等等。

包括单体应用变成多机应用,开发框架从spring mvc到spring boot, 到spring cloud等等这些框架的演进,都是技术随着实际业务使用场景的需要所不断更迭和改进完善的。

时间有限,今天就先到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值