摘要: 我的书单 分享、持续学习,加油 ! 计算机科学中的任何问题都可以通过增加一个中间层来解决 ——David Wheeler 阅读全文
posted @ 2019-03-15 14:33 GJH- 阅读(9483) 评论(0) 推荐(2) 编辑
摘要: 分别使用Go、Rust、Java学习实现各种算法 冒泡排序 Go package main import "fmt" func bubbleSort(arr []int) { n := len(arr) for i := 0; i < n-1; i++ { for j := 0; j < n-i-1 阅读全文
posted @ 2023-10-01 00:41 GJH- 阅读(38) 评论(0) 推荐(0) 编辑
摘要: Go-Fiber框架 简介 中文文档 Fiber 是一个受到 Express 启发的 Web 框架,基于使用 Go 语言编写的最快的 HTTP 引擎 Fasthttp 构建。旨在通过零内存分配和高性能服务,使快速开发更加简便。 安装 go get -u github.com/gofiber/fiber/v2 packag 阅读全文
posted @ 2023-07-23 10:53 GJH- 阅读(196) 评论(0) 推荐(0) 编辑
摘要: Go运行报错:undefined: syscall.SIGUSR1 报错 解决 修改 go20\src\syscall\types_windows.go 加入一下代码 /** 找到此位置添加如下 */ 16: "SIGUSR1", 17: "SIGUSR2", 18: "SIGTSTP", } /** 兼容windows start */ func Kill(... 阅读全文
posted @ 2023-07-19 01:29 GJH- 阅读(152) 评论(0) 推荐(0) 编辑
摘要: Trait 可以帮助解决 PHP 单继承的问题,实现类似多继承的效果。针对于类;而像Go(其实也是一种接口)、Rust(类似接口)中可以针对类型的行为限制 Trait 主要用于代码复用和组合,可以将一组方法和属性注入到类中,使得类具备 Trait 中定义的功能。 Trait 的使用是通过 use 关 阅读全文
posted @ 2023-07-06 19:06 GJH- 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 介绍 在 Go 语言中,`context` 是一个用于在不同 Goroutine 之间传递请求范围数据、控制请求生命周期和处理取消信号的工具。它提供了一种机制来管理 Goroutine 之间的上下文信息,并允许在请求处理链中传递和取消上下文。 `context` 的主要优点和用途包括 1. 请求范围 阅读全文
posted @ 2023-07-05 05:26 GJH- 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 特性 一个还未初始化的通道会被预置为nil(编译和运行时不会报错) channel在使用时,需要使用make操作符,make会初始化通道,在内存中分配通道的空间。 引发panic的原因 关闭一个 nil 值 channel 会引发 panic。 package main ​ func main() 阅读全文
posted @ 2023-06-21 22:13 GJH- 阅读(17) 评论(0) 推荐(0) 编辑
摘要: Go-Map相关 并发 Go中map默认不安全的,也实现了并发安全的对象:sync.Map 和Java的HashMap一样,并发安全的是:ConcurrentHashMap 并发不安全 不安全是因为源码中没有实现读写分离。进行了判断异常: 在哈希表写操作时,会将哈希表的标志位 hashWriting 设置为 1,以表 阅读全文
posted @ 2023-05-31 18:12 GJH- 阅读(60) 评论(0) 推荐(0) 编辑
摘要: Go-字典树的实现 介绍 Trie(字典树)是一种用于高效存储和查找字符串的数据结构。 Go语言标准库中没有提供Trie树的实现,但是可以使用第三方包来实现Trie树。 下面是Trie的使用方法: 创建Trie树:首先需要创建一个Trie树的根节点,根节点不存储任何字符,只是作为一个起始点。 插入字符串:将字符串中的每 阅读全文
posted @ 2023-04-29 10:54 GJH- 阅读(66) 评论(0) 推荐(1) 编辑
摘要: Go-Slice的扩容机制 查看Go的不同版本:https://go.googlesource.com/go/+refs 源码位置src/runtime/slice.go :func growslice(xxx) 1.18之前 如果原Slice容量小于1024,则新Slice容量将扩大为原来的2倍; 如果原Slice容量大于等 阅读全文
posted @ 2023-04-29 10:52 GJH- 阅读(87) 评论(0) 推荐(1) 编辑
摘要: Go-GMP调度 用户态线程 GMP 在1.2版本之前是没有p的概念的 只有 MG Go 语言基于 GMP 模型实现用户态线程(协程) G:表示 goroutine,每个 goroutine 都有自己的栈空间,定时器初始化的栈空间在 2k 左右,空间会随着需求增长。 M:表示 Machine,抽象化代表内核线程,记录 阅读全文
posted @ 2023-04-20 15:06 GJH- 阅读(48) 评论(0) 推荐(1) 编辑
摘要: Go中提供了网络编程接口支持HTTP、TCP、UDP协议等,下面演示下TCP通信Server、Client Server package main import ( "fmt" "net" ) func main() { // 创建一个 TCP 监听器 listener, err := net.Li 阅读全文
posted @ 2023-04-03 15:20 GJH- 阅读(26) 评论(0) 推荐(0) 编辑
摘要: Go-Interface 在 Golang 中接口(interface)是一种类型,一种抽象的类型。接口(interface)是一组函数 method (方法)的集合,Golang 中的接口不能包含任何变量。 在 Golang 中接口中的所有方法都没有方法体,接口定义了一个对象的行为规范,只定义规范不实现。接口体现了程序设计 阅读全文
posted @ 2023-03-30 02:41 GJH- 阅读(14) 评论(0) 推荐(0) 编辑
摘要: Go-Mutex(互斥锁) 互斥锁是并发程序中对共享资源进行访问控制的主要手段,Go提供了Mutex(互斥锁)结构体类型 并且使用简单:对外暴露两个方法 Lock() 和 Unlock() 分别用于加锁和解锁 使用 开启10个Goroutine来计算count的结果 package main import ( "fmt" "s 阅读全文
posted @ 2023-03-21 15:00 GJH- 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 博客主题配置 本博客使用的开源主题SimpleMemory 博客官方文档 博客主题样式更新 CDN地址 复制dist/simpleMemory.js文件URL,替换自己博客中设置的地址 <script src="https://cdn.jsdelivr.net/gh/BNDong/Cnblogs-Theme-Si 阅读全文
posted @ 2022-09-20 06:59 GJH- 阅读(9) 评论(0) 推荐(0) 编辑
摘要: Redis-线程模型 Redis为什么那么快? 基于内存 IO速度快 Reactor 模式设计开发了一套高效的事件处理模型 可以监听大量的连接 Netty 的线程模型也基于 Reactor 模式,Reactor 模式不愧是高性能 IO 的基石),这套事件处理模型对应的是 Redis 中的文件事件处理器(file even 阅读全文
posted @ 2022-09-16 02:43 GJH- 阅读(26) 评论(0) 推荐(0) 编辑