从Golang的设计学习Java的实践

本文探讨了Golang的设计理念,并将其与Java实践进行对比,包括工作空间与包的组织、测试、异常处理、资源关闭、类型系统、反射、并发等方面,强调了Go语言如何通过通信来避免共享内存的并发问题,以及Java中的一些设计选择及其影响。
摘要由CSDN通过智能技术生成

今天看了一天go语言,了解了一下这门被称为“拥有许多最佳实践”的“21世纪C语言”。很多大佬都对go语言规范对程序员的强迫性而不满,但对于我这种菜鸡来说,能学习从另一个角度看待和解决问题的方式就是最大的收获。

go语言还是在发展中,许多工具和框架都还没有公认、成熟的轮子,而且目前go还是用在偏底层的工具和中间件开发的比较多,如果用来开发web项目,也没有像spring这样集成了一切的成熟框架,必须要自己考虑如何集成日志,服务器配置,http路由,组件管理,ORM框架集成,数据库和中间件配置和连接等。当我们在用spring的时候,由于过于方便,很少会区关心这些功能是怎么做到的,将我们的关注点聚集于业务就是spring最大的优势(然而也让写业务的人无比空虚,毕竟写已有的业务基本没有难度,招聘都只能往场景分析,性能调优和线上排错上加难度)。而当我们从另一个角度来思考的时候才能注意一些之前没思考到的细节。比如,http服务器和应用服务器通常是怎么通信的?做Java开发最常使用的tomcat这样的web容器实际上集成了http和应用服务器的功能,spring是通过部署在tomcat上的一个dispatcherServlet的连接了tomcat的http服务器功能,而如果专门的http服务器(比如nginx),那么就需要转发原始消息给应用服务器二次解码(如果http服务器本身已经解码了一次的话)。事实上的代理服务器是和应用服务器分开部署的,这样做无可非议,但是如果是流量小的单机服务器的场景,像tomcat这样的简单服务器直接用于请求处理应该会更快(不需要多一层通信)。

以上都是废话,现在进入正题。

1.工作空间与包
一个工作空间下&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值