首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏人人都是架构师

    Go每日6:viper

    简介 上篇文章介绍 cobra 的时候提到了 viper,今天我们就来介绍下这个。 redis ip: ", viper.Get("redis.ip")) fmt.Println("redis port: ", viper.Get("redis.port")) } 我们使用之前Go 每日之 命令行选项 如果个键没有通过viper.Set显示设置值,那么获取时将尝试从命令行选项中读取。 如果有,优先使用。viper 使用 pflag 来解析选项。 我们既可以个个绑定,也可以自动全部绑定。 viper 使用fsnotify这个来实现监听文件修改的功能。 完整示例代码见 GitHub。 参考 viper GitHub 仓库

    66230编辑于 2023-09-13
  • 来自专栏KEN DO EVERTHING

    每日题(6

    计算机用二进制来表示小数的,对于某些小数,二进制无法精确表示,因为二进制只能表示2的n次方的数(就比如十进制中的1/3样)。 浮点数的计算不精确,所以如果用于商业计算,般使用BigDecimal进行运算 每日题 public static void main(String[] args) { int j 100 ; i++) { j = j++; } System.out.println(j); } 输出什么 【阅读原文】查看每日题系列文章

    47430发布于 2019-01-17
  • 来自专栏code人生

    每日:RabbitMQ

    工作流程 RabbitMQ 的工作流程如下: •生产者将消息发布到个或多个交换机。•交换机根据绑定规则将消息路由到个或多个队列。•消费者订阅队列并接收消息。 6. 协议支持 RabbitMQ 支持多种协议,包括 AMQP(高级消息队列协议)、STOMP、MQTT 等。这使得不同类型的应用程序可以与 RabbitMQ 进行通信,而无需修改现有代码。 7. 安装 RabbitMQ 客户端 首先,您需要使用 Go 的包管理工具安装 github.com/rabbitmq/amqp091-go 包,可以使用以下命令: go get github.com/rabbitmq 定义队列 在发送和接收消息之前,您需要定义个队列。如果队列不存在,它将被创建。 = nil { log.Fatalf("Failed to declare a queue: %v", err) } 6.

    58320编辑于 2023-10-19
  • 来自专栏code人生

    每日:protojson

    google.golang.org/protobuf/encoding/protojson 是 Go 语言中的,用于处理 Protocol Buffers(protobuf)和 JSON 之间的转换 以下是该些主要功能: •将 protobuf 消息转换为 JSON 格式:这是通过 Marshal 或 MarshalOptions.Marshal 函数实现的。 这些函数接收个 protobuf 消息并返回个 JSON 格式的字符串。 这些函数接收个 JSON 格式的字符串和个 protobuf 消息的指针,然后将 JSON 数据解析并填充到 protobuf 消息中。 = 2; string name = 3; string number = 4; string seal_name = 5; string seal_number = 6;

    1.1K10编辑于 2023-10-16
  • 来自专栏code人生

    每日:sonic

    sonic是个由字节跳动开发并开源的 JSON 解析,由 JIT (即时编译)和 SIMD (单指令流多数据流)来加速序列化/反序列化。 在细节上,进行了些进步的优化: 1.由于 Golang 中的原生汇编函数不能被内联,其成本甚至超过了 C 编译器的优化所带来的改善。 所以在 JIT 中重新实现了组轻量级的函数调用:•全局函数表+静态偏移量,用于调用指令•使用寄存器传递参数2.Sync.Map 开始被用来缓存编解码器,但是对于准静态(读远多于写),元素较少(通常不足几十个 author: mengbin[5] blog: mengbin[6] github: mengbin92[7] cnblogs: 恋水无意[8] References [1] 设计实现: https: 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [5] mengbin: mengbin1992@outlook.com [6]

    1.1K10编辑于 2023-10-16
  • 来自专栏code人生

    每日:sqlx

    sqlx 是个用于增强 Go 语言标准中 database/sql 包的第三方,它提供了些额外的功能和工具,使得与数据交互更加方便和灵活。 连接数据 在使用 sqlx 之前,你需要先通过 database/sql 包来连接到数据。然后,你可以使用 sqlx.Open 函数来打开个数据连接,并将连接传递给 sqlx.DB 对象。 你可以使用 db.Exec 方法来执行这些操作,它返回个 sql.Result 对象。 = nil { panic(err) } } 6. 结合结构体进行操作 sqlx 支持将查询结果映射到结构体,也支持将结构体的值绑定到查询语句中。 它提供了些方便的方法来处理查询结果、参数绑定以及基本的数据操作,使得与数据交互更加高效和可维护。

    70230编辑于 2023-10-16
  • 来自专栏code人生

    每日:memcache

    Memcache 是个高性能、分布式的内存缓存系统,常用于缓存数据查询结果、API调用结果、页面内容等,以提升应用程序的性能和响应速度。 它适用于那些需要频繁读取的数据,例如数据查询结果。 2.分布式存储: Memcache 支持分布式存储,可以在多台服务器上部署多个 Memcache 实例,这样可以扩展缓存容量和处理能力。 6.多种数据类型支持: Memcache 支持存储多种数据类型,包括字符串、数字、哈希表等。 7.高并发支持: Memcache 能够处理高并发的请求,适合于大规模的应用场景。 8.网络协议: Memcache 使用基于文本的协议进行通信,可以通过 Telnet 或客户端与 Memcache 进行交互。 使用 Memcache 通常需要将数据从数据或其他数据源读取到缓存中,然后在应用程序中读取缓存数据,从而提升读取性能。

    80020编辑于 2023-10-16
  • 来自专栏code人生

    每日:gosec

    gosec 是个用于在 Go 代码中查找安全问题的开源工具,它可以帮助发现可能的漏洞和潜在的安全风险。以下是关于 gosec 的详细介绍: 1. 6. 以下是些常见的配置选项: 7.1 配置文件 gosec 支持 YAML 和 JSON 格式的配置文件。 Author: mengbin[3] blog: mengbin[4] Github: mengbin92[5] cnblogs: 恋水无意[6] References [1] 这里: https:// mengbin1992@outlook.com [4] mengbin: https://mengbin.top [5] mengbin92: https://mengbin92.github.io/ [6]

    59220编辑于 2023-10-16
  • 来自专栏code人生

    每日:embed

    访问嵌入文件: 使用 embed 包嵌入的文件是个 string 、 []byte 或 embed.FS 类型的变量,你可以直接在代码中访问它们。在运行时,这些变量会被初始化为嵌入文件的内容。 同时,它只能嵌入在 Go 源代码文件同目录或子目录下的文件或目录。 总之,go embed 是个强大的特性,使得在 Go 代码中嵌入文件变得更加方便和简单,特别是在需要将静态资源或配置文件包含在应用程序中时。

    68110编辑于 2023-10-19
  • 来自专栏code人生

    每日:xorm

    xorm 是个功能强大的 Go 语言 ORM(对象关系映射),提供了许多特点和功能,使得与关系型数据的交互更加便捷、高效。 以下是 xorm 的些主要特点: 1.简化数据操作: xorm 封装了数据操作,使得 CRUD(增删改查)等常见操作更加简单,开发者可以专注于业务逻辑而不必过多关注底层的数据操作。 5.事务支持: xorm 支持事务操作,通过 NewSession 方法来创建会话,可以使用事务来确保组操作的原子性和致性。 6.缓存支持: xorm 支持缓存数据查询结果,可以使用缓存来提高读取操作的性能。支持多种缓存后端,如 Redis、Memcached 等。 然后,你可以使用 xorm.NewEngine 函数来创建个 xorm.Engine 对象,用于执行数据操作。

    1.2K20编辑于 2023-10-16
  • 来自专栏code人生

    每日:JWT

    JWT(JSON Web Token)是种开放标准(RFC 7519),它定义了种紧凑且自包含的方式,用于在各方之间安全地传输信息作为 JSON 对象。 以下是 JWT 的些主要特性: 1.紧凑(Compact):由于其小的尺寸,JWT 可以通过 URL、POST 参数或者在 HTTP header 中发送,这使得 JWT 非常适合用于通过 HTTP/ 2.自包含(Self-contained):JWT 的载荷中包含了所有用户需要的信息,避免了多次查询数据。 以下是使用 github.com/golang-jwt/jwt 创建和解码 JWT 的 Go 语言示例: 首先,你需要安装 golang-jwt/jwt ,可以通过以下命令进行安装: go get JWT,并指定了签名方法和声明;然后,使用个密钥签名并获取完整编码的 token;最后,我们解析 token,并验证签名方法和声明。

    53620编辑于 2023-10-16
  • 来自专栏code人生

    每日:cmp

    标准 cmp 原文在这里[1] go 1.21 新增 cmp 包提供了与有序变脸比较相关的类型和函数。 请参阅 Compare 函数,以获取致的方式来比较 NaN 值。 github.com/google/go-cmp/cmp github.com/google/go-cmp/cmp 是个 Go 语言中用于比较任意两个值是否相等的。 Author: mengbin[3] blog: mengbin[4] Github: mengbin92[5] cnblogs: 恋水无意[6] ---- References [1] 这里: https mengbin1992@outlook.com [4] mengbin: https://mengbin.top [5] mengbin92: https://mengbin92.github.io/ [6]

    65210编辑于 2023-10-19
  • 来自专栏code人生

    每日:Prometheus

    每个时间序列都由组键值对唯标识,这使得数据非常灵活且容易查询。 6.自动发现: Prometheus 支持服务自动发现,可以自动发现并监控新的目标(如容器、虚拟机等)。这使得在动态环境中维护监控系统变得更容易。 3.Client Libraries: Prometheus 提供各种语言的客户端,允许应用程序开发者轻松将度量数据暴露给 Prometheus。这些可用于记录自定义应用程序指标。 步骤2:引入 Prometheus Go 客户端 Prometheus 提供了个用于 Go 应用程序的客户端,你需要引入这个以便在应用程序中生成度量数据。 步骤6:配置 Prometheus 服务器 在 Prometheus 服务器的配置文件中,添加你的应用程序的终端(即要抓取度量数据的地址): scrape_configs: - job_name:

    77320编辑于 2023-10-19
  • 来自专栏code人生

    每日:cobra

    github.com/spf13/cobra 是个用于构建强大的命令行应用程序的 Go 语言。 以下是 cobra 的主要特性和用法示例: 主要特性 1.子命令支持:cobra 允许您创建包含多个子命令的命令行工具。这使得您可以组织和管理大型 CLI 应用程序。 6.内置的有效命令行解析:cobra 使用标准的 flag 包进行命令行解析,同时提供更高级的功能。 用法示例 以下是个简单的示例,演示了如何使用 cobra 创建个简单的命令行工具: package main import ( "fmt" "github.com/spf13/cobra 这只是个简单的示例,cobra 可以轻松处理更复杂的命令行接口,包括添加标志、参数、子命令和自定义用法信息。

    56620编辑于 2023-10-19
  • 来自专栏code人生

    每日:Gin

    Gin是个用Go语言编写的Web框架,它旨在提供高性能、轻量级的解决方案。 6.支持JSON、XML等多种数据格式:Gin支持多种数据格式的解析和输出,如JSON、XML等,方便与前端或其他服务进行交互。 可以使用Go语言的包管理工具go get来安装: go get -u github.com/gin-gonic/gin 示例代码 以下是个简单的Gin框架示例代码: package main import , }) }) // 启动HTTP服务 r.Run(":8080") } 在这个示例中,我们创建了个简单的Gin实例,定义了个GET路由"/hello",当请求该路由时 ,返回个JSON格式的响应。

    60310编辑于 2023-10-16
  • 来自专栏技术开源分享

    go每日

    go本身的包os/exec包含了对应的实现,接下来我们举个例子说明下 执行 go version 打印go版本 package main ​ import ( "fmt" "log" 例如设置工作目录,设置执行超时等特殊需求,这个时候原生的编码就会让人很难受。 今天在这里推荐个可以在linux/windows/darwin 上执行命令的golang开源,这个的Star虽然不是很高,但是封装后的api使用起来还算舒服。 还是通过几个例子来进行下说明 shell脚本 输入文本 package main ​ import ( "fmt" ​ "github.com/commander-cli/cmd" ,大家起学习进步。

    1.3K00发布于 2021-04-04
  • 来自专栏Python数据结构与算法

    python每日练(6)

    正确写法: import copy list = [1,2,3,4] list1 = copy.copy(list) list[0]=30 print(list1) Python标准模块-copy的使用 Python的标准非常广泛,提供了广泛的 设施如下面列出的长目录所示。 这些包含内置模块(用 C 编写),提供对 系统功能,例如文件 I/O,否则 Python程序员无法访问,以及用Python编写的模块 为在 日常编程。 copy模块是Python标准中的个模块,主要提供了对象复制的功能。在Python中,赋值操作只是给对象起了个新的名字,而不是创建了个新的对象。 copy模块是Python的个标准,它提供了些复制和拷贝对象的方法。

    47810编辑于 2024-01-18
  • 来自专栏code人生

    每日:类型转换

    github.com/spf13/cast 和 strconv 都是 Go 语言中用于类型转换的工具,但它们在功能和使用方式上有些不同。 github.com/spf13/cast github.com/spf13/cast 是个开源的 Go 类型转换,由 Hugo 项目的创始人 Steve Francia 开发。 它的目标是提供种更简单、更灵活的类型转换方式,以处理常见的类型转换场景,如将 interface{} 转换为基本类型、字符串转换为数字等。 // 自定义类型转换函数 cast.RegisterConverter(myType{}, customConverter) } strconv strconv 是 Go 语言标准中的个模块 •strconv 是 Go 标准部分,无需引入外部依赖,但对于复杂类型的转换不支持。 在选择使用哪个工具时,需要根据具体的场景和需求来决定。

    49920编辑于 2023-10-16
  • 来自专栏code人生

    每日:Gorm简介

    GORM(Go Object-Relational Mapping)是个用于Go语言的ORM,它提供了种简单、优雅的方式来操作数据6.预加载:GORM支持预加载,这意味着你可以次性查询出关联的数据,而不需要多次查询。7.事务:GORM支持数据事务,你可以很容易地开始、提交或回滚个事务。 8.日志:GORM提供了详细的日志,你可以看到每次的数据操作。9.扩展性:GORM提供了许多接口,你可以通过实现这些接口来扩展GORM的功能。 以下是个连接到MySQL数据的示例: package main import ( "gorm.io/driver/mysql" "gorm.io/gorm" ) func main , 100).First(&product) 6.

    1.1K20编辑于 2023-10-16
  • 来自专栏code人生

    每日:ent简介

    ent 是个由 Facebook 开发的 Go 语言的实体框架,用于构建和维护数据模型。它提供了种简单的方式来定义、交互和查询数据。 以下是 ent 的些主要特性和使用方法: Schema 定义 在 ent 中,你可以使用 Go 代码来定义你的数据模型(实体)。每个实体都有个 schema 文件,定义了实体的字段和关系。 ent.Field { return []ent.Field{ field.String("name"), field.Int("age"), } } 生成代码 旦你定义了 你可以使用 ent migrate 命令来创建和更新数据表。 以上就是 ent 的基本使用方法。

    1.1K10编辑于 2023-10-16
领券