C#
文章平均质量分 60
s666666__
这个作者很懒,什么都没留下…
展开
-
未能加载文件或程序集“System...”或它的某一个依赖项。文件或目录损坏且无法读取。
未能加载文件或程序集“System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。文件或目录损坏且无法读取。原创 2022-12-30 17:19:56 · 4297 阅读 · 0 评论 -
C# 自定义通用式递归函数,实现 无限级 递归过滤 递归筛选
using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main() { // 使用递归实现:将A集合数据同步到B集合中、并实现部分排除。(类是多层嵌套的.原创 2021-01-20 21:42:21 · 557 阅读 · 0 评论 -
C# 分享一个 Oracle 批处理方法,实测批量插入 100 万条数据 用时约 6 秒
1、首先在 Oracle 数据库中新建个表用于测试使用create table table1( c_int int , c_date date , c_char varchar2(50) );2、C# 程序实现代码代码参考自博文:https://www.cnblogs.com/isline/archive/2010/08/31/1813722.htmlusing Oracle.ManagedDataAccess.Client;usin.原创 2020-12-23 11:31:15 · 4340 阅读 · 1 评论 -
分享一套更安全的 API 用户登录 明文密码加密 设计方案 (适合用于非https的场景)
1)早期登录接口一般都是采用账号+明文密码 直接发送到服务端做校验,数据库存储的是用户密码 md5 值; 此方法如果在没有用 https 的场景,很容易被抓包盗取用户密码;2)另一种方法是用户密码在本地端使用 md5 转换后、再生成一个签名同时发送到服务端做校验;(常用于端对端的 API) 此方法的好处是用户密码完全不在网络中流通,无需担心被抓包盗取用户密码; 但有个重大的弊端就是、此时数据库中存储的 md5 转换后的用户密码就形同于明文存储了; ...原创 2020-11-12 01:15:07 · 2168 阅读 · 0 评论 -
C# RabbitMQ 失败消息重新投递 设置消息投递次数与间隔时间 死信队列使用方法
1.1、了解 RabbitMQ 失败消息重新投递机制Rabbit 失败消息重新投递机制1.2、了解什么是消息确认机制MQ消息确认类似于数据库中用到的 commit 语句,用于告诉broker本条消息是被消费成功了还是失败了; 平时默认消息在被接收后就被自动确认了,需要在创建消费者时、设置 autoAck: false 即可使用手动确认模式;1.3、了解什么是死信队列死信队列是用于接收普通队列发生失败的消息,其原理与普通队列相同;> 失败消息如:被消费者拒绝的消息、TTL.原创 2020-07-30 17:52:12 · 3665 阅读 · 1 评论 -
C# 指针 内存控制 Marshal 内存数据存储原理
了解内存的原理# [内存] 是由 [Key] 和 [Value] 组成的:[Key] 是 [内存地址];(在 C# 程序中用 [IntPtr] 类型表示)[Value] 是 [内存数据];(在 C# 程序中用 [byte] 类型表示)[Key] 是一个固定32位长度的二进制数;(64位的程序则是64位长度的二进制数)[Value] 是一个固定8位长度的二进制数;(这就是计算机只能存储 0 和 1,并且最小存储单位为 byte 的原因)原创 2020-07-22 12:16:33 · 4679 阅读 · 7 评论 -
C# 多线程同步方法 之 Monitor.Wait 与 Monitor.Pulse
1、线程同步原理组成:(以单个object为准) 1、[持锁线程] = locker = 持锁中 2、[就绪队列] = ready queue = 一等队列,队列中的线程将被挂起等待,系统会自动按顺序为线程分配对象的排他锁 3、[等待队列] = wait queue = 二等队列,队列中的线程将被挂起等待,需要通过Pulse来控制向前2、Monitor 类使用说明3、测试例子 A/* /...原创 2020-06-09 20:29:31 · 917 阅读 · 0 评论 -
async await 异步方法 错误的理解与运行原理解说
1、【错误的理解】刚开始接触 async await 时还以为 async 方法与 Task 是相同原理; 且把 await 赋值方式也理解成了是异步、以为第一个await 没执行完时会继续执行下一个 await,直到后边需要用到 await 结果时才会开始等待它的返回结果; 然后 async 方法必须使用 await 进行引用、而 await 又只能在async 方法中使用,于是乎就开始了摸不着头脑地死循环。。经过后续不断地测试,发现居然完全不是自己刚开始想象的那样,哈哈!以下是总..原创 2020-05-12 17:55:13 · 711 阅读 · 0 评论 -
WebAPI 多文件批量上传,大文件上传,实现先验证文件再存磁盘
研究了几天的 WebAPI 多文件批量上传功能,也终于找到了无法先验证再存盘的解决方法,以下是本次的测试代码,希望能对大家有帮助!~ 首先上服务端多文件接收的接口代码 public class FileController : ServiceBase { /// /// 服务端文件上传接口 /// [Rou...原创 2020-03-25 01:19:24 · 1149 阅读 · 0 评论 -
MVC5 WebAPI 跨域 POST 请求失败
分享一个头疼了两天的问题哈!相信不少人都会遇到,我是在网上搜了很多解决方案都没能彻底解决;我遇到的原因是因为 MVC4 升级到 MV5 后发现原先的 POST 接口居然不能跨域了;试了很多方法,要么是 GET 请求正常了、POST 不正常,要么本地测试正常、发布到线上又异常了。最终是得感谢这篇文章呐 ^ ^:https://blog.csdn.net/jacky_zh/article/...原创 2020-03-10 21:03:10 · 904 阅读 · 0 评论 -
了解 &按位与、|按位或、^按位异或、~按位取反、按位左移、按位右移 的区别
《&逻辑与、|逻辑或、^逻辑异或、~按位取反、<<逻辑左移、>>逻辑右移 的区别》总结:都是用于二进制运算,在C#中则是将十进制数转换成二进制数再进行运算,得出二进制结果再转换成十进制数。【& 逻辑与(And)】遇0为0,全1为1 如:(0 & 0= 0)或 (0 & 1 = 0) 或 (1 & 1 = 1) 如...原创 2019-10-25 11:52:24 · 564 阅读 · 0 评论 -
了解 &和&& 与 |和|| 的区别
&&和||是用于条件判断,而&和|是位运算。· 【&】//相当于二进制减法;//计算原理:数值转成二进制 > 二进制相减(遇0为0) > 再将二进制计算结果转成数值;(1&1) = (0001 - 0001 = 0001) = 1(1&2) = (0001 - 0010 = 0000) = 0(2&2) =...原创 2017-11-23 12:47:07 · 1087 阅读 · 0 评论