自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 channel线程对于大量数据的处理,优化数据汇总

本文介绍了在GoFrame框架下实现多应用榜单系统的技术方案。针对100万级用户规模,采用分批处理(每批3000条)和并发控制(最大8线程)来解决数据库连接数不足的问题。系统实现了总榜和今日榜功能,总榜计算用户超越比例时使用app总人数作为分母,今日榜则使用当日活跃用户数。关键点包括:1)通过定时任务定期更新数据;2)批量SQL操作减少连接消耗;3)使用errgroup控制并发;4)排除封禁用户(通过LEFT JOIN过滤特定tag_id);5)采用ON DUPLICATE KEY UPDATE优化更新性能

2025-12-25 15:27:55 175

原创 go语言的上下文context

Go语言中的Context是一种标准库工具,用于管理并发编程中的请求控制信号和数据共享。它支持设置超时/截止时间、传递取消信号和共享请求范围内的数据。Context接口定义了四个方法:Deadline()、Done()、Err()和Value()。context包提供了四种实现:emptyCtx(空上下文)、cancelCtx(手动取消)、timerCtx(超时控制)和valueCtx(键值对传递)。Context主要用于避免goroutine泄漏、实现超时控制以及在多个goroutine间安全共享数据,尤

2025-10-24 11:24:54 517

原创 通过gf框架开发,使用数据库的原子性操作,优化sql的查询实现补贴

本文介绍了一个在商场或大型活动中为用户提供购买补贴的系统设计方案。系统需要处理多条补贴活动之间的切换、单个用户补贴上限控制以及补贴金额不足时的处理逻辑。文章提出了三个核心数据表结构:补贴活动表(记录活动参数)、补贴流水表(记录发放明细)和补贴上限用户表(记录用户享受金额),并给出了基于Go语言的代码实现示例。系统通过事务处理和原子更新确保数据一致性,当补贴金额不足时能够自动切换到下一条符合条件的活动,同时严格限制单个用户的补贴总额不超过预设上限。该方案减少了数据库回表操作,优化了系统性能。

2025-09-29 13:15:26 546

原创 GoFrame框架对于广告平台的归因实现(巨量融合归因)

本文介绍了使用工厂模式实现多广告平台归因上报的技术方案。以GoFrame框架为基础,创建了attribution模块,通过接口IAttributionEngine定义了归因核心功能,包括保存点击事件、归因和回调。以巨量广告平台为例,详细展示了JuLiangEngine的实现,包括实时归因接口调用、数据存储和结构体映射。该方案支持扩展多个广告平台(如百度、快手),统一处理不同平台的归因逻辑,便于维护和扩展。关键点包括使用工厂模式实例化不同引擎、标准化接口定义、具体平台的实现细节处理等。

2025-09-09 17:30:43 414

原创 GoFrame框架使用WebSocket的使用

摘要:本文介绍了如何使用GoFrame框架实现WebSocket服务端功能。服务端采用模块化设计,分为三个文件:client.go处理连接管理,scanner.go实现输入扫描,handler.go处理消息逻辑。代码展示了WebSocket客户端的注册、消息类型处理(文本和二进制)、消息广播以及异常处理。服务端支持文本消息回显和二进制数据反转功能,同时提供了命令行输入交互和优雅退出机制。该实现可作为智能客服等实时交互应用的基础框架。

2025-07-04 11:03:59 265

原创 goFrame框架中如何实现文件的excel导出

公司业务有一个excel导出的需求,数据量10w+,框架是goFrame。对一些需要处理的数据根据字典进行转化输出为string类型的值,然后转成excel表格。但是批量导出的数据又是很多条,我的实现采用了:协程、缓存、bytes、锁等进行实现的。

2025-05-09 14:33:08 305

原创 不同平台下拉去的Git仓库代码提交时分行隔符不一致问题

使用Git托管代码的时候,与同事或者朋友使用的操作系统平台不一致的问题,在拉去或生成新的代码,需要转换行分隔符,由CRLF转换成LF,不然提交代码的时候Git工具会出现多个转换后需要提交的文件。为了统一 Git仓库和本地 Windows / Mac /Linux 系统的换行符(CRLF/LF),可以通过 Git 的配置来自动处理换行符转换,而无需依赖 IDEA 手动操作,原来使用的IDEA的手动操作如下: 非常的不方便。

2025-04-02 19:48:50 532

原创 基于 CentOS7.6 的 Docker 下载常用的容器(MySQL&Redis&MongoDB),解决拉取容器镜像失败问题

