一、内存分配器
程序中的数据和变量都会被分配到程序所在的虚拟内存中,内存才能空间包含两个重要区域: 栈区(Stack)和堆区(Heap)。
函数调用的参数、返回值以及局部变量大都会被分配到栈上、这部分内存会有编译器进行管理。
不同编程语言使用不同方法管理堆区的内存,c++、等编程语言会由使用者主动申请和释放内存;
Go和Java等编程语言会由使用者和编译器共同管理
转载
2023-08-11 22:03:07
89阅读
对于golang一直存有觊觎之心,但一直苦于没有下定决心去学习研究,最近开始接触golang。就我个人来说,学习golang的原动力是因为想要站在java语言之外来审视java和其它语言的区别,再就是想瞻仰一下如此NB的语言。年前就想在2019年做一件事情,希望能从各个细节处做一次java和golang的对比分析,不评判语言的优劣,只想用简单的语言和可以随时执行的代码来表达出两者的区别和底
转载
2023-09-20 07:49:15
54阅读
Java程序员的Golang入门指南1.序言Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis、类Evernote的云笔记leanote等。1.1 为什么要学习如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵。如果你是某种语言老手,你就是那门语言的“传道者”,下意识地会保护它。无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的。《肖申克的救赎》对此有很
转载
2024-02-04 00:40:19
19阅读
(文章有点长,算是个人学习的一个小总结,大家如果有耐心看完欢迎提出意见)Golang处在Java和C++中间,他有着比Java更快地性能,也有比C++更方便的开发方式,但Golang在很多方面还是跟Java有些雷同,我们来看看三者中间的差别和相似之处,然后着重看看Golang和Java的异同。三者的不同1.语言类型和平台1.1语言类型语言类型分为编译和解释,顾名思义,编译型语言就是把所有的代码一次
转载
2023-09-01 06:59:25
56阅读
1S = 1000ms 1ms = 1000us1us = 1000ns并行: 借助多核 cpu 实现。 (真 并行)并发: 宏观:用户体验上,程序在并行执行。 微观:多个计划任务,顺序执行。在飞快的切换。轮换使用 cpu 时间轮片。 【假 并行】进程并发: 程序:编译成功得到的二进制文件。 占用 磁盘空间。 死的 1 1 进程:运行起来程序。 占用系统资源。(内存) 活的 N 1进程状态: 初
转载
2023-08-22 15:18:48
104阅读
go语言是一个系统级语言,好处非常多。虽然是一个静态编译型语言,但可以像动态语言一样写程序,语言本身可以提供编写应用程序所需的基本组件,而不用引入第三方的包。如果了解c++、java、python等,会对其简洁和强大有更深的认识,c++实在过于繁琐,java也没有想象的简单,python的效率和go不是一个数量级的。那么多的特性,印象最深的就是其对并发的支持,优雅而高效。一般情况下并发通过进程、线
转载
2023-09-01 07:02:43
88阅读
前言熟练掌握一门编程语言,再学一门新的会很容易上手,因为语言都是相通的,设计模式类似,只不过用处不大一样。所以一般学一门语言时,我都会用自己比较熟悉的语言做一个类比,辅助自己理解。现在大多数同学学的都是Java,而Golang是一门比较热门的语言,广泛用于云原生生生态。那么这篇文章,我用Java的视角看Golang,给出一些Java和Golang的语法类比Java和Golang的语法类比1. 基础
转载
2023-06-14 21:02:54
86阅读
对于golang一直存有觊觎之心,但一直苦于没有下定决心去学习研究,最近开始接触golang。就我个人来说,学习golang的原动力是因为想要站在java语言之外来审视java和其它语言的区别,再就是想瞻仰一下如此NB的语言。年前就想在2019年做一件事情,希望能从各个细节处做一次java和golang的对比分析,不评判语言的优劣,只想用简单的语言和可以随时执行的代码来表达出两者的区别和底层涉及到
转载
2024-02-14 15:27:18
36阅读
你好,我是 Guide。在编程语言的这个圈子里,各种语言之间的对比似乎就一直就没有停过,像什么古早时期的"PHP是世界上最好的语言"就不提了。最近我在摸鱼的时候,看到不少文章都在说"Golang性能吊打Java"。作为一个写了好几年java的javaer,这我怎么能忍?于是在网上看了一些对比golang和java的文章,其中戳中java痛点、也是golang被吹上天的一条,就是对多线程并发的支持了
转载
2024-02-05 02:13:48
44阅读
文章目录一、面向对象1.1、与Java面向对象的区别1.2、结构体组合1.3、非侵入式接口1.4、interface{}空接口二、异常处理2.1、与Java异常处理的区别2.2、逗号 ok 模式2.3、defer、panic及recover2.3.1、defer2.3.2、panic2.3.3、recover三、并发编程3.1、CSP(MPG)并发模型介绍及对比3.2、Goroutine及Cha
转载
2023-07-26 14:43:43
75阅读
环境: Golang:go1.18.2 linux/amd641. 简介上文【Golang | RPC】Golang-RPC机制的理解里提到了使用json将客户端request和服务端response编码后得到的数据// request
{"method":"QueryService.GetAge","params":["bar"],"id":0}
// response
{"id":0,"r
转载
2023-09-10 14:46:13
49阅读
目录io模型阻塞式IO非阻塞式IOIO多路复用(包含:select/poll/epoll)select/poll/epoll三者的区别epoll介绍异步IOGolang异步IO实现思路 使用Golang可以轻松地为每一个TCP连接创建一个协程去服务而不用担心性能问题,这是因为Go内部使用goroutine结合IO多路复用实现了一个“异步”的IO模型,这使得开发者不用过多的关注
转载
2023-07-26 15:12:39
113阅读
概述golang is a better C and a simple C++golang主要特性1、语法简单舍弃语法糖,严格控制关键字C++语法糖之多,令人发指,而C又太过于底层,容易出现自己造轮子的情况,如何在两者之间取舍,是每一个转向golang的工程师曾经思考过的问题。golang的出现,就是在C和C++之间的刚刚好的取舍。2、垃圾回收golang支持垃圾回收,相比C/C++是一大进步。c
转载
2024-05-29 22:17:33
86阅读
前言cgo 提供了 golang 和 C 语言相互调用的机制。几乎所有的编程语言都有C语言的影子,当然golang也不例外。可以看到golang的创始者们与C语言有着密切的联系。下面我们将通过快速入门小例子来掌握cgo的基本用法。最简cgo程序真实的cgo程序一般都比较复杂。不过我们可以通过一个小例子,了解一个最简的cgo程序该是什么样的。构造一个最简cgo程序,首先要忽视一些复杂的
转载
2023-08-29 22:09:28
97阅读
[golang] 变量声明和初始化 var, :=, new() 和 make()说明go语言中,提供了多种变量声明和初始化的方法。这里着重一一说明。并提供一个简单的指南。指南使用make(),来初始化slice,map 和channel 。大多数场合,类型明确的场合下,使用短变量声明方式:=。当使用文字方式初始化一个变量,并且需要指明类型时,使用var变量声明方式。避免使用new(),除非你需要
转载
2023-06-18 01:03:16
54阅读
面向对象的区别Golang是一门具备面向对象编程风格的语言,但是却不具备Java等传统面向对象语言中“继承(extends)、实现(implements)”的关键字。在Golang中,通过接口或结构体的组合来实现非严格的“继承”,通过非侵入式的接口来实现非严格的“多态”,通过结构体及包和函数实现了代码细节的“封装”,有了封装、继承与多态,就可以很好地通过OO思维实现与现实需求所对应的程序了。Jav
转载
2023-08-18 17:59:12
93阅读
老实说,我很喜欢 Java。我在 Spiral Scout 工作的那几年,使用了 EJB2、DB2 和 Oracle 等后端技术,积累了很多软件开发方面的专业知识。过去几年,我转向基于自然语言处理的机器人项目,涉及的技术包括 Spring Boot、Redis、RabbitMQ、Open NLP、IBM Watson 和 UIMA。一直以来,我选择的语言是 Java,它一直很高效,有时还会觉得它很
转载
2023-09-01 07:03:16
38阅读
我认为Java还会是企业级服务软件以及大数据方向的首选,生态很完善和强大,不光是阿里美团这样大厂的支持和布道,对小公司也可以依靠Java完善的生态,快速搭建起自己的系统推向市场。 尽管oracle一直在作死,还是有很多大厂基于openjdk做支持,Java不会死,还会越来越好。各种语言总有自己适合的领域,比如c做底层以及对性能追求极致的场景,Python在数据分析和机器学习上很火,未来go肯定会越
转载
2023-07-05 09:34:41
47阅读
TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下:1、新增对DB2数据库的支持2、新增按字段生成文件,支持把字段、JSON、XML数据转换成任何代码3、新增大量新的自定义模板,如:DDL、随机数据、导出数据、数据模型、Ant Design for Vue的CRUD模板等4、新增更多用于自定义模板生成随机数的内置静态对象5、公共参数新增高级设置,可动态配置Oracle连接
转载
2024-08-13 15:29:59
40阅读
系统中有多个任务同时存在称之为“并发”,并发设计已然成为大规模集群框架的必要特征,本文简单的介绍Scala和golang的并发模型的设计,重点在于比较Scala和Golang在并发实现上的差异。一、Scala和Golang的并发实现原理Scala语言并发设计采用Actor模型,采用的是Akka Actor模型库,主要特征如下:“一切皆是参与者”,且各个actor间是独立的;发送者与已发送消息间解耦
转载
2023-08-24 15:58:19
92阅读