- 博客(106)
- 收藏
- 关注
原创 第五章 设备管理
信息交换的单位分类:块设备(传输速率较高、可寻址对他可随机读写任一块)如:磁盘等——数据传输的基本单位是“块”、字符设备(传输速率较慢、不可寻址、在输入/输出时常采用中断驱动方式)——数据传输的基本单位是字符。使用特性分类:人机交互型(鼠标等外设)、存储设备(移动硬盘等)、网络通信设备(光猫等)传输速率分类:低速、中速、高速。概念:向外部输入和输出的设备。
2026-01-02 13:04:41
125
原创 HTTPS测试和基础认证方式
虽然使用摘要可以避免密码以明文方式发送,一定程度上保护了密码的安全性,但是仅仅隐藏密码并不能保证请求是安全的。因为请求(包括密码摘要)仍然可以被截获,这样就可以重放给服务器,带来安全问题。为了防止重放攻击,服务器向客户端发送了密码随机数 nonce,nonce 每次请求都会变化。客户端会根据 nonce 生成密码摘要,这种方式,可以使摘要随着随机数的变化而变化。服务端收到的密码摘要只对特定的随机数有效,而没有密码的话,攻击者就无法计算出正确的摘要,这样我们就可以防止重放攻击。
2025-07-21 00:51:03
1169
原创 基于redis的定时状态更新
下面是一个简单的示例,展示如何使用redis实现状态更新,从而满足在某些场景下,既需要频繁更新状态,又需要保证状态的实时性。以及定时更新状态的需求。
2025-05-08 16:47:29
497
原创 迪杰斯特拉算法总结
首先,学过数据结构的人都知道,迪杰斯特拉算法是用于计算“单源最短路径问题的”。单源最短路径就是从某一点出发,到任意点的距离。
2024-12-24 14:23:27
1065
原创 基于base64Captcha实现验证码功能
我们可能最初会想到使用redis数据库进行缓存,但是一般的使用场景中,我们其实只需要一个短暂的答案就可以了,所以并不需要,当然也可以。追问:在验证码进行验证的时候,我只是获取了用户的输入,就直接调用Verify方法进行验证了。那么之前生成的验证码的答案在哪里?答案:其实该库自己维护一个全局变量,当使用库时,就已经进行了初始化。MemoryStore用来短暂的存储当前生成的验证码。前端验证代码:(比较简陋,我直接把登录和注册放到一起,可以直接尝试)下面的代码中只有数字、字母、数字+字母的形式。
2024-12-18 22:10:24
699
原创 gRPC拦截器
做过web开发的都知道拦截器,拦截器就是一个做事先或事后处理的一个机制,使得琐碎的其他业务得到自动化式的进行。在服务端和客户端,他们的拦截器的使用目的不同。客户端:我们可能会在请求发送之前,对请求的内容做进一步的补充,比如:添加认证信息(如 JWT 令牌)到请求头中,这样服务端在接收到请求后,就可以根据请求头中的认证信息来验证客户端的身份,从而实现安全的服务访问。日志记录、服务发现等服务端:拦截请求,对请求的数据校验?认证信息身份校验等等。
2024-12-17 21:44:29
462
原创 认识GO--gRPC的metadata
元数据。他就是我们的对数据进行封装的一个单位化数据。在某些理解上,他是一个。他们是一个整体。这么说有点抽象,举例说明吧:目前我们有一个请求,请求的数据是:用户名+密码。这就是我们常说的”数据“。那么请求的方法是什么?编码是什么?token呢?cookie呢?他们提供了有关其他数据的信息,用于描述数据的特征、来源、用途、关系等诸多方面。因此,我们将他们也封装到一起,打包成我们的metadata,一起发送,一起接收......那么在go语言中,metadata又是什么?
2024-12-16 22:25:23
1322
原创 protobuf进阶
我们这里提供了代码,以及代码中的注释来理解所有进阶知识点。下面将模拟远程调用:此时,我有两个项目:1. protobuf 2.protobuf_client。
2024-12-16 19:04:45
540
原创 初识RPC
RPC(Remote Procedure Call)即,是一种计算机通信协议。它允许一台计算机(客户端)上的程序调用另一台计算机(服务器)上的子程序或函数,就好像这个调用是本地的一样,而实际上涉及到网络通信来跨越不同的地址空间。与之对应的就是本地调用,最常见的就是 函数调用。然而,远程过程调用时会面临很多问题:(原本的本地函数放到另一个服务器上去运行。但是引入很多新问题)1. Call的id映射2. 序列化和反序列化3. 网络传输1. 将这个调用映射为 Call ID。
2024-12-10 14:39:22
849
原创 GO并发编程
无缓冲channel:本质是一种同步通道,他要求读写操作紧密进行。所以,在单channel下,如果在无缓冲channel中进行读写,此时就会在第一次操作处阻塞,发生死锁。
2024-12-09 19:10:21
1553
1
原创 GO--基于令牌桶和漏桶的限流策略
漏桶,顾名思义就是一个漏斗,漏斗嘴的大小是固定的,所以不管漏斗现容量多大,都不会影响漏斗出水的速度。类比到我们的web服务中,我们可以为web服务准备一个固定速率的请求处理器(漏桶),对我们的请求,如果此时桶内请求量超过了桶的最大容量,那么就执行特定的抛弃策略(直接丢弃或者阻塞请求)。与此同时,对我们的请求 ,进行固定速率的处理。这样就会形成一种限流的效果。令牌桶的原理其实和漏桶差不多,漏桶相当于在单位时间(比如1秒内处理多少个请求)。那么令牌桶就是表现的间接了点。
2024-12-06 18:31:48
1310
原创 使用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
1735
原创 图的创建和基础操作(数据结构实验作业)
上面是我的实验作业要求:(看不到的同学,移步:https://gitee.com/young-lion/picture-bed/raw/master/202412051939715.png)下面的代码使用的是go语言:上面代码的最后,我结合邻接矩阵和邻接表的特点,对图的操作做了一个简单的方法总结,如果对你有用,请点个赞?收个藏?或者加个关注?
2024-12-05 19:45:37
329
原创 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
643
原创 雪花算法生成ID
雪花算法的组成:雪花算法是由64位组成:符号位(1)、时间戳(41)、机器码(5[数据中心]+5[机器ID])、计数器(12)下面将简单介绍雪花算法的简单应用和在web应用中的使用。
2024-12-01 19:06:43
944
原创 密码加密策略
其中,由于MD5安全性较低,所以我们可以将第一次生成的密码,加入到MD5的hash计算中,再次计算出MD5的哈希校验和(Sum),将sum格式化输出(%x)就是我们的密码字符串(二次加密)其中,md5相对不安全(但是也够用了)。bcrypt是专门为密码加密设计的算法。MD5和bcrypt。
2024-12-01 18:09:14
320
原创 viper——管理配置文件
是适用于Go应用程序的完整配置解决方案。设置默认值从JSONTOMLYAMLHCLenvfile和格式的配置文件读取配置信息实时监控和重新读取配置文件(可选)从环境变量中读取从远程配置系统(etcd或Consul)读取并监控配置变化从命令行参数读取配置从buffer读取配置显式配置值。
2024-11-24 20:47:19
997
原创 validate简单入门
场景:我们写代码发现:有好多验证字段的验证规则相同,虽然可以直接CV,但是还是不够优雅,这时我们可以利用起别名的方法提高代码复用性比如:// 注册别名Username string `json:"username" validate:"required,min=4,max=20"` // 必填字段,限制长度Password string `json:"password" validate:"required"` // 必填字段。
2024-11-17 19:29:35
1421
原创 GO语言编程之旅
所以,当您在defer语句中使用参数时,重要的是要记住这些参数是在defer语句执行时立即求值的,而不是在defer函数实际调用时。这意味着在defer语句之后的任何对参数的修改都不会影响defer函数中的参数值。切片的长度是它包含的元素个数。切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。你可以通过len(s)获取切片的长度,通过cap(s)获取切片的容量。你可以通过重新切片来扩展一个切片的长度,只要不超过它的容量。切片的长度是它包含的元素个数。
2024-10-20 20:46:00
1154
原创 苍穹外卖随记(二)
这样,在请求到达 Controller 层之前,就可以先检查缓存,如果缓存命中,则直接返回缓存数据,不再调用后续的 Service 层和 Repository/DAO 层。情景:由于大量人员参与点餐,那么每一次查看商品(查看分类、查看菜品等),都会对应和数据库进行一次io,那么这样就会使得mysql数据库的负载增大,查询效率降低,数据显示的速度慢,也就是导致系统响应慢,客户的使用体验较差。不然压根就没有数据!在分类菜品的情况下,可以使用分类的ID或者名称作为Key的一部分,以确保它能够准确反映缓存的内容。
2024-09-17 21:26:13
1213
空空如也
在创建链表时结构体的使用
2024-01-02
怎么改能满足条件#include <string.h>
2023-12-09
关于创建链表的方法(尾插法)
2023-12-04
关于余弦函数的约等计算
2023-11-29
关于pta平台的一个测试点
2023-11-25
关于斐波那契数列的编程
2023-10-24
各位谁能解释解释这个是怎么理解
2023-10-17
关于字符数组反转输出问题
2023-10-21
关于输出一个十进制数的原码的程序
2023-10-28
我想知道为什么vs里弄不了啊
2023-10-14
为什么我的 if 程序总是出现一句话
2023-10-05
如何将星号放置在自定义函数上?
2023-10-03
一个猜数游戏,但是运行有点怪怪的!
2023-10-04
关于一个指定星星图的程序
2023-10-04
有个问题为什么代码一样,结果不同。
2023-10-03
这个for循环该怎么理解,怎么用白话去解读程序过程
2023-09-29
关于循环一句话的程序如何写?
2023-10-02
这个程序语言可以怎么改?
2023-09-27
问一问这个到底是哪里错误了,还有它的提示是什么意思啊?
2023-09-24
在产生随机数的时候怎么确定随机数的范围
2023-09-30
为什么不能达到目的呢
2023-09-20
什么叫做控制台?这个文件的意义是什么?两个文件可以一起运行吗,还是别的原因?
2023-09-23
能否用易懂的话解释几句专业表述
2023-09-23
如何使用python documetation
2023-08-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