- 博客(44)
- 资源 (3)
- 收藏
- 关注
原创 C#语言版:解密微信小程序中的加密信息(以wx.getUserInfo获取的encryptedData为例)
本文介绍了微信小程序敏感数据解密方法,使用C#实现wx.getUserInfo接口返回的encryptedData解密流程。微信采用AES-128-CBC算法加密数据,需使用SessionKey、IV和PKCS7填充规则。本文提供了完整的C#解密代码示例,通过AES.Create()创建解密器,将Base64编码的加密数据、会话密钥和初始向量转换为字节数组后进行解密,最终返回JSON格式的明文数据。该方法适用于获取用户openid、unionid等敏感信息,为开发者提供安全可靠的数据解密方案。
2025-12-24 14:41:08
184
原创 创建和使用 Promise 函数的几个注意点
本文总结了JavaScript中Promise使用的5个关键点:1)手动创建Promise时必须处理reject;2)resolve/reject只能传一个参数,多参数需封装为数组或对象;3)封装Promise函数时无需加async;4)Promise执行顺序为同步代码优先;5)调用Promise函数的不同方式及返回值差异。这些细节能帮助开发者更规范地使用Promise处理异步操作。
2025-12-24 11:49:46
182
原创 SQL联合查询中如何显示COUNT为0的记录
本文探讨了SQL查询中GROUP BY和COUNT函数统计时WHERE条件导致分组数据缺失的问题。当WHERE子句过滤掉某些记录后,分组统计会遗漏计数为0的结果。解决方案是使用LEFT JOIN联合查询结合子查询,先对满足条件的记录进行分组统计,再与主表关联,并通过ISNULL函数将NULL值转换为0。这种方法确保了所有分组都能完整显示,包括计数为0的记录,是解决此类问题的通用方案。
2025-09-30 10:09:02
248
原创 微信小程序input组件通过bindinput事件解决拼音阶段字符被算入maxlength长度限制问题
在开发微信小程序时,我们经常会遇到需要对用户输入内容进行长度限制的场景。但在中文输入场景中,其将拼音阶段的临时字符纳入长度计算,用户使用拼音输入法时,未转化为汉字的拼音字符串会被误判为有效输入,导致输入框过早触发截断。这一设计缺陷在部分安卓机上可通过调整输入法设置缓解问题,但iOS系统无此类设置,常造成输入流程被迫终止,严重影响交互体验。通过弃用maxlength属性,改用bindinput事件,动态监听输入内容,在bindinput回调中实时获取输入值,从而达到对对文本长度的控制。
2025-03-11 14:14:21
718
原创 SQL排序技巧:日期大于等于今天的记录顺序排列,日期小于今天的记录倒序排列
在数据管理和分析中,排序是一项基本且至关重要的操作,SQL查询提供了强大的排序功能,允许用户根据特定规则对查询结果进行排序。
2025-03-10 16:25:53
818
原创 微信小程序接入DeepSeek模型(火山方舟),并在视图中流式输出
DeepSeek,作为一款先进的自然语言处理模型,以其强大的文本理解和生成能力著称。DeepSeek模型支持流式处理,这意味着它可以边计算边输出,而不必等待整个生成过程结束后再输出结果,大大缩短了用户的等待时间。通过流式输出,DeepSeek模型可以在处理过程中实时地将结果发送给小程序,小程序前端则能够立即接收到这些数据,并在视图中动态展示出来。本文中的DeepSeek模型为火山方舟(字节跳动火山引擎)中的DeepSeek大模型,当前可以免费使用。
2025-03-03 21:33:54
2910
原创 C#:MVC返回FileResult文件对象,并在VIEW视图中下载
FileResult是一个抽象类,有3个继承子类:FilePathResul、FileContentResult、FileStreamResult,表示一个文件对象,三者区别在于,FilePath 通过路径传送文件到客户端,FileContent 通过二进制数据的方式,而FileStream 是通过Stream(流)的方式来传送。Controller为这三个文件结果类型提供了一个名为File的重载方法。
2023-04-11 16:05:02
2287
原创 SqlServer中查询结果实现分页功能
SqlServer中查询结果实现分页功能,1.通过top...where ...not in条件限制;2.通过ROW_NUMBER()函数实现;3.通过offset和fetch子句实现。
2022-06-24 11:53:15
2370
原创 C#中利用NPOI包操作Excel文件
利用NPOI包可以非常方便地创建、修改导出Excel文件。下载npoi.2.5.2.nupkg及其依赖项首先需要通过NuGet管理器导入NPOI包,并且在使用前加入如下引用:using NPOI.SS.UserModel; //提供ISheet、IRow、ICell等接口using NPOI.XSSF.UserModel; //提供相关类操作扩展名为xlsx的2007之后版本Excel文件using NPOI.HSSF.UserModel; //提供相关类操作扩展名为xls的20
2022-01-07 16:23:26
1145
原创 JS动态加载JSON文件并读取数据
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它采用纯文本格式来存储和表示数据,层次结构简洁和清晰,是理想的数据交换语言。JSON类似 XML,比 XML 更小、更快,更易解析。关键词:动态加载JSON文件、读取JSON文件数据demo.json文件内容var json={"item1":"string","item2":["var1","var2","var3"]}这其实不是一个标准格式的json文件,而是在文件中自定义一
2022-01-06 22:27:17
8009
原创 C#中利用NPOI包操作Word文件
之前一直通过在VS里添加引用COM里Microsoft Word 16.0 Object Library引用,导入Microsoft.Office.Interop.Word命名空间,使用此命名空间里的相关类对Word文件进行操作。这种方法有个致命缺点,就是当电脑里未安装Word软件或者Word软件版本与引用的COM库里的版本不一致时,会导致操作Word文件失败。其实可以利用NuGet里的NPOI包来对Word文件进行操作。下载npoi.2.5.2.nupkg及其依赖项通过NuGet管理器导入NP
2021-06-21 23:45:23
7256
1
原创 C#通过写注册表设置程序随系统启动
要将编写的程序设置成随系统启动,可以通过读写注册表操作实现。有两个要注意的地方,一是要引入Microsoft.Win32这个命名空间,此空间用来提供操作注册表的类——
2021-06-11 23:23:18
869
2
原创 MVC中生成图形验证码并验证(详细)
一、思路通过Random对象生成随机数 ,通过Session对象保存生成的随机验证码,通过Graphics绘图对象在Bitmap位图上进行绘制,并将绘完的位图对象
2021-06-05 00:17:44
1877
2
原创 MVC中生成图形验证码并显示(极简)
一、控制器代码using System;using System.Drawing;using System.Drawing.Imaging;using System.IO;using System.Web.Mvc;namespace XLZXXX.Controllers { public class LoginController : Controller { public ActionResult Index(){ return V
2021-06-04 17:16:16
296
原创 使用JS判断访问设备是电脑还是手机
一、前言有时在编写前端页面视图时,需要根据用户不同的访问设备(手机或电脑)对页面设置不同显示样式或跳转到不同的页面。可以通过JS代码获取Navigator对象的userAgent属性,通过
2021-06-03 22:24:26
12835
2
转载 HTTP Content-type对照表(Mine-Type)
扩展名 Content-Type(Mime-Type) 扩展名 Content-Type(Mime-Type) 扩展名 Content-Type(Mime-Type) 0.001 application/x-001 0.301 application/x-301 0.323 ...
2021-06-02 15:45:45
492
原创 MVC中客户端向服务器端上传base64格式的图片
通过HTML中的FileReader对象将图片内容转换为base64字符串,再通过jquery.ajax将base64值传递给控制器,以达到上传文件的目的。
2021-06-02 10:52:12
469
2
原创 cropper动态裁剪图片(极简)
借助cropper插件可以很简单地实现客户端的图片自定义裁剪。cropper插件下载链接(含v1.5.11版Cropper.js、Cropper.css,以及jquery.min.js):
2021-06-02 10:14:20
537
原创 禁止对文本框内指定字符(部分内容)进行修改
在使用文本控件input和textarea时,有时想禁止对其中某些特殊文本进行编辑,比如需要由程序生成的某些自定义特殊标记[img src=...]等。可以通过文本控件的selection
2021-05-28 15:32:06
2222
原创 MVC中通过jquery实现图片预览、上传,并对文件类型、大小进行判断(极简)
一、易出错问题重要提示当直接通过提交表单数据上传文件时,文件上传控件input一定要添加name属性,并且不同的控件也要设置不同的name属性值,否则会导致控制器中的Request.Files方法获取上传文件失败。估计Request.Files方法是通过input控件的name属性来识别并区别上传文件的。一、动态增减上传控件,多文件上传视图代码@{Layout=null;}<!DOCTYPE html><html><head> <me
2021-05-27 18:26:25
505
原创 C#获取文件物理路径(绝对路径)
在WinForm窗体应用程序和Web应用程序中,为了上传文件、读取绝对路径下的文件等功能,需要获取文件的物理路径,可以使用以下这些常用方法。一、在WinForm窗体应用程序中可用以下方法获取应用程序文件所在文件夹:System.Environment.CurrentDirectory;System.IO.Directory.GetCurrentDirectory();System.Windows.Forms.Application.StartupPath;System.AppDomain
2021-05-21 23:45:02
4073
1
原创 C#中利用QRCoder包生成二维码并显示
一、通过NuGet向工程文件引入QRCoder包。当前QRCoder包的最新版本为1.4.1。如果直接通过VS软件的NuGet管理器下载QRCoder包,速度非常慢,而且很容易失败。强烈推荐通过NuGet网站使用迅雷等工具下载,在网站https://www.nuget.org/首页搜索框搜索"QRCoder",点击打开搜索到的第1条记录”QRCoder“进入详情页面,页面右侧有”Download package“下载链接,用工具下载即可。将下载的QRCoder包放入NuGet管理器设置的本地包文件夹内,
2021-05-19 16:40:03
5791
原创 使用insert语句避免向表中插入重复数据
有时向表中插入新记录时,不想插入与指定字段有重复数据的记录。如下表:序号 栏目名 1 栏目1 如果使用语句:insert into table(栏目名) values("栏目1"),则会插入重复的栏目名为“栏目1”的记录,这显然不是想要的结果,如下表:序号 栏目名 1 栏目1 2 栏目1 要避免出现这种情况,除了在数据库中创建触发器外,也可以用简单的insert语句:insert into table(栏目名) select top 1 ".
2021-05-08 10:34:13
3336
原创 格式化字符串:自定义日期格式
格式说明符 名称 说明(value.ToString("yyyy"); string.Format(“{0:yyyy-MM-dd}”,val);) d 显示月份的当前日期,以1到31之间的一个数字表示,包括1和31。如果日期只有一位数字(1-9),则它显示为一位数字。 dd 显示月份的当前日期,以1到31之间的一个数字表示,包括1和31。如果日期只有一位...
2021-05-06 17:21:36
611
原创 格式化字符串:标准日期格式
格式说明符 名称 说明(value.ToString("D"); string.Format(“{0:D}”,val);) d 短日期模式 显示由与当前线程关联的DateTimeFormatInfo.ShortDatePattern属性定义的模式或者由指定格式提供程序定义的模式。 D 长日期模式 显示由与当前线程关联的DateTi...
2021-05-06 17:19:43
396
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