自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第二章 进程管理

第二章 进程管理

2025-06-04 21:33:43 447

原创 第一章 操作系统概述

第一章 操作系统概述

2025-05-28 09:18:45 562

原创 团队协作 git 必知必会

git

2025-05-27 12:56:48 988

原创 项目部署react经历

宝塔部署react项目

2025-05-27 10:42:55 225

原创 支付宝沙箱测试环境

支付宝沙箱测试环境

2025-05-24 08:26:49 739

原创 CAP分布式理论

CAP分布式理论

2025-05-20 16:50:43 983

原创 interface接口和defer场景分析

interface和defer用法

2025-05-19 22:54:49 301

原创 有关Groutine无限创建的分析

有关Groutine无限创建的分析

2025-05-19 22:03:09 743

原创 Go内存管理

Go内存管理

2025-05-19 15:50:08 1200

原创 GC全场景分析

GC全场景分析

2025-05-18 21:29:19 915

原创 go语言协程调度器 GPM 模型

gpm模型梳理

2025-05-18 20:19:20 1149

原创 基于redis的定时状态更新

下面是一个简单的示例,展示如何使用redis实现状态更新,从而满足在某些场景下,既需要频繁更新状态,又需要保证状态的实时性。以及定时更新状态的需求。

2025-05-08 16:47:29 382

原创 go基于redis+jwt进行用户认证和权限控制

基于 jwt 实现用户认证基于 redis 记录用户的角色和权限。

2025-05-07 22:23:36 322

原创 迪杰斯特拉算法总结

首先,学过数据结构的人都知道,迪杰斯特拉算法是用于计算“单源最短路径问题的”。单源最短路径就是从某一点出发,到任意点的距离。

2024-12-24 14:23:27 1027

原创 基于base64Captcha实现验证码功能

我们可能最初会想到使用redis数据库进行缓存,但是一般的使用场景中,我们其实只需要一个短暂的答案就可以了,所以并不需要,当然也可以。追问:在验证码进行验证的时候,我只是获取了用户的输入,就直接调用Verify方法进行验证了。那么之前生成的验证码的答案在哪里?答案:其实该库自己维护一个全局变量,当使用库时,就已经进行了初始化。MemoryStore用来短暂的存储当前生成的验证码。前端验证代码:(比较简陋,我直接把登录和注册放到一起,可以直接尝试)下面的代码中只有数字、字母、数字+字母的形式。

2024-12-18 22:10:24 557

原创 grpc补充机制

gRPC 进阶——Validator 验证器_protoc-gen-validate-CSDN博客。

2024-12-18 21:06:51 449

原创 gRPC拦截器

做过web开发的都知道拦截器,拦截器就是一个做事先或事后处理的一个机制,使得琐碎的其他业务得到自动化式的进行。在服务端和客户端,他们的拦截器的使用目的不同。客户端:我们可能会在请求发送之前,对请求的内容做进一步的补充,比如:添加认证信息(如 JWT 令牌)到请求头中,这样服务端在接收到请求后,就可以根据请求头中的认证信息来验证客户端的身份,从而实现安全的服务访问。日志记录、服务发现等服务端:拦截请求,对请求的数据校验?认证信息身份校验等等。

2024-12-17 21:44:29 393

原创 认识GO--gRPC的metadata

元数据。他就是我们的对数据进行封装的一个单位化数据。在某些理解上,他是一个。他们是一个整体。这么说有点抽象,举例说明吧:目前我们有一个请求,请求的数据是:用户名+密码。这就是我们常说的”数据“。那么请求的方法是什么?编码是什么?token呢?cookie呢?他们提供了有关其他数据的信息,用于描述数据的特征、来源、用途、关系等诸多方面。因此,我们将他们也封装到一起,打包成我们的metadata,一起发送,一起接收......那么在go语言中,metadata又是什么?

2024-12-16 22:25:23 1169

原创 protobuf进阶

我们这里提供了代码,以及代码中的注释来理解所有进阶知识点。下面将模拟远程调用:此时,我有两个项目:1. protobuf 2.protobuf_client。

2024-12-16 19:04:45 491

原创 初识RPC

RPC(Remote Procedure Call)即,是一种计算机通信协议。它允许一台计算机(客户端)上的程序调用另一台计算机(服务器)上的子程序或函数,就好像这个调用是本地的一样,而实际上涉及到网络通信来跨越不同的地址空间。与之对应的就是本地调用,最常见的就是 函数调用。然而,远程过程调用时会面临很多问题:(原本的本地函数放到另一个服务器上去运行。但是引入很多新问题)1. Call的id映射2. 序列化和反序列化3. 网络传输1. 将这个调用映射为 Call ID。

