C#
文章平均质量分 63
隶属感
小菜鸟变老菜鸟的过程
展开
-
C# 遍历文件和文件夹
/// <summary> /// 遍历指定文件夹下所有的文件和文件夹 /// </summary> /// <param name="path"></param> private static void LoopFile_Info(FileSystemInfo obj, int level) { if (obj.GetType() == typeo...原创 2020-10-09 12:25:33 · 628 阅读 · 0 评论 -
处理线程超时、死锁的正确姿势
private static object lock_obj { get; set; } = new object(); /// <summary> /// 线程死锁 、超时正确的处理姿势 /// </summary> public Task DoSomething() { return Task.Run(() => { .原创 2020-09-29 13:07:56 · 248 阅读 · 0 评论 -
sql server 批量插入 bluk 和 表值参数
普通插入: public static void CommonInsert() { var num = 0; var watch = new Stopwatch(); using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ToString())) { c原创 2020-09-28 18:46:59 · 294 阅读 · 0 评论 -
减库存问题 实践
我用sql server 做了 一个模拟一张订单表一张产品表逻辑是准备一个存储过程 产品数量>0就可以 往 订单表insert 一条记录 产品数量-- ;这个 存储过程 没添加 事务 没指定 会话隔离级别 也没有 加锁ALTER PROCEDURE [dbo].[pro_createorder_auto]@errormsg nvarchar(1000) outputASBEGIN BEGIN TRY --begin tran ...原创 2020-09-28 14:30:31 · 793 阅读 · 0 评论 -
2020-09-25 宝申科技 》金库物联
web1、<!DOCTYPE html><html><head><meta charset="utf-8" /> <title></title></head><body><body/></html>2、其实JSON数据就是一段字符串而已,只不过有不同意义的分隔符将其分割开来而已,符号,里面有[] ,{}等符号,其中1 []中括号代表的是一...原创 2021-01-18 15:04:37 · 147 阅读 · 0 评论 -
WEB API 通过 实体上传 字段和 图片列表
查我想要的结果:前端上传的文件和字段自动按照实体类对应 然后利用 实体效验 减少 不必要的 if 判断我写完这个 方法后 测试报错:postman的报错谷歌浏览器的报错:为了解决上面的问题 找到了 文章https://www.cnblogs.com/kingCpp/p/4901268.html 了解到 webapi 似乎默认不支持这种方式的上传在nuget 安装了MultipartDataMediaFormatter 用来支持 我们直接从实体中获取 文件...原创 2020-05-26 13:25:47 · 3429 阅读 · 1 评论 -
log4net 一 控制台快速使用
一 安装 log4net二 改配置文件这是控制台默认的配置文件:App.config<?xml version="1.0" encoding="utf-8" ?><configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup></...原创 2020-05-23 13:08:52 · 308 阅读 · 0 评论 -
已经传入 远程仓库的项目想要 取消部分文件追踪
尽量在第一次 push 代码前把 ignore 做好,不然后面修改ignore文件是无效的但是现在就是遇到这个问题 SKJS_WEBAPI.DB 这个文件夹下都是 Entity Framework 相关的内容,又是多人开发,到了 合并代码的时候真是 日了狗了每个人都有可能去 更新实体模型 重新生成T4模板 导致总有冲突:修改 了 ignore 发现没有用网上查了一通发现 步骤如下:在ignore 添加/SKJS_WEBAPI.DB/*...原创 2020-05-21 20:22:58 · 169 阅读 · 0 评论 -
Oracle 如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行
尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录1公司电脑是win7 64位旗舰版,刚来时配的新电脑,4G+i5这个配置不装64位那算是浪费了。谁知道一切装完毕后,打开项目却连不上oracle数据了...首先是pl/sql连不上,我在本地装了个oracle 11g r2 64位的。装了oracle服务器,应该是不用再装客户端,pl/sql应该就...转载 2019-05-23 18:49:58 · 2375 阅读 · 0 评论 -
C# 特性
特性有什么用? [Obsolete("请不要使用这个类!")] public class Child: Parent { }在类上面使用 特性,然后重新编译就会有如下输出如果使用 obsolete 的重载方法由此特性可以影响编译再者: [Serializable] public cl...原创 2019-05-24 01:12:02 · 225 阅读 · 0 评论 -
c# 特性 添加额外属性--枚举的备注信息
枚举用于很多地方:但是枚举的值很多时候代表的意思可能会转为中文传统的做法可能会是 用 if 或者 switch 来判断 ,特性的做法:添加一个Remark特性 /// <summary> /// Remark特性 /// </summary> [AttributeUsage(AttributeTargets.Field,Allow...原创 2019-05-24 11:03:55 · 1205 阅读 · 0 评论 -
委托实例化的进化--引出匿名方法--到Lamada表达式的诞生
各个版本的委托实例化:.NET Framework 1.0//.NET Framework 1.0 public delegate void DoDel(int num,string name); public void Say(int num, string name) { Console.WriteLine($"{name}, {num}点有空吗!");...原创 2019-06-03 08:57:15 · 119 阅读 · 0 评论 -
ADO.NET 连接 Oracle
https://www.cnblogs.com/yangkang0909/p/3555483.html转载 2019-05-23 18:48:40 · 311 阅读 · 0 评论 -
event 怎么使用,什么时候该用
首先延续前一篇:委托是一种类型,事件是委托类型的一个实例,加上一个event 关键字的权限控制我的理解就好比有一个类 叫 Student, 而 事件就是 Student 的一个实例new 小美 = new student(){爸爸= "班主任", 颜值=颜值.超模级别} 叫小美,但是小美很特殊,她是班主任的女儿,那也就只能发生一些平常的交互了,...原创 2019-05-30 15:58:43 · 2527 阅读 · 0 评论 -
委托应该使用的地方二--观察者模式--引出--事件:event
代码:在猫叫以后触发一系列的事,这个版本的猫比较累自己叫完了以后,,还要去找其他对象 public class Cat { public void Miao() { Console.WriteLine("miao,miao,miao!"); new Dog().Wang(); ...原创 2019-05-30 11:09:16 · 124 阅读 · 0 评论 -
反射获取 类型 的 属性列表时 排除 继承来的属性, 非公用的,静态的
var type = typeof(T);var sql = string.Join(",", type.GetProperties(BindingFlags.Public|BindingFlags.DeclaredOnly|BindingFlags.Instance).Select(p => $" [{ p.Name}]"));BindingFlags.Public --公有...原创 2019-05-18 11:51:58 · 634 阅读 · 0 评论 -
私有属性和方法会被子类继承吗?答案:子类不会继承父类的私有成员
可以通过 反射类验证父类和子类: public abstract class Parent { private void PrivSaySomeWord() { Console.WriteLine("我是一个私有方法!"); } private string PrivProp { g...原创 2019-05-23 00:09:58 · 3005 阅读 · 1 评论 -
接口
接口中可以 声明的类型:方法,属性,事件,索引器原创 2019-05-23 00:00:45 · 87 阅读 · 0 评论 -
base 关键字,sleaded 密封关键字 ,多态
可以在子类中调用父类的方法base .方法名()其实每个类在执行构造函数时 都是先执行父类的构造函数,只不过语法糖 节省了 代码 public class Parent{ } public class Child: Parent { public Child() :base() ...原创 2019-05-21 23:44:21 · 133 阅读 · 0 评论 -
QuartZ延伸-----Cron表达式
如果你需要像日历那样按日程来触发任务,而不是像SimpleTrigger 那样每隔特定的间隔时间触发,CronTriggers通常比SimpleTrigger更有用。使用CronTrigger,你可以指定诸如“每个周五中午”,或者“每个工作日的9:30”或者“从每个周一、周三、周五的上午9:00到上午10:00之间每隔五分钟”这样日程安排来触发。甚至,象SimpleTrigger一样,Cron...转载 2019-06-06 10:55:24 · 86 阅读 · 0 评论 -
委托应该使用的地方一
既有公共逻辑,又有私有逻辑时 如下就可改成委托方案一:static void Main(string[] args){ sayHi("王麻子", Country.Japanesn); Console.ReadLine();}public static void sayHi(string name,Country country)...原创 2019-05-29 10:50:40 · 133 阅读 · 0 评论 -
HttpClient 发送 Post 请求 带 json 参数
预想代码: 本来想用 这个扩展的 泛型方法 的PostAsJsonAsync 但是这个方法在 我的 类库中执行会报错:报错内容:未能加载文件或程序集“”或它的某一个依赖。找到的程序集清单定义与程序集引用不匹配。using (HttpClient client = new HttpClient()) { clien...原创 2019-09-06 15:33:29 · 2743 阅读 · 0 评论 -
asp.net Web API 坑点
一路由:不喜欢 Restful 风格,修改了路由: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "customer/{controller}/{action}/{id}", defaults:...原创 2019-07-16 13:02:52 · 232 阅读 · 0 评论 -
Expression 表达式目录树二
话题:两个类属性字段一样怎么转化:将Student 转化为 StudentCopy这里先提供两个方法:一using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Newtonsoft.Json;...原创 2019-06-11 18:00:22 · 755 阅读 · 0 评论 -
Expression 表达式目录树一
这里有两段代码:看一下 Where 的参数Linq To object 的 where 方法需要的参数是 委托Linq To Sql的 where 方法需要的参数 是被 Expression 包裹的 委托到这里 Lamada 表达式, 不一定是 匿名函数了,还有可能是数据结构而且在 Lamada 表达式 作为 数据结构时 和作为匿名函数时是有区别的:作为 ...原创 2019-06-10 17:28:55 · 955 阅读 · 0 评论 -
Linq 一、 Linq 的诞生过程--迭代器的好处
原始写法: //原始方法 var list = new List<Student>(); foreach (var item in students) { if (item.Age <40 &&item.Id>1 ) ...原创 2019-06-03 14:58:04 · 214 阅读 · 0 评论 -
拓展方法
适应环境:第三方类不适合修改源码,通过拓展方法增加逻辑(如果自己的类中实例方法和拓展方法同名优先调用实例方法适合组件式开发的拓展(.Net Core) 定义接口或者类 是按照最小需求 ,在开发时需要一些另外的方法, 就通过拓展方法conent.Response.WriteAnsync 中间件的注册Int? 的拓展方法: public static clas...原创 2019-06-03 10:32:15 · 189 阅读 · 0 评论 -
委托二--多播委托
多播委托: static void Main(string[] args) { Action dele = DoSomething; dele += DoSomething1; dele += new People().Say; dele += DoSomething2; ...原创 2019-05-29 18:06:22 · 185 阅读 · 0 评论 -
委托一-- 系统内置泛型 Action 无返回值,参数可有可无 ,Func 有返回值 参数参数可有可无
诞生于 .net FrameWork 3.0,有了 Action 和 Func 基本上我们就不用在自己创建委托了系统预制 这两个委托的意图也是想 让 委托更加通用, 因为 Action 和 Func 与自己写的 完全相同的 参数与返回值的委托却不能转换为同一类型,没有通用性在3.0以后的API 就大量使用 Action 和 Func 来封装,所以也不再建议创建新的委托...原创 2019-05-29 15:50:03 · 1280 阅读 · 0 评论 -
普通方法,virtual虚方法,abstract抽象方法 的区别
普通方法在子类中 可以用 new 隐藏 new可写/可不写虚方法 在子类中可以 用 override 复写也可以 用 new 隐藏 new可写/可不写抽象方法没有方法体,在子类中必须override 复写 public abstract class Parent { //普通方法可以用 new 隐藏 new可写/可不写 pub...原创 2019-05-21 23:40:38 · 388 阅读 · 0 评论 -
静态缓存
静态缓存是利用普通泛型类的静态字段来实现的,因为是泛型类 ,指定类型后会产生相应的静态字段-->值得注意的是要在静态构造函数中初始化字段 public class CacheSql<T> where T : BaseModel { public static string AddSqlStr { get; set; } public...原创 2019-05-21 22:49:46 · 168 阅读 · 0 评论 -
C# 互斥对象--Mutex---线程同步(三)
当两个或者更多的线程需要同时访问一个共享资源时,系统需要同步机制来确保一次只能有一个线程使用这个资源,Mutex 只限一个线程授予对共享资源的独占访问权,如果一个线程获取了互斥体那么想要获取资源的第二个线程就会被挂起,直到第一个线程释放互斥体,Mutex和 Monitor ,lock 想要达到的效果是类似的,与 monitor 不同的是:可以用来使跨进程的线程同步,也就是两个软件或多个软件可以使...原创 2018-06-01 12:19:20 · 1735 阅读 · 0 评论 -
C# 线程监视器--Monitor---线程同步(二)
Monitor 类提供了同步对对象的访问机制,它通过单个线程授予对象锁来控制对象的访问,对象锁提供限制访问代码块,(通常称为临界区)的能力.当一个线程拥有对象锁时,其他任何线程都不能获取该锁,功能和 lock 关键字类似常用方法:示例代码:using System;using System.Collections.Generic;using System.Data.SqlClient;usi...原创 2018-06-01 11:43:17 · 2190 阅读 · 0 评论 -
C# lock关键字---线程同步(一)
lock 关键字lock关键字可以用来确保代码块完成运行,而不会被其他线程中断,它是通过在代码块运行期间为给定对象获取互斥锁来实现的lock语句以关键字lock开头,他有一个作为参数的对象,在该参数后面还有一个一次只能有一个线程执行的代码块 Object thisLock =new Object():lock(thisLock){ //这里面的代码在执行后,才可以进行其他操作,在运行中...原创 2018-06-01 11:14:36 · 1515 阅读 · 0 评论 -
C#线程
C#中对线程进行操作时,主要用到了Thread 类 ,该类位于System.Threading命名空间下,创建一个线程非常简单,只需要将其声明并为其提供线程起始点的方法委托即可,创建新的线程时,需要用到Thread 类,Thread类具有接受一个ThreadStart 委托或者ParameterizedThreadStart委托的构造函数(两种特殊的构造函数),Thread(Thr...原创 2018-05-31 17:44:34 · 269 阅读 · 0 评论 -
ASP.NET UDP 简单的客户端与服务器
UDP 没有像TCP那样的严密性, 发送前不需要进行握手和tongxi, 就类似村口的大喇叭,你听到没,发送者不知道UDP 适合做广播服务器:using System;using System.Collections.Generic;using System.Data.SqlClient;using System.Data;using System.Linq;using System.T...原创 2018-05-31 15:48:48 · 2544 阅读 · 1 评论 -
ASP.NET TCP 简单的客户端与服务器
服务器: class Program { static void Main(string[] args) { int port = 888;//端口号 TcpClient tcpClient; IPAddress [] ipList= Dns.GetHostAddresses("127....原创 2018-05-31 13:06:53 · 4658 阅读 · 0 评论 -
Jquery .ajax() jsonp 跨域访问asp.net mvc和 修改asp.net mvc 的配置文件允许跨域
同源策略 不了解的可以先了解一下先 第一步 : 随便创建一个html页面 ,引入jquery代码如下 : 要注意 dataType 不要写成 datatype 这里大小写敏感, jsonpCallback 不要写错, 内容随便写就行 例如这里的doSuccess ,不要太作死就行<!DOCTYPE html><...原创 2018-06-12 20:57:55 · 557 阅读 · 0 评论 -
C# Array 与 [] 的区别
参考 博主 Array 和 [] 的区别 的文章转载 2018-06-05 09:39:13 · 5987 阅读 · 3 评论 -
BASE64 加密 和 解密
base64: /// <summary> /// 有关base64编码算法的相关操作 /// </summary> public class Base64 { public Base64() { } /// <summary> /// 将...转载 2018-05-22 22:59:24 · 487 阅读 · 0 评论