项目中有一处需求,需要把长网址缩为短网址,把结果通过短信、微信等渠道推送给客户。刚开始直接使用网上现成的开放服务,然后在某个突然手痒想自己动手实现一个别具特色的长网址(文本)缩短服务。   由于以前做过socket服务,对数据包的封装排列还有些印象,因此,短网址服务我第一反应是先设计数据的存储格式,我这里没有采用数据库,而是使用2个文件来实现:   Url.db存储用户提交的长网址文本,Url.idx 存储数据索引,记录每次提交数据的位置(Begin)与长度(Length),还有一些附带信息(Hits,DateTime)。由于每次添加长网址,对两个文件都是进行Append操作,因此 【短链接生成服务C#实现】短链接生成是将长网址转化为简短的字符串,方便在短信、微信等有限字符长度的渠道中分享。在本项目中,开发者选择了自建短链接服务,而不是依赖第三方开放服务,以实现个性化功能。 在实现过程中,开发者选择了不使用数据库,而是利用两个文件来存储数据:`Url.db`用于存储长网址文本,而`Url.idx`则存储数据索引,包括长网址的位置信息(Begin)和长度(Length),以及访问次数(Hits)和创建时间(DateTime)。这种设计允许通过Append操作添加新网址,减少了对大文件的IO压力。 `Url.idx`文件的结构如下:ID是主键,使用Int64类型,占用8字节;Begin同样为Int64类型,占用8字节,表示长网址在`Url.db`中的起始位置;长度字段使用Int16,占用2字节;Hits字段用Int32,占用4字节;DateTime字段仍为Int64,占用8字节。ID需要手动递增,每次写入新行前,需读取前一行的ID并递增。 然而,原始的ID递增方式存在安全问题,容易被暴力枚举,且随着数据量的增加,ID长度会变长。为了改进,开发者引入了混淆机制和容量扩展策略: 1. 混淆机制:通过10进制转62进制(包含0-9,A-Z,a-z)并随机排列字符顺序,使得相邻ID看起来无明显关联。开发者编写了一个函数`GenerateKeys()`来生成随机的62进制字符序列,并用此序列替换原始的62进制字符集。 2. 容量扩展:即使一次性提交大量长网址,ID长度也应保持稳定。通过62进制编码,可以大大增加可用的ID数量,同时保持ID长度基本不变。 转换函数`Convert(long id)`用于将10进制ID转换为62进制,通过遍历随机序列并进行计算实现。这种方法确保了短链接的随机性和安全性,同时也提高了容量,使得短链接在大规模使用时依然保持简洁。 总结来说,这个短链接生成服务C#实现的核心在于自定义的数据存储结构和混淆机制,它有效解决了长网址的存储和安全问题,同时提供了高效的服务,使得短链接的生成和使用更加便捷。通过不依赖数据库,该方案降低了系统的复杂性,且易于维护和扩展。
2025-05-29 16:22:18 102KB 短链接生成
1
微信表情代码PHP,单文件,简单高效,直接引用在开发平台,通用
2023-10-11 09:03:54 5KB 微信表情 emoji qq表情 公共平台表情
1
简单高效的项目管理工具,通过甘特图直观、方便展示项目进度,项目参与人员和项目任务项及责任人,一目了然,会excel就会用,对于一边做技术,一边做管理的人特别适用。
2022-09-03 19:04:37 38KB 甘特图 项目管理 excel 高效
1
学习者表现预测算法的简单而高效的实现: 设置 创建一个新的conda环境,安装和其余要求: conda create python==3.7 -n learner-performance-prediction conda activate learner-performance-prediction pip install -r requirements.txt conda install pytorch==1.2.0 torchvision==0.4.0 -c pytorch 该代码支持以下数据集: (assistments09) (assistments12) (assistments15) (assistments17) (bridge_algebra06) (algebra05) (西班牙语) (静电) 数据集 #个用户 # 项目 #技能 #互动
2022-06-03 16:06:02 90.04MB Python
1
人工智能-机器学习-波浪中多物体耦合作用简单高效计算方法.pdf
2022-05-03 17:06:10 8.26MB 人工智能 机器学习 文档资料
xarray 是一个开源 Python 包,让多维数组处理更加简单、高效并有趣 xarray:ND 标记数组和数据集 xarray(以前称为 xray)是一个开源项目和 Python 包,它使处理标记多维数组变得简单、高效且有趣! Xarray 在原始 NumPy 类数组之上以维度、坐标和属性的形式引入标签,从而提供更直观、更简洁且不易出错的开发人员体验。 该软件包包括一个庞大且不断增长的领域无关函数库,用于使用这些数据结构进行高级分析和可视化。 Xarray 受到熊猫的启发并大量借鉴,熊猫是一种流行的数据分析包,专注于标记的表格数据。 它特别适用于处理作为 xarray 数据模型来源的 netCDF 文件,并与 dask 紧密集成以进行并行计算。 为什么是xarray? 多维(又名 N 维,ND)数组(有时称为“张量”)是计算科学的重要组成部分。 它们在广泛的领域中遇到,包括物理学、天文学、地球科学、生物信息学、工程、金融和深度学习。 在 Python 中,NumPy 提供了用于处理原始 ND 数组的基本数据结构和 API。 然而,现实世界的数据集通常不仅仅是原始数
2022-04-14 10:43:32 2.84MB 其它杂项
1
EasyScreenLive EasyScreenLive是由团队开发和运维的一个简单,高效,稳定的集采集,编码,叠加,推流和流媒体RTSP服务于一身的同屏功能组件,具低延迟,高效,低丢包率等特点。目前支持Windows,Android两个平台,通过EasyScreenLive我们就可以避免接触到稍显复杂的音视频源采集,编码和流媒体推送以及RTSP / RTP / RTCP / RTMP服务流程,只需要调用EasyScreenLive的几个API接口,即可轻松,稳定地把流媒体音频视频数据RTMP推给EasyDSS等RTMP服务器以及发布RTSP服务器服务,RTSP同屏服务支持可用和单播两种模式。 使用场景:大屏显示投屏,无纸化会议同屏演示,课堂同屏等,可以配合全屏显示,反向模拟触摸实现远程控制功能(Android控制Windows,Windows控制Android,Windows控制Wi
2022-03-17 17:37:35 154.41MB 系统开源
1
电脑c盘满了怎么清理(简单高效的方法).docx
2022-02-13 09:01:16 206KB 开发语言 后端
目标检测算法分为单阶段检测算法与双阶段检测算法,YOLO系列是使用较为广泛的单阶段目标检测算法,阅读相关论文并理解相关的思想也许可以给你提供一些新思路! 适合人群:学生党,非专业人士阅读
2021-12-23 18:11:33 9.09MB 目标检测 论文阅读
1
xarray 是一个开源 Python 包,让多维数组处理更加简单、高效并有趣
2021-12-17 15:50:36 2.86MB Python开发-其它杂项
1