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

news2024/11/27 7:44:15

作为一名用过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)  
}

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();  
        }  
    }  
}

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

语言

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

结尾

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1052946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3 element-ui-plus Carousel 跑马灯 的使用 及 踩坑记录

vue3 element-ui-plus Carousel 跑马灯 的踩坑记录 Carousel 跑马灯首页跑马灯demo Carousel 跑马灯 首先&#xff0c;打开其官网-跑马灯案例 跑马灯代码&#xff1a; <el-carousel :interval"5000" arrow"always"><el-carousel-item v-for"…

“智慧时代的引领者:探索人工智能的无限可能性“

目录 一.背景 二.应用 2.1金融领域 2.2医疗领域 2.3教育领域 三.发展 四.总结: 一.背景 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;&#xff0c;是指通过计算机程序模拟人类智能的一种技术。它是计算机科学、工程学、语言学、哲学等多…

Halcon 从基础到精通-01- 基本概念

1 HALCON Architecture 【图一】 HALCON的架构如上&#xff0c;其主要的部分&#xff0c;就是图像处理库。 2 HALCON的基本架构 2.1 Operators HALCON库功能的使用都是通过【operators】操作符来实现的。绝大多数的操作符由多种方法构成&#xff0c;具体可以参考给出的下面…

【开发篇】十、Spring缓存:手机验证码的生成与校验

文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数&#xff08;例如磁盘IO&#xff09;&#xff0c;提高…

驱动插入中断门示例代码

驱动插入中断描述符示例代码 最近做实验&#xff0c;每次在应用层代码写测试代码的时候都要手动挂一个中断描述符&#xff0c;很不方便所以就想着写个驱动挂一个中断门比较省事 驱动测试效果如下&#xff1a; 下面的代码是个架子&#xff0c;用的时候找个驱动历程传递你要插…

wvp-GB28181-pro windows系统编译安装的坑:录像功能不能正常使用

说明 wvp-GB28181-pro 只是包含了实时视频的接入功能&#xff1b; GitHub - 648540858/wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联…

“构建高效的前端表单验证与增删改功能实现“

目录 引言1. 基础增删改功能代码展示后端代码 2. 表单验证基本表单验证自定义验证规则 总结 引言 在现代Web开发中&#xff0c;前端表单验证和增删改功能是不可或缺的核心要素。本文将介绍如何使用ElementUI库来实现高效的前端表单验证和增删改功能。我们将从基础开始&#xf…

LFS在VMware Fusion 中启动时两种报错的解决办法

### 环境&#xff1a; LFS版本&#xff1a;LFS12.0 systemd VMware Fusion版本&#xff1a;Player Version 12.0.0 (16880131) PE版本&#xff1a;alpine-standard-3.18.3-x86_64 ### 部署过程&#xff1a; 1. 在云服务器编译LFS并将LFS目录打包&#xff1b; 2.在本地虚拟…

AI项目十三:PaddleOCR训练自定义数据集

若该文为原创文章&#xff0c;转载请注明原文出处。 续上一篇&#xff0c;PaddleOCR环境搭建好了&#xff0c;并测试通过&#xff0c;接下来训练自己的检测模型和识别模型。 paddleocr检测模型训练 1、准备数据集 在PaddleOCR目录下新建文件夹&#xff1a;train_data, 这个…

ChatGPT终于可以进行网络搜索 内容不再限于2021年9月前

微软和谷歌已经让旗下聊天机器人进行网上搜索&#xff0c;并提供原始材料的链接&#xff0c;以提高信息共享的可信度和范围。但是&#xff0c;ChatGPT迄今为止只接受了有时间限制的训练数据&#xff0c;这些数据仅限于从互联网上收集的2021年9月之前的信息。在周三的一系列推文…

一文读懂梯度下降

PPT版本有多个动图&#xff0c;更容易理解

数据结构--栈的实现

数据结构–栈的实现 1.栈的概念和结构&#xff1a; 栈的概念&#xff1a;栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Las…

【面试经典150 | 数组】除自身以外数组的乘积

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;记录左右乘积空间优化 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到…

给牛奶做直播之二

一、前言 给奶牛做直播之一 主要讲了视频的编解码&#xff0c;我们今天接着往下聊&#xff0c;主要介绍一下视频流的网络应用层协议&#xff0c;先简单讲一下视频文件格式与编码&#xff0c;视频文件格式有很多比如以前的AVI、RMVB、MP4等等无数种&#xff0c;视频文件格式和前…

QCefView 简介

什么是QCefView QCefView 是为 Qt 开发的一个封装集成了CEF(Chromium Embedded Framework)库的Wdiget UI组件。使用QCefView可以充分发挥CEF丰富强大的Web能力&#xff0c;快速开发混合架构的应用程序。它不需要开发者理解CEF的细节&#xff0c;能够在Qt中更容易的使用CEF&…

Flutter开发之Package与Plugin

前言 在flutter中有包和插件两个概念&#xff0c;插件 (plugin) 是 package 的一种&#xff0c;全称是 plugin package&#xff0c;我们简称为 plugin&#xff0c;中文叫插件。包(Package)主要指对flutter相关功能的封装&#xff0c;类似于Android中的插件和iOS中的三方库。而插…

Spring5应用之AOP切入点详解

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 前言切入点详解切…

Source Insight 工具栏图标功能介绍

这篇文章并不介绍 Source Insight 的具体使用方法&#xff0c;这类教程网上有很多&#xff0c;这里只分析 Souce Insight 工具栏图标的功能。 文章目录 Source Insight 简介Souce Insight 工具栏文件操作新建&#xff08;CtrlN&#xff09;打开&#xff08;CtrlO&#xff09;保…

C语言文件操作与管理

一、为什么使用文件 在我们前面练习使用结构体时&#xff0c;写通讯录的程序&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删除数据&#xff0c;此时数据是存放在内存中&#xff0c;当程序退出的时候&#xff0c;通讯录中的数据自然就不存在了&#xff…

wxWidgets(1):在Ubuntu 环境中搭建wxWidgets 库环境,安装库和CodeBlocks的IDE,可以运行demo界面了,继续学习中

1&#xff0c;选择使用 wxWidgets 框架 选择这个主要是因为完全的开源&#xff0c;不想折腾 Qt的库&#xff0c;而且打包的文件比较大。 网络上面有很多的对比&#xff0c;而且使用QT的人比较多。 但是我觉得wxwidgets 更加偏向 c 语法本身&#xff0c;也有助学习C。 没有太多…