使用go进行项目开发,大多数人会使用gorm,但是gorm有一些缺点,我无法接受。于是开发出了aorm,目前能有满足日常开发需求,并且完善了使用文档,希望能够帮助到大家。 Aorm Golang操作数据库如此简单 给个 ⭐ 吧,如果这个项目帮助到你
为什么推荐Kestrel 网络框架千千万万,在dotnet平台,我们可以直接手撸Socket,也可以基于dotnetty来开发,或者选择某些第三方类似于dotnetty的网络库,为何我要推荐Kestrel呢? 1 使用框架 网络编程是简单的,简单到大概就 new Socket(),Send()发送
1. 什么是反射 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 Golang反射包中有两对非常重要的函数和类型,两个函数分别是: reflect.TypeOf 能获取类型信息reflect.Type; reflect.ValueOf 能获取数据的运行时表示reflect.Va
服务端 package main import ( "errors" "fmt" "log" "net" "net/rpc" "net/rpc/jsonrpc" "os" ) // 算数运算结构体 type Arith struct { } // 算数运算请求结构体 type
今天这篇笔记我们来学习Go 限流 限流是分布式系统中经常需要用到的技术,因为我们让请求没有限制,很容易就出现某个用户开很多线程把我们的服务拉跨,进而影响到别的用户。 限流 我们来看下Go语言层面可以怎么做到限流,先看一段不限流的代码, type APIConnection struct{} fu
项目介绍 项目背景 个人经常使用Typora这一软件,在编写md文档时,图片可以暂存本地,文章中可以使用本地图片的绝对路径或相对路径,痛点就是不利于以后文档的迁移和平台的变化,因此需要将文档的图片存放在云端并提供远程访问的url,个人搭建图床或使用OSS成本有点高(杀鸡焉用牛刀!),无意间看到
今天这篇笔记我们来学习一下context包 context包的一个应用场景是可以通过它控制goroutine的取消,超时等。 我们先来看一个取消的例子 context.WithCancel func doSomething(ctx context.Context) { ctx, cancelct
如何指定靶机的ip地址 awd比赛中,应该每一台靶机占用一个ip地址,但是我们使用docker的情况下,可以使用桥接网络给容器分配ip地址,但是只支持容器之间的一个访问,不能分配容器与宿主机平级的ip地址。 但是我找到了一个方法,就是给宿主机的网卡设置多个ip地址,然后使用host模型,通过端口映
今天这篇笔记我们来记录Channel 和 Select, Go语言并发中Channel是goroutine传递数据的桥梁,是非常重要的一个工具。 定义Channel 双向Channel 要定义一个channel很简单,只需要在类型前面加上chan就可以了, stringStream := make
学习:便捷的时间工具 | Go 语言编程之旅 (eddycjy.com) 代码参考:go-programming-tour-book/tour: 《Go 语言编程之旅:一起用 Go 做项目》第一章:命令行程序(Command) (github.com) 先搭好架子,再具体实现! 接口的应用中也有
学习:单词格式转换 | Go 语言编程之旅 (eddycjy.com) 代码参考:go-programming-tour-book/tour: 《Go 语言编程之旅:一起用 Go 做项目》第一章:命令行程序(Command) (github.com) 使用工具cobra: go get -u gi
今天这篇笔记我们记录sync包下面的Cond,Once和Pool Cond cond就是条件,当条件不满足的时候等待Wait(),条件满足后,继续执行。 通过Signal()和Broadcast()来通知wait结束,继续执行。我们先来看一个Signal通知的例子 func main() {
学习:SQL 语句到结构体的转换 | Go 语言编程之旅 (eddycjy.com) 目标:SQL表转换为Go语言结构体 可以在线体验这个过程:SQL生成GO语言结构体 - 支持批量处理 (tl.beer) MySQL数据库中的表结构,本质上是SQL语句。 CREATE TABLE `USER`(
什么是 SPI 和上一篇文章的 I2C 总线一样,SPI(Serial Peripheral Interface,串行外设接口)也是设备与设备间通信方式的一种。SPI 是一种全双工(数据可以两个方向同时传输)的串行通信总线,由摩托罗拉于上个世纪 80 年代开发[1],用于短距离设备之间的通信。S
今天这篇笔记我们来学习锁:互斥锁(Mutex) 和 读写锁(RWMutex) 互斥锁(Mutex) 首先我们来看一段代码,没有加锁的情况下,两个goroutine同时修改一个变量,会发生什么 func main() { var count int increment := func() {
今天这篇笔记重点讲goroutine 首先怎么定义goroutine 很简单,在方法前面加上go就可以了 func main() { go sayHello() } func sayHello() { fmt.Println("hello") } 也可以直接这样写, 基于匿名函数 go f