going

【解释器设计模式详解】C/Java/Go/JS/TS/Python不同语言实现

简介 解释器模式(Interpreter Pattern)是一种行为型设计模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式常被用在 SQL 解析、符号处理引擎等。 解释器模式常用于对简单语言的编译或分析实例中,为了掌握好它的结构与实现,必须先了解编译原理中的“文法、句子、语法 ......
解释器 设计模式 语言 模式 Python

go 游戏框架

这两天去看了一下go, 总结一下,目前的go开源游戏框架。不得不说,如今的大趋所势。go语言转变如此之快。go开源游戏端应用的框架,已经多到数不胜数。这才两年的时间里,就发生了如此多的转变。cpp所带来的痛苦,真让人非常印象深刻吗?在快捷开发,简单类型游戏中,比如卡牌类,回合制这种类型游戏,cpp可 ......
框架 go

使用go语言通过第三方库go-redis操作Redis

go-redis使用 安装:在GOPATH路径下面执行命令:go get -u github.com/redis/go-redis -u:表示update 文档地址:https://pkg.go.dev/github.com/go-redis/redis 连接 package main import ......
第三方 go-redis 语言 Redis redis

go语言rsa非对称加解密

最近用到rsa非对称加密解密算法,且将密钥、公钥作为应用程序的配置存放在配置文件或数据库中,苦于未找到go语言相关实现,自己东拼西凑简单实现一下;本文未涉及rsa算法的原理,仅仅用go语言实现了一下rsa密钥生成、加密、解密的工具,代码如下 package main import ( "crypto ......
语言 rsa

快速搭建一个go语言web后端服务脚手架

快速搭建一个go语言web后端服务脚手架 源码:https://github.com/weloe/go-web-demo web框架使用gin,数据操作使用gorm,访问控制使用casbin 首先添加一下自定义的middleware recover_control.go ,统一处理panic err ......
脚手架 语言 web

Go笔记(三):循环语句

1、for循环 与Java语言不同,go语言中只有for循环,没有while和do while。for表达式无需加括号,语法如下: for 初始语句;条件表达式;结束语句 { 循环体语句 } 示例代码如下: 1 package main 2 3 import "fmt" 4 5 /** 6 循环 7 ......
语句 笔记

从0开始的go+websocket构建五子棋对战系统

基本框架 直接照搬,不多解释。 dao为数据库处理层 po为实体类 middleware为中间件,cors处理跨域 app对request请求进行封装 router处理路由 service为服务层,进行数据处理逻辑 网络框架 使用gin作为整体的网络框架,文档在这里https://github.co ......
五子棋 websocket 系统 go

go语言代码规范

go语言代码规范 指南篇 编码风格原则 清晰:代码的目的和原理对读者来说是清晰的 简单:代码以最简单的方式完成其目标 简明:代码具有较高的信噪比 可维护性:编写的代码可以很容易维护 一致:代码与广泛的谷歌代码库风格一致 清晰 清晰主要是通过有效的命名、有用的注释和有效的代码组织来实现的。 清晰与否要 ......
语言 代码

go 二维数组 切片

使用make内置方法对二维切片进行初始化。 要注意的是,对二维切片初始化分配内存后,内部的一维slice是没有分配内存的,因此要使用二维切片保存数据还需要对一维slice分配内存。 否则,会出现 “panic: runtime error: index out of range [0] with l ......
数组 go

go-记录耗时

r := time.Now() //运行间隔 d := time.Since(r) time.Now结构体 type Time struct { //以下来自机翻 //wall和ext分别对壁时间秒、壁时间纳秒和壁时间纳秒进行编码, //以及可选的以纳秒为单位的单调时钟读取。 // //wall从高 ......
go

Go面试题——逃逸分析

Go面试题——逃逸分析 一个变量是在堆分配,还是在栈上分配,是经过编译器的逃逸分析之后得出的 "结论"。 一、逃逸分析是什么? 在 C 语言中,可以使用malloc和free手动在堆上分配和回收内存。 在 Go 语言中,堆内存是通过垃圾回收机制自动管理的,无需开发者指定。那么,Go 编译器怎么知道某 ......

Go语言入门5(map哈希表)

Map ​ 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key 都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。 ​ 在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别 对 ......
语言 map

go 总汇

命令 作用go mod init 生成 go.mod 文件go mod download 下载 go.mod 文件中指明的所有依赖go mod tidy 整理现有的依赖go mod grap 查看现有的依赖结构go mod edit 编辑 go.mod 文件go mod vendo 导出项目所有的依 ......
总汇 go

【go】文件

file与base64互转 package main import ( "encoding/base64" "fmt" "io/ioutil" ) func main() { // file 转 base64 fileBytes, err := ioutil.ReadFile("E:\\测试\\te ......
文件

Golang 常用库之jwt-go

本文地址 https://www.cnblogs.com/zichliang/p/17303759.html github地址:https://github.com/dgrijalva/jwt-go 何为 jwt token? 什么是JSON Web Token? JSON Web Token(JW ......
常用 Golang jwt-go jwt go

Go语言中协程(goroutine)的介绍和使用

Go 语言中协程(goroutine)的介绍和使用 Go 语言作为一种高效、简洁、并发的编程语言,其特色之一就是支持协程。协程是一种轻量级的线程,其优点在于占用资源少、切换成本低,能够高效地实现并发操作。在 Go 语言中,协程的使用非常方便,本文将介绍协程的基本概念和使用方法,以及如何通过协程实现高 ......
goroutine 语言

Go笔记(二):条件控制语句

Go语言中的if语句根据条件表达式的结果选择需要执行的业务流程。 1、if控制语句 1、if 语法 语法详情如下: if 条件表达式 { // 条件表达式为true,执行的代码块 } 条件表达式必须返回布尔型的结果,与Java语法不同,在Go中,if的条件表达式不使用括号。 2、if/else 语法 ......
语句 条件 笔记

go语言SSE客户端

package main import ( "fmt" "github.com/r3labs/sse/v2" "net/http" "net/url" "strings" "time" ) func main() { client := &http.Client{ // 设置Transport字段为 ......
客户端 语言 客户 SSE

golang常用库包:log日志记录-uber的Go日志库zap使用详解

Go 日志记录库:uber-go 的日志操作库 zap 使用 一、简介 zap 是 uber 开源的一个高性能,结构化,分级记录的日志记录包。 go1.20.2 zap v1.24.0 zap的特性 高性能:zap 对日志输出进行了多项优化以提高它的性能 日志分级:有 Debug,Info,Warn ......
日志 常用 golang uber log

Go 语言体系下的微服务框架选型:Dubbo-go

以 Dubbo-go 为中心的微服务体系在多个知名企业中成功落地和实践,框架的稳定性在实际场景下经受住了考验。 ......
框架 Dubbo-go 体系 语言 Dubbo

go语言内存对齐

go语言内存对齐 什么是内存对齐 内存对齐,是代码编译后在内存的布局和使用方式。当一个内存地址a是n字节的倍数(其中n是2的幂)时,内存地址a被称为n字节对齐。编译器会将数据按照特定的规则,把数据安排到合适的存储地址上,并占用合适的地址长度 比如:存储int32位和int64位的数据时 没有进行内存 ......
内存 语言

【享元设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 享元模式(Flyweight Pattern),是一种结构型设计模式。主要用于减少创建对象的数量,以减少内存占用和提高性能。它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。 当程序需要生成数量巨大的相似对象时,可能对内存有大量损耗 ......
设计模式 语言 模式 Python Java

go mod 替换不可用包

require( xxxxxxx v0.0.0-incompatible ) replace( xxxxx => xxxx 分支 ) 以上文件中的 xxxxxx 代码仓库 修改为以上格式,然会使用replace 命令替换 仓库到分支, 使用go mod tidy 命令修复后会自动引用这个分支上合适的 ......
mod go

Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,2023年4月10日,社区正式发布了 2.7.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。 ......
Excelize 版本 语言 文档 基础

Go笔记(一):基本数据类型

一、常量 1、语法格式 常量,编译阶段已经确定了值,程序在运行时无法改变常量的值。定义一个常量使用const关键字,语法格式如下: const constantName [type] = value const: 定义常量关键字; constantName: 常量名称; type: 常量类型; va ......
类型 笔记 数据

用 Go 剑指 Offer 12. 矩阵中的路径

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例 ......
矩阵 路径 Offer Go 12

用 Go 剑指 offer:面试题61. 扑克牌中的顺子

从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 示例 1: 输入: [1,2,3,4,5]输出: True 示例 2: 输入: [0,0,1,2,5]输 ......
扑克牌 扑克 offer Go 61

用 Go 剑指 Offer 53 - II. 0~n-1中缺失的数字

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 1: 输入: [0,1,3]输出: 2示例 2: 输入: [0,1,2,3,4,5,6,7,9]输出: 8 限制: 1 <= ......
缺失 数字 Offer Go 53

用 Go 剑指 Offer 53 - I. 在排序数组中查找数字 I (二分法)

统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2: 输入: nums = [5,7,7,8,8,10], target = 6输出: 0 提示: 0 <= nums.length <= 105-109 <= ......
二分法 数组 数字 Offer Go

用 Go 剑指 Offer 57. 和为s的两个数字 (双指针)

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2: 输入:nums = [10,26,30,31,47 ......
指针 两个 数字 Offer Go