首页
AI Coding
AIDP
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Go学习之旅
momo888
创建于2022-10-18
订阅专栏
本专栏收录个人学习Go的笔记和心得
等 1 人订阅
共28篇文章
创建于2022-10-18
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
工程化Docker技术征文 | 浅谈Docker的国产化替代iSula
前言 当前,从应用软件、数据库,到操作系统、编译器,再到底层的芯片等,国产化替代的进程正在有条不紊地推进,也许我们现在还用不上国产自研的产品,或者认为它们不够好用,不够易用,但居安思危、未雨绸缪方可立
【计算机网络实战】简易IM(五)关于消息发送、存储与同步问题的深入探讨
前言 在上一篇文章中,我对KIM这个开源项目聊天部分的业务代码进行了简要的分析。实际上,对于通信系统而言,最重要的不是界面是否好看,也不是系统的代码写得多么复杂或者用了多么复杂的组件,也不是 能 完成
【计算机网络实战】简易IM(四)私聊和群聊的全套逻辑
前言 这一篇主要分析与KIM的聊天逻辑相关的业务代码。我认为这部分核心的模块有三个: 通信协议实体的定义 通信对象的定义 聊天逻辑的handler部分 它们都在主目录下的services包下。 需要说
【计算机网络实战】简易IM(三)KIM源码细节之tcp和websocket
前言 这篇文章是KIM源码阅读笔记的第三期,记录的是有关tcp和websocket部分的具体实现。 tcp和websocket 这两个包下的代码分别模拟了tcp和websocket连接,代码的可复用程
【计算机网络实战】简易IM(二)KIM源码解读
前言 终于到了本系列的第二篇文章。在过去的几天中,我粗略地将小册一刷完成,下文是我阅读KIM源码时的一些笔记和心得,对于其中理解还不到位的地方,我后期也会积极勘误。
【计算机网络实战】简易IM(一)websocket后台demo
前言 虽然已经学习过计算机网络的理论课程,也做过相关的搭网实验,但是感觉缺乏更进一步的实践,导致很多理论知识都流于表面,并且正在随着时间流逝而快速被遗忘。最近几天刚好有空,打算抽出时间来学习如何从0开
【Go】(二)Gin文档学习
AsciiJSON 关键在c.AsciiJSON(http.StatusOK, data),会将data表示的json字符串转为ascii码形式。 用自定义的结构体绑定数据请求 它的绑定流程是这样的:
【Go】HTTP框架Gin学习与应用(一)项目环境搭建与示例代码学习
Gin特性 路由基于基数树,占用极小内存,无反射,API性能可预测 有一系列中间件支持 会捕获panic并修复,不用担心程序crash 会解析和验证请求的json 路由分组,更好地管理路由 提供收集错
项目答辩复盘
背景 笔者近期参加了一个答辩,所有参与答辩的组完成的都是同一个项目。通过整理和思考评委对我们组和其他组的点评以及修改意见,我有了很大的收获。 项目的大致情况 所有组通用的技术选型: 语言:Go 数据库
【Go学习】高级特性(二)垃圾回收
关于垃圾回收的基本概念 了解垃圾回收吗? 英文单词garbage collection,是一种对内存进行自动管理的机制。 当程序所申请的内存不再需要时,GC机制就会自动将这块内存回收交还给操作系统或者
【Go学习】高级特性(一)调度机制
线程与协程的区别是什么? 协程是线程的再细分。 接下来会从三个方面解答这一问题:内存消耗、创建和销毁、切换 内存消耗 创建一个线程需要1MB栈内存,而一个协程仅需2KB。 创建和销毁 在操作系统中,有
【Go学习】语言类库(三)sync.Map
前面讲到,Go中Map不是并发安全的(体现为操作前需要读flag),而Go1.19开始引入了sync.Map,这是一种同步的Map,是并发安全的。 用法 使用场景 原生的map使用的时候需要加锁,不过
【Go学习】语言类库(二)timer&&reflection
timer 为什么timer的底层数据结构用小顶堆? 因为timer中有个到期时间,可以判断当前有哪些timer到期。 为什么要用四叉堆而不是二叉堆? 因为四叉堆的层数更低。 你还知道哪些数据结构也是
【Go学习】语言类库(一)unsafe和context
unsafe的妙用 修改私有成员 原理:分配给结构体的内存是一块连续的地址,所以可以通过offset定位到某个成员的地址,进而修改它的值。 实现:私有成员变量不能取offset,但可以通过unsafe
【Go学习】语言基础(四)channel
谈谈CSP? CSP,comunicating sequential processes,定义了用于进程通信的输入输出语句(channel的原型),指出应该重视输入输出和并发编程。 channel 作
【Go学习】语言基础(五)接口
Go接口几连问 Go的接口与C++的接口有何异同 具体表现上,C++的接口定义方式是“侵入式”的,也就是显式声明;而Go则是非侵入式的,由编译器自动识别。 底层实现上,C++通过 虚函数表 实现 基类
【Go学习】语言基础(三)map
map的底层原理 通过阅读源码可知: 每个桶里最多装8个<key,value>对 那么当第9个落入当前bucket该怎么办呢? 再构建一个bucket,并通过overflow指针连接起来。这就是链表法
【Go学习】语言基础(二)延迟语句、数组与切片
defer简介 defer是一种注册延迟调用的机制。它可写在申请资源语句的附近,但它保证了在注册函数执行完毕后(正常return 或panic都算)再去释放资源的操作(一定会去)。 defer的必要性
【Go学习】语言基础(一)逃逸分析
逃逸分析的概念 这并不是特定语言特有的概念。在编译原理中,分析指针动态范围的方法被称为 逃逸分析 。 什么意思呢?当一个对象的指针被多个方法或线程引用时,则称这个指针发生了 逃逸 。 再细致地举个例子
【微服务入门】(一)JWT实现token校验
JWT(json web token) 信息来源:JWT官网 形式 以下是从JWT官网获取的信息: JWT分为三部分,其中,第三部分VERIFY SIGNATURE实际上是前两部分的结合版,以确认数据
下一页