面向对象的区别Golang是一门具备面向对象编程风格的语言,但是却不具备Java等传统面向对象语言中“继承(extends)、实现(implements)”的关键字。在Golang中,通过接口或结构体的组合来实现非严格的“继承”,通过非侵入式的接口来实现非严格的“多态”,通过结构体及包和函数实现了代码细节的“封装”,有了封装、继承与多态,就可以很好地通过OO思维实现与现实需求所对应的程序了。Jav
转载
2023-08-18 17:59:12
93阅读
(文章有点长,算是个人学习的一个小总结,大家如果有耐心看完欢迎提出意见)Golang处在Java和C++中间,他有着比Java更快地性能,也有比C++更方便的开发方式,但Golang在很多方面还是跟Java有些雷同,我们来看看三者中间的差别和相似之处,然后着重看看Golang和Java的异同。三者的不同1.语言类型和平台1.1语言类型语言类型分为编译和解释,顾名思义,编译型语言就是把所有的代码一次
转载
2023-09-01 06:59:25
56阅读
go语言是一个系统级语言,好处非常多。虽然是一个静态编译型语言,但可以像动态语言一样写程序,语言本身可以提供编写应用程序所需的基本组件,而不用引入第三方的包。如果了解c++、java、python等,会对其简洁和强大有更深的认识,c++实在过于繁琐,java也没有想象的简单,python的效率和go不是一个数量级的。那么多的特性,印象最深的就是其对并发的支持,优雅而高效。一般情况下并发通过进程、线
转载
2023-09-01 07:02:43
88阅读
文章目录一、面向对象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代码生成方案为了更加贴合java开发的习惯,我自己开发了maven plugin,解析java代码并自动生成go代码,以及通过git submodule拉取golang的lib库,生成go代码后再推送至lib库上。golang代码的格式设计格式设计我按照java的开发习惯来,部分参考了protobuf的规定。单独一个服务的结构如下:golang代码结构其中dto为使用的数据结构,enu
转载
2023-08-24 09:25:26
196阅读
使用反汇编工具 可以使用反汇编工具将Go程序反汇编为汇编代码。常用的工具有go tool objdump和llvm-objdump等。使用这些工具可以将机器码转换为汇编代码,但是汇编代码并不易于阅读。使用反编译工具 可以使用反编译工具将Go程序反编译为高级语言代码,如C或者C++。常用的工具有Hex-Rays IDA Pro、Ghidra和r2等。这些工具可以反编译机器码并尝试恢复原始
转载
2023-06-25 17:03:45
40阅读
先了解下协程概念:协程可以理解为纯用户态的线程,相对于进程与线程,协程的所有操作都可以在用户端完成,创建和切换的消耗更低。相对于线程分时调度与抢占式调度,协程的调度是用户手动切换。调度策略是协作式调度。再理解一下异步IO与协程的关联:程序执行过程中,一部分使用cpu进行逻辑处理,另一部分进行IO传输。同步IO中,等待数据传输完成,传输过程中线程阻塞,导致CPU等待闲置,也导致了资源浪费,是程序执行
转载
2024-05-18 13:57:37
35阅读
golang与java 首先,我想声明一个免责声明。 我不是Go方面的专家。 几周前我开始研究它,因此这里的陈述是第一印象。 在本文的某些主观方面,我可能是错的。 也许以后我会写一些评论。 但是直到那时,如果您是Java程序员,就可以看到我的感受和经验,与此同时,如果某些陈述中我有错,也非常欢迎您评论和纠正我。 Golang令人印象深刻 与Java相反,Go被编译为机器代码并直接执行。 与
转载
2023-06-01 18:25:10
331阅读
目前,WebServer几种主流的并发模型:多线程,每个线程一次处理一个请求,在当前请求处理完成之前不会接收其它请求;但在高并发环境下,多线程的开销比较大;基于回调的异步IO,如Nginx服务器使用的epoll模型,这种模式通过事件驱动的方式使用异步IO,使服务器持续运转,但人的思维模式是串行的,大量回调函数会把流程分割,对于问题本身的反应不够自然;协程,不需要抢占式调度,可以有效提高线程的任务
## Golang与Java TLS认证实现流程
### 1. 了解TLS认证
TLS(Transport Layer Security)是一种网络协议,用于在客户端与服务器之间建立安全的通信连接。在进行TLS认证时,客户端与服务器之间会进行握手,验证彼此的身份,并确保通信数据的机密性和完整性。
### 2. TLS认证实现步骤
为了实现Golang与Java之间的TLS认证,我们可以采用以下
原创
2023-08-12 19:37:37
149阅读
# 高并发下的Java与Golang比较
在现代软件开发中,高并发处理能力已成为关键要求。在这方面,Java和Golang都是流行的选择。本文将对二者在高并发场景下的特性进行分析,并展示简单的代码示例。
## Java中的高并发
Java在高并发处理方面有多种成熟机制,例如线程池、锁、未来和CompletableFuture等。Java的`ExecutorService`提供了一个灵活的线程
文章目录面向对象特性封装继承多态结构体空结构体struct定义成员方法定义结构体嵌套(继承)可见性就近原则接口空接口interface定义interface实现和继承interface多态类型断言多态结构体切片排序总结 面向对象特性封装隐藏对象的属性和实现细节,仅对外公开可控成员方法。主要通过结构体和方法访问可见性进行封装继承子类继承父类的所有特征和行为。主要通过结构体组合实现继承的效果多态同一
转载
2023-10-27 14:40:57
29阅读
这里我站一手Goland,因为我用惯了PyCharm可以无痛切换到Goland,如果用VS Code还需要时间适应。除了习惯之外,我还发现两个插件,大大提升了我学习Golang编程的幸福感痛点一、缩进什么的太难了大家知道Python是使用TAB表示缩进的,初学者在用IDLE编程的时候常常会因为缩进不对导致程序报错在PyCharm里缩进出现错误也是会出现报错和提示,所以只要代码里没有出现类似if-e
转载
2023-08-21 11:12:07
125阅读
概念对于一些上了年纪的项目,重构耗时耗力太大动干戈,不重构又问题重重。举个简单的例子,我司有一些项目是0几年的项目,还是用的perl进行的开发,并且由于其业务特殊(需要在服务器执行脚本),大量脚本素材,重构困难。 出于运维的需要,公司要统一使用的开发语言(后端主要是使用go和java,以及少量的python),并且perl语言开发太难找,接手的大多是半路临时学的,容易给项目埋雷。后来又要同时支持p
转载
2023-08-18 17:56:52
318阅读
003.GO流程与函数 003.GO流程与函数 1 概述 1 概述 1.1 Go中流程控制分三大类:条件判断,循环控制和无条件跳转 1.1 Go中流程控制分三大类:条件判断,循环控制和无条件跳转 2 流程 2 流程 2.1 if 2.1 if 2.1.1 if条件判断语句中不需要括号 2.1.1 i
原创
2021-07-26 14:08:29
347阅读
编写test.proto:package example;enum FOO { X = 17; };message Test {required string label = 1;optional int32 type = 2 [default=77];re
原创
2022-06-20 19:47:40
67阅读
文章目录一、何为内存?二、内存为什么需要管理?三、操作系统是如何管理内存的?3.1 虚拟内存3.2 MMU内存管理单元3.2.1 虚拟内存本身怎么存放内存命中率CPU Cache举个例子程序的内存布局结论 要搞明白 Go 语言的内存管理就必须先理解
操作系统以及机器硬件是如何管理内存的因为 Go 语言的内部机制是建立在这个基础之上的它的设计
本质上就是尽可能的会发挥操作系统层面的优势
转载
2023-12-01 07:10:32
115阅读
# Golang与Java API接口通信指南
在当今的开发环境中,跨语言的API接口通信是常见的需求。对于初学者来说,理解如何将Golang与Java进行API接口通信至关重要。本文将帮助你掌握这一过程的基本流程和实现方法。
## 流程概述
下面是Golang与Java API接口通信的基本步骤:
| 步骤 | 描述 |
|------|-------
原创
2024-10-19 03:50:55
41阅读
第一部分:加密算法和原理 第一、基础知识1)数据加密: SSL: Secure Socket Layer2)NIST: (该组织评价网络安全) 保密性:
在编程语言中,方法和函数的概念需要搞清楚。函数指的是一个封装的代码块,我们可以直接调用它,并返回结果。而方法其实也是一种函数,只不过方法需要和某个对象绑定。Golang并没有类的概念,不过仍然有方法和接口这些概念。方法方法接收者方法接收者是一个特殊参数,给函数指定了这个参数之后,函数就成为方法了。这个特性有点像Kotlin和C#中的扩展方法,定义了带有接收者的方法之后,接收者这个类型就好像定义了这