- 博客(77)
- 资源 (17)
- 收藏
- 关注

原创 使用Go语言实现线程安全的Map
自定义线程安全的SyncMap泛型支持:灵活适配不同类型的键值。线程安全:支持高并发场景的安全访问。可扩展性:易于添加更多功能,如合并操作、条件更新等。通过本文的实现与示例,希望您能更好地理解和应用线程安全Map,构建健壮的并发应用。
2024-11-25 23:24:23
612
1

原创 使用 Go 语言封装 MinIO 相关操作
MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 API,广泛用于存储和管理海量数据。在实际开发中,封装一个便于使用的 MinIO 操作包,可以帮助我们简化操作逻辑,提高代码的可读性和复用性。初始化 MinIO 客户端上传文件下载文件列出文件删除文件获取文件的预签名 URL通过封装 MinIO 的常用操作,我们可以极大简化代码逻辑,提高开发效率。在实际项目中,可以根据需求进一步扩展功能,例如支持更多的操作、增加日志功能或通过配置文件动态加载参数等。
2024-11-24 22:06:26
711

原创 Go语言开发的源代码行数统计工具
是一个开源工具,用于统计各种编程语言的源代码文件数量和代码行数。它支持多种语言,易于扩展以包括自定义语言。简单易用,可以帮助开发者快速了解代码库并跟踪变化。页面下载预编译的二进制文件。
2024-11-21 10:53:34
1061

原创 使用gRPC基于Protobuf传输大文件或数据流
在gRPC中,服务和消息的定义是通过.proto文件进行的。例如,定义一个文件传输服务,可以在这里定义了一个服务,包含了一个Upload方法,该方法接受一个FileChunk类型的流,并返回一个状态。
2024-05-10 14:02:34
2167

原创 极光推送Go语言服务端SDK
jpush-api-golang-client项目地址:https://github.com/Scorpio69t/jpush-api-golang-client概述JPush’s Golang client library for accessing JPush APIs. 极光推送的 Golang 版本服务器端 SDK。该项目参考ylywyn结合极光推送官方文档而来。(原项目年久失修,有很多新特性都没有提供,本项目旨在将其完善,方便大家使用,后续会持续更新,不足之处欢迎大家指正,谢谢~)参考R
2021-12-31 17:45:59
1064
6

原创 HackRF-AIS信号的采集与解调
目录AIS信号采集与解调1、硬件设备2、系统准备3、软件准备4、进行实验(需要去有船只经过的江边才能采集到信号,本次实验于重庆嘉陵江边进行)5、AIS信息解译AIS解调后数据源可去一下连接获取AIS信号采集与解调1、硬件设备 硬件设备采用HackRF One,HackRF是一款全开源的硬件项目,其目的主要是为了提供廉价的SDR(软件定义无线电)方案,作者Mike Ossmann在第一版HackRF Jawbreaker时通过Kickstart融资成功,之后Mike Ossmann开始进行了第二版Ha
2021-10-25 16:28:21
2044
4

