会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
博客园
首页
新随笔
联系
订阅
管理
[置顶]
我的书单
摘要:
分享、持续学习,加油 !
阅读全文
posted @ 2019-03-15 14:33 GJH-
阅读(9529)
评论(0)
推荐(2)
2023年7月23日
Golang-内存逃逸分析
摘要:
在 Go 语言中,内存逃逸分析是编译器的一项重要功能。变量的内存分配位置对程序性能有着重要影响。通常,栈内存的分配和释放速度比堆内存快。如果一个变量在函数调用结束后不再被使用,将其分配在栈上是高效的;但如果函数返回后,该变量依然被其他部分引用,那么它就需要被分配到堆上,这一过程就称为内存逃逸。 内存
阅读全文
posted @ 2023-07-23 10:53 GJH-
阅读(426)
评论(0)
推荐(0)
2023年7月21日
Golang-GC(垃圾回收)的工作原理
摘要:
在垃圾回收领域,常见算法有标记清除(Mark - Sweep)和引用计数(Reference Count),Go 语言采用的是标记清除算法,并在此基础上借助三色标记法和写屏障技术提升效率。 标记清除算法基础 标记清除收集器属于跟踪式垃圾收集器,执行过程分为标记(Mark)与清除(Sweep)两个阶段
阅读全文
posted @ 2023-07-21 06:48 GJH-
阅读(8)
评论(0)
推荐(0)
2023年7月19日
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-
阅读(471)
评论(0)
推荐(0)
2023年7月10日
Docker镜像加速
摘要: 如果没有daemon.json就创建一个 sudo vim /etc/docker/daemon.json 使用轩辕镜像加速pull { "registry-mirrors": [ "https://docker.xuanyuan.me" ] } 重启Docker服务 sudo systemctl
阅读全文
posted @ 2023-07-10 10:47 GJH-
阅读(7)
评论(0)
推荐(0)
2023年7月6日
PHP-Trait
摘要: Trait(特征) 可以帮助解决 PHP 单继承的问题,实现类似多继承的效果。针对于类 官网介绍 Trait 主要用于代码复用和组合,可以将一组方法和属性注入到类中,使得类具备 Trait 中定义的功能。 Trait 的使用是通过 use 关键字将 Trait 应用到类中,可以在类中使用多个 Tra
阅读全文
posted @ 2023-07-06 19:06 GJH-
阅读(40)
评论(0)
推荐(0)
2023年7月5日
Go-Context
摘要: 介绍 在 Go 语言中,`context` 是一个用于在不同 Goroutine 之间传递请求范围数据、控制请求生命周期和处理取消信号的工具。它提供了一种机制来管理 Goroutine 之间的上下文信息,并允许在请求处理链中传递和取消上下文。 `context` 的主要优点和用途包括 1. 请求范围
阅读全文
posted @ 2023-07-05 05:26 GJH-
阅读(104)
评论(0)
推荐(0)
2023年6月21日
Go-channel(管道)总结
摘要: 特性 一个还未初始化的通道会被预置为nil(编译和运行时不会报错) channel在使用时,需要使用make操作符,make会初始化通道,在内存中分配通道的空间。 引发panic的原因 关闭一个 nil 值 channel 会引发 panic。 package main func main()
阅读全文
posted @ 2023-06-21 22:13 GJH-
阅读(80)
评论(0)
推荐(0)
2023年5月31日
Go-Map相关
摘要:
并发 Go中map默认不安全的,也实现了并发安全的对象:sync.Map 和Java的HashMap一样,并发安全的是:ConcurrentHashMap 并发不安全 不安全是因为源码中没有实现读写分离。进行了判断异常: 在哈希表写操作时,会将哈希表的标志位 hashWriting 设置为 1,以表
阅读全文
posted @ 2023-05-31 18:12 GJH-
阅读(103)
评论(0)
推荐(0)
2023年4月29日
Go-字典树的实现
摘要:
介绍 Trie(字典树)是一种用于高效存储和查找字符串的数据结构。 Go语言标准库中没有提供Trie树的实现,但是可以使用第三方包来实现Trie树。 下面是Trie的使用方法: 创建Trie树:首先需要创建一个Trie树的根节点,根节点不存储任何字符,只是作为一个起始点。 插入字符串:将字符串中的每
阅读全文
posted @ 2023-04-29 10:54 GJH-
阅读(130)
评论(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-
阅读(167)
评论(0)
推荐(1)
2023年4月26日
Go-channel(管道)底层实现总结
摘要: channel源码地址 /src/runtime/chan.go 导图总结 channel的构成 核心结构:hchan(缓冲区 / 队列 / 锁 / 元信息)、sudog(关联 goroutine 与数据)、waitq(管理 sudog 的双向链表)、mutex(并发安全)。 核心方法:makech
阅读全文
posted @ 2023-04-26 01:23 GJH-
阅读(12)
评论(0)
推荐(0)
2023年4月20日
Go-GMP调度
摘要:
用户态线程 GMP 在1.2版本之前是没有p的概念的 只有 MG Go 语言基于 GMP 模型实现用户态线程(协程) G:表示 goroutine,每个 goroutine 都有自己的栈空间,定时器初始化的栈空间在 2k 左右,空间会随着需求增长。 M:表示 Machine,抽象化代表内核线程,记录
阅读全文
posted @ 2023-04-20 15:06 GJH-
阅读(101)
评论(0)
推荐(1)
2023年4月3日
Go-网络编程(TCP)
摘要: 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-
阅读(93)
评论(0)
推荐(0)
2023年3月30日
Go-Interface
摘要:
在 Golang 中接口(interface)是一种类型,一种抽象的类型。接口(interface)是一组函数 method (方法)的集合,Golang 中的接口不能包含任何变量。 在 Golang 中接口中的所有方法都没有方法体,接口定义了一个对象的行为规范,只定义规范不实现。接口体现了程序设计
阅读全文
posted @ 2023-03-30 02:41 GJH-
阅读(33)
评论(0)
推荐(0)
2023年3月21日
Go-Mutex(互斥锁)解读
摘要:
互斥锁是并发程序中对共享资源进行访问控制的主要手段,Go提供了Mutex(互斥锁)结构体类型 并且使用简单:对外暴露两个方法 Lock() 和 Unlock() 分别用于加锁和解锁 1.Mutex使用 开启10个Goroutine来计算count的结果 package main import ( "
阅读全文
posted @ 2023-03-21 15:00 GJH-
阅读(110)
评论(0)
推荐(0)
下一页
公告