go
文章平均质量分 73
go lang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Go语言WEB框架:使用gows实现websocket服务
gows是一款方便易用的Go语言websocket库,gows使用简单,能够支持大量客户端连接原创 2023-03-28 08:12:09 · 2565 阅读 · 1 评论 -
Go语言并发编程:通道(Channel)的使用
介绍了Go语言通道的使用方法,包括通道的定义、发送数据、接收数据、单向通道的定义、有缓冲的通道的定义以及使用select监听多个通道,最后介绍了通道关闭的用法。原创 2022-09-12 09:57:13 · 959 阅读 · 0 评论 -
Go语言ORM框架:快捷查询函数的使用
使用worm的GetXXX()以及FindXXX()快捷查询函数访问数据库。原创 2022-07-18 16:30:32 · 664 阅读 · 0 评论 -
Go语言ORM框架:构造查询条件
worm支持链式API,可使用Where, And, Or, ID, In, Limit, GroupBy, OrderBy, Having等函数构造查询条件。原创 2022-07-18 08:59:30 · 769 阅读 · 0 评论 -
Go语言WEB框架:使用拦截器验证用户的登录状态
本文介绍如何使用Go语言实现登录功能,并使用拦截器来验证用户登录状态。原创 2022-07-15 16:55:01 · 974 阅读 · 0 评论 -
Go语言ORM框架:按需选择字段
worm提供了三种数据库字段选择方式,除了常用的select方法,worm还提供了 1)基于更新状态的字段自动选择方式, 2)基于Vo对象的字段智能选择方式。.........原创 2022-07-08 10:04:14 · 709 阅读 · 0 评论 -
Radix压缩字典树的原理以及Go语言实现代码
Radix树Radix树,即基数树,也称压缩字典树,是一种提供key-value存储查找的数据结构。radix tree常用于快速查找的场景中,例如:redis中存储slot对应的key信息、内核中使用radix tree管理数据结构、大多数http的router通过radix管理路由。Radix树在Trie Tree(字典树)的原理上优化过来的。因此在介绍Radix树的特点之首先简单介绍一下Trie Tree。Trie树Trie Tree,即字典树。Trie Tree的原理是将每个key拆分成一个个原创 2022-05-17 09:51:29 · 1704 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)原理以及Go语言实现
布隆过滤器介绍判断目标值是否在一个集合中是比较常见的业务场景。在Go语言中通常使用map来实现给功能。但是当集合比较大时,使用map会消耗大量的内存。 这种情况下可使用BitMap来代替map。BitMap虽然能够在一定情况下减少的内存的消耗,但是BitMap也存在以下局限性:当样本分布极度不均匀的时候,BitMap会造成很大空间上的浪费。若数据的类型Int64,并且数据分布的跨度比较大,则也无法满足对内存的要求。当元素不是整型的时候,BitMap就不适用了。BitMap只能保存整形数据,对于字原创 2022-05-09 07:24:36 · 1320 阅读 · 0 评论 -
BitMap原理以及Go语言实现
1. BitMap介绍BitMap可以理解为通过一个bit数组来存储特定数据的一种数据结构。BitMap常用于对大量整形数据做去重和查询。在这类查找中,我们可以通过map数据结构进行查找。但如果数据量比较大map数据结构将会大量占用内存。BitMap用一个比特位来映射某个元素的状态,所以这种数据结构是非常节省存储空间的。BitMap用途BitMap用于数据去重BitMap可用于数据的快速查找,判重。BitMap用于快速排序BitMap由于其本身的有序性和唯一性,可以实现快速排序:将其加入b原创 2022-05-07 16:15:44 · 1155 阅读 · 0 评论 -
Mysql事务实现原理以及在Go语言中使用数据库事务
数据库并发访问问题数据库使用中通常存在多个客户端同时访问数据库,因此数据库系统要能够处理这种并发访问的情况。在实际工作中,并发访问时数据库使用中的常态,然而并发访问时数据库时,可能出现以下问题:脏读:当前事务读到其他事务未提交的数据(脏数据),这种现象是脏读。在这里我们使用一个简单的订单表说明什么情况下会出现脏读,订单表(order)的表结构如下:字段名数据类型描述idbigint(20)自增idnovarchar(64)订单编号statustinyi原创 2022-04-24 07:30:52 · 880 阅读 · 0 评论 -
B+树原理以及Go语言实现
B+树介绍B+树是B树的一种变种,因此若想了解B+树,首先要了解B树的定义。B树又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用M表示。一般从查找效率考虑,通常要求M>=3。一棵M阶B树,有如下特性:若根节点不是叶子结点,则至少有两棵树。每一个节点最多M棵子树,最多有M-1个关键字。除根节点外,其他的每个分支至少有ceil(M/2)个子树,至少含有ceil(M/2)-1个关键字。每个节点中的关键字都按照大小顺序排列,每个关键字的左子树的所有关键字都小于它,每个关键字原创 2022-04-13 11:50:07 · 2627 阅读 · 14 评论 -
高性能Go语言Markdown文档解析器介绍
wego/wmd是一款Go语言Markdown文档解析器,突出特点是解析性能高,支持基本的Markdown语法,并对图片以及表格进行了扩展。具体特征如下:解析性能高。支持图片块,可定义图片的aling属性以及图片的高度、宽度。支持表格块的显示,可定义表格的aling属性、宽度属性、是否显示标题,以及单元格的aling属性。代码go get github.com/haming123/wego/wmd快速上手func HandlerShowMd(w http.ResponseWriter, r原创 2022-04-06 18:03:24 · 1334 阅读 · 0 评论 -
SkipList跳表的原理以及Go语言实现
跳表的原理跳表(Skiplist)是一个特殊的链表,相比一般的链表,有更高的查找效率,可比拟二叉查找树。跳表的查找、插入、删除时间复杂度都是O(logN)。许多知名的开源软件中的数据结构采用了跳表这种数据结构,例如:Redis中的有序集合zsetLevelDB、HBase中MemtableApacheLucene中的TermDictionary、Posting List跳表数据结构是由William Pugh发明的,最早出现于他在1990年发表的论文《Skip Lists: A Probab原创 2022-04-01 22:37:00 · 826 阅读 · 0 评论 -
使用Go语言ORM库worm的SQL预处理功能
worm支持SQL语句的预编译,使用SQL语句预编译可以提升数据库访问的效率。在worm中可以通过三种方式开启SQL语句预编译:全局开启、会话中开启、语句中开启。原创 2022-03-27 21:57:03 · 909 阅读 · 0 评论 -
高性能结构化日志模块wego/klog使用说明
介绍wego/klog用GO语言实现的一个高性能的结构化日志包,wego/klog用于生成统计型日志。主要特征:wego/klog支持按照天或小时进行日志文件的滚动输出。采用基于buffer的文件输出方式,满足高性能输出日志。采用链式api来添加字段。安装go get github.com/haming123/wego/klog快速上手package mainimport "github.com/haming123/wego/klog"func main() { klog.Init原创 2022-03-24 09:41:51 · 931 阅读 · 0 评论 -
微信小程序动态消息使用说明
动态消息介绍小程序的转发功能是一个重要的小程序入口,也是小程序运营中的一个重要引流方式。用户可以使用转发功能将小程序页面转发给好友或者微信群,其他用户可以点击转发的小程序卡片快速进入小程序。虽然小程序的转发是非常好用的运营工具,但是转发出来的小程序卡片是固定不变的,难以满足一些需要显示用户参与情况的需求。比如拼团功能、抽奖功能。为了满足这些需求,小程序从基础库2.4.0开始,支持转发动态消息。动态消息对比普通消息,有以下特点:动态信息可以查看“人数变化情况”和“已开始”两种状态消息发出去之后,开原创 2022-03-23 17:20:10 · 4007 阅读 · 0 评论 -
Go语言Web框架wego性能测试
Wego与GoHttp性能对比GoHttp是go语言自带的http请求处理包,本文对wego框架与go http包访问性能进行对比。带有10个query参数的get请求func BenchmarkGetParamWego(B *testing.B) { web, _ := NewWeb() web.Config.ShowUrlLog = false web.initModule() web.GET("/text", func(c *WebContext) { name := c.Quer原创 2022-03-21 09:59:38 · 455 阅读 · 0 评论 -
Go语言WEB框架:快速入门
wego是一个Go语言编写的高性能的Web框架,可以用来快速开发RESTful服务以及后端服务等各种应用。wego框架是一个完整的MVC框架,包括路由模块、数据库ORM模块、view模板处理以及Session模块。wego具有性能高、方便易用,兼容性好,扩展性强等特点。...原创 2022-03-21 09:35:03 · 854 阅读 · 0 评论 -
使用Go语言ORM库worm访问PostgreSQL数据库
worm是一款方便易用的Go语言ORM库,worm具有使用简单,运行性能高,功能强大的特点。本文介绍如何使用worm来访问postgres数据库。创建实体类CREATE TABLE users( id SERIAL PRIMARY KEY, name varchar(255) NULL, age int NULL, passwd varchar](200) NULL, created datetime NULL);数据库表user对应的实体类的定义如下:type User struct原创 2022-03-19 08:28:16 · 484 阅读 · 0 评论 -
根据数据库自动生成worm模型结构体
本文说明如何编写一个worm模型的结构体的定义, 并说明如何使用dbreverse工具自定生成模型结构体。模型定义模型定义用于将一个struct映射为数据库中对应的一张表。worm使用名称为"db"的Tag映射数据库字段,"db"后面是字段的名称以及其他的约定的规则,例如对于下面的user表:CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `ag原创 2022-03-16 10:47:39 · 1434 阅读 · 0 评论 -
使用Go语言ORM库worm访问sqlserver数据库
worm是一款方便易用的Go语言ORM库,worm具有使用简单,运行性能高,功能强大的特点。本文介绍如何使用worm来访问sqlserver数据库。worm的安装请执行:go get github.com/haming123/wego/worm创建实体类CREATE TABLE [users]( [id] [bigint] IDENTITY(1,1) NOT NULL, [name] [varchar](255) NULL, [age] [int] NULL, [passwd] [varchar原创 2022-03-15 16:49:16 · 1351 阅读 · 0 评论 -
Go语言ORM库worm的性能测试
测试说明本文对三种数据库访问包(sql.DB、worm、gorm)进行两种查询类型(获取单行数据、获取多行数据)的性能进行对比测试。另外为了使大家对预处理的性能有所了解,增加了worm开启预处理下的性能测试环节。worm的安装命令:go get github.com/haming123/wego/worm数据库初始化函数const dsn_test = "account:pwd@tcp(127.0.0.1:3306)/db?charset=utf8&parseTime=True"func i原创 2022-03-14 21:59:57 · 784 阅读 · 0 评论 -
使用worm的SQL构造器访问数据库
SQL构造器本问介绍使用worm的SQL构造器访问数据库。SQL构造器的使用场景与原生SQL基本一致,但是使用SQL构造器能够以一种更为简单的方式来编写SQL语句,并能够减少SQL编码过程中的错误。worm的安装命令:go get github.com/haming123/wego/worm创建DbEngine您可通过调用worm.NewMysql()创建一个worm.DbEngine,或者通过调用worm.InitMysql()来初始化缺省的worm.DbEngine。package maini原创 2022-03-14 11:00:24 · 745 阅读 · 0 评论 -
Go语言ORM框架:访问mysql数据库
worm是一款方便易用的Go语言ORM库,worm具有使用简单,运行性能高,功能强大的特点。目前worm支持的数据库有:mysql、postgres、sqlite、sqlserver,本文介绍如何使用worm访问mysql数据库。原创 2022-03-13 10:13:48 · 2100 阅读 · 0 评论 -
简单易用的APIv3版微信支付SDK
微信支付SDK,基于全新的微信支付APIv3来实现。支持小程序支付、JSAPI支付、Native支付、APP支付、H5支付,支持直连商户模式和服务商模式。原创 2022-03-03 17:41:19 · 1711 阅读 · 0 评论 -
Go语言微信小程序SDK使用说明
微信小程序服务端SDK,实现了小程序的登录、数据解密、客服消息、订阅消息、生成小程序码、生成小程序shortLink、生成页面Scheme码、生成小程序URL Link等功能。原创 2022-03-03 17:34:03 · 1694 阅读 · 2 评论 -
web框架性能对比wego与gin
web框架性能对比wego与gin进行三种情况下的性能:输出简单的文本输出简单的json带有10个query参数的get请求gin相关的代码package mainimport ( "fmt" "github.com/gin-gonic/gin")func handler_text(c *gin.Context) { c.String(200, "hello world")}func handler_param(c *gin.Context) { name, _ := c原创 2022-02-22 12:11:18 · 543 阅读 · 0 评论 -
Go语言WEB框架:session
Sessionwego使用缓存引擎来存储session数据,目前wego支持以下类型的缓存引擎:cookiememory(使用本地内存的缓存引擎)redismemcache使用cookie引擎存储session数据本节我们使用cookie引擎存储session数据,并实现用户登录验证以及获取用户登录信息。首先初始化Session:func main() { web, err := wego.NewWeb() if err != nil{ log.Error(err) r原创 2022-02-22 08:19:14 · 805 阅读 · 0 评论 -
Go语言WEB框架:请求结果处理
wego框架支持以字符串、json、xml、html等格式响应HTTP请求。原创 2022-02-22 08:14:19 · 401 阅读 · 0 评论 -
Go语言WEB框架:请求参数处理
获取请求参数wego框架中请求参数可以使用一个统一的Param对象来获取,Param对象可获取以下类型的参数:URL路径参数<< 路径参数是从url的Path中匹配的参数,路径参数通常在冒号路由或星号路由中定义,并在url请求的Path中匹配而获取的。URL查询参数<< URL查询参数,是URL请求中以?为起点的形如k1=v1&k2=v2…这样的字符串解析所得的参数。Form参数<< Form参数又称作表单参数,这里的表单数据指的是浏览器将表单数据原创 2022-02-22 08:09:28 · 2139 阅读 · 0 评论 -
Go语言WEB框架:路由注册
wego支持三种路由类型的注册:静态路由、参数路由、模糊匹配路由。原创 2022-02-22 08:00:45 · 1174 阅读 · 0 评论 -
高性能Go语言日志模块dlog使用说明
介绍dlog是用GO语言实现的一个简单高效、支持文件轮换以及日志分级的日志SDK。其特征如下:采用文件日志类型采用了内存缓存,满足高性能输出日志。支持日志分级,具体分级如下:fatal (log.LOG_FATAL)error (log.LOG_ERROR)warn (log.LOG_WARN)info (log.LOG_INFO)debug (log.LOG_DEBUG)支持终端日志类型以及可按照时间进行轮换的文件日志类型。文件日志类型支持按照天或小时进行轮换输出。安装原创 2022-02-22 07:38:46 · 1061 阅读 · 0 评论 -
使用wego框架实现用户登录功能
本文通过一个简单的例子说明如何使用wego框架来实现用户登录功能原创 2022-02-21 10:52:58 · 884 阅读 · 0 评论 -
介绍一款超方便的Go语言INI解析器:wego/wini
wego/wini是一款GO语言版本的ini配置文件解析工具,wego/wini具有以下特征:1. 提供了GetString、GetInt...以及MustrString、MustInt...函数,方便配置数据的获取。2. 支持通过struct的tag来自动将配置数据赋值给struct的字段。3. 支持使用环境变量配置项的值。原创 2022-02-19 07:52:15 · 762 阅读 · 0 评论
分享