mysql选择是8版本,redis是选择4版本、mongoDB选择最新版,也可以根据自己的需要进行下载对应的版本,无非就是容器名:版本号这样去拉去相关的容器镜像。如果你还不会在服务器中安装 docker,可以查看我的这篇文章直接照搬照抄就行!

2024-11-13 16:26:42 1218

原创 新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

下面就安装一个docker和nginx及 go 语言的相关配置,命令可以直接粘贴使用!

2024-11-11 12:29:19 1456

原创 Ubuntu系统升级k8s节点的node节点遇到的问题

Ubuntu系统20.01版本k8s集群升级node节点遇到的问题和解决办法!亲测可解决

2024-06-03 16:16:02 550

原创 Ubuntu系统的k8s常见的错误和解决的问题

常见的k8s安装集群遇到的问题

2024-06-03 14:45:47 974

原创 MacOS本地使用Docker Desktop 搭建Minio容器

docker官网:https://www.docker.com/products/docker-desktop/根据自己的型号进行选择,,记得需要看到最后噢!最后有坑点解决办法!最后有坑点解决办法!最后有坑点解决办法!

2024-03-18 14:44:39 1998

原创 gin-vue-admin二开使用雪花算法生成唯一标识 id

雪花算法,由Twitter开源,是一种分布式唯一ID生成算法。这种算法的主要特点是简单、高效,生成的64位整数ID全局唯一,且趋势递增。在单机上,雪花算法生成的ID也能保持递增特性,但在不同的机器上,由于各自有不同的时间戳,因此生成的ID不会冲突。这种算法的性能相当高,每秒中能生成数百万的自增ID。因此,雪花算法被广泛应用于分布式系统中需要唯一ID的场景。例如,美团开源的分布式ID生成器Leaf也采用了雪花算法来保证全局唯一和趋势递增。

2024-01-16 16:37:46 1112

原创 Mac 克隆git项目 git clone gitee@git@xxx/xxx.git 错误:fatal: Could not read from remote repositor.

使用 mac 克隆公司项目出现问题;使用下载包以后打开项目,在终端执行go mod tidy出现报错的解决方案,按照以下这个方法可以解决这个问题,亲测有效!

2024-01-10 11:35:51 781

原创 开源项目go-admin的代码生成功能使用

具体如何配置go-admin项目的可以查看进行配置启动go-admin,再看下一篇文章!

2024-01-05 18:43:45 1712

原创 首次使用go-admin

也是需要配置好settings.dev.yml的对应信息,知识两者启动server的时候加载的yml不一样,但是这个比较推荐,可以区分好哪个是开发yml文件,哪个是上线yml文件。settings.yml文件地址在config文件夹中,修改自己数据库的数据库的配置信息,user是数据库的账户,password是数据库连接密码,dbname是数据库名。这里的gen对应的dbname也是需要修改的,不然初始化数据库的时候会报错,切记需要修改一下!打包后的,所以可以直接使用 go-admin。

2024-01-05 16:42:11 1335

原创 Go语言基于Viper封装实现

Viper是一个用于Go语言应用程序的配置管理库。它提供了一种简单而灵活的方式来处理应用程序的配置,支持多种格式的配置文件,并提供了一组API来读取和使用这些配置。Viper支持多种配置文件格式,包括JSON、TOML、YAML和HCL等。它还支持环境变量和命令行标志等配置方式。这使得Viper非常适合需要在不同环境中运行(如开发、测试和生产环境)的应用程序,因为可以使用不同的配置文件和设置来管理应用程序的行为。优点:使用Viper,可以轻松地将配置信息加载到应用程序中,并在需要时获取这些信息。

2023-05-18 12:26:39 817

原创 Go语言基于zap的日志封装

Zap是一个高性能、结构化日志库,专为Go语言设计。它由Uber开源,并且在Go社区中非常受欢迎。它的设计目标是提供一个简单易用、高效稳定、灵活可扩展的日志系统。以下是Zap的一些主要特点:1.高性能:Zap的性能非常出色,可以在不影响应用程序性能的情况下记录大量的日志。它的性能比其他Go语言的日志库高出数倍,这使得它成为高负载生产环境中的不错选择。2.结构化日志:Zap支持结构化日志,这意味着你可以在日志中包含结构化数据,而不是只是简单的文本。

2023-05-17 23:48:40 1219

原创 go-web(gin框架)中实现本地文件上传

通过读取yaml文件的配置信息进行定义结构体,我们在config包下创建一个conf_upload.go 来装我们的结构体Size int `json:"size" yaml:"size"` // 图片上传的大小 Path string `json:"path" yaml:"path"` // 图片上传的目录 }虽然我们在config包下进行创建一个入口文件enter.go,将我们的结构体帮定进去然后在根目录创建一个global文件夹,并且创建global.go 文件,将其注册为全局。

