程序启动添加全局异常捕获和Dump日志记录 Dump日志记录/// <summary> /// 功能描述:程序全局异常捕获Dump文件记录 /// </summary> public static class MiniDump { [Flags] public enum Option : uint { // From dbghelp.h: ...
断点下载帮助方法 核心代码public static class DownloadHelper { /// <summary> /// 断点下载 /// </summary> /// <param name="controller"></param> /// <param name="fullpath"&g...
经纬度帮助类 核心代码/// <summary>/// 点位信息/// </summary>[DataContract]public class DPoint{ /// <summary> /// x坐标,对应经度 /// </summary> public double x; /// <summary...
地图坐标转换 核心代码/// <summary> /// 地图坐标转换 /// </summary> public class Map { /****************************************************/ #region 坐标转换 private const double pi = 3.141592...
GPS帮助类 核心代码public class GpsHelper { private const double EARTH_RADIUS = 6378137; /// <summary> /// 计算两点位置的距离,返回两点的距离,单位 米 /// 该公式为GOOGLE提供,误差小于0.2米 /// </summary> ...
压缩文件帮助类 核心代码public class ZipHelper { #region 基础参数 public delegate void UnZipProgressEventHandler(object sender, UnZipProgressEventArgs e); public event UnZipProgressEventHandler unZipP...
ZXing.Net 的Core平台生成二维码 一、引用二、代码帮助类/// <summary> /// ZXing.NET 二维码帮助类 /// </summary> public class ZXingHelper { /// <summary> /// 站点二维码的目录 /// </summary> private s...
基于ZXing.NET实现的二维码生成和识别客户端 一、前言ZXing.Net的一个可移植软件包,是一个开源的、多格式的1D/2D条形码图像处理库,最初是用Java实现的。已经过大量优化和改进,它已经被手动移植。它与.Net 2.0、.Net 3.5、.Net 4.x、.Net 5.x、.Net 6.x、.Net 7.x、Windows RT类库和组件、UWP、.Net Standard 1.x和2.0x、.Net Core App 3.x、S...
国庆期间“头像+国旗”玩法是如何实现的? 前言随着一年一度的国庆假期越来越近,身边的国庆氛围也越来越重,很多人也开始换上了渐变国旗头像,提前为祖国母亲庆生。那每年都很火的渐变国旗头像要如何制作呢?其实一点也不难!接下来就分享一种渐变国旗头像生成方法。制作原理上传原始微信或其他头像,将头像的Image对象用Graphics创建返回GDI+对象,然后用GDI+对象在原始头像指定位置进行追加绘制指定大小的图像渲染显示。项目架构设计演...
【23种设计模式】外观模式(十) 前言外观模式,英文名称是:Facade Pattern。我们先从名字上来理解一下“外观模式”。我看到了“外观”这个词语,就想到了“外表”这个词语,两者有着很相近的意思。就拿谈恋爱来说,“外表”很重要,如果第一眼看着很舒服、有眼缘,那就有交往下去的可能。如果长的“三寸钉、枯树皮”,估计就够呛了。在这方面,“外观”和“外表”有着相同的作用。在软件系统中,要完成一个功能,需要很多接口调用,不仅增加了...
WebApi中添加Jwt鉴权 前言JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。一个 JWT 实际上就是一个字符串,它由三部分组成,头部、载荷与签名。前两部分需要经过 Base64 编码,后一部分通过前两部分 Base64 编码后再加密而成。针对前后端分离的项目,大多是通过 token 进行身份认证来进行交互,今天将介绍一种简单的创建 和验证...
【工具分享】视频号下载助手,亲测免费可用 前言当你在休闲刷视频号中的时候,不知是否有存如下这种情况:总有一瞬间,刷到了触动你心灵的视频,比如:美景、美食、笑话、民谣和段子,又或者是名人格言、人生感悟和治愈系视频。此时你非常想把视频下载下来,分享下朋友圈或发给你的朋友、死党或者闺蜜。对于分享欲极强的我来说,这种情况经常会在我身上发生。众所周知,微信视频号并没有提供下载按钮或者下载链接,无法进行下载。遇到上面这种情况,想下载分享又该怎么...
基于百度AI实现文字和图像敏感内容审核 前言百度AI是指百度公司的人工智能技术全称。它采用深度学习技术,包括自然语言处理、语音识别、计算机视觉、知识图谱等,可应用于各个领域如互联网、医疗、金融、教育、汽车、物流等。百度AI的发展将帮助人类更好地理解世界和提高生活品质,接下来就通过一个小案例演示实现百度AI在文字和图像敏感审核应用。项目准备1.注册并登录百度智能云账号官方地址:https://cloud.baidu.com/...
基于 ActionFilters 的限流库DotNetRateLimiter使用 前言在构建API项目时,有时出于安全考虑,防止访问用户恶意攻击,希望限制此用户ip地址的请求次数,减轻拒绝服务攻击可能性,也称作限流。接下来,我们就来学习开源库DotNetRateLimiter 如何轻松实现限流。项目使用配置安装Nuget包在新建立的WebAPI项目中,通过Nuget包管理器安装DotNetRateLimiter,安装命令:NuGet\Install-Package...
C#反射实现插件式开发 前言插件式架构,一种全新的、开放性的、高扩展性的架构体系。插件式架构设计好处很多,把扩展功能从框架中剥离出来,降低了框架的复杂度,让框架更容易实现。扩展功能与框架以一种很松的方式耦合,两者在保持接口不变的情况下,可以独立变化和发布。基于插件设计并不神秘,相反它比起一团泥的设计更简单,更容易理解。项目介绍书写4个插件类库,分别传参实现“加减乘除”运算,调用插件的客户端采用Winform窗体程...
【23种设计模式】装饰模式(九) 前言装饰模式,英文名称:Decorator Pattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”。在房子装修的过程中,各种功能可以相互组合,来增加房子的功用。类似的,如果我们在软件系统中,要给某个类型或者对象增加功能,如果使用“继承”的方案来写代码,就会出现子类暴涨的情况。比如:IMarbleStyle是大理...
【23种设计模式】组合模式(八) 前言组合模式,英文名称是:Composite Pattern。当我们谈到这个模式的时候,有一个物件和这个模式很像,也符合这个模式要表达的意思,那就是“俄罗斯套娃”。“俄罗斯套娃”就是大的瓷器娃娃里面装着一个小的瓷器娃娃,小的瓷器娃娃里面再装着更小的瓷器娃娃,直到最后一个不能再装更小的瓷器娃娃的那个瓷器娃娃为止。在我们的操作系统中有文件夹的概念,文件夹可以包含文件夹,可以嵌套多层,最里面包含的是...
【23种设计模式】桥接模式(七) 前言【桥接模式】是【结构型】设计模式的第二个模式,也有叫【桥模式】的,英文名称:Bridge Pattern。大家第一次看到这个名称会想到什么呢?我第一次看到这个模式根据名称猜肯定是连接什么东西的。因为桥在我们现实生活中经常是连接着A地和B地,再往后来发展,桥引申为一种纽带,比如:丝绸之路是连接亚洲和欧洲的桥梁。桥是针对桥的使用环境来说的,解决了跨越和衔接的问题。在设计模式中的【桥模式】也有...