FlyWine
They go low, we go high!
展开
-
golang之json注释处理
json 作为现代比较常用的文本格式,本身是不支持注释的,因为它的设计初衷是作为一种轻量级数据交换格式,只需要包含数据本身,而不应该包含注释或者其他无关的信息。原创 2023-07-18 21:15:57 · 1759 阅读 · 0 评论 -
Golang跨平台UI框架之Wails(二)
wails使用的前端框架,vue、react、Svelte各个都是时代的弄潮儿,就看哪一个适合你了,后续的系列都是以Angular为例。原创 2023-07-18 15:54:03 · 1751 阅读 · 0 评论 -
Golang跨平台UI框架之Wails(一)
Golang作为后端、脚手架、API服务等很常见,但Go不仅仅局限于此,它的目标是星辰大海!本系列文章就开始讲解如何使用Go来构建现代化的桌面级程序。原创 2022-09-08 21:59:58 · 9942 阅读 · 5 评论 -
Go 条件编译
接触过C/C++编程的应该一定知道条件编译。通常为了满足不同环境下使用不同的代码,从而在编译的时候进行选择性的编译,达到最佳的泛用性。例如:#define WINDOWS#ifdef WINDOWS# include <windows.h>#elif defined LINUX# include <sys/types.h># include <sys/stat.h># include <unistd.h># include <fcntl原创 2022-05-27 10:16:33 · 596 阅读 · 1 评论 -
golang cobra powershell补全脚本
golang cobra powershell补全脚本cobra 对于windows我个人觉得支持不是很好,所以写了下面的脚本,无论你怎么修改cobra都可以自适应补全命令。原理就是使用cobra隐藏命令:__completeNoDesc开启补全支持由于powershell目前还处于不是很完善的阶段,需要一定的设置才可以使用补全。设定补全脚本的执行权限Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine原创 2021-07-10 12:27:02 · 603 阅读 · 0 评论 -
Go信号gsignal和宿主Signal
信号gsignal和宿主Signalsignal包提供了信号处理程序,并允许我们的Go程序与输入的信号进行交互。订阅信号的订阅是通过channel来完成的,下面是一个例子,功能是监听任何终端信号或者终端退出的信号。每个os.Signal通道监听自己的事件。Go还提供了停止通知通道的功能,使用停止函数Stop(os.Signal)或者忽略信号函数Ignore(…os.Signal)。这个程序不能被CTRL+C打断,而且永远不会停止,因为在第二次从通道接收信号之前,通道就停止了对终端退出信号的翻译 2020-06-21 19:57:17 · 647 阅读 · 0 评论 -
golang之jsonb类型的支持
golang之jsonb类型的支持jsonb是一个很好的存储方式,可以省去我们很多的数据库复杂设计,简化架构。那么我们在golang中如何使用?当然我们是不能直接使用的,所以这篇文章将指导你在golang中如何正确的使用jsonb。场景我们希望在应用程序中处理这种实体。{ id: 1 name: "test entity 1" description: "a test entity for some guy's blog" properties:原创 2020-06-01 00:51:39 · 1672 阅读 · 0 评论 -
go之树型结构深度理解补充
go之树型结构深度理解补充在上一篇中借用了 Ilija Eftimov 文章来讲解了tree的定义和一些方法。这篇文章主要是讲解在树型结构中如何判断节点与节点之间的关系。A节点是否是B节点的直接上级A节点是否是B节点的可跳跃的上级(即中间隔开几个节点的间接上级)上一篇文章连接 go之树型结构深度理解判断A节点是否是B节点的直接上级思路大致是先在树中查到到A节点,然后在A节点的子节点集合中查找B节点是否存在,如果存在,那么A节点就是B节点的直接上级。func directUp(root原创 2020-06-01 00:26:54 · 570 阅读 · 0 评论 -
go之树型结构深度理解
go之树型结构深度理解如果你是一个编程人员,或多或少对树型结构都有一定的认识,我个人对树型数据结构是又爱又恨。这篇文章主要讲解一些关于tree的数据结构以及使用。什么是树?数组、列表、队列、队列、堆栈都是以一个集合的形式存储数据,一般称它们被称为 "线性"存储结构。但当涉及到树(trees)和图(graphs)时,事情就会变得混乱,因为数据不是以线性方式存储的。树被称为非线性数据结构。事实上,你也可以说树是分层数据结构,因为数据是以分层的方式存储的。后面为了讲解方便统一叫treetree是原创 2020-05-29 23:04:40 · 1919 阅读 · 0 评论 -
golang定时任务的使用
golang定时任务的使用由于 golang 标准库内没有比较好的定时任务包,所以这里将使用一个第三方的 cron 包,由于此包存在一些不适用的地方,所以对此做了一些简单封装。cron简介robfig/cron是一个第三方开源的任务调度库,也就是我们平时说的定时任务。Github官方文档安装只需要导入即可import "github.com/robfig/cron/v3"使...原创 2020-05-08 16:06:09 · 925 阅读 · 0 评论 -
golang操作postgresql数据库jsonb类型
golang操作postgresql数据库jsonb类型本文以案例为主,少言,自悟。推荐一个测试sql的网站SQL操作// 创建一个带有jsonb列的表CREATE TABLE items ( id SERIAL PRIMARY KEY, attrs JSONB);// 插入一条数据INSERT INTO items (attrs) VALUES ('{ ...原创 2020-04-13 21:53:54 · 2552 阅读 · 0 评论 -
使用Go和WebSockets构建实时聊天服务器
使用Go和WebSockets构建实时聊天服务器源代码连接 Go Chat现在web应用变得越来越复杂,前端开发人员的工资也是水涨船高。现在的web程序有些是可以实时更新的,用户无需主动调用服务器或刷新浏览器。在早期,开发人员需要依靠ajax请求来创建非常接近实时的应用程序,现在他们能够利用websocket的强大功能来创建完全实时的应用程序。关于什么是websocket查看这篇文章we...原创 2020-04-10 20:41:20 · 793 阅读 · 0 评论 -
golang代理转发基础
golang代理转发基础go标准库已经实现了一个反向代理工具,通过代理将客户端的请求转发到代理服务器。什么是反向代理?维基百科解释:”In computer networks , a reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more...原创 2020-04-09 20:48:34 · 1659 阅读 · 0 评论 -
go validator使用教程
go validator使用教程很多时候在B/S开发过程中,经常会遇到对参数的校验工作,一般客户端需要提前验证一次提交的数据是否合理,以减少后端的压力,而后端是必须要对数据做验证的。一般验证的方式大多都是if-else,这种方式会让你掉入无底的深渊,就像下面一样。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MeVUi8eX-1586155448562)(ht...原创 2020-04-06 14:44:48 · 1736 阅读 · 0 评论 -
go实现数组切片洗牌函数Shuffle
go实现数组切片洗牌函数Shuffle在深度学习、机器学习中,我们经常会使用到一个叫 Shuffle 函数,我一般叫打乱函数,也有人叫 洗牌 函数,就是听着高级点, 它可以帮助我们打乱数据集,那么在go中我们如何实现一个呢?Shuffle实现对于打乱函数有很多算法实现,由于我的场景并不需要实现很完美的打乱,所以对实现算法不做深入探究。如果想要实现一个洗牌函数,一般一定是需要随机算法的,或者...原创 2020-04-01 01:04:24 · 3469 阅读 · 1 评论 -
go利用反射实现任意类型切片删除元素
go利用反射实现任意类型切片删除元素在使用Go切片的时候,我们经常会需要删除切片内的元素,但是由于类型的限制,导致我们需要写很多类似的函数,那么下面我们通过go的反射机制实现一个任意类型的切片元素删除。这里只是讲如何实现的教程,同类型还有很多函数我们可以实现,不能全部讲解,大家可以直接使用我写的一个工具库 lodago,有点lodash的味道。实现再讲之前要说明一下一般是如何删除切片中的某...原创 2020-04-01 01:01:25 · 816 阅读 · 0 评论 -
go反射实战之数组的查找Find过滤Filter函数实现
go反射实战之数组的查找过滤函数实现在使用的go的时候,如果想要在数组中查找一个元素每次都要写一个循环来查找,过滤也是一样,没有一个能打的函数来帮助我们干这些事情,通过前面的学习,我们可以通过反射实现Find和Filter函数。上篇文章连接 go反射机制与类型识别。在其他语言中都有类似的函数,但不仅限于这两个函数,例如javascript、java、C#等都支持。Find实现先上代码再解...原创 2020-03-31 00:12:07 · 2640 阅读 · 0 评论 -
go反射机制与类型识别
go反射机制与类型识别在写 go 程序的时候,难免会遇到使用反射机制获取一些结构体或者变量的动态类型,java 和 C# 高级编程语言提供了很好的反射机制,但是在 C 语言中基本是不存在的,C++ 需要有很多语法糖来实现反射,但是技术要求很高,go 语言虽然没有泛型,单是基本的反射还是提供了,下面我们来看看 go 语言的反射与类型识别。什么是反射?一般我们在定义字段或者变量的时候要赋予他变量...原创 2020-03-30 23:26:24 · 524 阅读 · 0 评论 -
go切片窥探
go切片窥探切片(slice)是对数组一个连续片段的引用(该数组我们称之为相关数组,通常是匿名的),所以切片是一个引用类型(因此更类似于C/C++中的数组类型,或者Python中的list类型)。这个片段可以是整个数组,或者是由起始和终止索引标识的一些项的子集。需要注意的是,终止索引标识的项不包括在切片内。切片提供了一个相关数组的动态窗口。切片是可索引的,并且可以由 len() 函数获取长度。...原创 2020-03-26 12:12:10 · 196 阅读 · 0 评论 -
go设计模式之装饰器模式
go设计模式之装饰器模式再写这篇文章时,我已经看了很多其他人发表的类似文章,大概看了这么多吧。亓斌的设计模式-装饰者模式(Go语言描述)jeanphorn的Golang设计模式之装饰模式七八月份的太阳的Golang装饰器设计模式(九)我个人都不是很满意,所以才自己从头开始写关于go语言的装饰器模式,由于go的特殊性质,装饰器模式也是相对复杂的,因为go是在c/c++基础上发展而来的,...原创 2020-03-24 20:19:38 · 507 阅读 · 0 评论 -
go设计模式之单例模式
go设计模式之单例模式在软件开发时,经常会遇到有些对象需要保证只有一个实例的,那么这种设计模式就应用而生。定义单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单...原创 2020-03-24 14:43:27 · 381 阅读 · 0 评论 -
go设计模式之代理模式
go设计模式之代理模式代理模式的基本思想是,需要服务的代码只与代理类打交道,而实际工作的部分隐藏在代理的背后。它的主要的目的是希望隐藏实现的部分,从而消除代码的耦合。举个例子来说就是像电脑桌面的快捷方式。电脑对某个程序提供一个快捷方式(代理对象),快捷方式连接客户端和程序,客户端通过操作快捷方式就可以操作那个程序。定义代理模式(Proxy Pattern)指,一个类代表另一个类的功能。这种...原创 2020-03-24 10:44:48 · 386 阅读 · 0 评论 -
04-go命令使用
04-go命令使用此篇文章是基于GO 1.14.1,如果版本相差过大,还是以版本的命令为准。命令简介bug—用于提交使用过程中的bug。build—用于构建二进制可执行文件。clean—用于删除在构建过程中生成的临时文件。doc—用于生成项目文档。env—查看go的环境变量。fix—把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。fmt—格式化他们的代码到统...原创 2020-03-22 22:00:16 · 233 阅读 · 0 评论 -
03-go的包管理
03-go的包管理在Go 1.11和1.12版本时就已经支持了对包管理功能,但还是相对有一些小的问题,不过在后续的版本中已经陆续解决。增加包管理是必然趋势,一门好的语言,不光要有好的生态,优美的语法,包管理也是必不可缺的功能,例如大名鼎鼎 npm,就连 C++ 也要推出包管理,好的包管理会让项目更加整洁,依赖关系也相对清晰。回顾go的前世包管理在go没有支持新的包管理之前,对于项目中的包管理...原创 2020-03-22 20:13:31 · 314 阅读 · 0 评论 -
02-go的IDE安装
02-go的IDE安装此篇文章是在go已经安装的前提下进行的,如果go还没有安装请参考这篇文章 01-go安装。本文章使用的是vscode作为go IDE,所以需要提前安装好vscode,并且是在linux系统下。当前系统为linux mint 19,ubuntu deepin等系统类似。安装扩展插件打开vscode编辑器,在扩展中搜索 go 关键字,不出所料应该第一个插件就是了,如...原创 2020-03-22 18:50:36 · 855 阅读 · 0 评论 -
01-go安装
01-go安装本教程适用于linux发行版安装。当前系统使用的是linux mint 19.ubuntu deepin 等同理。下载安装包下载地址 go downloads。选择Linux包点击下载。开始安装1.设定安装目录在下载好的压缩包文件夹内打开终端,并设置安装目录环境变量,一般安装目录为/usr/local。export GO_INSTALL_DIR=/usr/lo...原创 2020-03-22 17:07:05 · 1047 阅读 · 1 评论