自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用火焰图对Go项目进行性能分析

在 Golang 开发中,性能分析是确保应用高效运行的重要环节。这里介绍一下如何使用 gin-contrib/pprof 在 Gin 应用中集成性能剖析工具,并结合 Graphviz 生成图形化的性能分析结果,以便帮助开发者更好地理解和优化 Go 应用的性能。

2024-12-13 17:45:08 840

原创 python学习笔记

用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的字符串就是这样拼起来的;注意,对于100 + 200,Python解释器自动计算出结果300,但是,'100 + 200 ='是字符串而非数学公式,Python把它视为字符串。

2024-12-06 18:32:28 850

原创 使用SQL按每小时统计数据的方法

在数据分析和报表生成中,按小时统计数据是一个常见的需求。无论是监控系统的运行状态,还是分析用户行为模式,小时级别的数据统计都能提供细致且有价值的信息。

2024-11-27 20:11:28 1716

原创 如何使用Casbin设计后台权限管理系统

权限模型是指用于描述用户、角色和权限之间关系的一种抽象模型。不同的权限模型有不同的优缺点,适用于不同的场景和需求。在这里我们主要介绍RBAC(Role-Based Access Control)模型,即基于角色的访问控制模型。RBAC 模型的基本思想是将用户和权限分离,通过角色作为中间层来连接用户和权限。一个角色可以关联多个权限,一个用户可以拥有多个角色。这样可以实现灵活的权限配置和管理,避免直接给用户分配权限带来的复杂性和冗余性。

2024-11-16 11:15:27 845

原创 如何编写和运行go语言单元测试?

单元测试可以帮助开发者及时发现代码中的错误,提高代码质量,当代码库变更时,单元测试可以快速发现新引入的回归错误;在 Go 语言中,单元测试是确保代码质量和稳定性的重要工具。Go 提供了一个强大的 testing 包,使得编写和运行测试变得高效而简便。

2024-11-09 14:27:59 453

原创 Casbin创建RBAC模型