2024-12-10 14:39:22 805

原创 GO并发编程

无缓冲channel:本质是一种同步通道,他要求读写操作紧密进行。所以,在单channel下,如果在无缓冲channel中进行读写,此时就会在第一次操作处阻塞,发生死锁。

2024-12-09 19:10:21 1390 1

原创 GO--基于令牌桶和漏桶的限流策略

漏桶,顾名思义就是一个漏斗,漏斗嘴的大小是固定的,所以不管漏斗现容量多大,都不会影响漏斗出水的速度。类比到我们的web服务中,我们可以为web服务准备一个固定速率的请求处理器(漏桶),对我们的请求,如果此时桶内请求量超过了桶的最大容量,那么就执行特定的抛弃策略(直接丢弃或者阻塞请求)。与此同时,对我们的请求 ,进行固定速率的处理。这样就会形成一种限流的效果。令牌桶的原理其实和漏桶差不多,漏桶相当于在单位时间(比如1秒内处理多少个请求)。那么令牌桶就是表现的间接了点。

2024-12-06 18:31:48 1165

原创 使用GO--Swagger生成文档

在前后端分离的项目中,后端配置swagger可以很好的帮助前端人员了解后端接口参数和数据传输。 是一个功能全面且高性能的Go语言实现工具包,用于处理Swagger 2.0(即OpenAPI 2.0)规范。它提供了丰富的工具集,帮助开发者在Go环境中解析、生成、验证和操作API描述文件。(OpenAPI 2.0 :用于生成、描述、调用和可视化RESTful Web服务。它允许你使用YAML或JSON格式定义API接口,包括路径、参数、请求方法、响应类型等信息。)定制化支持: 具备强大的自定义能力,通过供应商扩

2024-12-06 15:33:09 1420

原创 图的创建和基础操作(数据结构实验作业)