原创 c/c++ 实现三角函数(不使用库函数) sin/cos/tan/cot
在许多嵌入式系统或计算平台中,可能不方便使用标准数学库函数。在本篇博客中,我们将使用 泰勒展开 来实现常见的三角函数:sin(x)、cos(x)、tan(x) 和 cot(x),而不依赖任何库函数。通过手动实现这些数学公式,我们可以更好地理解三角函数的计算原理,同时为那些受限的环境提供一种实现方案。泰勒展开是数学中一个非常重要的公式,它能够将任何在某点可导的函数展开为一个无限级数。对于三角函数,我们可以利用其在0点的泰勒级数展开来近似计算函数值。sinxx−x33!x55!−。
2020-03-23 22:57:08
4531
1
原创 Go 语言封装邮件发送功能
通过封装 github.com/jordan-wright/email,我们可以快速实现邮件发送功能。封装良好的结构体和方法,使代码更易于扩展和复用。希望本文能帮助你在 Go 项目中高效地实现邮件功能!
2025-03-25 20:24:28
410
原创 Go 语言封装 HTTP 请求的 Curl 工具包
在 Go 语言开发中,与 HTTP 服务进行交互是非常常见的需求。本文将分享一个用 Go 语言封装的 `Curl` 工具包,它提供了简洁易用的接口来进行 HTTP 请求,包括 `GET`、`POST`、`PUT` 和 `DELETE` 等常见操作。通过这个工具包,可以轻松管理 HTTP 请求头、查询参数和请求体,并处理响应。
2025-03-10 16:20:24
1067
原创 使用C++实现简单的TCP服务器和客户端
本文将通过一个简单的例子,介绍如何使用C++实现一个基本的TCP服务器和客户端。这个例子展示了如何创建服务器端接收客户端的连接,如何处理接收到的数据,并如何将数据发送回客户端。TCP服务器的实现:包括如何创建服务器、监听端口、接收客户端请求等。TCP客户端的实现:客户端如何连接到服务器、发送数据并接收服务器返回的数据。通过这篇文章,我们实现了一个简单的 TCP 服务器和客户端示例,学习了如何使用 C++ 来进行网络编程。
2025-02-24 11:12:34
567
原创 Go语言封装加解密包(AES/DES/RSA)
通过封装常见的加解密算法,Go语言为我们提供了丰富的工具来保护数据的隐私和完整性。从Base64编码到对称加密(AES、DES),再到非对称加密(RSA)和哈希(SHA256),我们可以根据实际需求选择合适的算法进行数据保护。本示例展示了如何使用Go语言的标准库和一些常见的加解密算法来实现数据加解密操作。对于需要更高安全性的应用,建议使用更长的密钥、更新的算法(如AES-GCM)以及合适的加密模式。
2025-01-13 13:44:19
843
原创 6.824 Go语言 Raft KVraft
6.824课程中使用Go语言实现的Raft、KVraft、ShardKV和ShardMaster模块,测试全部通过,可支持功能修改和代码重写,欢迎咨询!
2025-01-08 16:28:37
126
原创 我的创作纪念日
提示:你过去写得最好的一段代码是什么?提示:当前创作和你的工作、学习是什么样的关系。提示:可以和大家分享最初成为创作者的初心。提示:在创作的过程中都有哪些收获。提示:职业规划、创作规划等。
2024-12-31 10:44:33
292
原创 如何撰写高效清晰的技术文档:实用技巧与成功经验分享
优秀的技术文档是团队协作、知识传承和产品成功的重要保障。通过明确的目标读者定位、清晰的结构、简洁准确的表达、图表辅助、以及版本管理,我们能够提升文档的质量,让技术知识的传播更为高效。我希望通过本文的分享,能够帮助大家在撰写技术文档的过程中少走弯路,提升文档的影响力,为团队和产品贡献更多的价值。
2024-12-20 15:00:00
1750
原创 在 Go 中利用 ffmpeg 进行视频和音频处理
ffmpegutil 包旨在封装常见的 ffmpeg 操作,为 Go 提供更简洁易用的接口。视频格式转换从视频中提取音频获取视频信息和元数据创建视频缩略图在随机时间戳提取帧该包依赖于 ffmpeg-go 这一 Go 语言的 ffmpeg 封装库,使得 ffmpeg 的功能能够更方便地集成到 Go 项目中。视频格式转换是 ffmpeg 最常见的应用之一。在 ffmpegutil 中,ConvertVideo 函数通过简单的接口调用,可以将输入的视频文件转换成指定格式。
2024-12-19 19:37:47
1662
原创 Go语言封装Cron定时任务
在现代应用中,定时任务是非常常见的需求,无论是用于定时清理数据、定时发送邮件,还是定时执行系统维护任务。Go语言作为一门现代编程语言,提供了多种方法来实现定时任务。本文将重点介绍如何在Go中封装一个Cron定时任务管理器,帮助开发者高效管理定时任务。通过使用 robfig/cron 库并封装成一个简单易用的 Crontab 类型,我们可以非常方便地在 Go 项目中管理定时任务。Cron 表达式为我们提供了灵活的时间配置,帮助开发者应对复杂的定时任务调度需求。
2024-12-19 17:35:42
1052
原创 Go语言压缩文件处理
通过 ziputil 包,我们可以方便地进行文件和文件夹的压缩和解压操作。该包使用了 Go 内置的 archive/zip 包来处理 .zip 文件,并通过 sync.WaitGroup 实现了解压过程的并发处理,提高了解压效率。对于较大的压缩文件或包含大量文件的压缩包,使用并发处理可以显著提升性能。解压 .zip 文件时,我们需要将 .zip 文件中的每个文件提取到指定的目录中。UnZip 函数不仅能够提取文件,还能够处理文件夹结构,保证提取后的目录结构不丢失。
2024-11-28 17:03:49
545
原创 Linux 下的 AWK 命令详细指南与示例
AWK 是 Linux 中功能强大的文本处理工具,用于模式扫描和处理。AWK 以其创建者(Aho、Weinberger 和 Kernighan)的名字命名,特别适合处理如日志、CSV 文件或配置文件等结构化文本数据。本指南全面讲解了 AWK 的功能,并通过实际示例展示其强大之处。script.awkAWK 是一个功能强大的文本处理工具,对于在 Linux 上处理数据的人来说至关重要。其简单性与强大功能的结合,使其在从简单的文本提取到复杂的数据转换的任务中都表现出色。
2024-11-21 20:06:05
1259
原创 Linux操作系统中的信号
信号是一种进程间通信机制,用于通知进程某个事件的发生。信号可以由内核、用户、其他进程或硬件生成,并可以在进程运行时的任意时刻传递给进程。每种信号都有一个对应的信号编号和默认行为。忽略信号:进程可以选择忽略某些信号,使其对进程无影响。捕捉信号:通过定义一个信号处理函数,进程可以捕捉并自定义处理信号的行为。执行默认操作:对于大多数信号,Linux提供了默认的处理操作,如终止进程、暂停进程、生成核心转储文件等。
2024-08-13 15:54:15
876
原创 C/C++实现汉诺塔游戏和详细解
通过这篇文章,我们不仅学习了如何用C/C++编写汉诺塔的递归解决方案,还深入了解了递归的概念及其在实际问题中的应用。希望这篇文章能帮助你更好地理解递归算法,并启发你解决其他看似复杂的问题。
2024-05-13 17:14:02
353
原创 【EasyX】扫雷
6、位置搜索函数poi_sum:队列处理函数的辅助函数,将输入点的坐标周围8个格子的雷数返回给duires;5、队列处理函数duires:对无雷的输入进行扩展搜索、调用位置搜索函数辅助、调用响应函数输出;8、主控函数Control:接受鼠标的输入,处理简单的逻辑,复杂的交由队列处理函数执行;7、响应函数do_null、not_null:随时处理队列处理函数的结果;4、显示函数Show:依照层次结构显示雷区;9、计时器函数Time:计算累计时间并显示;1、全局变量:时间、地图、图片资源、状态;
2023-07-01 22:38:00
831
原创 【EasyX】飞机大战
第三步增加敌机自动向下运动,从下边界消失后会重新出现,敌机图片为enemyPlane1.jpg和enemyPlane2.jpg。第二步按下鼠标左键后飞机发射子弹,子弹图片为bullet1.jpg和bullet2.jpg。本博客介绍利用EasyX加上图片、音乐素材实现一个鼠标控制的飞机大战小游戏。第四步增加子弹击中敌机、敌机撞击我机的判断,并增加我机爆炸的图片效果。第五步增加背景音乐、发射子弹音效、飞机爆炸音效、得分鼓励音效。第一步实现鼠标控制飞机移动。
2023-06-13 21:02:15
1170
1
原创 【EasyX】反弹球消砖块
第二步绘制静态挡板,挡板的中心坐标为bar,高度为bar_high,宽度为bar_width,挡板的上下左右位置坐标为bar_left/bar_right/bar_top/bar_bottom,调用函数bar进行绘制。第四步加入brick_num个砖块,int isBrickExisted[Brick_num]记录某一块砖块是否存在。如果小球与i号砖块发生碰撞,则让该砖块消失(isBrickExisted[i] = 0),不显示。第三步用A/S/W/D实现挡板的移动,判断挡板是否接中小球,接中后反弹。
2023-06-11 23:42:29
782
原创 【EasyX】实时时钟
第三步定义系统变量(SYSTEMTIME ti),通过GetLocalTime(&ti)获取当前时间,秒针的角度由实际时间决定,即secondAngle = ti.wSecond * 2 * PI/60。第五步绘制表盘,并可以利用outtextxy()函数在画面中输出文字,为了让时针、分针的转动更自然,对求解时针、分针的角度进行了改进。第四步添加时针、分针,和秒针变化相比,他们的长度、宽度、颜色、旋转速度有一定的不同。本博客介绍利用EasyX实现一个实时钟表的小程序,同时学习时间函数的使用。
2023-06-10 22:16:41
2272
原创 【matplotlib】4-完善统计图形
同理,刻度标签的样式也会对可视化效果造成影响。如果可以根据具体的数据结构和数据形式采用合适的刻度标签样式,那么不仅可以将数据本身的特点很好的地展示出来,还可以让可视化效果变得更加理想。通过上面的表格,我们就可以清楚地知道学生选择不同难度试卷的实际人数,从相对和绝对绝对分别考察试卷的难易程度对学生选择试卷的影响情况,使得后续的分析结论能够更加客观和全面地反映试卷难度对学生考试的影响。不仅图例的显示位置可以改变,图例的展示样式也可以进行调整,比如图例的外边框、图例中的文本标签的排列位置和图例的投影效果等方面。
2023-05-07 17:37:03
922
原创 【matplotlib】3-绘制统计图形
上箱须和下箱须长度的确定方法是在绘制箱线图的原始数据集data中分别寻找不大于Q3+whisxIQR的最大值valuemax和不小于Q1-whisxIQR的最小值valuemin,其中Q1和Q3分别是第一四分位数和第三四分位数,whis是关键字参数whis的参数值,IQR(Inter-Quartile Range)是四分位差,计算方法是IQR=Q3-Q1。一方面,直方图和柱状图在展现效果上是非常类似的,只是直方图描述的是连续型数据的分布,柱状图描述的事离散型数据的分布,也可以讲:一个是描述定量数据;
2022-12-25 14:17:43
1243
原创 【matplotlib】2-使用统计函数绘制简单图形
绘制y轴方向或者x轴方向的误差范围。二维数据借助气泡大小展示三维数据。在x轴上绘制定性数据的分布特征。在y轴上绘制定性数据的分布特征。在x轴上绘制定量数据的分布特征。绘制定性数据的不同类别的百分比。在极坐标轴上绘制折线图。
2022-12-11 17:16:49
1017
原创 【matplotlib】1-使用函数绘制图表
在一个图形输出窗口中,底层是一个Figure实例,通常称之为画布,包含一些可见和不可见的元素。在画布上的就是图形,图形是一些Axes实例,里面几乎包含了matplotlib的组成元素,例如坐标轴、刻度、标签、线和标记等。我们可以导入第三方包NumPy和快速绘图模块pyplot,matplotlib库就是建立在科学计算包NumPy基础之上的Python绘图库。3.函数用法3.1函数plot()–展现变量的趋势变化函数功能: 展现变量的趋势变化调用签名: plt.plot(x, y, ls=‘-’, l
2022-12-04 14:21:16
2152
原创 C++实现有理数类
C++只提供了整数类和浮点数类,但是没有有理数类,所以需要自己写一个有理数类。我们将使用分数来表示一个有理数。即Rational类有两个数据域,分子叫做 numerator,分母叫做denominator,且分母不能为0。同时,一个有理数可能又很多表现形式,比如1/4可以表示为3/12,2/8等,我们统一用化简后的形式表示这个数,比如1/4。
2022-09-04 17:43:43
1534
原创 Ubuntu下oh my zsh的安装与配置
Ubunt下oh my zsh的安装与配置sudo apt-get install zshchsh -s /bin/zshsh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)"git clone https://gitee.com/zhetianlab/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins
2022-04-08 14:16:44
442
1
原创 C语言实现数独小游戏
C语言控制台数独游戏,注释详细效果图#include <stdio.h>#include <stdlib.h>#include <memory.h>#include <math.h>#include <time.h>#include <windows.h>#include <string.h>#include <conio.h>#include <stdarg.h>#in
2022-03-11 10:02:12
8732
7
原创 C语言实现进制转换、移位运算小工具
流程图#include <stdio.h>#include <stdlib.h>#include <math.h>#include <conio.h>#include <stdarg.h>#include <ctype.h>#include "conversion.h"char MainMenu(); //主菜单void pause(const char *str, ...); //暂停程序void Tran
2022-03-11 09:52:17
564
原创 C/C++ 常用算法手册(纯代码)
项目在Github上,不定期更新。冒泡排序#include <iostream>#include <array>#include <cstdlib>#include <ctime>using namespace std;constexpr int SIZE = 10;void BubbleSort(array<int, SIZE>& arr){ int length = arr.size(); fo
2022-03-10 12:18:48
1520
原创 C语言实现base58算法
Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/"符号。Base58 与 Base64 异同相同一般都用于URL,邮件文本,可见字符显示。都会造成信息冗余,数据量增大,因此不会用于大数据传输编码。区别编码集不同,Base58 的编码集在 Base64 的字符集的基础上去掉了比较容易混淆的字符。Base64 采用直接切割 bit 的方
2022-03-10 12:07:39
1012
原创 Go语言实现自定义i18n功能
相关代码已开源:github传送门Internationalization,取开头和结尾字母,算一下字母数18,组合一下就是i18n,这是一个约定俗称的叫法。在其他语言中,做国际化的相关包一般也会以这个名字命名。GitHub - ExcitingFrog/go-pangu: rest api web server based on go(High availability, high security, high performance)internationalization,取开头和结尾字母,算一下字
2021-12-24 17:51:42
1393
原创 Linux C语言实现输入密码显示星号-手动实现getch()
Linux C语言实现输入密码显示星号-手动实现getch()废话不多说直接上代码github传送门#include <stdio.h>#include <stdlib.h>#include <string.h>#include <termios.h>#include <unistd.h>int getch(void);void get_password(char *password);int main(){ ch
2021-12-21 17:31:49
1556
原创 Go语言生命游戏 GameofLife GOL
目录CSA Coursework: Game of LifeTask OverviewIntroductionSkeleton CodeStage 1 - Parallel ImplementationStep 1Step 2Step 3Step 4Step 5Success Criteriaeffect drawingCSA Coursework: Game of LifeThis is the Computer Systems A summative coursework. The coursewo
2021-11-24 09:57:33
2918
3
原创 详解设计模式-Adapter模式
文章概览1. Adapter模式2.示例程序1(使用继承的适配器)类图Banner类Print接口PrintBanner类Main类运行结果1. Adapter模式如果想让额定工作电压是直流12V的笔记本电脑在交流100V的AC电源下工作,应该怎么做呢?通常,我们会使用AC适配器,将家庭用的100V电压转换成我们需要的12V电压。这就是适配器所完成的工作,它工作在实际情况与需求之间,弥补两者之间的差距。在程序世界中,经常会存在现有程序无法直接使用的问题,需要做适当的变换之后才能使用。这种用于填补“现有
2021-07-06 00:35:55
664
2
原创 力扣(LeetCode)初级算法--只出现一次的数字
文章目录题目解法说明C解法C++解法GO解法题目只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions
2021-06-17 11:54:07
230
1
PyQt-经典小游戏俄罗斯方块
2024-03-04
C/C++学生成绩管理系统
2021-12-24
机器学习个人笔记完整版v5.4.docx
2020-05-18
基于Linux下数字签名技术的实现.pdf
2020-02-03
LFS-BOOK-9.0 构建自己的Linux系统
2019-11-28
Python-100-Days.tar.gz(更新,完整版)
2019-11-27
Python-100-Days
2019-07-15
PYTHON 网络爬虫实战
2019-07-09
微信小程序:开发入门及案例详解.zip
2019-07-04
Learning WebRTC配套代码.zip
2019-06-25
Python编程无师自通-专业程序员的养成.zip
2019-04-30
Linux Bash编程与脚本应用实战
2019-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人