golang-goroutine goroutine golang

协程 goroutine,线程,进程,GPM,的介绍

前言: 进程,线程,协程,并发,并行介绍 正文: 线程,进程介绍: 1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位; 2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线 3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间 4. 调度和切换:线 ......
线程 goroutine 进程 GPM

golang TLS方式发送邮件

package mail import ( "crypto/tls" "errors" "fmt" "net/smtp" "net/textproto" ) type loginAuth struct { username, password string } // LoginAuth is fun ......
邮件 方式 golang TLS

golang 不聲明額外變量循環指定次數

range + make + struct{} = ? for range make([]struct{}, 10) { // TODO } 差不多就是 Rust 當中的 for _ in 0..10 { // TODO } 或 (0..=10).for_each(|_| { // TODO }); ......
golang

day7 golang GMP

大名鼎鼎的GMP模型 需要自行学习的知识:进程、线程、协程、多线程、线程池、io多路复用,内核态用户态,,同步阻塞异步非阻塞等等相关知识 代码是在线程中运行的,协程也是,所以当协程阻塞的时候该线程也阻塞了,其他任务就无法调度了,该线程就死了。 如何解决,那就需要让协程自由的在线程中移动,当阻塞的时候 ......
golang day7 day GMP

Golang之常用方法[总结]

1. 有一堆数字,如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字? nums := []int{1, 5, 1, 6, 5, 3, 6} i := 0 for _, v := range nums { i ^= v } fmt.Print(i) 重点是异或的使用 ......
常用 方法 Golang

(转)使用 Golang 创建和读取 Excel 文件

原文:https://juejin.cn/post/7117578016858849293 摘要 本文提出一种使用 Golang 进行 Excel 文件创建和读取的方案。首先对问题进行分析,引出方案的基本架构;然后分章节描述了 Excelize 基础库的基本用法,以及 Excel 数据在 Golan ......
文件 Golang Excel

运行 Golang 程序时让程序不会在运行结束后立即关闭命令行窗口

在运行 Golang 程序时,为了让程序不会在运行结束后立即关闭命令行窗口,可以采用以下两种方法: 使用 fmt.Scanln() 函数 在程序的末尾添加一行 fmt.Scanln() 可以暂停程序运行,等待用户在命令行中输入任何字符,程序将等待用户输入,然后再继续执行直到程序结束。 package ......
程序 命令 Golang

golang pprof 监控系列(4) —— goroutine thread 统计原理

golang pprof 监控系列(4) —— goroutine thread 统计原理 大家好,我是蓝胖子。 在之前 golang pprof监控 系列文章里我分别介绍了go trace以及go pprof工具对memory,block,mutex这些维度的统计原理,今天我们接着来介绍golan ......
goroutine 原理 golang thread pprof

golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏

golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏。 常用包常用包 说明fmt 实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。io 实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能 ......
中间件 核心 领域 项目 golang

Golang基础-Select

基本概念 select 是 Go 中的一个控制结构,类似于 switch 语句。 select 语句只能用于通道(channel)操作,每个 case 必须是一个通道操作,要么是发送要么是接收。 select 语句会监听所有指定的通道上的操作,一旦其中一个通道准备好就会执行相应的代码块。 如果多个通 ......
基础 Golang Select

如何在ubuntu22下安装docker版的golang来编译go语言写的代码

为了让我们的ubuntu22系统更干净清爽我们使用docker 首先使用snap install docker安装docker后即可使用docker了 docker命令的使用方法1:将你的代码下载到用户目录(~)下面(例如~/github/xixi/...)2:使用cd命令进到你代码需要运行go b ......
语言 代码 ubuntu docker golang

golang pprof 监控系列(3) —— memory,block,mutex 统计原理

golang pprof 监控系列(3) —— memory,block,mutex 统计原理 大家好,我是蓝胖子。 在上一篇文章 golang pprof监控系列(2) —— memory,block,mutex 使用里我讲解了这3种性能指标如何在程序中暴露以及各自监控的范围。也有提到memory ......
原理 golang memory block pprof

GO基础:02 Golang 基础简介

一、标识符 标识符是指定义的具有特殊意义的词,例如变量、常量、函数名等等,任何一门语言中都对自己的标识符有特殊定义的规则。在 Go 语言中,标识符由字母数字和下划线组成,并且只能以字母和下划线开头,例如: 数字、字母和下划线组成:123、abc _ 只能以字母和下划线开头:abc123、_sysVa ......
基础 简介 Golang

GO基础 - 01 Hello,Golang

一、开发环境搭建 1. 下载 SDK 1 // Go官网下载地址 2 https://golang.org/dl/ 3 ​ 4 // Go官方镜像站(推荐) 5 https://golang.google.cn/dl/ 2. 安装 由于Go语言是一门跨平台的编译型语言,我们只需要在一个平台下进行开发 ......
基础 Golang Hello 01

GO基础:03 Golang 基本数据类型

一、整型 1. 整型介绍 Go 语言中,整型可以分为以下几类: 类型描述 uint8 无符号 8位整型 (0 到 255) uint16 无符号 16位整型 (0 到 65535) uint32 无符号 32位整型 (0 到 4294967295) uint64 无符号 64位整型 (0 到 184 ......
类型 基础 数据 Golang

golang CVE-2016-2183漏洞,https需要添加tls设置加密算法CipherSuites白名单,将弱加密算法DES和3DES去掉。

golang CVE-2016-2183漏洞,https需要添加tls设置加密算法白名单,将弱加密算法DES和3DES去掉。 服务端样例代码 package main import ( "crypto/tls" "fmt" "net/http" ) func handler(writer http. ......
算法 CipherSuites 漏洞 DES 名单

golang http(s)请求转发

func main(){ router := gin.Default()//创建一个router router.Use(MiddleWare())//中间件,起拦截器的作用 router.Any("/*action", Forward)//所有请求都会经过Forward函数转发 router.Run ......
golang http

golang 中的 cronjob

引言 最近做了一个需求,是定时任务相关的。以前定时任务都是通过 linux crontab 去实现的,现在服务上云(k8s)了,尝试了 k8s 的 CronJob,由于公司提供的是界面化工具,使用、查看起来很不方便。于是有了本文,通过一个单 pod 去实现一个常驻服务,去跑定时任务。 经过筛选,选用 ......
cronjob golang

ubuntu下配置supervisor 运行golang打包后的可执行文件

apt update apt install supervisor vim /etc/supervisor/supervisord.conf 添加如下配置: command 配置成可执行文件的路径,directory为文件所在目录 [program:tempupService] command= / ......
supervisor 文件 ubuntu golang

Golang 需要至少 5 个操作系统线程

Golang 需要至少 5 个操作系统线程 主线程:Golang 代码执行的入口点,负责初始化程序,并启动其他 Goroutine。 垃圾回收器线程:Golang 内置了垃圾回收器,使用专门的线程来执行垃圾回收操作,回收不再使用的内存空间。 CPU 核心数个系统线程:每个核心需要一个系统线程来支持并 ......
线程 Golang 系统

golang 是抢占式调度 如果协程不主动让出 或者 阻塞 可以一直运行

设置处理的器的数量为1 是什么将 处理器设置为1 就是可以控制线程数呢? 在 GMP 模型中,P 与 M 一对一的挂载形式,通过设定 GOMAXPROCS 变量就能控制并行线程数。 演示案例 package main import ( "fmt" "runtime" "runtime/debug" ......
golang

golang蒙特卡洛树算法实现五子棋AI

已经实现蒙特卡洛树算法的通用逻辑,只需要对应结构体实现相关接口就可以直接使用该算法。 优化算法主要优化GetActions生成下一步动作,要尽可能少,去掉无意义的动作。 以及优化ActionPolicy从众多动作挑选比较优秀的动作。对应五子棋就是执行该动作后当前局面评分最高。 package mai ......
五子棋 算法 golang

(转)Golang 编程思维和工程实战

原文:https://zhuanlan.zhihu.com/p/426368274 一 Golang 编程思维 首先,我们先来看下最基本的,就是 Golang 的学习技巧,比如: 通读 Golang 的一些好的文章如 Frequently Asked Questions (FAQ)或者看看 FAQ ......
实战 思维 Golang 工程

Golang 包相关问题

gopath、vendor、dep 、go module 的区别 gopath:要设置环境变量,然后执行执行 go install进行安装 vendor: 将第三方依赖完全和工程整合且本地化,构建项目速度快,但冗余度很高。很万能的方法 dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一 ......
Golang 问题

容器云平台监控告警体系(四)—— Golang应用接入Prometheus

1、概述 目前容器云平台中的容器仅支持获取CPU使用率、内存使用率、网络流入速率和网络流出速率这4个指标,如果想监控应用程序的性能指标或者想更加细粒度的监控应用程序的运行状态指标的话,则需要在应用程序中内置对Prometheus的支持或者部署独立于应用程序的Exporter,然后由Prometheu ......
容器 Prometheus 体系 Golang 平台

golang实现WOL唤醒

WOL(Wake-On-LAN)是一种远程开机的技术,可以通过网络发送特定的数据包来唤醒处于待机状态的计算机。在Golang中,可以使用net包来实现WOL唤醒。 以下是实现WOL唤醒的步骤: 获取目标计算机的MAC地址。 MAC地址是计算机的唯一标识符,可以用于唤醒目标计算机。可以通过以下命令获取 ......
golang WOL

golang跳出for select 循环

引用自:https://blog.csdn.net/m0_57116438/article/details/121693943 通常在for循环中,使用break可以跳出循环,但是注意在go语言中,for select配合时,break并不能跳出循环。 func testSelectFor(chEx ......
golang select for

Golang GMP模型

Golang GMP模型 GMP 是 Go 语言运行时(runtime)中的一个重要组件,它是 Go 语言的调度模型。GMP 模型使用三种不同的线程来处理 Go 程序:Goroutine、M(Machine)和 P(Processor)。在 GMP 模型中,Goroutine 是实际编写的程序代码, ......
模型 Golang GMP

Golang gin 中间件类型

在 Gin 框架中,中间件是一种对请求进行预处理或拦截的机制。中间件可以用来实现很多功能,比如身份验证、请求日志记录、请求参数验证等。在 Gin 中,中间件可以是一个函数或一个结构体。 下面分别介绍这两种中间件类型,并给出例子。 函数式中间件 函数式中间件是一个接受 gin.HandlerFunc ......
中间件 类型 Golang gin

golang并发编程-模式

1. Generator 9. Queue package main import ( "fmt" "sync" "time" ) const limit = 4 const work = 100 func process(wg *sync.WaitGroup, work int, queue ch ......
模式 golang