S = 主体 = 人或自动代理R = 角色 = 定义权限级别的工作职能或头衔P = 权限 = 对资源访问模式的批准SE = 会话 = 涉及 S、R 和/或 P 的映射SA = 科目分配PA = 权限分配RH = 部分排序的角色层次结构。RH 也可以写成: ≥ (记法:x ≥ y 表示x 继承了y 的权限。一个主题可以有多个角色。一个角色可以有多个主题。一个角色可以有多个权限。一个权限可以分配给多个角色。一个操作可以分配多个权限。一个权限可以分配给许多操作。

2024-10-26 10:54:12 433

原创 Casbin是什么?

Casbin是一个开源的访问控制框架,它支持多种访问控制模型,如ACL(访问控制列表)、RBAC(基于角色的访问控制)、ABAC(基于属性的访问控制)等。Casbin的设计目标是提供一个灵活、高效、易于使用的权限管理解决方案,适用于各种规模的项目。

2024-10-23 16:14:15 954

原创 GO--结构体标签

GORM标签 JSON标签 如何使用GORM将两个表进行关联

2024-10-12 14:51:35 1293

原创 Docker概述

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。不是模拟的一个完整的操作系统,每一个项目可以和自己的运行环境打包形成一个镜像,每个容器之间互相隔离,互不影响。所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导性的操作。虚拟机是加载Guest OS,而docker是利用宿主机的操作系统,省略了这个复杂的过程。通过镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。查看一下下载的这个 hello-world镜像。

2024-09-13 23:11:56 1596 4

原创 MySQL分页查询--LIMIT、OFFSET

MySQL分页查询如何实现?LIMIT\OFFSET如何使用?使用LIMIT\OFFSET会出现哪些问题?深分页问题如何解决?

2024-08-24 14:11:57 2408

原创 Go--GMP调度模型

Go中的GMP是怎么调度的?调度时机?goroutine什么时候会被挂起?同时启动了一万个goroutine,会如何调度?

2024-08-13 21:55:40 1110 4

原创 TCP和UDP协议

在 TCP 或者 UDP 发送具体的报文信息前,需要先经过一扇 门,这个门就是套接字(socket),套接字向上连接着应用层,向下连接着网络层。在操作系统中,操作系统分别为应用和硬件提供了接口(Application Programming Interface)。而在计算机网络中,套接字同样是一种接口,它也是有接口 API 的。使用 TCP 或 UDP 通信时,会广泛用到套接字的 API,使用这套 API 设置 IP 地址、端口号,实现数据的发送和接收。

2024-08-10 21:57:55 979

原创 GORM更新操作(Save、Update、Updates)

GORM的更新操作,GORM错误捕捉、处理,Update,Updates,Save

2024-08-03 22:01:35 2134

原创 Go--垃圾回收算法(GC)

所谓垃圾,就是不再需要的内存块;这些垃圾如果不清理就没有办法再次被分配使用,所以需要进行垃圾回收。

2024-07-27 20:04:53 722

原创 murmurhash3算法的go语言实现

go语言实现murmurhash3算法

2024-07-20 16:49:11 1007

原创 二叉树超详细解析

二叉树的创建,遍历方法,前序遍历,中序遍历,后序遍历的方法

2024-07-09 21:22:14 1307

原创 超详细版阿里云控制台环境配置+数据库配置

登录阿里云控制台,找到实例,切到阿里云服务器所在地址🍭不知道自己的服务器地址在哪边也没有关系,随便选择一个,查询不到记录的话会有以下提示,可以根据提示进行切换(适用于账号中只有一个服务器的情况)🍭。

2024-07-08 22:11:42 2102

原创 阿里云服务器开放端口配置安全组

选择手动添加安全组,如下图,填写相应的信息然后点击保存即可。二、找到网络与安全下的安全组,点击管理规则(如下图)配置完之后直接就能生效,无需再重启服务器。一、登录到阿里云服务器控制台。

2024-07-08 16:51:35 790

原创 ‘xxxx‘ is a program, not an importable package

程序出现报错:‘xxxx’ is a program, not an importable package:“xxxx”是一个程序,而不是一个可导入的包。当程序出现这种报错提示的时候,首先第一点要做的就是需要使用到的某个方法/函数/结构体等所在的.go文件上面的package是不是与导入路径中的包名一致。好蠢的问题,真的是被自己给蠢笑了…

2024-06-20 18:29:45 418

原创 通过身份证号码计算年龄

在一些需要精确统计用户年龄的场景中。

2024-06-13 20:12:46 958

原创 go--defer

一个 goroutine 可能连续调用多个函数,defer 的添加过程跟上述流程一致,进入函数时添加 defer ,离开函数时取出 defer ,所以即便调用多个函数,也总是能保证 defer 是按 LIFO 方式执行的。定义 defer 的函数(下称主函数)可能有返回值,返回值可能有名字(具名返回值),也可能没有返回值(匿名返回值),延迟函数可能会影响返回值。对于指针类型参数,此规则依然适用,只不过延迟函数的参数是一个地址值,在这种情况下,defer 后面的语句对变量的修改可能会影响延迟函数。

2024-06-02 14:59:21 554

原创 MySQL事务

本篇来大致总结一下关于MySQL的事务的相关知识点(基于InnoDB)

2024-05-26 11:35:32 244

原创 微信小程序一键获取用户手机号码进行登录认证

需要传入的参数有:appid,secret和grant_type,appid和secret可以由小程序管理者查看,grant_type是固定值client_credential。接下来就是和上面一样的操作了,将参数包进map中,发送post请求获取返回值,对返回值进行解析就能得到我们想要的结果啦。这里我们可以创建一个map将需要传入的参数包进去,然后发送一个Post请求,通过解析就能获取到access_code。我们需要先获取一下access_token,至于code,就交给前端的同学来获取。

2024-05-19 11:48:57 3089

原创 一篇超详细的go语言中的Slice(切片)讲解~

超级详细的slice讲解,附带图片,实例解析以及常见问题分析

2024-04-24 21:14:07 3387 2

原创 性能分析与限流策略

限流又称为流量控制(流控),通常是指限制到达系统的并发请求数。我们生活中也会经常遇到限流的场景,比如:某景区限制每日进入景区的游客数量为8万人;沙河地铁站早高峰通过站外排队逐一放行的方式限制同一时间进入车站的旅客数量等。限流虽然会影响部分用户的使用体验,但是却能在一定程度上报障系统的稳定性,不至于崩溃(大家都没了用户体验)。而互联网上类似需要限流的业务场景也有很多,比如电商系统的秒杀、微博上突发热点新闻、双十一购物节、12306抢票等等。

2024-04-14 09:13:57 959

原创 事务隔离级别的无锁实现方式 -- MVCC

即多版本并发控制,是一种并发控制的方法,一般在数据库管理系统中实现对数据库的并发访问,在编程语言中实现事务内存。不加锁的select就是快照读,即不加锁的非阻塞读。(快照读的前提是非serializable隔离级别,在该隔离级别下,快照读会退化为当前读),之所以出现快照读,是基于高并发性能的考虑,快照读的实现是基于MVCC的,可以认为MVCC是行锁的变种,但是他在很多情况下避免了加锁操作,降低了开销。因为多版本的原因,导致快照读可能读取到的不一定是数据的最新版本,而有可能是历史版本。

2024-04-14 09:11:18 1151

原创 如何保证Redis的缓存和数据库中的数据的一致性?

什么情况下会出现数据不一致的情况?如何解决数据不一致?我们所说的“双删”是什么?

2024-04-03 16:55:56 1510

原创 MySQL进阶之:索引

​ 官方定义:索引是帮助MySQL高校获取数据的排好序的数据结构;索引的定义就是帮助存储引擎快速获取数据的一种数据结构,形象的说就是。

2024-03-29 15:12:58 669

原创 归并算法详细解析

​ 归并排序与选择排序一样,性能不受输入数据的影响,但时间复杂度远小于选择排序。但由于归并排序需要另外一个与原数组长度相同的数组来做辅助排序,需要占用额外的空间,空间复杂度为O(n);

2024-03-20 10:16:40 1180 1

原创 超详细解析:在执行一条SQL语句期间发生了什么?

我们学习MySQL时,首先第一个接触到的就是SQL语句了,那么在我们运行一条SQL语句时,在MySQL中究竟发生了什么?MySQL是如何在那么多数据中准确的找出我们要操作的那一条语句并且执行我们需要做的操作的?为了解开这个疑问,我们就从MySQL的内部“零件”开始看起吧~看了这么多了,那我们来总结一下,在执行一条SQL语句期间发生了什么?连接器:建立连接,校验用户身份;

2024-03-16 09:44:59 1115

原创 使用swagger生成接口文档

Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起使用,以设计、构建、记录和使用RESTful Web服务。Swagger包括自动文档,代码生成和测试用例生成。在前后端分离的项目开发过程中,如果后端同学能够提供一份清晰明了的接口文档,那么就能极大地提高大家的沟通效率和开发效率。可是编写接口文档历来都是令人头痛的,而且后续接口文档的维护也十分耗费精力。

2024-03-10 10:42:54 1422

原创 Redis详解

Redis,英文全称是(远程字典服务),是一个开源的基于内存的数据存储系统,可以用作数据库缓存和消息队列等各种场景。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。

2024-02-29 16:30:26 915

原创 Gin框架实时重新加载工具:Air

找到安装的air目录,(我的目录是D:\My Folders\GOland\code\pkg\mod\github.com\cosmtrek\air@v1.49.0)创建一个名叫.air.conf的文件,将以下代码粘贴进去,可根据需求进行修改。cmd运行打开命令窗口,运行 go build .[这里有个点不要漏掉了]右键点击”此电脑“–>属性–>高级系统设置–>环境变量。点击新建,将上面的路径填写进去,然后点击确定。接下来在Go项目中配置air.conf文件。在项目根目录下打开cmd,执行air命令。

2024-02-20 17:22:38 557

原创 分布式ID生成--snowflake算法

53位存储的话,32位存储秒级时间戳,5位存储机器码,16位存储序列化,这样每台机器每秒可以生产65536个不重复的id。不仅仅是用于用户ID,实际上互联网中有很多场景需要能够生成类似MySQL自增ID这样不断增大,同时又不会重复的id,以支持业务中的高并发场景,例如在消息队列系统中,为每一个消息生成全局的唯一ID等。2.时间戳 占用41bit,单位为毫秒,总共可以容纳约69年的时间。3.工作机器id 占用10bit,其中高位5bit是数据中心ID,低位5bit是工作节点ID,最多可以容纳1024个节点。

2024-02-16 10:23:04 1087

原创 Go语言常见数据库操作

客户端对SQL语句进行占位符替换得到完整的SQL语句。客户端发送完整SQL语句到MySQL服务端MySQL服务端执行完整的SQL语句并将结果返回给客户端。把SQL语句分成两部分,命令部分与数据部分。先把命令部分发送给MySQL服务端,MySQL服务端进行SQL预处理。然后把数据部分发送给MySQL服务端,MySQL服务端对SQL语句进行占位符替换。MySQL服务端执行完整的SQL语句并将结果返回给客户端。

2024-02-14 23:44:26 1203 1

原创 Gin框架路由详解

gin框架使用的是定制版的httprouter,其路由的原理是大量使用公共前缀的树结构,它基本上是一个紧凑的Trie tree(或者只是Radix Tree)。具有公共前缀的节点也共享一个公共父节点。

2024-02-06 00:35:25 1264 1

原创 一篇文章搞懂:什么是Cookie和Session

​ Cookie 是一种在客户端存储数据的技术,它是由服务器发送给客户端的小型文本文件,存储在客户端的浏览器中,大小限制大致在 4KB 左右。在客户端发送请求时,浏览器会自动将相应的 Cookie 信息发送给服务器,服务器通过读取 Cookie 信息,就可以判断该请求来自哪个客户端。Cookie 可以用于存储用户的登录状态、购物车信息等。​ Session是在服务器端维护的一种信息存储机制,用于存储特定用户会话期间的数据。通常,服务器会为每个用户创建一个唯一的Session标识符,用于跟踪用户的状态。

2024-01-29 11:17:00 2002

原创 GoWeb管理系统--书城

如上图所示,主界面可以查看到数据库中所有的图书信息,以分页的形式呈现。

2024-01-26 18:43:26 355 3

原创 网络体系结构

计算机网络体系结构分为三种:OSI体系结构(七层),TCP/IP体系结构(四层),五层体系结构。OSI体系结构: 概念清楚,理论也比较完整,但是它既复杂又不实用。–>20世纪90年代初期TCP/IP体系结构:TCP/IP是一个四层体系结构,得到了广泛的运用。–>1983年开始使用五层体系结构:为了方便学习,折中OSI体系结构和TCP/IP体系结构,综合二者的优点,这样既简洁,又能将概念讲清楚。和。

2023-12-10 10:52:40 2128 1

原创 哈希表--唯一元素的和

力扣1748:给定一个整数数组。数组中唯一元素是那些只出现恰好一次的元素。请你返回nums中唯一元素的和。

2023-11-21 20:24:37 111 1

动物园管理系统MySQL

MySQL+JavaFX制作的一个动物园管理系统

2023-02-16

关于Todolist效果的一个演示视频

关于Todolist效果的一个演示视频

2022-12-26

空空如也

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

TA关注的人

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