C#Language
文章平均质量分 85
警醒与鞭策
『卧薪尝胆』不同阶段,不同目标!
展开
-
c# Lazy Initialization 记录
//////////////////////////////////////Lazy initialization of an object means that its creation is deferred until it is first used. (For this topic, the terms lazy initialization and lazy instantiation are synonymous.) Lazy initialization is primarily used转载 2024-08-04 23:03:54 · 70 阅读 · 0 评论 -
C# Dot Net Framework 的线程同步知识
CLR初始化时,线程池中是没有线程的,在内部, 线程池维护了一个操作请求队列,当应用程序想执行一个异步操作时,就调用一个方法,就将一个任务放到线程池的队列中,线程池中代码从队列中提取任务,将这个任务委派给一个线程池线程去执行,当线程池线程完成任务时,线程不会被销毁,而是返回到线程池中,等待响应另一个请求。////////////////////////// ReaderWriterLock 线程同步 //////////////////////////////////以下载jpg图片为例。转载 2024-07-13 16:24:39 · 77 阅读 · 0 评论 -
C#基础 GC 算法 一些积累
//////////////////////////////////////////////////////////////////////////C#基础-gc算法c++是需要程序员手动管理内存的,然而手动释放内存很容易被程序员遗漏,从而导致资源浪费或内存泄露。为解决这个问题,垃圾回收器诞生了,代替程序员自动管理内存的释放。至于gc算法则是垃圾回收器清除垃圾的方法了。本篇文章简单介绍一下各个gc算法的原理和优缺点GC RootGC roots are not objects in ..转载 2021-12-10 12:05:22 · 1445 阅读 · 0 评论 -
垃圾回收基础及优化记录
1、性能属性:(1)吞吐量:不考虑垃圾收集引起的停顿时间或内存消耗,垃圾收集器能支撑应用程序达到的最高性能指标(2)延迟:缩短由于垃圾收集引起的停顿时间或完全消除垃圾收集所引起的停顿,避免应用程序运行时发生抖动(3)内存:垃圾收集器流畅运行所需要的内存数量任何一个属性性能的提供几乎都是以另外一个或两个属性性能的损失作为代价的。2、原则:(1)MinorGC回收原则:每次MinorGC尽可能多地收集垃圾对象(2)GC内存最大化原则:java堆空间越大,垃圾收集的效果就越好(3)GC调优转载 2021-12-10 11:28:01 · 1177 阅读 · 0 评论 -
C# 反射 相关内容
//////////////////////////////////////////////////////////////实现原理:在运行时根据程序集及其中的类型得到元数据。下面是实现步骤:1. 导入using System.Reflection;2. Assembly.Load(“程序集”)加载程序集,返回类型是一个Assembly3. 得到程序集中所有类的名称foreach (Type type in assembly.GetTypes()){string t = ty..转载 2021-12-05 20:24:53 · 1496 阅读 · 0 评论 -
C# GC原理
///////////////////////////////////////////////////////////////////在.NET框架包含一个托管堆,所有的.NET语言在分配引用类型对象都要使用它,像值类型这样的轻量级别对象始终分配在栈中,但是所有的类实例和数组都被生成在一个内存池中,这个内存池就是托管堆垃圾收集器的托管的基本算法很简单:1、将所有的托管内存标记为垃圾2、寻找正在使用的内存快,并将他们标记为有效3、释放所有没有被使用的内存块4、整理堆以减少碎片看..转载 2021-12-04 21:48:28 · 1907 阅读 · 1 评论 -
DotNET Stopwatch High Precision Timing Resolutions(high-resolution timer)
C# High Resolution TimerTiming is important for lots of the software that runs our modern world. Sometimes the timing needs to be very precise and at very small intervals. Fortunately, the Microsoft...翻译 2020-03-29 13:42:37 · 1073 阅读 · 0 评论 -
c# linq相关
c# linq相关原创 2017-06-02 17:24:43 · 932 阅读 · 0 评论 -
String.Format格式说明与DateTime格式说明
C#格式化数值结果表 字符 说明 示例 输出 C 货币 string.Format("{0:C3}", 2) $2.000 D 十进制 string.Format("{0:D3}", 2) 002 E 科学计数法 1.20E+001 1.20...转载 2014-05-26 11:16:07 · 1138 阅读 · 0 评论 -
c# 基本 用法
/////////////////////////////////////////////////////////////////////////////////////////////////////////////C#以前都是不支持多返回值,当需要返回多个值的时候,就会感觉比较麻烦,通常的做法有1.采用ref,out 关键字返回2.定义类或者结构体 返回对象C# 6.0出来了新的语法 Tuple 支付返回多个值示例:1 class Demo2 {3.........翻译 2015-11-21 18:28:32 · 4127 阅读 · 1 评论 -
C# 用XmlSerializer进行序列化和反序列化
和BinaryFormatter序列化一样,做一个可以序列化的类Person:namespace Serializable{ [Serializable] //不可少! public class Person { private String name; private String sex; private int age; ...转载 2018-07-12 23:43:07 · 6629 阅读 · 0 评论 -
C# 二进制BinaryFormatter和Xml进行序列化与反序列化
序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。.NET框架提供了两种种串行化的方式:1、是使用BinaryFormatter进行串行化;2、使用XmlSerializer进行串行化。第一种方式提供了一个简单的二进制数据流以及某些附加的类型信息,而第二种将数据流格式化为XML存储。 可...转载 2018-07-12 23:45:28 · 879 阅读 · 0 评论 -
C#序列化与反序列化对象XML和JSON 详细代码工具
using System.IO;using System.Text;using System.Xml.Serialization;using System.Xml;using System.Runtime.Serialization.Json;using System; namespace cn.ava.PublicsUtil.Util{ /// <summary> ///...转载 2018-07-12 23:52:38 · 238 阅读 · 0 评论 -
BinaryWriter和BinaryReader和MemoryStream类读写内存
C#的FileStream类提供了最原始的字节级上的文件读写功能,但我们习惯于对字符串操作,于是StreamWriter和 StreamReader类增强了FileStream,它让我们在字符串级别上操作文件,但有的时候我们还是需要在字节级上操作文件,却又不是一个字节 一个字节的操作,通常是2个、4个或8个字节这样操作,这便有了BinaryWriter和BinaryReader类,它们可以将一个字...转载 2018-07-13 00:03:02 · 3435 阅读 · 0 评论 -
C# Path.Combine 缺陷(http路径用Uri类)
Path.Combine:什么时候会用到Path.Combine呢?,当然是连接路径字符串的时候!所以下面的代码可以完美的工作:public static void Main(){ string[] arr_pa = { @"c:\abc\", @"c:\abc" }; string[] arr_pb = { @"test.txt" }; fore...转载 2018-07-19 23:30:15 · 1265 阅读 · 0 评论 -
c# 代码常用 2018(为自己)
///////////////////////////////////////C#项目中添加DLL文件引用首先把dll文件放到应用程序… \bin\Debug\下; 然后在解决方案中添加引用:右键鼠标–>添加引用–>浏览–>选择dll放置路径后点击“确定”在“解决方案资源管理器”中选中项目单击右键,选择“添加引用”命令,或者在菜单栏中选择“项目”/“添加引用”命令//////////////////////////////////////////////...翻译 2019-01-31 10:24:52 · 1163 阅读 · 0 评论 -
Newtonsoft.Json Json.NET - Newtonsoft
手机端应用讲究速度快,体验好。刚好手头上的一个项目服务端接口有性能问题,需要进行优化。在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了其中7个字段,剩余9个字段的数据全部都是多余的,如果接口返回数据为40K大小,也就是说大约20K的数据为无效数据,3G...转载 2019-02-22 15:55:38 · 3964 阅读 · 0 评论 -
CSharp知识点整理记录
////////////////////////Enum.GetUnderlyingType(Type)Method////////////using System;public class Example{ public static void Main() { Enum[] enumValues = { ConsoleColor.Red, DayOf...转载 2019-05-11 22:52:51 · 998 阅读 · 0 评论 -
high-resolution timer HighPrecisionTimer
C# High Resolution TimerTiming is important for lots of the software that runs our modern world. Sometimes the timing needs to be very precise and at very small intervals. Fortunately, the Microsoft...转载 2019-05-21 23:08:27 · 1985 阅读 · 0 评论 -
C#定时器
在Framework中存在着4种定时器:其中分为两类,多线程计时器1:System.Threading.Timer2:System.Timers.Timer特殊目的的单线程计时器:1:System.Windows.Forms.Timer(Windows Forms Timer)2:System.Windows.Threading.DispatcherTimer(WP转载 2014-12-23 11:00:30 · 625 阅读 · 0 评论 -
RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。.NET提供常用的加密算法类,支持RSA的类是RSACryptoServiceProvider转载 2017-04-24 14:03:58 · 952 阅读 · 0 评论 -
C#实例复制和深度复制
深度复制与浅表复制的区别在于,浅表复制只复制值类型的值,而对于实例所包含的对象依然指向原有实例。[csharp] view plain copyclass Program { [Serializable] public class Car { pub转载 2017-04-24 14:00:05 · 1194 阅读 · 0 评论 -
C#反射、动态加载类 .
using System;using System.Collections.Generic;using System.Text;using System.Reflection;//注意要添加这个命名控件的引用namespace AssemblyDemo{ public class Program { public static void M转载 2014-05-14 10:45:09 · 2557 阅读 · 0 评论 -
Stream,byte[],LZMA
//转自 瓦里奥一. 二进制转换成图片12345MemoryStream ms =new MemoryStream(bytes);ms.Position = 0;Image img = Image.FromStream(ms);ms.Close();this.pictureBox1.Image转载 2015-07-24 14:53:02 · 795 阅读 · 0 评论 -
项目使用中Linq使用总结
本文旨在和网友分享Linq在项目中的实践,曾经我参与过的项目都能看见Linq的影子。(LinqTosql、LinqToString、LinqToXML、LinqToEntity 等等...)个人认为Linq是近年来微软推出的非常成功的一项技术。比如,当我熟悉Linq之后,再用SQL写商业逻辑时,感觉已经不再适应了。如果您还没有系统的研究过Linq,希望本文可以给您带来帮助。 本文转载 2015-04-08 15:06:51 · 510 阅读 · 0 评论 -
C#读写txt文件的两种方法介绍
1.添加命名空间 System.IO; System.Text;2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出。 byte[] byData = new byte[100]; char[] charData = new char[1000]; public转载 2015-03-18 10:57:14 · 582 阅读 · 0 评论 -
C#定时器的用法
关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类里 3.定义在System.Timers.Timer类里 System.Windows.Forms.Timer是应用于WinForm中的,他是通过Windows消息机制实现的,类似于VB或Delphi中转载 2014-12-23 11:13:58 · 616 阅读 · 0 评论 -
单例模式,多线程同时访问一个实例对象问题的处理,加lock .
多线程同时访问一个实例对象时, 可以给进程加一把锁来处理。lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。public class Singleton{ private static Singleton instance; private static readonly o转载 2014-05-14 10:42:08 · 1987 阅读 · 0 评论 -
delegate string strDelegate(string str);
using System; using System.Collections.Generic; using System.Text; namespace DelegateApp { delegate string strDelegate(string str); class Program { //delegate st转载 2014-04-24 11:24:27 · 906 阅读 · 0 评论 -
C#迷宫的实现(1)
迷宫的基础算法在严蔚敏老师写的数据结构(C语言版)已经描述过了。主要是用栈的特性来保存在迷宫之中走过的路径,走到死胡同后再用栈弹出栈顶,再将指针指到栈顶。这种穷尽的算法有点笨(额 电脑就是这样),貌似也有一些更好的搜索路径,不过现在俺还没接触学习到0 0 ,比如A*算法。记得老师讲过,不过很快就还给老师了。哈哈~~废话少说,现在就是用面向对象的思想来完成走迷宫的这样一个程序。(第一次写,转载 2014-04-22 21:48:07 · 1992 阅读 · 0 评论 -
C#知识点(为自己整理)
C#中char[]与string之间的转换string转换成Char[]stringss="abcdefg";char[]cc=ss.ToCharArray();Char[]转换成stringstrings=newstring(cc);此外,byte[]与string之间的装换byte[]bb=Encoding.UTF8.GetBytes(s...转载 2015-01-14 11:34:44 · 606 阅读 · 0 评论 -
C#函数式编程之标准高阶函数
何为高阶函数 大家可能对这个名词并不熟悉,但是这个名词所表达的事物却是我们经常使用到的。只要我们的函数的参数能够接收函数,或者函数能够返回函数,当然动态生成的也包括在内。那么我们就将这类函数叫做高阶函数。但是今天我们的标题并不是高阶函数,而是标准高阶函数,既然加上了这个标准,就意味着在函数式编程中有一套标准的函数,便于我们每次调用。而今天我们将会介绍三个标准函数,分别为Map、F转载 2016-05-26 19:57:13 · 546 阅读 · 0 评论 -
C#函数式编程之可选值
在我们的实际开发中已经会遇到可空类型,而在C#中自从2.0之后就提供了可空类型(Nullable),普通的值类型是不可以赋值为NULL,但是在类型的后面加上问号就变成了可空类型,这样就可以赋值为NULL了。当然这样的方式也可以用于函数式编程中,但函数式编程有自己的独特方式来解决这种问题,今天我们将围绕这个问题,虽然篇幅比较少,但也请读者可以阅读完。 我们当然不能改变语言的转载 2016-05-26 19:57:59 · 455 阅读 · 0 评论 -
Learn Linq
All LINQ query operations consist of three distinct actions:1. Obtain the data source.2. Create the query.3. Execute the query. // The Three Parts of a LINQ Query: // 1.转载 2017-04-21 21:20:58 · 374 阅读 · 0 评论 -
c# 代码常用 2017(为自己)
在C#的浮点数计算中,0除以0将得到NaN,正数除以0将得到PositiveInfinity,负数除以0将得到NegativeInfinity。C#中浮点数运算从不引发异常。double a = 0 / 0d;if (double.IsNaN(a)){//此处判断a为NaN}Double.NaN 字段Double.NaN字段表示不是数字 (NaN) 的值。 此字段为常...转载 2017-03-10 16:24:08 · 961 阅读 · 0 评论 -
提高Unity中C#代码质量的22条准则
《Effective C# Second Edition》一书原本有50条原则 原则1:尽可能地使用属性,而不是可直接访问的数据成员属性(property)一直是C#语言中比较有特点的存在。属性允许将数据成员作为共有接口的一部分暴露出去,同时仍旧提供面向对象环境下所需的封装。属性这个语言元素可以让你像访问数据成员一样使用,但其底层依旧是使用方法实现的。使用属性,可以非常轻松的在转载 2016-12-30 11:57:11 · 1422 阅读 · 0 评论 -
.NET之特性和属性
1. 引言attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口。因为.NET Framework中使用了大量的定制特性来完成代码约定,[Serializable]、[Flags]、[DllImport]、[AttributeUsage]这些的构造,相信我们都见过吧,那么你是否了解其背后的技术。提起特性,由于高级语言发展的历史转载 2016-06-27 14:16:12 · 415 阅读 · 0 评论 -
c#反射相关
bool isIMyInterface = typeof(IMyInterface).IsAssignableFrom(myObj.GetType()); bool isIEnumerable = typeof(IEnumerable).IsAssignableFrom(myObj.GetType()); 使用Type.IsAssignableFrom 方法...转载 2016-05-23 12:39:37 · 500 阅读 · 0 评论 -
C#图片文字识别
////////////////////////////////////////////////////1、 前言 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。OCR技术非常专业,一般多是印刷、打印行业的从业人员使用,可以快速的将纸质资料转换为电子资料。关于中文OCR,目前国内水平较高的有清华文通、汉王、尚书,其产品各有千秋,价格不菲。国外OCR 发展较早MODI,像一些大公司,如IBM转载 2016-04-25 17:27:02 · 27132 阅读 · 1 评论 -
C#函数式编程之递归调用
关于递归相信大家已经熟悉的不能再熟悉了,所以笔者在这里就不多费口舌,不懂的读者们可以在博客园中找到很多与之相关的博客。下面我们直接切入正题,开始介绍尾递归。 尾递归 普通递归和尾递归如果仅仅只是从代码的角度出发来看,我们可能发现不了他的特点,所以笔者利用两张堆栈上的图来展示具体的差距在哪,首先我们来看看普通的递归调用的情况,如下图1.1所示:转载 2016-05-26 19:59:15 · 723 阅读 · 0 评论