刷新
golang chan传递数据的性能开销

博主头像 这篇文章并不讨论chan因为加锁解锁以及为了维持内存模型定义的行为而付出的运行时开销。 这篇文章要探讨的是chan在接收和发送数据时因为“复制”而产生的开销。 在做性能测试前先复习点基础知识。 本文索引 数据是如何在chan里流动的 情况1:发送的数据有读者在读取 情况2:发送的数据没有读者在读取 ...

Mygin 实现简单Http

博主头像 本篇是完全参考gin的功能,自己手动实现一个类似的功能,帮助自己理解和学习gin框架。 目的 简单介绍net/http库以及http.Handler接口 实现简单路由请求的功能 标准库启动Web服务 先看用标准库怎样启动一个web服务 import "net/http" func helloHand ...

以 Golang 为例详解 AST 抽象语法树

博主头像 前言 各位同行有没有想过一件事,一个程序文件,比如 hello.go 是如何被编译器理解的,平常在编写程序时,IDE 又是如何提供代码提示的。在这奥妙无穷的背后, AST(Abstract Syntax Tree)抽象语法树功不可没,他站在每一行程序的身后,默默无闻的工作,为繁荣的互联网世界立下了汗 ...

Go 语言为什么不支持并发读写 map?

博主头像 大家好,我是 frank ,「 Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言项目开发中,我们经常会使用哈希表 map,它的时间复杂度是 O(1),Go 语言中的 map 使用开放寻址法避免哈希碰撞。 Go 语言中的 map 并非原子操作,不支持并发读写操作。 Go 官方认为 m ...

Gorm 关联关系介绍与基本使用

博主头像 目录一 Belongs To(一对一)1.1 Belongs To1.2 重写外键1.3 重写引用(一般不用)1.4 Belongs to 的 CRUD1.5 预加载1.6 外键约束二、Has One2.1 Has One2.2 重写外键2.3 重写引用2.4 多态关联2.5 Has One 的 C ...

如何基于 Gin 封装出属于自己 Web 框架?

博主头像 思路 在基于 Gin 封装出属于自己的 Web 框架前,你需要先了解 Gin 的基本用法和设计理念。 然后,你可以通过以下步骤来封装自己的 Web 框架: 封装路由:Gin 的路由是通过 HTTP 方法和 URL 路径进行匹配的,你可以根据自己的需求,封装出符合应用的业务需求的路由。你可以考虑将路由 ...

Gorm 数据库表迁移与表模型定义

博主头像 目录一、Docker快速创建MySQL实例1.1 创建1.3 创建数据库二、AutoMigrate介绍与使用2.1 AutoMigrate介绍2.2 AutoMigrate 基本使用三、模型定义3.1 模型定义3.2 快速增删改查3.3 约定3.4 gorm.Model四、表模型主键、表名、列名的约 ...

Gorm 入门介绍与基本使用

博主头像 Gorm 入门介绍与基本使用 目录Gorm 入门介绍与基本使用一、ORM简介1.1 什么是ORM1.2 使用ORM的好处1.2.1 避免直接操作SQL语句1.2.2 提高代码的可维护性1.2.3 跨数据库兼容性1.3 使用ORM的缺点1.3.1 学习成本1.3.2 性能开销1.4 ORM解析过程1. ...

golang 并发

博主头像 Golang 并发 并行 指的是在同一时刻 有多条指令在多个CPU处理器上同时执行 2个任务2个窗口需要硬件支持 并发是指在同一时刻 只能有一条指令 单多个进程指令快速轮换执行 2个队伍1个窗口 要求提升软件能力 Golang 并发优势 go 从底层就支持并发 简化了并发程序的编写方法 Gorout ...

Go 语言为什么建议多使用切片,少使用数组?

博主头像 大家好,我是 frank,「Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言中,数组固定长度,切片可变长度;数组和切片都是值传递,因为切片传递的是指针,所以切片也被称为“引用传递”。 读者朋友们在使用 Go 语言开发项目时,或者在阅读 Go 开源项目源码时,发现很少使用到数组,经常 ...

Go如何优雅的写数据库的单测

Go如何优雅的写数据库的单测 遇到的问题 ​ 当你想在代码中测试 Gorm 时,可以考虑使用单元测试或集成测试来确保 Gorm 的功能正常。下面是一个简单的示例,展示了如何编写一个基本的 Gorm 单元测试。 代码目录结构 app config config.yaml conf.go service ...

Gin 项目引入热加载

博主头像 目录一、什么是热加载二、Air2.1 介绍2.2 特性特性:2.3 相关文档2.4 安装推荐使用 install.sh使用 go install2.5 配置环境变量2.6 使用三、Fresh3.1 介绍3.2 相关文档3.3 安装与使用四、bee4.1 介绍4.2 相关文档4.3 安装与使用4.4 ...

Gin 路由注册与请求参数获取

博主头像 目录一、Web应用开发的两种模式1.前后端不分离模式2.前后端分离模式二、RESTful介绍三、API接口3.1 RESTful API设计指南3.2 API与用户的通信协议3.3 RestFul API接口设计规范3.3.1 api接口3.3.2 接口文档:3.4 restful规范(10条,规定 ...

Gin 框架介绍与快速入门

博主头像 Gin 框架介绍与快速入门 目录Gin 框架介绍与快速入门一、Gin框架介绍1. 快速和轻量级2. 路由和中间件3. JSON解析4. 支持插件5. Gin相关文档二、基本使用1.安装2.导入3.第一个Gin 应用三、应用举例四、Gin 入门核心1.gin.Engine2.gin.Context 一 ...

Go 语言为什么很少使用数组?

博主头像 大家好,我是 frank,「Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言中,数组是一块连续的内存,数组不可以扩容,数组在作为参数传递时,属于值传递。 数组的长度和类型共同决定数组的类型,不同类型的数组之间不可以比较,否则在编译时会报错。 因为数组的一些特性,我们在 Go 项目开 ...

Golang开发环境搭建-Vim篇

本文于2017年3月份完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 最近在研究docker的使用方法,恰好手边有一本docker源码分析的书,所以在ubuntu环境下准备了一套golang的开发环境,便于在学习docker使用的时候顺便 ...

你是否想知道如何应对高并发?Go语言为你提供了答案!

博主头像 并发编程是当前软件领域中一个重要的概念。Go语言通过goroutine和channel的特性,天生支持高并发处理,充分利用现代CPU的多核优势。与Java相比,Go语言的协程更加轻量级,可以轻松创建上百万个协程。Go语言的调度器采用GPM调度模型,通过将协程放入队列中,由调度器分配给CPU处理。此外... ...

Go 泛型之泛型约束

博主头像 Go 泛型之泛型约束 目录Go 泛型之泛型约束一、引入二、最宽松的约束:any三、支持比较操作的内置约束:comparable四、自定义约束五、类型集合(type set)六、简化版的约束形式七、约束的类型推断八、小结 一、引入 虽然泛型是开发人员表达“通用代码”的一种重要方式,但这并不意味着所有泛 ...

<1···345···20>