golang grpc
Golang基础--defer的用法
defer语句用于延迟函数的调用,每次defer都会把一个函数压入栈中,函数返回前再把延迟的函数取出执行。 三个示例: import "fmt" func main() { var init = 1 defer fmt.Println(init) init = 2 } 输出1。延迟函数fmt.Pri ......
Golang回调函数
Golang回调函数实例二则 定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响 ......
Golang常用库之UUID
Golang 中生成唯一的字符串(UUID,GUID) 什么是UUID? 通用唯一标识符 (UUID) 是一种特定形式的标识符,在大多数实际用途中可以安全地认为是唯一的。两个正确生成的 UUID 相同的可能性几乎可以忽略不计,即使它们是由不同的各方在两个不同的环境中创建的。这就是为什么说 UUID ......
Golang反射获取变量类型和值
Golang反射获取变量类型和值 1. 什么是反射 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 Golang反射包中有两对非常重要的函数和类型,两个函数分别是: reflect.TypeOf能获取类型信息reflect.Type; reflect.ValueOf 能获取数据的 ......
使用Golang实现Nginx代理功能
由于业务需要实现对多个web应用做同域二级目录代理,用NGINX的又感觉太重了,而且不好做配置页面,用golang来实现代理功能 支持正则表达式匹配机制 支持多应用多级目录代理。 支持应用子路由代理 支持webapi代理 支持websocket代理 支持禁用缓存设置 支持http、https混合使用 ......
巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)
转自刘悦 研发少闲月,九月人倍忙。又到了一年一度的“金九银十”秋招季,又到了写简历的时节,如果你还在用传统的Word文档寻找模板,然后默默耕耘,显然就有些落后于时代了,本次我们尝试使用云平台flowcv高效打造一份巧如范金、精比琢玉的高品质Golang技术简历。 首先来到云平台:flowcv.com ......
golang TLS方式发送邮件
package mail import ( "crypto/tls" "errors" "fmt" "net/smtp" "net/textproto" ) type loginAuth struct { username, password string } // LoginAuth is fun ......
golang 不聲明額外變量循環指定次數
range + make + struct{} = ? for range make([]struct{}, 10) { // TODO } 差不多就是 Rust 當中的 for _ in 0..10 { // TODO } 或 (0..=10).for_each(|_| { // TODO }); ......
day7 golang GMP
大名鼎鼎的GMP模型 需要自行学习的知识:进程、线程、协程、多线程、线程池、io多路复用,内核态用户态,,同步阻塞异步非阻塞等等相关知识 代码是在线程中运行的,协程也是,所以当协程阻塞的时候该线程也阻塞了,其他任务就无法调度了,该线程就死了。 如何解决,那就需要让协程自由的在线程中移动,当阻塞的时候 ......
Golang之常用方法[总结]
1. 有一堆数字,如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字? nums := []int{1, 5, 1, 6, 5, 3, 6} i := 0 for _, v := range nums { i ^= v } fmt.Print(i) 重点是异或的使用 ......
(转)使用 Golang 创建和读取 Excel 文件
原文:https://juejin.cn/post/7117578016858849293 摘要 本文提出一种使用 Golang 进行 Excel 文件创建和读取的方案。首先对问题进行分析,引出方案的基本架构;然后分章节描述了 Excelize 基础库的基本用法,以及 Excel 数据在 Golan ......
运行 Golang 程序时让程序不会在运行结束后立即关闭命令行窗口
在运行 Golang 程序时,为了让程序不会在运行结束后立即关闭命令行窗口,可以采用以下两种方法: 使用 fmt.Scanln() 函数 在程序的末尾添加一行 fmt.Scanln() 可以暂停程序运行,等待用户在命令行中输入任何字符,程序将等待用户输入,然后再继续执行直到程序结束。 package ......
什么是gRPC?
1.gRPC是什么,有哪些优点? gRPC是一种高性能、开源的远程过程调用(RPC)框架,它可以使不同平台和语言之间的服务相互通信。它的优点包括:高效性、跨平台、异步流处理、支持多种语言、安全、易于使用和开源。 2.gRPC和REST的区别是什么? REST是基于HTTP协议的一种风格,而gRPC是 ......
golang pprof 监控系列(4) —— goroutine thread 统计原理
golang pprof 监控系列(4) —— goroutine thread 统计原理 大家好,我是蓝胖子。 在之前 golang pprof监控 系列文章里我分别介绍了go trace以及go pprof工具对memory,block,mutex这些维度的统计原理,今天我们接着来介绍golan ......
golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏
golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏。 常用包常用包 说明fmt 实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。io 实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能 ......
Golang基础-Select
基本概念 select 是 Go 中的一个控制结构,类似于 switch 语句。 select 语句只能用于通道(channel)操作,每个 case 必须是一个通道操作,要么是发送要么是接收。 select 语句会监听所有指定的通道上的操作,一旦其中一个通道准备好就会执行相应的代码块。 如果多个通 ......
如何在ubuntu22下安装docker版的golang来编译go语言写的代码
为了让我们的ubuntu22系统更干净清爽我们使用docker 首先使用snap install docker安装docker后即可使用docker了 docker命令的使用方法1:将你的代码下载到用户目录(~)下面(例如~/github/xixi/...)2:使用cd命令进到你代码需要运行go b ......
golang pprof 监控系列(3) —— memory,block,mutex 统计原理
golang pprof 监控系列(3) —— memory,block,mutex 统计原理 大家好,我是蓝胖子。 在上一篇文章 golang pprof监控系列(2) —— memory,block,mutex 使用里我讲解了这3种性能指标如何在程序中暴露以及各自监控的范围。也有提到memory ......
GO基础:02 Golang 基础简介
一、标识符 标识符是指定义的具有特殊意义的词,例如变量、常量、函数名等等,任何一门语言中都对自己的标识符有特殊定义的规则。在 Go 语言中,标识符由字母数字和下划线组成,并且只能以字母和下划线开头,例如: 数字、字母和下划线组成:123、abc _ 只能以字母和下划线开头:abc123、_sysVa ......
GO基础 - 01 Hello,Golang
一、开发环境搭建 1. 下载 SDK 1 // Go官网下载地址 2 https://golang.org/dl/ 3 4 // Go官方镜像站(推荐) 5 https://golang.google.cn/dl/ 2. 安装 由于Go语言是一门跨平台的编译型语言,我们只需要在一个平台下进行开发 ......
GO基础:03 Golang 基本数据类型
一、整型 1. 整型介绍 Go 语言中,整型可以分为以下几类: 类型描述 uint8 无符号 8位整型 (0 到 255) uint16 无符号 16位整型 (0 到 65535) uint32 无符号 32位整型 (0 到 4294967295) uint64 无符号 64位整型 (0 到 184 ......
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. ......
golang http(s)请求转发
func main(){ router := gin.Default()//创建一个router router.Use(MiddleWare())//中间件,起拦截器的作用 router.Any("/*action", Forward)//所有请求都会经过Forward函数转发 router.Run ......
golang 中的 cronjob
引言 最近做了一个需求,是定时任务相关的。以前定时任务都是通过 linux crontab 去实现的,现在服务上云(k8s)了,尝试了 k8s 的 CronJob,由于公司提供的是界面化工具,使用、查看起来很不方便。于是有了本文,通过一个单 pod 去实现一个常驻服务,去跑定时任务。 经过筛选,选用 ......
ubuntu下配置supervisor 运行golang打包后的可执行文件
apt update apt install supervisor vim /etc/supervisor/supervisord.conf 添加如下配置: command 配置成可执行文件的路径,directory为文件所在目录 [program:tempupService] command= / ......
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
本文我们将介绍 Apache Dubbo 灵活的多协议设计原则,基于这一设计,在 Dubbo 框架底层可灵活的选用 HTTP/2、HTTP/REST、TCP、gRPC、JsonRPC、Hessian2 等任一 RPC 通信协议,同时享用统一的 API 与对等的服务治理能力。 ......
Golang 需要至少 5 个操作系统线程
Golang 需要至少 5 个操作系统线程 主线程:Golang 代码执行的入口点,负责初始化程序,并启动其他 Goroutine。 垃圾回收器线程:Golang 内置了垃圾回收器,使用专门的线程来执行垃圾回收操作,回收不再使用的内存空间。 CPU 核心数个系统线程:每个核心需要一个系统线程来支持并 ......
golang 是抢占式调度 如果协程不主动让出 或者 阻塞 可以一直运行
设置处理的器的数量为1 是什么将 处理器设置为1 就是可以控制线程数呢? 在 GMP 模型中,P 与 M 一对一的挂载形式,通过设定 GOMAXPROCS 变量就能控制并行线程数。 演示案例 package main import ( "fmt" "runtime" "runtime/debug" ......
golang蒙特卡洛树算法实现五子棋AI
已经实现蒙特卡洛树算法的通用逻辑,只需要对应结构体实现相关接口就可以直接使用该算法。 优化算法主要优化GetActions生成下一步动作,要尽可能少,去掉无意义的动作。 以及优化ActionPolicy从众多动作挑选比较优秀的动作。对应五子棋就是执行该动作后当前局面评分最高。 package mai ......
(转)Golang 编程思维和工程实战
原文:https://zhuanlan.zhihu.com/p/426368274 一 Golang 编程思维 首先,我们先来看下最基本的,就是 Golang 的学习技巧,比如: 通读 Golang 的一些好的文章如 Frequently Asked Questions (FAQ)或者看看 FAQ ......