zap自定义日志级别

简介 zap是有uber开发的一款日志库。 zap提供了三个快速创建Logger方法: NewProduction: 以JSON格式记录Info级别及以上的标准错误日志 NewDevelopment: 以JSON格式记录Debug级别及以上的标准错误日志 NewExample: 提供一个测试实例,供

MySQL使用笔记

查询结果导出到文件 终端命令下直接导出 除了在mysql命令行下导出查询结果,还可以在终端直接导出查询结果到文件中: mysql -uroot -p -e "select * from test" > xxx.csv 如果导出结果中涉及到中文,可以使用--default-character-set=

Fabric配置块结构解析

本文是区块链浏览器系列的第二篇。 上一篇介绍了交易块中的数据结构,这一篇介绍区块链网络中的配置块数据结构。 这两种区块中数据结构内容的区别主要Payload结构体中的Data域中的内容,接下来将以类图的形式来解析Data域包含的信息: classDiagram class Payload{ Head

Docker部署Jekyll

1. 起因 前两天终于下单买了个域名,10年的使用期限。既然有了域名,那自己的博客就可以搞起来了。 现在博客的记录用的是Jekyll+Github Pages,所以决定之后自己的博客网站也采用Jekyll来部署实现,为了之后的维护、升级,决定采用docker来部署Jekyll。 2. 部署 dock

gRPC入门

1. gRPC简介 gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,由Google开源并维护。它使用Protocol Buffers(protobuf)作为接口定义语言(IDL),提供跨平台、跨语言的RPC调用支持。gRPC具有以下几个特点: 高性能:使用HTTP/2协议,支持多路复用

设置Windows主机的浏览器为wls2的默认浏览器

这里以Chrome为例。 1. 准备工作 wsl是可以使用Windows主机上安装的exe程序,出于安全考虑,默认情况下改功能是无法使用。要使用的话,终端需要以管理员权限启动。 我这里以Windows Terminal为例,介绍如何默认使用管理员权限打开终端,具体操作如下图所示: 2. 操作 wsl

我的OpenAI库发布了!!!

chatGPT正式发布已经有段时间了,这段时间我也深度体验了chatGPT的魅力。 OpenAI除了提供网页版的chatGPT,还通过api的形式提供了很多其它服务,包括文字纠错、图片生成、音频转换等等。 作为程序员,即使有现成的openai库,但还是免不了想自己造轮子,所以就有这个openai库。

微信公众号消息加解密

在微信公众号的使用过程中,为了提高信息传输的安全性,可以在服务器配置中将消息加解密模式指定为安全模式。 启用安全模式后,公众号主动调用API的情况并不会受影响,只有被动回复用户的消息时才需要对消息进行加解密。 官方提供了5种开发语言的示例代码,参照官方给的C++示例代码,本文给出go语言的解密实现:

go slice使用

1. 简介 在go中,slice是一种动态数组类型,其底层实现中使用了数组。slice有以下特点: *slice本身并不是数组,它只是一个引用类型,包含了一个指向底层数组的指针,以及长度和容量。 *slice的长度可以动态扩展或缩减,通过append和copy操作可以增加或删除slice中的元素。

Docker获取Let`s Encrypt SSL 证书

文中的操作都是在CentOS Stream release 9下执行的,使用的是root用户。 1. 安装docker # 卸载原有的docker yum remove docker docker-client docker-client-latest docker-common docker-la

openAI发布v0.2.0了

时隔20天,OpenAI从v0.0.1升级到了v0.2.0。与v0.0.1版相比,v0.2.0版主要做了以下改动: 把cmd目录下微信公众号的相关服务迁移到了这里 完善了cmd下的测试服务,针对openAI库里实现的各个接口都提供了响应的调用接口,服务运行后可以通过postman进行测试 完成了Fi

go多版本管理

在日常开发工作过程中,很多时候我们都需要在自己的机器上安装多个go版本,像是go1.16引入的embed,go1.18引入了泛型;又或是自己本地使用的是最新版,但公司的项目中使用的go1.14、go1.13甚至是更早的版本。 那么有没有既不影响我们自己的本地环境,又能兼顾历史项目的办法呢?答案当然是

x509: cannot validate certificate for xxx because it doesn't contain any IP SANs

项目中有时候需要访问https网站,但如果该网站使用的是自建证书,那client端验证server端证书时,有时候会报错: > x509: cannot validate certificate for xxx because it doesn't contain any IP SANs 碰到这种情

如何让你的结构体更高效

> 文中所涉及到的代码运行结果均是在64位机器上执行得到的. ## 基础知识回顾 在Go中,我们可以使用`unsafe.Sizeof(x)`来查看变量所占的内存大小。以下是Go内置的数据类型占用的内存大小: | 类型 | 内存大小(字节数) | | : | : | | bool | 1 | | in

Hyperledger Fabric系统链码介绍

在Hyperledger Fabric中,LSCC(Lifecycle System Chaincode)、CSCC(Chaincode System Chaincode)、QSCC(Query System Chaincode)、ESCC(Endorsement System Chaincode)

PGO前瞻

原文在[这里](https://go.dev/blog/pgo-preview)。 > 原文发布于2023年2月8日 在构建Go二进制文件时,Go编译器会进行优化,以尽可能生成性能最佳的二进制文件。例如,常量传播可以在编译时对常量表达式进行求值,避免了运行时的计算开销;逃逸分析可以避免对局部作用域对

如何优雅地退出程序

在Linux系统中执行操作时,进程可以通过发送和接收信号与其他进程进行通信。信号是用于通知进程发生特定事件或请求进程采取特定动作的软件中断。 以下是Linux系统中常见的一些信号及其含义: 1. **SIGINT (2)**:中断信号,通常由终端用户按下`Ctrl + C`发送给前台进程。该信号用于

可以丢掉123456了

Go语音中格式化时间不是常见的`y-m-d H:M:S`,而是使用**2006-01-02 15:04:05 -0700 MST**,也就是常说的`123456`。 > 之所以这么用,据说Go是在这个时间节点诞生的 在go 1.20之前,除了自定义时间格式外,还可以使用`time`包中预定义的格式:

gRPC vs. HTTP:网络通信协议的对比

## 概述 gRPC 和 HTTP 是两种常见的网络通信协议,用于在客户端和服务器之间进行通信。它们具有不同的特点和适用场景,下面对它们进行详细比较。 ## HTTP(Hypertext Transfer Protocol) ### 特点: 1. **简单易用**:HTTP 使用简单的请求方法和状态

iota简介

当声明枚举类型或定义一组相关常量时,Go语言中的`iota`关键字可以帮助我们简化代码并自动生成递增的值。本文档将详细介绍`iota`的用法和行为。 ### `iota`关键字 `iota`是Go语言中的一个预定义标识符,它用于创建自增的无类型整数常量。`iota`的行为类似于一个计数器,每次在常量