C#
或与且与或非
如果只是向往,远方依旧还是远方
展开
-
.net Framework 4.6 WebAPI 使用Hangfire
在业务中常常遇到需要在后台定时执行的业务,例如:库存同步、数据定时推送拉取等,目前较为成熟的定时任务插件主要有hangfire,Quartz;这里我们就选择hangfire,选择它的原因主要是因为它自带了控制面板,单它也有缺点它不支持秒级定时。这里举例的业务主要是做库存同步,不需要精确到秒级。下面咱们就来看看怎么实现吧。以上就是我对Hangfire的简单使用,至此结束,有任何疑问欢迎评论区探讨,上述教程如果有错误的地方也请各位大佬指正,以免误人子弟。原创 2024-09-27 17:00:26 · 930 阅读 · 0 评论 -
C#加密与java 互通
在我们对接其他公司接口的时候,时常会出现对方使用的开发语言和我方使用的开发语言不同的情况,因为每个语言之间都会有些许差别,在进行加密签名中就会出现签名一直对接不上的问题,下面我就来和各位分享一下我所遇到的问题以及解决方案。原创 2024-05-30 11:41:20 · 920 阅读 · 0 评论 -
对外开放接口的Appkey和Secret应该如何设置?
123456 MD5加密后就生成了32位或者64位的字符串,再将其拆分为若干段,例如拆分成三段,每段有多少个,然后生成一个2000随机乱码字符串中,将secret 插入到2000个字符串中的固定位置,然后检查乱码字符串长度是否附后,然后substring拆你要的加密字符串,然后解密出来看是否能得到原来的明文。在对外开放接口的设计中应该要考虑到接口的安全性和可扩展性。App secret:的意思为“私匙”,简称api接口密钥,是跟app key配套使用的,可以简单理解成是密码,它是微信公众平台服务号才有的。原创 2024-03-25 10:46:46 · 1508 阅读 · 0 评论 -
.Net Core 中间件验签
为什么要用中间件验签,而不是筛选器去验签?1、根据上图我们可以看到,中间件在筛选器之前,而筛选往下就是我们写业务逻辑代码的控制器了。这就大大增加了我们被攻击的风险。2、用筛选器我们需要在每个控制器上都添加相应的标识,如果需要校验的sign的控制器多的话,就增加了很多不必要的工作量,和风险,如果某个控制器一时疏忽忘记加筛选器的话就有可能会被攻击。筛选器一般都是当数据得到信任的时候做验证,例如用户登录了,做功能的权限判定,中间件判定非信任数据。原创 2024-03-13 09:10:19 · 884 阅读 · 0 评论 -
领域驱动设计应用之WebAPI
随着技术的不断迭代升级,设计方式也在不断迭代更新,目前比较流行的就是领域驱动设计的方式来开发程序,领域驱动设计相对于传统设计模式的有点在于:1、更好地理解业务需求。2、更好的设计质量。3、更好的团队协作。4、更好的的业务创新。从这里就可以体现出领域驱动设计的效果了,商品领域的请求和返回只会用到它自己领域的东西。这也很好的避免了传统设计方式会出现的代码冗余问题。也可以方便后期维护,需要修改那个领域就可以很快的找到相关的代码。原创 2024-01-13 15:41:41 · 1087 阅读 · 0 评论 -
C#百万数据处理
这里我给大家带来一个我自己所经历的百万数据处理案例,该案例中会拿优化前和优化后的代码进行对比,让大家更直观的感受优化给项目带来的效率提升。该项目优化用到了:线程同步,多线程,sqlSugar,异步,委托等知识。以上就是我个人所经历的大数据处理,虽然优化的并不算完美但是还是总结出了不少经验,也从中学习到了很多,比如,单线程和多线程的运用以及委托和线程同步等知识。原创 2023-07-30 13:10:58 · 1036 阅读 · 0 评论 -
C#多线程
随着业务的不断发展,程序的数据处理量需求也越来越高,例如,电商项目中的库存同步,和商品信息拉取等,一个门店都是几千个品种,每个品种都有几十甚至上百的的批次,如果是个连锁有一万家门店,那么这种情况库存同步如果用单线程处理的话效率是极其低的,同步几天都同步不完,接下来就该利用多线程来优化了。协程,英文名是 Coroutine, 又称为微线程,是一种用户态的轻量级线程。协程不像线程和进程那样,需要进行系统内核上的上下文切换,协程的上下文切换是由程序员决定的。原创 2023-07-27 14:30:40 · 821 阅读 · 0 评论 -
C# 生成校验解析token
C# 生成校验解析token方式1方式3转载自 https://www.cnblogs.com/fanfan-90/p/12911203.html重要对象JwtSecurityToken:代表一个jwt token,可以直接用此对象生成token字符串,也可以使用token字符串创建此对象SecurityToken:JwtSecurityToken的基类,包含基础数据JwtSecurityTokenHandler:创建、校验token,返回ClaimsPrincipal CanReadTok转载 2020-09-24 09:50:38 · 9201 阅读 · 1 评论 -
DataTable数据对比
开发中我们经常会出现查询数据库后返回DataTable的情况,那么DataTable中常用的一些操作阁下又了解多少呢,例如:两个结构不同DataTable怎么找出他们俩之间的交集和差集。原创 2023-07-19 17:16:13 · 2221 阅读 · 2 评论 -
【C#优雅的合并两个DataTable】
这里我们只利用.Net 的LINQ语句进行的Join查询,当数据量过大是会明显的比用for循环拼接快得多。原创 2023-04-03 21:37:15 · 4915 阅读 · 1 评论 -
两个List集合做数据对比
随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。比如集合A和集合B,A和B的差集就是A集合中有的而B集合没有的,也就是灰色的部分。集合A和B共有的数据,也就是图中灰色部分A和B的数据合并在一起的值,也就是灰色范围的值。原创 2023-03-21 14:36:44 · 5760 阅读 · 0 评论 -
vs2022使用单元测试
点击上方工具栏的扩展选择管理扩展选择联机 搜索mstest点击MSTest v2 Template注意安装的时候需要关闭 vs。原创 2022-12-30 15:47:42 · 3781 阅读 · 0 评论 -
对接API模型创建
这里继承的父类就是上面我们提取出公共属性的model.这里重写了父类的URL这种方式只需要在父类写一次验签方法就可以了,增加代码的复用率同时实现高内聚方便后期维护.//子类自己的属性 public string order_id {get;set;} //重写父类URL属性 protected override string Url {get {} } }//这里如果有其他单独属于这一个模块的属性可以写在这里 }原创 2022-12-29 14:08:35 · 486 阅读 · 0 评论 -
C#计算两地点最近直线距离
C# 不通过第三方接口获取两个地址的直线距离原创 2022-11-02 16:41:01 · 502 阅读 · 0 评论 -
Redis实现队列
本文介绍如何使用reids实现队列,并利用多线程处理redis队列中的数据原创 2022-09-22 10:42:32 · 665 阅读 · 0 评论 -
LRU缓存机制
计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。那么,什么样的数据,我们判定为「有用的」的数据呢?LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。常见的场景如手机的后台运行缓存,我们依次打开了[王者荣耀] [淘宝] [微信] [抖音],假设手机只允许同时打开个应用程序,那么在我们打开抖音的那一刻,就会将最久未使用的 [王者荣耀] 关闭,腾出空间给 抖音。原创 2022-09-07 17:12:48 · 1166 阅读 · 0 评论 -
数据结构之双向链表
系统开发时缓存的LRU算法就是双向链表的运用场景之一。原创 2022-09-07 16:43:28 · 587 阅读 · 0 评论 -
数据结构之单向链表
链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。例如展示职工信息的时候,按照编号进行递增排序,或者在某些数据进行在后台处理进行排序的时候可以使用链表,例如名次排列,成绩排列等。原创 2022-09-07 15:20:38 · 248 阅读 · 0 评论 -
C#代码生成器打包
鲁迅又说过:写得再好的代码,不会打包,那有屁用。原创 2022-08-28 23:24:38 · 473 阅读 · 0 评论 -
C#调试代码生成器
在上一篇文章中我们讲解了如果使用代码生成器,那么如何调试它呢,下面我就来教大家如何去调试代码生成器。这个顺序是不固定的,你们在调试的时候要注意看这两条提示信息。一般我们都是选中在当前实例中进行调试,比较方便一点。第二个选中的意思是在当前实例中进行调试。第一个选项的意思是去新实例中进行调试。此时会弹出一个提示框。.........原创 2022-08-28 15:35:29 · 503 阅读 · 0 评论 -
C#代码生成器
鲁迅说过:成熟的平台就要学会自己写代码孩子你还在每天写着重复的代码吗?还在做着重复的增删改查吗?out啦,今天不要998!不要888!免费白嫖带回家。友情提示:以下是本篇文章正文内容,下面案例可供参考这里只是展示了基本的用法,运营场景很多。需要只要合理的运用就能给你带来极大的收获。让你拥有更多的摸鱼时间。...原创 2022-08-28 04:07:02 · 3495 阅读 · 0 评论 -
阿里官方 Redis 开发规范
本文主要介绍在使用阿里云 Redis 的开发规范,从下面几个方面进行说明。通过本文的介绍可以减少使用 Redis 过程带来的问题。原创 2022-08-26 15:54:52 · 148 阅读 · 0 评论 -
C#动态拼接lambda表达式
C#实现动态拼接lambda表达式原创 2022-08-17 14:58:13 · 1083 阅读 · 0 评论 -
C# Newtonsoft.Json 高级用法
实体中定义的属性名可能不是自己想要的名称,但是又不能更改实体定义,这个时候可以自定义序列化字段名称。get;set;}(get;set;}=get;set;}"CName")get;set;}默认情况下对于实体里面的枚举类型系统是格式化成改枚举对应的整型数值,那如果需要格式化成枚举对应的字符怎么处理呢?Newtonsoft.Json也帮我们想到了这点,下面看实例现在改造一下,输出"Type"“Mail”get;set;arrBString="是,否".Split(',')...原创 2022-07-22 15:56:53 · 6389 阅读 · 0 评论 -
C#托管资源和非托管资源
托管资源一般是指被CLR控制的内存资源,这些资源的管理可以由CLR来控制,例如程序中分配的对象,作用域内的变量等。原创 2022-07-17 20:58:29 · 803 阅读 · 0 评论 -
layuitable设置默认选中
layuiTable设置默认选中某列原创 2022-06-14 16:48:13 · 2995 阅读 · 1 评论 -
C# Dapper帮助类
C# dapper帮助类原创 2022-06-13 16:24:34 · 1329 阅读 · 0 评论 -
Sqlsugar帮助类
C# sqlsugar帮助类原创 2022-06-09 17:36:01 · 4678 阅读 · 11 评论 -
Sqlserver存储过程根据表创建C#实体
sqlserver利用存储过程将表内字段和相关描述生成一个C#实体原创 2022-06-02 16:23:21 · 183 阅读 · 0 评论 -
C#性能优化
垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。如果对象并不会随每次循环而改变状态,那么在循环中反复创建对象将带来性能损耗。高效的做法是将对象提到循环外面创建。如果对象只在某些逻辑分支中才被用到,那么应只在该逻辑分支中创建对象。程序中不应出现如 new Decimal(0) 之类的代码,这会导致小对象频繁创建及回收,正确的做法是使用Decimal.原创 2022-06-01 09:15:51 · 1597 阅读 · 0 评论 -
C# DateTime.Tostring()格式
C# DateTime.Tostring()格式string dateTime1 = DateTime.Now.ToString("D"); Console.WriteLine(dateTime1);//2022年2月24日 string dateTime2 = DateTime.Now.ToString("d"); Console.WriteLine(dateTime2);//2022/2/24原创 2022-05-26 16:46:38 · 2311 阅读 · 1 评论 -
C# List对象数组合并
C# List对象数组合并(实现合并发货)这里是测试用的model。 public class TestModel: TestModel2 { public string UserName { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } public string Address3 { get; set;原创 2022-05-18 14:23:23 · 3465 阅读 · 0 评论 -
C#高德地图坐标和百度坐标互相转换
C#高德地图坐标和百度坐标互相转换public class CoordinateConvert { private static double xPi = 3.14159265358979324 * 3000.0 / 180.0; public static readonly int MULTIPLE_LEVEL = 1000000; private CoordinateConvert() { }原创 2022-05-18 09:09:42 · 905 阅读 · 0 评论 -
给枚举设置特性
给枚举设置特性定义特性 [AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field, AllowMultiple = false, Inherited = false)] public class MemberStrAttribute : Attribute { public MemberStrAttribute(string str) { MemberStr = s原创 2022-05-12 16:02:20 · 215 阅读 · 0 评论 -
WebAPI接口对接
WebAPI接口对接:提示:此片文章是总结接口对接经验其中包括模型的建立以及统一的调用学习内容:数据对象模型的建立如何规范定义模型统一的请求方法数据对象的建立接口的数据传输对象包括Request对象和Response对象每一个接口都单独建立一个文件夹规范定义模型定义一个统一的父类(这是Request的统一父类)GetApi方法是用于获取接口请求路径用的这里是Response的父类,父类中又接口的公用属性,每个接口返回都又这些参数。接下来我们来看一个接原创 2022-04-29 09:28:33 · 1642 阅读 · 0 评论 -
websocket发布后连不上服务器
websocket发布后连不上服务器1、检查IIS是否支持WebSocket 像 IIS7就不支持webSocket ,如果支持也要检查WebSocket服务是否安装具体安装教程如下方法一:通过“管理”菜单或“服务器管理器”中的链接使用“添加角色和功能”向导。选择“基于角色或基于功能的安装”。 选择“下一步” 。选择适当的服务器(默认情况下选择本地服务器)。 选择“下一步” 。在“角色”树中展开“Web 服务器 (IIS)”、然后依次展开“Web 服务器”和“应用程序开发” 。选择“WebS原创 2022-04-25 20:48:51 · 5772 阅读 · 0 评论 -
C# 异步IO
异步IO首先IO是什么?IO:是input和output 的缩写,就是输入和输出那异步IO又是什么?程序不因为IO调用而被阻塞,就可以说程序是异步的。异步IO的好处:如果IO请求需要大量时间执行的话,异步文件IO方式可以显著提高效率,因为在线程等待的这段时间内,CPU将会调度其他线程进行执行,如果没有其他线程需要执行的话,这段时间将会浪费掉(可能会调度操作系统的零页线程)。什么情况不应该使用异步IO?IO请求操作很快的时候C# 中异步IO的使用1.异步写文件:原创 2022-03-08 14:40:05 · 1163 阅读 · 0 评论 -
序列化忽略空值
序列化时忽略空值var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };var json = JsonConvert.SerializeObject(t,Formatting.Indented ,jsonSetting);原创 2022-03-01 11:06:27 · 888 阅读 · 0 评论 -
C# System.Guid.NewGuid()格式化
C# System.Guid.NewGuid()格式化概念GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如如注册表项、类及接口标识、数据转载 2020-08-13 09:14:42 · 2068 阅读 · 0 评论 -
RSA加密
RAS加密背景介绍:在对接京东VOP的接口时使用他们的sdk,由于他们后台是用的Java我方后台用的是.net 不管我们怎么用RSA加密都对不上。之后在网上找了半天都没有找到,之后突然想到可能是因为两种语言加密底层是不一样的导致的。C# 使用下面的这种加密规则就和java的加密对上了 /// <summary>用私钥给数据进行RSA加密 /// /// </summary> /// <param name="xmlPr原创 2021-12-09 11:45:40 · 496 阅读 · 0 评论