![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ASP-Net
双叶红于二月花
做好每一件事
展开
-
.netcore 动态组装表达式目录树查询条件内存泄漏问题处理
1.以下代码存在内存泄漏(注意:该代码只有结合EF使用才会存在)// 组装表达式目录树 Type type = = repositoryEntity.GetType(); ParameterExpression parameterExpression = Expression.Parameter(type, "t"); // 生成条件表达式 BinaryExpression原创 2022-02-11 16:01:28 · 609 阅读 · 0 评论 -
使用Redis实现简单的秒杀功能
首先了解一点程序会出现并发,但是redis不会因为它是单线程的!using ServiceStack.Redis;using System;using System.Threading.Tasks;namespace ConsoleRedis{ class Program { /// <summary> /// 秒杀是否结束 /// </summary> private static bo原创 2020-06-02 16:46:31 · 429 阅读 · 1 评论 -
linq笔记
namespace ConsoleTask.Linq{ public class Racer : IComparable<Racer>, IFormattable { public string FirstName { get; set; } public string LastName { get; set; } p...原创 2019-10-30 16:25:26 · 485 阅读 · 0 评论 -
数据流(并行转化数据)
static IEnumerable<string> GetFileNames(string path) { foreach (var fileName in Directory.EnumerateFiles(path, "*.txt")) { yield return fileName;...原创 2019-03-12 15:36:35 · 267 阅读 · 0 评论 -
Timer计时器
使用计时器,可以重复调用方法。使用System.Threading.Timer类,可以把要调用的方法作为构造函数的第一个参数传递。这个方法必须满足TimeCallback委托的要求,该委托定义一个Void返回类型和一个object参数。通过第二个参数,可以传递任意对象,用回调方法中的object参数接收对应的对象。例如,可以传递Event对象,向调用者发送信号。第三个参数指定第一次调用回调方法时的...原创 2019-01-18 17:13:04 · 762 阅读 · 0 评论 -
同步任务七
ReadWriterLockSlim类为了使锁定机制允许锁定多个读取器(而不是一个写入器)访问某个资源,可以使用ReadWriteLockSlim类。这个类提供了一个锁定功能,如果没有写入器锁定资源,就允许多个读取器访问资源,但只能有一个写入器锁定该资源。阻塞的EnterReadLock()和不阻塞的TryEnterReadLock()方法来获取读取锁;阻塞的EnterWriteLoc...原创 2019-01-18 17:01:31 · 154 阅读 · 0 评论 -
同步任务六
Barrier类:对于同步,Barrier类非常适用于其中工作有多个任务分支且以后又需要合并工作的情况。Barrier类用于需要同步的参与者。激活一个任务时,就可以动态地添加其他参与者,例如,从父任务中创建子任务。参与者在继续之前,可以等待所有其他参与者完成其工作。 static void Main(string[] args) { ...原创 2019-01-18 16:34:49 · 147 阅读 · 0 评论 -
动态实例化类型并用反射API和动态类型调用成员
动态的实例化首先要创建实例:接下来我们创建一个类库,并定义一个实力类namespace CalculatorLib{ public class Calculator { public double Add(double x, double y) => x + y; public double Subtract(double x, d...原创 2019-01-07 15:25:24 · 208 阅读 · 0 评论 -
Table和List通过反射类型相互转化
/// <summary> /// Datatable向list之间的转化 /// </summary> /// <typeparam name="T">泛型类</typeparam> /// <param name="dt">数据源<原创 2019-01-12 11:43:26 · 169 阅读 · 0 评论 -
自定义特性
1.指定AttributeUsage特性特性(attribute)类本身用一个特性——System.AttributeUsage特性来标记。AttributeUsage主要用于标识自定义特性可以应用到哪些类型的程序元素上。这些信息由它的第一参数给出,改参数是必选的,其类型是枚举类型的AttributeTargets。AttributeTargets枚举的成员如下:All,Assembl...原创 2019-01-07 11:01:07 · 509 阅读 · 0 评论 -
任务同步二
Monitor类主要优点:可以添加一个等待被锁定的超时值。这样就不会无限期的等待被锁定。 public void MonitorTryEnter() { bool flag = false; Monitor.TryEnter(_syncRoot, 500, ref flag); if (fl...原创 2019-01-17 14:13:06 · 203 阅读 · 0 评论 -
数据并行
Parallel类是对线程的一个很好的抽象,提供了任务和数据的并行性。提供了三个方法Parallel.For()、Parallel.ForEach()和Parallel.Invoke()方法。Parallel.Invoke用于任务的并行性,而Parallel.ForEach用于数据并行性。下面看案例: private static void Log(string pr...原创 2019-01-14 08:48:53 · 538 阅读 · 0 评论 -
任务
任务(Task)表示完成的某个工作单元。这个工作单元可以在单独的线程中运行,也可以以同步的方式启动一个任务,这需要等待主调线程。使用任务不仅可以获得一个抽象层,还可以对底层线程进行很多控制。具体场景:在安排需要完成的工作时,任务提供了非常强大的灵活性。如,可以定义一个连续的工作——在一个任务完成后该执行什么工作。这可以任务成功与否来区分。另外,还可以在层次结构中安排任务。例如,父任务可以创建新...原创 2019-01-14 13:03:14 · 247 阅读 · 0 评论 -
任务同步一
首先要避免同步,最好是不要在线程之间共享数据。如果必须要共享数据,就需要用到同步技术。使用线程容易出现的两个问题:争用条件和死锁。如果两个或多个线程访问相同的对象,并且对共享状态的访问没有同步,就会出现争用条件。如下案例,执行会出现征用条件的程序断言 public class StateObject { private int _state = 5;...原创 2019-01-16 16:02:07 · 239 阅读 · 0 评论 -
C#加密数据
一些机密的数据应得到保护,可以用对称或不对称秘钥来机密这些数据。通过对称密钥,可以使用同一个密钥加密解密。与不对称密钥的加密相比,加密和解密使用不同的密钥:公钥/私钥。如果使用一个公钥进行加密,就应该使用对应的私钥进行解密,而不是使用公钥解密。同样,如果使用一个私钥加密,就应该使用对应的公钥解密,而不是使用私钥解密。不可能从私钥中计算出公钥,也不可能从公钥中计算出私钥。涉及案例如下...原创 2019-02-01 16:21:47 · 580 阅读 · 0 评论 -
.net 将Swagger接口文档导出Word
一.首先你的项目中要有Swagger这个接口请求文档,具体使用可参考我的博文中Swagger使用说明。二.需要了解生成Swagger的UI页面是通过http://localhost:51974/swagger/docs/v1类似这样的请求接口返回的值填充的UI页面;知道了是Swagger页面是通过调用接口来填充信息,那就好办了,我们可以直接取到这个接口的JSON数据,然后我们进行自己需...原创 2019-10-11 17:40:25 · 3667 阅读 · 4 评论 -
C#封装DLL引用(仅显示类文件DLL文件,相关辅助第三方DLL文件不进行生成)
如果大家平时生成项目的时候,应该会了解,生成类框架的时候,不仅会生成自身的类包DLL文件,引用其他的第三方DLL或从nuget包管理器中下载的DLL文件都会编译出来。对于封装成DLL文件给到其他项目使用不是很友好,还很麻烦,每次引用总是要添加许多DLL文件进去。综上的解决方式如下:这是CSDN的帮助说明文档可供大家参考:https://docs.microsoft.com/zh-cn/dotn...原创 2019-09-25 15:05:56 · 1517 阅读 · 0 评论 -
C#实现数据分组
public class TodoItem { public long Id { get; set; } public string Name { get; set; } public bool IsComplete { get; set; } } List<TodoItem> list = new List&...原创 2019-07-17 07:36:57 · 3040 阅读 · 0 评论 -
Socket连接传递消息
//建立两个程序//接收程序也可称为服务端 static void Main(string[] args) { Console.WriteLine("开始:创建一个Socket对象"); Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Str...原创 2019-04-26 17:12:10 · 651 阅读 · 0 评论 -
TCPSend和TCPReceive
//首先创建两个应用程序,一个用于发送消息,一个用于接收消息//发送消息的程序 TcpClient tcp = new TcpClient(txtHost.Text, int.Parse(txtPort.Text)); NetworkStream ns = tcp.GetStream(); FileStream fs = File.Op...原创 2019-04-26 15:40:14 · 1686 阅读 · 0 评论 -
sqlserver 递归函数
ALTER FUNCTION [dbo].[Fn_GetChildrenCode]( @ParentCode NVARCHAR(50) -- 父级code代码)RETURNS VARCHAR(max)--下级jsonASBEGIN DECLARE @ReturnJson [varchar] (max) SET @ReturnJson = '[' DECLARE @CS_Co...原创 2019-04-02 12:10:51 · 1185 阅读 · 0 评论 -
LINQ标准的查询操作符
下一博文讲解具体使用方法翻译 2019-01-02 11:21:03 · 96 阅读 · 0 评论 -
C#协变和抗变详解
简要介绍:协变和抗变指对参数和返回值进行转换;协变:按照继承链正向改变(实际上是向上兼容:子类向父类的转化)逆变:按照继承链反向改变(实际上是向下兼容:父类向子类的转化)下面说一下具体使用方式(在.net4之前,泛型接口没有协变和抗变)一.不使用泛型接口的情况//.net 参数类型是协变的返回类型是抗变的public class Shape { ...原创 2018-12-21 13:39:59 · 748 阅读 · 0 评论 -
C#自定义泛型类型集合
一.定义接口 public interface ICustom { string Title { get; set; } string Content { get; set; } }二.实现接口 public class Custom : ICustom { public string Title { get...原创 2018-12-20 11:39:43 · 1253 阅读 · 1 评论 -
asp.net 实现文件的压缩和解压
如果该博客能给您带来帮助,请给博主一个评论谢谢!!话不多说下面请看具体的实现步骤。 1.首先在web项目中引用ICSharpCode.SharpZipLib.dll文件,可在博主的资源中下载。 2.具体的压缩和解压方法实现如下(代码中有详细的备注) /// <summary> /// 生成压缩文件 /// </summary> /// <param原创 2017-07-13 14:48:58 · 1129 阅读 · 0 评论 -
Js动态追加行,并将内容保存到数据库,并取出数据通过js动态显示
实现步骤讲解: 首先需要在html页面创建一个table表格和一个动态添加行的按钮<input type="button" onclick="addT()" value="添加" />然后实现表格中追加行的js方法//添加动态行(可在实现的列中添加相应的鼠标事件;在事件中添加相应的方法,不需要时可将onkeyup='fxKeyUp(" + fx + ")' onchange='fxKeyUp("原创 2017-02-14 15:04:00 · 7255 阅读 · 0 评论 -
.net调用阿里云短信接口
由于阿里云短信接口有两类: 一类是: AppKey ==== AppSecret ==== AppCode ==== 二类是: AccetKey ==== AccetSecret ==== 根据需求申请相应的key和secret; 这里我使用的是第二类,千万不要把一类和二类搞混淆,这样就没法正确的进行短信发送了。 短信接口调用分为两类,一类是简单api发送原创 2016-12-20 17:24:40 · 5665 阅读 · 6 评论 -
.net 自由切换http和https请求页面,含带处理css和js切换时失效问题
在切换页面请求前的准备工作是先申请443端口下的安全证书,这里不做详解 可在相关网站上进行申请。 在切换http和https可以使用iis7的url重写功能,也可以使用其它的一些插件。 这里我使用的是SecuritySwitch v4.2.0.0 ;可在我的博客资源中下载,也可以在网上查找下载;具体代码如下<?xml version="1.0" encoding="utf-8"?><!--原创 2016-12-23 16:17:21 · 1601 阅读 · 0 评论 -
C# SqlBulkCopy类大批量数据存入数据库
最近因为要做数据性能优化,原有的数据通过foreach循环插入数据库,由于每循环一次就要和数据库交互一次,性能非常差,用时很长,在网上查阅了一些资料找到了SqlBulkCopy这个类,在原有的数据基础上进行改造,性能非常高。在此将自己的一些使用心得和大家分享: private void ForeachTa(DataTable dtF,string id) { Stopwatch watc原创 2016-12-15 08:54:17 · 3447 阅读 · 0 评论 -
详解ASP.NET配置文件Web.config
转载地址:链接这篇文章主要介绍了ASP.NET配置文件Web.config,Web.config是asp.net应用程序中一个很重要的配置文件,需要的朋友可以参考下:Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web转载 2016-08-15 11:03:44 · 489 阅读 · 0 评论 -
asp.net 预防请求来自其他网站(导致数据不安去)
在HTTP处理程序中HttpRequest request = context.Request;string lianJie=string.empty;if(request.UrlReferrer!=null){ if(String.Compare(request.url.Host,request.UrlReferrer.Host,true, CultureInfo.Invar原创 2016-09-12 16:27:07 · 223 阅读 · 0 评论 -
集合之队列
队列是其元素以先进先出的方式处理的集合。先放入队列的元素会先读取。队列使用System.Collections.Generic 名称空间中的泛型类Queue<T>实现。在内部,Queue<T>类使用T类型的数组,这类似于List<T>类型。它实现ICollection和IEnumerable<T>接口,但没有实现ICollection<T&...原创 2018-12-27 09:10:44 · 459 阅读 · 0 评论 -
集合之栈
栈是与队列非常类似的另一容器,只是要使用不同的方法访问栈。最后添加到栈中的元素会最先读取。栈是一个先进后出的容器(Lastin,Firstout,LIFO)的容器。与Queue<T>类相似,Stack<T>类实现IEnumerable<T>和ICollection接口。Stack<T>类成员如下:Count:返回栈中的个数;Push:在栈...原创 2018-12-27 09:45:39 · 143 阅读 · 0 评论 -
C#订阅事件
简单说明:有书商和消费者,书商进来了新书会对订阅新书到店的用户,进行通知代码如下: /// <summary> /// 书的详细信息 /// </summary> public class BookEventArgs : EventArgs { /// <summary> ///...原创 2018-12-25 14:02:02 · 1242 阅读 · 0 评论 -
lambda表达式一些简单实用方法
//单行lambda表达式 Func<int, double> func1 = x => x * 3.2; Console.WriteLine(func1(3)); //多行lambda表达式 Func<int, int, double> func...原创 2018-12-25 11:22:58 · 285 阅读 · 0 评论 -
多播委托
顾名思义就是委托上面调用多个方法:案例如下: static void Main(string[] args) { Action action = one; action += two; Delegate[] delegates = action.GetInvocationLis...原创 2018-12-25 10:54:38 · 142 阅读 · 0 评论 -
通过委托自定义排序规则
话不多说直接看代码 public static void Sort<T>(IList<T> sortArr, Func<T, T, bool> compare) { bool flag = true; do { flag = false...原创 2018-12-25 10:33:22 · 146 阅读 · 0 评论 -
Linq实战案例
此案例参考相关C#书籍;准备步骤如下: public class Racer : IComparable<Racer>, IFormattable { public string FirstName { get; set; } public string LastName { get; set; } public ...原创 2019-01-03 15:50:26 · 447 阅读 · 0 评论 -
Tuple元组详细讲解
1.tuple相当于存放和获取的中间仓库,在C#4.0进行引入,可替换ref/out;尤其对引用类型(禁止引用的引用);和数组合并相同对象的不同之处是元组合并了不同类型的对象;.NET 4定义了8个泛型Tuple类和一个静态Tuple类,它们用作元组的工厂。这里的不同泛型Tuple类支持不同数量的元素。例如,Tuple<T1>包含-个元素,Tuple<T1,T2>包含两...原创 2018-12-24 11:00:20 · 191 阅读 · 0 评论 -
C#数组详解
数组分为:普通数组,多维数组、锯齿数组和自己创建的数组;具体使用如下 /// <summary> /// 普通数组 /// </summary> /// <returns></returns> public string[] GetStringList() { ...原创 2018-12-24 10:21:34 · 171 阅读 · 0 评论