2023-03-24 13:46:24 757

原创 基于gin-vue-admin[gin+gorm]手动实现crud(全)

在gva框架下自己手动实现一个CRUD的操作,该操作将会结合gen进行探讨学习,具体实现可以看下面代码的实现,项目目录层级分为api层,service层,model层,common层,router层,gen层。我的这个实现方式有些许不太一样就是,我的修改并非传统的restful风格通过json方式进行传递这个id,也确保安全,所以这里的请求我不会用Get请求。

2023-03-09 14:40:37 1205

原创 Go开发中的JWT的创建和解析的功能实现

`Json web token (JWT)`, 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该`token`也可直接被用于认证,也可被加密。下面就以一个标准的jwt功能实现方式进行编码。并且这个jwt也会相对安全一点,因为是有加密过的。一般用户登录后生成的token都

2022-12-13 17:19:18 1109

原创 Go开发中如何进行自定义Response.go封装实现

在写接口的时候,我们通过都需要将前端小伙伴发给我们的请求进行校验和返回数据,如果是正确的请求参数,那么也符合我们的校验,则需要返回数据给他们,并且给予提示;反之,如果请求是不符合的我们则需要基于提示用户或让前端小伙伴进行做出对应的修改,比如:参数类型错误、字段错误等信息回返给前端的小伙伴进行做出对应的修改。这时候有些提示信息则会重复,一直写重复的提示难免会有点繁琐,那么作为后端开发的小伙伴们可以选择对于这些`response`进行封装一些方法,减少所谓的重复性代码,也可以提高我们自己的代码可阅读性和质量。

2022-12-12 16:51:02 1044

原创 Go开发中配置一个Logger日志的功能实现(结合zap日志库)

一般在开发项目的时候我们都是需要一个存储日志的文件,因为在部署项目以后,我们只能通过去筛查日志进行检索问题,这时候日志是否可以呈现清晰这个对于我们进行排查工作是十分重要的,所以Logger能否展示出我们最想要的错误展示方式是很有必要的!本章节的案例是基于gin框架和`viper`进行编写一个Logger的日志文件,日志会根据`yaml`文件定义的` mode`进行判断是否是开发环境还是线上环境进行写的。

2022-12-11 14:37:11 1051

原创 uni-app解决createInnerAudioContext()在IOS下不能静音播放的问题

在使用 创建一个播放后,真机环境测试IOS不可以在用户处于静音的情况下进行播放,安装手机则可以进行自动播放。尝试过将设置为 以及 设置为false,但是都发现不行!可以将下面代码注释写着直接copy到项目中使用。切记使用,uni-app中没有该方法。

2022-12-07 21:14:20 3394

原创 JS动态监听用户行为事件,并且添加CSS动画的实现

我们当用户输入完验证码以后会自动进行提交,这时候我们只需要判断这个长度是否达到我们的预定要求,如果达到了我们就可以进行实现跑马灯动画的切换,当然,我们可以使用一些动画库进行实现,下面我是使用原生css进行写这个动画!我们通过Jquery提供的append进行标签的动态加载,最后就可以实现了,下面是大概实现的内容。首先是引入Jquery,我是引入本地的jQuery,也可以引入CDN的方式进行加载Jquery。定义一个div,这边需要实现在按钮中进行实现,我这边通过css将它修饰成一个button。

2022-11-19 09:58:47 614

原创 Docker入门学习笔记(狂神版)

Docker入门学习,再小的帆也会远航

2022-11-18 10:18:40 6691 11

原创 golang初始化数据库(MySQL)

主要这边还需要安装两个依赖,gorm、viper,具体的可以访问他们的官网()在根目录下打开终端执行:go mod init 项目名称 (例如: go mod init demo )go get github.com/jinzhu/gorm 或 go get -u gorm.io/gorm。

2022-10-21 14:40:35 2118

原创 Windows下无法启动虚拟机: “VMware Workstation and Device/Credential Guard are not compatible“ error in VM...“

可能是本地服务有其他的虚拟服务在运行;我本地的mysql是使用Docker进行管理的,所以启动VM虚拟机的时候就会上述的错误;

2022-09-14 21:14:03 2643

原创 vite修改配置引入本地的sdk有两种方式,以Cesium的DC框架为例

Vite引入sdk的使用

2022-08-01 18:31:38 1631

原创 自己学习Cesium的笔记简介

Cesium的学习总结笔记

