使用心得
文章平均质量分 62
Johan.
关注前沿技术,并致力于开源社区与微软平台的组合优化;有多年大数据高并发实践经验、对精简代码并行程序开发、代码美感以及程序员能力修养等相关问题也有着浓厚的兴趣;
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
.NET ABP.Zero 项目疑似内存排查历程
当前项目是 .NET 5 EentityFrameworkCore,疑似内存泄漏,之所以说是疑似是因为到目前位置还没有能准确的定位到问题。当前这个框架从 .NET Core 2.1 就开始用,期间有升级到 3.1、5.0、6.0,在排查过程中还把 5.0 分支升级到了 7.0。不幸的是这些分支都存在疑似泄漏的现象。原创 2023-10-09 17:43:13 · 1133 阅读 · 0 评论 -
Nginx 部署 SSL
在 nginx 中给域名配置 HTTPS 访问实践。原创 2022-06-15 10:41:59 · 1340 阅读 · 0 评论 -
联想逸天100重装系统声音异常问题
修改“扬声器”属性中的“空间效应”为“用于耳机的 Windows Sonic”问题播放声音异常问题(图一)( 图二)事情是因为邻居老奶奶的一台笔记本电脑因为开机启动奇慢(7分钟)引起的。电脑的主要用途是看股票和下载或复制广场舞歌曲到各种U盘。初步判断是因为在复制过程中把U盘内容放到系统盘,导致系统盘可用空间不足导致的。但经过排查发现并不是。然后怀疑原装机械硬盘出现了磕碰或者年代久远已经到了使用年限。使用工具一查果然出现了一排红色...原创 2022-03-28 14:45:22 · 1220 阅读 · 0 评论 -
重装系统后通过修改注册表实现记录还原
重装系统后总是有特别多的事情需要做,其中有几项时每次必做的,正巧可以通过注册表快速实现Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\Directory\Background\ShellEx\ContextMenuHandlers\ kwpsshellext][-HKEY_CLASSES_ROOT\Directory\Background\ShellEx\ContextMenuHandlers\igfxcui][-H原创 2021-07-04 10:23:56 · 2968 阅读 · 0 评论 -
C# 验证字符串是否为 MD5
/// <summary>/// 计算文件的MD5校验/// </summary>/// <param name="fileName"></param>/// <returns></returns>public static string GetMD5HashFromFile(string fileName){...原创 2021-03-05 17:43:15 · 814 阅读 · 1 评论 -
2020阿里云免费 SSL 证书申请
进入阿里云控制台后,搜索 “SSL证书(应用安全)”,选择 ”购买证书“,既出现下面的界面。选择红框标出的项,即可完成免费 SSL 证书的创建。原创 2020-11-16 14:10:55 · 676 阅读 · 0 评论 -
重度邮箱使用整合解决方案
名下有多个邮箱,如何高效管理。解决方案:将多个邮箱设置自动转发至指定邮箱,登录这个邮箱就可以管理所有邮件。原创 2020-03-17 17:04:21 · 2222 阅读 · 0 评论 -
Linq 去重简介
ABP CLI (命令行接口) 是一个命令行工具,用来执行基于ABP解决方案的一些常见操作.InstallationABP CLI 是一个dotnet global tool. 使用命令行窗口安装:dotnet tool install -g Volo.Abp.Cli更新最新版本:dotnet tool update -g Volo.Abp.CliCommands...原创 2020-03-17 17:03:42 · 10278 阅读 · 0 评论 -
无法分配请求的地址(Cannot assign requested address)的解决方案
返回 JSON 内容{ "AccessToken": null, "IdentityToken": null, "TokenType": null, "RefreshToken": null, "ErrorDescription": null, "ExpiresIn": 0, "Raw": null, "Json": null, "Exception": { "Message": "Cannot assign requested address", "Data": {}...原创 2020-10-15 10:33:56 · 11401 阅读 · 1 评论 -
Redis 实现消息队列 .NET Core
消息队列可实现解耦/异构系统Redis 实例化,也可使用单例实例化var _redisClient = ConnectionMultiplexer.Connect(appConfiguration["Abp:RedisCache:ConnectionString"]);var sub = _redisClient.GetSubscriber();发布消息:传递的消息是 string 类型,可以将各种实体或集合序列化后传递。sub.PublishAsync("spd.qd.proj.原创 2020-08-20 16:08:21 · 2363 阅读 · 0 评论 -
ABP 如何查询出软删除(SoftDelete)数据
介绍ABP本身是一个包含许多nuget包的模块化框架。它还提供了一个完整的基础架构来开发你自己的具有实体、服务、数据库集成、 API、UI组件等等功能的应用程序模块。模块类每个模块都应该定义一个模块类.定义模块类的最简单方法是创建一个派生自AbpModule的类,如下所示:public class BlogModule : AbpModule{ }配置依赖注入和其他模块ConfigureServices方法ConfigureServices是将你原创 2020-05-11 16:42:00 · 1315 阅读 · 1 评论 -
ABP 在 EntityFramework 中使用扩展批量更新时的异常
报错信息:Invalid Cast. The update expression must be of type MemberInitExpression.直译结果:无效的。更新表达式必须是MemberInitExpression类型。下面是报错对应的写法:await projectsRepository.BatchUpdateAsync(x => new Projects(2...原创 2020-06-16 11:01:08 · 1773 阅读 · 1 评论 -
Angular/Vue 部署 IIS 刷新 404 的解决方案
在 Angular 或 Vue 部署到 IIS 上会遇到的问题,不能刷新,一刷新就会出现404,其原因就是自定义路由,下面我们来将这个问题解决。1.从 IIS “获取新的 Web 平台组件”2.进入 iis.net 官方网站去下载WebPlatformInstaller_x64_en-US.msi 扩展程序。整个安装过程只需要点 Install 即可,无需配置。3.再次点击“...原创 2020-01-08 19:33:35 · 12792 阅读 · 0 评论 -
解读 ABP RandomHelper 内部实现源码
ABP 源码中存在一个对随机值 Random 的封装帮助类,可以帮助用户快速获取随机数,并且该类是以单例模式封装,还可以提升复用率以及性能。下面我们来解读下 RandomHelper 类的具体实现。1.首先声明静态只读 Random (单例)private static readonly Random Rnd = new Random();2.通过传入最小最大值取随机整数,不得不佩服...原创 2019-06-26 15:09:26 · 4446 阅读 · 0 评论 -
C#中实现IP地址的排序
这一切的开始要从同事手中的一个医疗项目开始。 早上一到公司,就看到同事跟数据库连接干上了。要处理的问题是判断网络是否连通。因为如果你不去判断的话,系统只会提示说"sa"登录失败,却不告诉你是因为网络的原因,这会让人相当的郁闷。 我们的客户可不喜欢看到这样"不明不白"的错误,于是我们要做的就是帮他"翻译"过来,让他们知道是因为你们的网络不通,先找网管来检查网络...原创 2010-11-01 16:51:00 · 28567 阅读 · 0 评论 -
Volo.Abp 整合 WebApiClient 从请求中获取 Headers 信息
当前有这样一个场景,需要对外提供接口,而这个接口里面可以不写做具体的逻辑,转手调用别的接口,并将请求该接口的 Headers 与数据一起转发,流程如图:如图所示 API Service 接收统一接收请求,但并不处理请求,仅仅只做转发。最终处理请求的是 Other Service。接下来是通过 WebApiClient 快速定义转发接口:namespace ARchGL.Platfor...原创 2019-12-31 10:39:19 · 3226 阅读 · 1 评论 -
C# 调用WinRar执行rar、zip压缩
先来简单说说压缩文件的好处,既然要用到那还是知道点好。1、节约硬盘资源,方便管理 下面的代码所执行的压缩是存储压缩, 对于文件的大小控制的不是那么严格, 但是对于节约硬盘资源的原理是从磁盘的扇区角度上来说的。2、便于传输 大家都知道用QQ或其他工具传输资源时, 压缩文件明显要快些。 由于文...原创 2012-12-02 15:48:50 · 50535 阅读 · 2 评论 -
基于《如何移动 nuget 缓存文件夹》文章的实践
本文是基于《如何移动 nuget 缓存文件夹》文章的实践该文章详细讲解了如何将C:\Users\Administrator\.nuget 目录下的 packages 文件夹转移到其他路径。本文实践文章中“修改链接”并成功解决问题。下面是实现步骤:1.定位系统盘 .nuget/packages 文件夹位置,通常在C:\Users\当前登录用户\.nuget;2.将文件夹复制到系统盘以...原创 2019-12-20 11:49:40 · 20721 阅读 · 0 评论 -
正确规避容器自动回收释放资源
场景:服务发布至容器成功运行起来,多一段时间再访问时可能会出现服务已被回收,导致服务停止。场景分析:假设我们的目标是希望服务可以持续运行不中断。这里我们用 IIS 举例,在 IIS 中有两参数会触发回收导致场景。“固定时间间隔(分钟)” 与 ”闲置超时(分钟)“。固定时间间隔(分钟):超过设置的时间后,应用程序池回收,为0时应用程序池不会按固定间隔回收。系统默认设置时间是1740(29小时...原创 2019-12-11 11:09:27 · 7315 阅读 · 0 评论 -
入门系列-依赖注入
依赖注入ABP的依赖注入系统是基于Microsoft的依赖注入扩展库(Microsoft.Extensions.DependencyInjection nuget包)开发的.因此,它的文档在ABP中也是有效的.模块化由于ABP是一个模块化框架,因此每个模块都定义它自己的服务并在它自己的单独模块类中通过依赖注入进行注册.例:public class BlogModule : Abp...原创 2019-12-05 17:35:22 · 4466 阅读 · 0 评论 -
GIT 常用操作与可视化软件Sourcetree
必要条件准备,环境与账号1.从官网下载与系统对应的GIT客户端2.在GIT开放平台注册账号(可选:GitHub,GitLab,码云或自建仓库)3.连接到远程仓库(克隆/Clone)HTTPS 与 SSH 可选git init 初始化仓库git remote add origin url 链接远程仓库git fetch ...原创 2019-11-06 12:01:13 · 6291 阅读 · 0 评论 -
智慧工地对接-视频从云平台上获取数据至本地
1.从萤石开放平台“我的应用”中获取 AppKey 和 Secret 用于从接口获取 AccessToken 用来访问接口;2.阅读萤石开放平台介绍文档,目前主要用到下面几个接口。其他按实际需求从文档中获取;1./api/lapp/token/get 获取萤石 AccessToken2./api/lapp/device/list ...原创 2019-11-21 19:00:22 · 16130 阅读 · 2 评论 -
.NET Core/C# 对接成都智慧工地《建筑垃圾运渣车辆视频监控系统》
1.首先从运渣车识别对接QQ群下载并阅读成都市智慧工地建筑垃圾运渣车辆在线视频监控系统接口及功能要求说明书文档里面只有两个接口,一个获取授权设备列表。另一个是上传识别数据。下面是对接过程中遇到的问题以及解决方案。对接完成后,还需要从现场设备获取数据上传至建委,并且识别错误率不超过10%,就算拿到资质了。2.从群里负责人获取测试账号(appKey,appSecret),并把自己的设备序列...原创 2019-11-15 12:07:33 · 3743 阅读 · 0 评论 -
ABP 使用 IShouldNormalize 完成缺省值初始化
在 ABP 中有一个IShouldNormalize 接口,内部只有一个方法Normalize。主要场景用于 Dtonamespace Abp.Runtime.Validation{ // // 摘要: // This interface is used to normalize inputs before method execution. /...原创 2019-04-25 19:58:57 · 4684 阅读 · 0 评论 -
微软验证码项目 Captcha Code Demo 从 .NET Core 1.1.2升级到2.1.0
How to make and use captcha code in ASP.NET Core在ASP.NET Core 中如何实现 captcha 验证码这个 Demo 是在微软 msdn 中找到的,早期 2017年6月30日发布。发现它的时候是 2019年10月30日。这时候 .NET Core 版本 3.0 已发布。Visual Studio 2019 也已经自动更新至 16...原创 2019-10-30 15:03:50 · 14304 阅读 · 0 评论 -
海康设备如何接入萤石开放平台
最近在一个项目中,需要海康的视频设备接入到萤石云,然后将视频信号给出去可以看直播。下面就是将设备在接入的流程。1.准备一根双绞线(一头568A,一头568B),用于连接设备修改 IP 地址将设备接入局域网(也可以使用路由器解决第一次组网)检查本机 IP 段(ipconfig /all)2.使用 IE 浏览器进入设备(地址在说明书上有)进入 网络->基本配置->TCP/I...原创 2019-10-24 09:07:04 · 30030 阅读 · 8 评论 -
ABP 启用多租户实现数据隔离
多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。 多租户简单来说是指一个单独的实例可以为多个组织服务。多租户技术为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。一个支持多租...原创 2019-10-16 15:46:14 · 4217 阅读 · 0 评论 -
ABP 内置 NameValue 对象
这个类的最主要作用就是节约一个类,其他没发现有什么特别的。而且像 键/值 队的这种场景也确实却在一些。using System;namespace Abp{ /// <summary> /// Can be used to store Name/Value (or Key/Value) pairs. /// </summary> ...原创 2019-08-20 19:23:23 · 5299 阅读 · 0 评论 -
.NET Core 深度克隆对象,引用类型的平行世界
当我们需要将一个引用类型对象独立出来与原来的引用完全撇清关系时,可以使用这个方法。/// <summary>/// 克隆一个对象/// </summary>/// <typeparam name="T"></typeparam>/// <param name="source"></param>/// <r...原创 2019-10-08 09:20:05 · 7966 阅读 · 0 评论 -
详解 .NET Core 遍历 List 并移除项
赶时间,请直接看最后在开发过程中时常会遇到需要遍历集合并移除指定项的场景,我们用不同方法来尝试获得我们希望的结果。首先声明将要用到的 list 对象。var list = new List<string>() { "Item1", "Item2", "Item3", "Item3-1", "Item3-2" };方法1:很大可能性会这些写,下面的代码看起来完全没问题,...原创 2019-10-02 12:19:54 · 18454 阅读 · 0 评论 -
Navicat 修改连接地址后,如何找回保存的查询记录
这个问题遇到过几次,因为各种原因数据库迁移或者数据库地址变更后,导致之前写的 SQL 语句没有了(其实是没有和新地址自动关联),这次决定将解决方案记录下来,供后来的人参考。1.原理;在 Navicat 默认会在我的文档中创建一个“Navicat”文件夹,里面会生成对应的以数据库名称命名的文件夹,下图进入 PostgreSQL 文件去看看可以看到,当前已连接的 Postgre...原创 2019-09-24 16:09:33 · 8078 阅读 · 0 评论 -
深入浅出-应用程序启动模板
报错信息:Invalid Cast. The update expression must be of type MemberInitExpression.直译结果:无效的。更新表达式必须是MemberInitExpression类型。下面是报错对应的写法:await projectsRepository.BatchUpdateAsync(x => new Projects(2...原创 2019-09-18 10:42:55 · 3168 阅读 · 0 评论 -
.NET Core 在 Visual Studio 中“目标框架”灰色不能显示的原因(一)
项目是从 .NET Core 比较早的版本升级过来的。很长一段时间在项目右键 -> 属性都看不了目标框架,就像下图:当前 IDE 环境Visual Studio 2019,最开始以为是 VS 版本不稳定导致的,升级几次后依然如此,并且新创建的项目“目标框架”版本可以正常显示。期间也尝试找过几次原因,但是完全没头绪,不知从何下手。直到今天终于解决了。下面是解决后显示出来的截图:...原创 2019-09-12 15:17:56 · 13887 阅读 · 3 评论 -
ABP 接口返回 An internal error occurred during your request
在 ABP 开发过程中,这个错误是必然会遇到。该错误的中文版“对不起,在处理您的请求期间,产生了一个服务器内部错误”这是系统在发生没有处理的内部错误时抛出的默认错误信息,其目的是友好的向用户展示异常信息,避免看到一堆报错懵逼。开发人员发现这样的错误时,就去分析日志来定位并解决问题。日志文件一般在 Host/logs 目录下的 *.txt 文件里。时常遇到有人问怎么将错误信息...原创 2019-09-04 16:34:52 · 10599 阅读 · 0 评论 -
Postgresql 字符串截取
在一次数据迁移中,遇到的一个场景。需要从一串 JSON 中提取其中一段字符串。在 Bing 上搜索发现很少在 Postgresql 中用到字符串截取的。下面是解决的方法,不一定好,但恰好可以解决问题。JSON 字符串'{"item":{"id":"c0540d7e-bedb-4521-b2b1-401d099575d1","name":"这时一张图片.jpg","path":"5cb...原创 2019-08-27 16:26:23 · 7334 阅读 · 0 评论 -
ABP 中“To”方法使用解析(类型转换公共方法)
To 方法内部实现是类型转换的一个扩展方法。该方法封装精妙,可以替代曾今封装过的一组ToInt32 / ToGuid / ToDateTime 。。。该方法命名空间:using Abp.Extensions;/// <summary>/// Converts given object to a value or enum type using <see cref="...原创 2019-08-13 10:28:05 · 7204 阅读 · 0 评论 -
C# Split 方法扩展支持双引号
public static string[] Split(this string source, string str){ var list = new List<string>(); while (true) { var index = source.IndexOf(str); if (index < 0) { lis...原创 2019-02-11 10:22:30 · 2596 阅读 · 1 评论 -
ABP 扩展 OrganizationUnit 数据实体(新增字段)
OrganizationUnit 数据实体因为没有abstract,相比Role 加字段有点些不一样的地方,下面是实现步骤:1.新增OrganizationUnitExtend并继承Abp.Organizations.OrganizationUnit2.【重点】重新迁移,并修改AbpOrganizationUnits 迁移生成后的代码,修改的主要原因是设置 【Discrim...原创 2019-03-11 10:58:38 · 4431 阅读 · 0 评论 -
C# 获取枚举集合的其中两种方式
可能会在下面的场景中需要循环枚举值1、为方便前端展示,将返回的数据集合中的枚举名称显示出来。这样前端不需要做任何处理,直接展示即可。2、向前端输出枚举集合,用于数据筛选,并且前端不需要维护这些集合。后端有修改也不需要通知前端。方式一:var dict = new Dictionary<int, string>();var values = Enum.GetValue...原创 2019-03-15 10:08:35 · 4776 阅读 · 0 评论 -
ABP 调用 PUT 接口报错 405 Method Not Allowed
返回结果为: <h3>HTTP 错误 405.0 - Method Not Allowed</h3> <h4>无法显示您正在查找的页面,因为使用了无效方法(HTTP 谓词)。</h4> 经过在一番搜索,发现问题出在 IIS 设置上。下面通过设置允许 PUT 请求通过:第一步:删除 IIS 中“WebDAV 发布”功能。...原创 2019-03-04 15:26:29 · 4646 阅读 · 0 评论
分享