- 博客(43)
- 收藏
- 关注
原创 golang 的github.com/dgrijalva/jwt-go包
除了标准的声明,用户可以自定义声明来携带更多的信息。例如,添加用户ID、权限等。通过以上示例,可以实现一个功能完善的JWT中间件,用于保护Gin框架下的API端点。该中间件能够高效验证JWT令牌,确保只有合法用户能够访问受保护的资源。同时,通过灵活的配置和自定义声明,可以满足不同的业务需求。此外,结合Gin框架的高性能特性,该中间件能够在高并发场景下稳定运行,保障应用的安全性和可靠性。包为Go语言提供了一个功能强大且易用的JWT实现。通过它,开发者可以轻松地生成和验证JWT,满足各种身份验证和授权需求。
2025-04-04 00:44:32
471
原创 golang 的encoding/json包
有时候,默认的序列化和反序列化方式无法满足需求,这时可以通过实现和方法来自定义行为。// 自定义 MarshalJSON 方法}{})p := P3{// 编码// 处理错误// 输出: {"Name":"jon","Address":{"state":"beijing"}}结构体通过自定义方法,将Name字段序列化为state字段。str = str[1 : len(str)-1] // 去除双引号if err!
2025-04-04 00:27:52
632
原创 html+css+javaScript实现一个扫雷游戏
扫雷游戏是一款经典的单人小游戏,玩家通过点击格子来探索地图,避开爆炸的雷。游戏的基本功能包括:多种地图尺寸:支持从10x10到30x30的不同尺寸地图。多级难度:通过调整雷的数量,提供不同难度级别的游戏体验。计时器:记录玩家完成游戏所用的时间。右键标记:允许玩家标记可疑的格子。自动打开空白区域:点击无雷的格子时,自动递归展开周围的周围无雷的格子。
2025-04-02 20:20:41
278
原创 html+css+js 实现一个贪吃蛇小游戏
# Node.js Express 小游戏项目初始化与运行指南 ## 项目描述 这是一个基于 Node.js 和 Express 的基本 Web 应用,包含自制的贪吃蛇游戏(通过`greedy_snake.html`访问)以及三个使用iframe展示的小游戏(由`other.js`提供支持)。## 初始化与安装 1. 首先,初始化一个新的 Node.js 项目: ```bash npm init ```2. 安装项目的核心依赖项:```bashnpm install
2025-04-02 19:09:10
401
原创 golang的database.sql包和事务处理
事务是数据库操作中的一个逻辑单元,由一系列的数据库操作组成。这一系列操作要么全部执行并且提交,要么全部回滚,确保数据的一致性和完整性。预处理语句是指在数据库中提前编译和优化的SQL语句模板,可以在之后多次重复使用。在这个示例中,预处理语句一次创建,多次执行,提升了效率,并降低了SQL注入的风险。
2025-03-30 22:13:31
1076
原创 golang 的io与os包中的常用方法
io.ReadAll用于从Reader接口读取所有数据并返回一个字节切片。os.Open打开一个文件用于读取。如果操作成功,则返回一个指向File的指针;如果失败,则返回错误。更通用的打开文件的方式,允许指定标志(如只读、读写等)和权限模式。os.Create创建一个新文件用于写入,如果文件已存在则会被截断。向文件写入字符串,并返回写入的字节数。
2025-03-30 21:34:33
532
原创 golang 日志log与logrus
log特性loglogrus日志级别有限(Fatal、Error)多级别(Debug~Panic)格式化输出支持支持(Text/JSON)日志轮转不支持支持(需配合 lumberjack)钩子机制不支持支持输出目标标准输出/文件多种(文件、网络等)社区和扩展性内置库第三方库,社区丰富。
2025-03-30 15:42:16
861
原创 golang sync 同步与锁
syncMutex:互斥锁,用于保护临界区,防止多个goroutine同时访问共享资源。RWMutex:读写互斥锁,允许多个读者同时访问共享资源,而写者必须独占。WaitGroup:用于等待一组goroutine完成。Cond:条件变量,用于在goroutine之间协调事件发生的顺序。Map:一个并发安全的map,适合频繁的读写场景。Pool:对象池,用于管理一组可重用的对象,减少内存分配和垃圾回收的开销。Go语言通过sync。
2025-03-30 15:30:38
1124
原创 哔哩哔哩IT私塾python爬虫视频教程中的项目文件
第一个项目douban(纯python项目):爬取数据并保存到xls和数据库。第二个项目douban_flask(flask项目):把第一个项目得到的数据库文件的数据可视化。
2025-02-27 14:03:41
409
原创 java 客户端、服务端聊天系统 文字交流 (多线程)
该程序实现了一个简单的文字交流聊天室,允许多个客户端通过网络与服务端进行实时消息交流。服务端负责管理连接的客户端,广播消息并处理连接和断开操作,而客户端则提供用户界面供用户输入和接收消息。(运行一次客户端程序即生成一个客户端窗口)
2024-11-20 20:42:19
1033
原创 5种查找方法简单介绍:顺序查找、分块查找、二分查找、哈希查找、插值查找
5种查找算法的简单介绍:顺序查找、分块查找、二分查找、哈希查找、插值查找
2024-06-27 13:39:07
1519
原创 5种算法简单介绍:贪心算法、分治法、回溯法、动态规划法、最大流算法
在这类问题中,可能会有许多可行解,每个解都对应一个值,动态规划的目标是找到具有最优值的解。分治法是一种将问题分解为若干个子问题,递归地解决这些子问题,然后将子问题的解合并起来得到原问题的解的算法。背包问题(给定一组物品,每种物品都有自己的重量和价值,在限定的总重量内,如何选择使得物品的总价值最高)。图的着色问题(给定一个无向图,用k种颜色给图中的顶点着色,使得任意两个相邻的顶点颜色不同)。最优子结构:原问题的最优解所包含的子问题的解也是最优的。保存子问题解:保存已解决的子问题的解,避免重复计算。
2024-06-26 21:58:34
800
原创 C++记录程序运行时间的4方法
首先,你需要安装Boost库,并在项目中包含Boost.Timer头文件。的精度在1到15毫秒之间,并且其值会在大约49.7天后回绕。Boost库提供了一个计时器模块,用于测量代码块的执行时间。库提供了基于系统时间的函数clock()。这两个函数提供了更高的精度,通常在微秒级别。这个函数返回从系统启动开始经过的毫秒数。库提供了高精度的时间测量功能。
2024-06-22 17:14:28
7491
原创 常见的8种排序(含代码示例):插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、堆排序、归并排序、基数排序
该方法的基本思想是:先将整个待排序的记录序列分割成为若干子序列(由相隔某个“增量”的记录组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。从第一个元素开始,该元素可以认为已经被排序;通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
2024-06-22 17:05:08
651
2
原创 算法设计与分析:并查集法求图论桥问题
1. 掌握图的连通性。2. 掌握并查集的基本原理和应用。在图论中,一条边被称为“桥”代表这条边一旦被删除,这个图的连通块数量会增加。等价地说,一条边是一座桥当且仅当这条边不在任何环上,一个图可以有零或多座桥。现要找出一个无向图中所有的桥,基准算法为:对于图中每条边uv,删除该边后,运用BFS或DFS确定u和v是否仍然连通,若不连通,则uv是桥。应用并查集设计一个比基准算法更高效的算法,不要使用Tarjan算法。
2024-06-21 15:07:40
1303
原创 算法设计与分析:动态规划法求扔鸡蛋问题 C++
算法设计与分析:动态规划法求扔鸡蛋问题 三种方法:常规动态规划、动态规划加二分查找最优x、动态规划加逆向求解
2024-06-21 13:52:32
1761
原创 算法设计与分析:网络流求解棒球赛淘汰问题C++
1. 实现利用网络最大流求解上述棒球赛淘汰问题的算法。2. 实验内容中要解释流网络的构造原理,以及解释为什么最大流能解决这个问题。3. 实验课时检查实现代码、算法原理以及表1数据作为输入时的算法运行结果,要求输出哪些队已没有夺冠的可能。
2024-06-18 22:39:07
2106
原创 并发和并行的区别和联系
总结来说,并发强调的是逻辑上的同时发生,而并行强调的是物理上的同时发生。并发通常指多个任务可以在同一个时间段内同时执行,但在宏观上仍然是“串行”的,即在单CPU系统中,多个任务轮流使用CPU资源。在微观层面,并发表现为多个进程或线程快速交替执行,而不是真正的同时执行。并行则是指多个任务在同一时刻真正意义上的同时执行,即在多处理器系统或多核处理器中,多个任务可以同时在不同的处理器核心上运行。并行在微观和宏观上都是同时发生的,因为它涉及到多个处理器或核心同时处理多个任务。
2024-03-07 11:32:03
692
1
原创 Java 服务端、客户端(间)文字交流(含图形用户界面)
利用数据报通信方式编写一程序,该程序生成两个客户端,一个服务器端,两个客户端可以相互进行简短的文字交流。
2024-01-02 12:40:19
612
1
原创 贪吃蛇C++
int nTail;dir = STOP;score = 0;nTail = 0;i++)i < height;i++)j < width;j++)elsek < nTail;k++)if (!printTail)i++)case 'a':dir = LEFT;break;case 'd':
2023-12-27 10:16:58
398
1
原创 森林叶子编码C++(森林转二叉树)
class BNode{//二叉树结点。class BTree{//二叉树。class Node{//树结点。class Tree{//树。
2023-12-26 22:55:26
515
1
原创 DS哈希查找--Trie树(C++)两种代码
它是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。输入的一组单词,创建Trie树。输入字符串,计算以该字符串为公共前缀的单词数。
2023-12-23 22:26:23
484
1
原创 DS哈希查找—线性探测再散列
定义哈希表为H(key)=key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测在散列构建哈希表,并查找给定关键字。
2023-12-23 21:29:12
581
2
原创 Java处理问题:客户端关闭后服务端会重复输出客户端最后传递的信息
在Java中,客户端关闭后服务端会重复输出客户端最后传递的信息,这是因为在TCP协议中,客户端关闭连接时,操作系统并不会立即关闭连接,而是会发送一个FIN包给服务端,告诉服务端客户端已经关闭连接。解决这个问题的方法是在服务端代码中判断客户端是否已经关闭连接,如果已经关闭连接,则不再输出客户端传递的信息。System.out.println("客户端已连接,IP地址为:" + socket.getInetAddress().getHostAddress());
2023-12-15 10:23:25
618
html+css+javaScript实现一个扫雷游戏(顺带上用iframe展示的3个小游戏:2048、数独、3D魔方)
2025-04-02
html+css+js 实现一个贪吃蛇小游戏(顺带iframe展示其他3个找到的小游戏:2048、数独、3D魔方)
2025-04-02
go学习中编写的代码,包含常用包的各种常用方法示例和注释说明
2025-03-30
哔哩哔哩IT私塾python爬虫视频教程中的项目文件,包括douban和douban-flask
2025-02-27
java 客户端、服务端 文字交流 (多线程)
2024-11-20
计算机图形学 实验二 三维模型读取与控制
2024-11-08
算法设计与分析:网络流求解棒球赛淘汰问题C++
2024-06-28
算法设计与分析:分治法求最近点对问题(完整代码,可设置循环次数,用于效率分析)
2024-06-22
HTML+CSS+PHP实现的网页留言板功能(需要创建数据库)
2024-06-18
Java一个服务端、两个客户端(间)实现文字交流(含图形用户界面)
2024-05-17
大整数 运算符 重载 不能 long long int
2023-06-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人