2022-07-20 11:46:18 407

原创 uni-app中使用computed解决了tab切换中data()值显示的异常

uni-app的computed使用

2022-06-28 19:15:23 1648

原创 用生活的栗子去理解JavaScript的Prmoise更通俗易懂

用生活的栗子去理解JavaScript的Prmoise更通俗易懂

2022-06-25 20:43:36 604

原创 uni-app+uView实现定位功能,通过组建方式渲染和传递值的实现

微信定位功能的实现

2022-04-19 11:10:06 2271

原创 uni-app 点击按钮数据已发生改变了,但是没有渲染渲染视图

数据发生改变,视图没有更新问题描述:当用户点击一个按钮button ,已经更改了状态,并且已经重新请求接口,但是视图并没有直接更改,需要用户手动刷新一遍才可以看见状态更改;代码: 这样并不能直接实现到用户点击后按钮的状态发生改变methods:{ // 获取数据 getData() { // 获取数据的Axios请求 .... }, apply(item) { ..... Axiso.get(url,data,(res) =>{ uni.showToast({

2022-04-09 00:15:00 3900

原创 Element-ui中的el-date-picker 踩坑日记

问题描述Element-Ui踩坑日记: 在使用el-date-picker组件的中出现多个日期的选择,会出现日历显示与选框不对齐;问题分析: 因为这里模态框中存在多个el-date-picker组件,在切换的时候会出现组件没有注销还在进行,因为没有唯一的表示去绑定原代码 <el-date-picker v-model="" type="daterange"

2022-04-08 16:55:02 2848

原创 uni-app计算入学(职)时间要比离职时间晚

Uni-app 入职时间比离职时间要晚**业务需求:**通过使用picker 进行获取入职时间和离职时间(如: 入:2022-4-1;离:2021-3-1 )不可以提交表单 点击此处查看Picker的使用文档通过@change去改变该事件,也就是说我们需要定义一个方法进行获取,然后再定一个计算方法进行比较即可实现!我们需要先在data中定义startTime,endTime; 然后再定义两个方法,一个是入学时间函数changeStartTime,毕业时间函数changeEndTime;其次就是

2022-04-02 17:16:31 664

原创 Duplicated key ‘xxxxxx‘

Vue使用Vuex出错记录解决办法注释data属性里面的 这个值,比如我的(‘isCollapse’);在computed属性中添加一个状态管理器即可(使用的是Vuex) isCollapse() { return this.$store.state.tab.isCollapse; }

2022-03-13 16:59:26 2384

原创 node.js的(express)连接数据库版本8出现连接失败的解决办法,亲测有效

关于express连接MySQL8.0 出现异常错误展示:解决的办法亲测有效:1、 进入mysql安装路径,进入到bin文件,通过cmd控制命令面板进入2、 输入: mysql -hlocalhost -uroot -p 回车;3、 输入自己的密码4、 再执行这段命令: alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘你的mysql密码’;5、 最后该命令:flush privileges;

2022-02-27 21:48:16 1600

原创 不使用Element UI库借助jQuery的库也可以实现‘搜索下拉框’的功能噢

搜索下拉框介绍以优快云下拉菜单反馈性关键词是用户在搜索时与搜索引擎的第一步互动,在互动过程中,搜索引擎的反馈关键词不断调整来满足用户的个性需求!下面也可以通过jQuery的库进行实现,后台仅需要提供一个查询的接口给我们前端即可完成,前端也不需要自己再重写令人烦心的样式。如果后台返回的数据没有分页或者固定多少条,我们需要拿到数据后截取10条-15条进行展示!使用背景在一个移动端项目需要做一个搜索下拉框的功能,该技术选型是jQuery,而并非Vue,这样有些Vue封装好的第三方库就无法实现了,我这边找

2022-02-17 18:53:48 736

原创 一文助你快速了解JavaScript的防抖和节流的使用和作用

什么是防抖和节流首先为什么会有这个防抖和节流呢?由于我们页面的用户交互都是JavaScript进行写的,那麽当用户在体验我们的页面时候就会出现一个现象,可能有些用户还没有使用的功能,这时候函数应该不需要执行。如果一些暂不需要执行的函数却一直在执行就会,就会出现浪费浏览器的CPU资源,造成页面卡顿等现象!这时候就需要对用户操作进行判断,对所需的功能进行针对性开放。函数节流是指一定时间内js方法只跑一次。比如时钟里面的分针一样,只有秒针走完一圈它才会动一下。我们可以这样去理解这个 节流。函数防抖是指频

2022-02-15 22:14:38 500

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除