core提币手续费多少 Net Core已经开源好几年了, 为什么不像JVM那样很多人研究和调优其GC算法?
Net Core已经开源好几年了, 为什么不像JVM那样很多人研究和调优其GC算法?
很简单:没有关键业务跑在 net core 上。
曾经,jd 业务用 .net,但几年后就全换成 Java 了。这足以说明问题了。
像 zhihu 这种小厂,开始用 python,业务量大了之后就转 golang ,而不是转 net core 。足以说明问题了。
有人说,netcore 如何如何好,根本不用自己优化……。实际上根本没达到极限,不到优化的时候。
优化肯定是需要的,再好的程序都是有优化空间的。只是现在dotnet平台上目前缺少大型的应用。正常的业务场景下,难以达到框架性能的瓶颈。
dotnet 虽然开源了,但是开源太晚。要是早几年,在Android兴起之前,在大数据兴起之前,现在还会是这般场景吗。眼看着国内的大企业一波波地转向了Java和其他语言,作为一名dotnet程序员心里是大大的不甘心。
dotnet 在语言层面相比 Java 有太多优势,Java 新版新增的一些语言特性也都是照抄的 dotnet。但即便是这样,依然是叫好不叫座。
开源太晚,错过了几波行业发展红利。以至于现在,大数据领域缺 Hadoop,搜索领域缺 Elasticsearch ,移动端虽有xamarin,但依然是鸡肋般的存在。要是有这些杀手级应用在,dotnet 生态肯定会繁荣起来,向着更强的方向优化。
还能说什么呢,只能期望即将到来的dotnet 5 能一统现在混乱的局面,发挥好自己的特长,繁荣dotnet的生态环境。
首先.net的原装GC一直都不错。流畅到可以支持3D游戏开发。所以不怎么需要调优。要知道文章多不用不一定是好事,95%的技术文章其实只不过是要解决一个BUG而已。其次C#的语法和运行时设计也好,对GC的压力小很多。比如范性支持基本类型,这样List<int>之类的结构,是整体分配和释放的。而某蛙就需要每个元素拆箱装箱。慢死,对GC来说也要算更多的引用链。此外C#还支持matrx4x4之类的SIMD数据类型。也是提高运行速度和减少GC的好东西
不只是netcore,golang,rust等等很多语言都没有好多人研究gc,所以这个问题应该问,为什么jvm会有很多人研究。
简单的回答是,jvm的历史负担太沉重,Java社区对jvm的改进十分的保守,新的特性必须要保持向下兼容,导致只能从gc入手优化性能。而netcore不一样,微软主导的netcore社区对clr的改进激进的多,新特性很多情况下是不会向下兼容的,性能优化可以在clr中解决掉,自然就不会过多关注gc了
这似乎挺正常的,如同它购买了GitHub后,众开源项目就纷纷迁移GH。开源社区普遍不信任微软,其意定非在开源本身。.Net 开源估计也是市场占有率在降,没人真心愿意用它。
软件工程本科分方向,NET和Java选哪个好?
工作将近五年的告诉你,语言不重要,重要的计算机原理,通信,数据结构和算法!学好这几样任何语言只要学会语法,会使用对应的框架就足以应付很多问题!
借此来探讨一下Java,Java语言是相对于C和C 更容易学习的语言,但现在,这种说法只适用于十年前,现在的Java如果不掌握一些中间件,不懂数据结构的算法,你就会被淘汰。当然,这都是相对高级岗位来说的,低级岗位只要把Spring和SpringBoot学会了就足以应付!然后,Java多用于服务端开发,很多中间件也是由Java开发的,也正是因为Java有很多中间件,很多中间件又用于对数据的处理,所以数据结构对Java程序员很重要!其次就是网络通信,现在的大环境,框架基本都已成熟,Netty这样的通信框架必须要熟悉,用Netty来构建自己服务之间的通信等等!
互联网的发展让很多技术更新速度加快,当很多传统行业在使用Spring的时候,Dubbo,SpringBoot,SpringCloud就已经被使用,也有与消息通信有关的中间件Kafka,RocketMQ等等,还有大数据相关Hadoop,Hbase,Spark等等,总体来说,Java的提升空间很大,需要学习的东西也多!大厂的要求也高!
所以,在我看来,学好基础很重要,可以让你更快捷的认识一些中间件的原理,能够快速应用于开发中!语言不重要,重要的是基础!说不定再过几年Java也会被淘汰,当其他一些可替代的语言生态趋于成熟时,就会被淘汰!