上面是我的实验作业要求:(看不到的同学,移步:https://gitee.com/young-lion/picture-bed/raw/master/202412051939715.png)下面的代码使用的是go语言:上面代码的最后,我结合邻接矩阵和邻接表的特点,对图的操作做了一个简单的方法总结,如果对你有用,请点个赞?收个藏?或者加个关注?

2024-12-05 19:45:37 267

原创 jwt身份验证三方库

复习:jwt是一个三方库,提供了一系列方法(JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token 实现方式,目前多用于前后端分离项目和 OAuth2.0 业务场景下。用于生成token,解析token,加密token,解密token,生成token的payload,生成token的header,生成token的signature,生成token,验证token等。

2024-12-04 02:19:24 592

原创 雪花算法生成ID

雪花算法的组成:雪花算法是由64位组成:符号位(1)、时间戳(41)、机器码(5[数据中心]+5[机器ID])、计数器(12)下面将简单介绍雪花算法的简单应用和在web应用中的使用。

2024-12-01 19:06:43 752

原创 密码加密策略

其中,由于MD5安全性较低,所以我们可以将第一次生成的密码,加入到MD5的hash计算中,再次计算出MD5的哈希校验和(Sum),将sum格式化输出(%x)就是我们的密码字符串(二次加密)其中,md5相对不安全(但是也够用了)。bcrypt是专门为密码加密设计的算法。MD5和bcrypt。

2024-12-01 18:09:14 247

原创 viper——管理配置文件

是适用于Go应用程序的完整配置解决方案。设置默认值从JSONTOMLYAMLHCLenvfile和格式的配置文件读取配置信息实时监控和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd或Consul)读取并监控配置变化从命令行参数读取配置从buffer读取配置显式配置值。

2024-11-24 20:47:19 894

原创 validate简单入门

场景:我们写代码发现:有好多验证字段的验证规则相同,虽然可以直接CV,但是还是不够优雅,这时我们可以利用起别名的方法提高代码复用性比如:// 注册别名​Username string `json:"username" validate:"required,min=4,max=20"` // 必填字段,限制长度Password string `json:"password" validate:"required"` // 必填字段。

2024-11-17 19:29:35 1248

原创 GO语言编程之旅

所以,当您在defer语句中使用参数时,重要的是要记住这些参数是在defer语句执行时立即求值的,而不是在defer函数实际调用时。这意味着在defer语句之后的任何对参数的修改都不会影响defer函数中的参数值。切片的长度是它包含的元素个数。切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。你可以通过len(s)获取切片的长度,通过cap(s)获取切片的容量。你可以通过重新切片来扩展一个切片的长度,只要不超过它的容量。切片的长度是它包含的元素个数。

2024-10-20 20:46:00 1004

原创 苍穹外卖随记(二)

这样,在请求到达 Controller 层之前,就可以先检查缓存,如果缓存命中,则直接返回缓存数据,不再调用后续的 Service 层和 Repository/DAO 层。情景:由于大量人员参与点餐,那么每一次查看商品(查看分类、查看菜品等),都会对应和数据库进行一次io,那么这样就会使得mysql数据库的负载增大,查询效率降低,数据显示的速度慢,也就是导致系统响应慢,客户的使用体验较差。不然压根就没有数据!在分类菜品的情况下,可以使用分类的ID或者名称作为Key的一部分,以确保它能够准确反映缓存的内容。

2024-09-17 21:26:13 1158

原创 苍穹外卖随记(一)

13.在项目中有管理端和客户端和服务端,那么服务端是后端,管理端和客户端是前端,那么在设计接口时有这样的:/api/admin/applications,那么后端怎么根据这个接口开始开发呢?后端开发不仅仅是关于API端点的开发,它还包括了整个Web应用的后端逻辑,确保应用的稳定性、安全性和可用性。实际上,即使是非API端点,后端通常也需要进行一定的开发工作,因为这些端点可能涉及到服务器端的逻辑处理、数据库交互、用户认证、数据检索等。因此,即使是非API端点,后端开发也是不可或缺的一部分。

2024-09-08 22:19:04 1544

原创 --考核总结--

以下的示例是 hashmap在三个线程的并发下进行添加操作结论:通过多次运行得到结果,发现hashmap是线程不安全的。如何解决?第一:直接对hashmap的操作方法进行上锁。第二:可以使用map中的ConCurrentMap,它是支持并发操作的。下面是对hashmap上锁的两种方法:1.直接使用synchronized对hashmap的各个操作修饰;2.Collections.synchronizedMap(map参数)返回一个线程安全的hashmap。

2024-08-11 15:45:13 873

原创 --每周分享--

用10个bit(比特)位来技术工作机器的ID,用来保证多个服务器上生成ID的唯一性。如果存在跨机房部署的情况,还可以把这10个比特位拆分为两组,每组5个bit(比特)位。前面的5个bit(比特)表示机房ID,后面5个bit(比特)表示机器ID。10个比特位最大值是2的10次方,也就是最多1024台机器。它的最大值为2的12次方减1,也就是4096。根据这四个部分的组成规则,生成对应Bit位的数据,然后组装到一起生成一个全局唯一ID。场景中的全局ID作为业务主键,或者生成全局唯一的订单号。

2024-08-01 15:36:52 352

原创 认识VO、DTO、Entity

其实对于vo和dto,可以简单的理解为:前端请求,后端dto接收经处理返还前端,前端根据产品和场景需要,对dto数据进行转换为vo数据并将数据渲染展示给页面。至于为什么没有非常肯定的说,dto负责接收数据,vo返还数据。这是因为业务具有灵活性。我们刚才说到了dto向vo的转换,那么怎么转换?统一视图模型:后端可以定义VO层来统一不同前端应用或不同视图所需的数据格式,简化前端的处理逻辑。中间件处理:后端可以使用VO层来实现一些中间件逻辑,比如数据的过滤、格式化或添加额外的元数据。测试和模拟。

2024-08-01 14:31:43 1614

原创 SpringMVC学习

接收参数1.路径设置@RequestMapping(value="地址",method="请求方式") 类|方法@GetMapping /@PostMapping 方法2.接收参数【重点】param(参数)举例:http://localhost:8080/ssm?直接接收 handler(类型 形参名)形参名 = 请求参数名eg: 前端请求: http://localhost:8080/param/value?

2024-08-01 13:09:27 889

原创 Mybatis学习

MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。insert– 映射插入语句。update– 映射更新语句。delete– 映射删除语句。select– 映射查询语句。MyBatis 在查询和结果映射做了相当多的改进。

2024-07-30 17:31:29 1025

原创 @SpingFrameWork

简单的说就是各种java程序,控制层程序:Servlet、业务层程序:Service、持久化层程序:Dao整个项目就是由各种组件搭建而成的SpringIOC容器其实就是Spring容器的核心之一,负责存储、实例化、配置、组装组件(IOC:中文是控制反转的意思)实例化这些(类)组件,本来是我们程序员的事情,new对象、赋值等等;但是现在权力交给了IOC容器;怎么实例化:容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。

2024-07-26 13:40:57 480

原创 javaweb后端学习--Maven

Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。maven是Apache的顶级项目,解释为“专家,内行”,它是一个项目管理的工具,maven自身是纯java开发的,可以使用maven对java项目进行构建、依赖管理。

2024-07-25 13:46:12 642

原创 javaWeb学习--后端部分(一)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。HTTP 超文本传输协议。

2024-07-19 13:44:35 1333

空空如也

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

TA关注的人

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