怎么从初、中级Java程序员过渡到高级Java程序员?

扩展性

分为垂直扩展和横向扩展,垂直扩展就是增加单台服务器的处理能力,需要你熟悉硬件、操作系统、[中间件]的知识;横向扩展一般就是指集群式部署,这都有行业解决方案,你需要做的只是将你的系统设计的具有可扩展性,说白了就是系统可以多份部署,但对外表现为单一应用。

分布式

image.png

单台服务器处理能力有他的极限,但是我们可以将某一个业务拆分成多个子业务,分别部署在不同的服务器上,说白了就是在设计的时候要注意业务的拆分,比如某一个交易平台,你把他拆分成几个子系统,做一个订单处理的应用,再做一个支付的应用等等,做成分布式应用。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉(同英):1253431195 扩列获取资料学习,无工作经验不要加哦!

技术类——数据读写分离

image.png

[数据库]资源宝贵,扩展性较差,一般读多写少,读操作尽量可以通过缓存技术去读取缓存,使用自动进程定期将数据库中的数据写入**缓存(EHCACHE/MEMCAHCE/REDIS等)**中,这样可以大大降低交易数据库的连接压力,提高系统的并发能力。

技术类——连接池、队列、数据压缩等技术

image.png

通过连接池、队伍等实现方式来减少系统的开销,通过数据压缩技术减少带宽压力。

业务类

image.png

可能某些时候我们改变一下业务处理方式和业务流程,就可以大大降低系统开销,比如把某些耗时较长的同步处理转为异步处理。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉(同英):1253431195 扩列获取资料学习,无工作经验不要加哦!

以上是高并发、高性能系统建设中最常见的几种做法或者思路。

哈利法塔和民房使用的材料都是混凝土和钢筋,前者需要系统的知识面、科学的方法论、良好的设计、灵活的工具使用,后者只需要把材料往上堆、往上糊就可以了,这就是民工与工程师的区别。

实际一点,做软件成长最快的方式当然是不断的写,不断的做项目,不断的学习,熟能生巧,不断的总结形成自己科学的方法论和知识库,这样才能游刃有余。如果接触不到更多项目,可以到GitHub上开开视野。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值