• 高并发时代到底是Go还是Java?


    作为一名用过Java和Go开发过微服务架构程序的在校学生的角度思考,本文将从以下几个方便来讲述Go和Java的区别。

    前言

    小明:听说Go在天然情况下支持并发
    小红:我不管Java就是最好的语言
    小明:不行,我要学以下神秘的Go语言
    总得来说Go不是那么神秘,有c语言和Python语言基础很快就能速成

    生态

    因为博主是先开始学习Java的,所以在接触Go的时候发现,go的框架是非常多的,并不是像Java的spring一家独大

    Go的部分框架

    字节开源的Hertz,kitex都是非常不错的框架,在性能上高于gin
    哔哩哔哩开源的Kratos都是很不错的框架
    除此之外还有gin,go-zero,go-mirco框架

    Java框架

    之前有听说过Hibernate,Struts,现在都是spring一家独大,微服务的话要么就是cloud要么就是cloud Alibaba
    在生态上Java更加工程化,相对于Go来说Java更加重量级,响应也更慢,如果你要开发简单的需求,例如简单的微信小程序的话,我优先推荐Go,因为它是支持云原生的,部署非常方便同时开发更快,更易理解。但是庞大的企业级别我推荐使用Java,他的面对对象的思想可以说是划时代的优越了。

    大数据的并发请求

    下面来简单看看go和Java如何开启一个协程(线程)

    package main  
      
    import "fmt"  
      
    func printNumbers() {  
     for i := 1; i <= 100; i++ {  
     fmt.Println(i)  
     }  
    }  
      
    func main() {  
     go printNumbers() // 启动一个协程执行打印任务  
      
     // 在这里可以添加其他代码,协程将在后台运行  
      
     // 为了演示目的,我们让主线程休眠一段时间,以确保协程有足够的时间完成任务  
     // 在实际应用中,您可能不需要这行代码  
     time.Sleep(2 * time.Second)  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    go语言只需要添加一个go的关键字就可以开启一个协程,而且协程是轻量级的线程,大约内存是线程的1/1000

    public class PrintNumbersThread extends Thread {  
        public void run() {  
            for (int i = 1; i <= 100; i++) {  
                System.out.println(i);  
            }  
        }  
    }  
      
    public class Main {  
        public static void main(String[] args) {  
            PrintNumbersThread printThread = new PrintNumbersThread();  
            printThread.start(); // 启动线程执行打印任务  
      
            // 在这里可以添加其他代码,线程将在后台运行  
      
            // 为了演示目的,我们让主线程休眠一段时间,以确保线程有足够的时间完成任务  
            // 在实际应用中,您可能不需要这行代码  
            try {  
                Thread.sleep(2000);  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    Java开启一个协程,语法是稍微有点复杂的还需要多new一个对象来消耗内存。
    所以go可以天然支持更大的并发,这样是他的优点,但实际Java21推出了虚拟线程,所以在以后到底是go还是Java处理并发更有优势都很难说

    语言

    Java的语法是复杂的,可读性没有go语言的可读性高,go的语言就好像python,思想很像c,但有保有Java的面向对象的特点,所以说go是21世纪的c语言。

    结尾

    我相信肯定有小伙伴要说Php是最好的语言了,对此我只能说
    在这里插入图片描述

    嘿嘿今天就到这了,祝大家中秋节快乐

  • 相关阅读:
    复习七:队列
    测试用例之使用测试方法
    【Kotlin】初识Kotlin(二)
    什么是数据埋点?有何作用?
    3种python查看安装的所有库,然后将他们组合成一个pip命令
    DeepSpeed教程
    服务器环境配置(安装jdk和tomcat)
    离散低通滤波方法
    Leo赠书活动-02期 【信息科技风险管理:合规管理、技术防控与数字化】
    【随想】每日两题Day.17
  • 原文地址:https://blog.csdn.net/giaogege666/article/details/133443196