代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

推荐文章

WCF学习1

    WCF学习一     在阅读博客园 WCF开发实战系列一:创建第一个WCF服务 一文中,发现手动配置App.config还是有难度。这篇文章没讲很多原理性的内容,直接以WCF项目创建开始,很适合想快速上手WCF的同学。      在这里把App.config中的注意点标识出来,一遍大家能够快速掌握。 <system.serviceModel> <services> <service behaviorConfiguration="Services.Service1Behavior" name="MyWCFTest2.BookService"> <endpoint address="" binding="wsHttpBinding"

    阅读全文>>

作者:coody分类:【_CLR浏览(829

2018-10-16

厚积薄发,搂抱 .NET 2016

    厚积薄发,拥抱 .NET 2016 厚积薄发这个词是高三英语老师在高考前写在黑板上,高中三年努力这么久,是时候迎面而上,冲刺向前。所以,一想到.NET 2016,脑海里蹦出的第一个词就是它。 .NET 2016 是 .NET 一次质的飞跃,不管难易,我们需要拥抱变化。 初识 .NET 2016 .NET 2016 概览 .NET 2016 作为 .NET 技术最新发展,如下图所示,它主要包含三大块: 最左边代表的是 .NET Framework 4.6,WPF、ASP.NET 4.x、ASP.NET Core 1.0 能运行在它上。中间这部分代表的是 .NET Core 技术,ASP.NET Core 1.0 和 Universal Windows Platform(UWP)能运行在它之上。当然,你也可以创建控制台应用程序运行在.NET Core 上。最右边是 Xamarin,它是一

    阅读全文>>

作者:coody分类:【_CLR浏览(1265

2018-10-16

CLR调用静态方法、实例方法跟虚方法的区别

    CLR调用静态方法、实例方法和虚方法的区别[<CLR via C#>学习笔记] [代码皆来自CLR via C#,有改动] 在解释CLR调用这三种方法的区别之前,先看看c#如何生成程序集的: 这幅图只是为了说明IL中间语言代码和元数据的关系,即通过元数据可以找到类型对应的IL代码   接下来看看一个方法被调用时发生的事情: 接下来Main第二次调用Console.WriteLine(string)方法时就不会经过JIT编译器,而是直接执行JIT第一次已经编译好的代码. CLR之所以可以检测到代码中所有的引用类型,是因为元数据表的引用表记录了源代码中所有的引用类型和成员,而通过这个引用表也就可以获得该方法的IL了,然后JIT编译器也就可以编译这些IL.   现在可以开始对比CLR调用静态方法、实例方法和虚方法的区别了: 定义如下两个类: class Em

    阅读全文>>

作者:coody分类:【_CLR浏览(1232

2018-10-15

.NET 门类(Types)的那些事

    .NET 类型(Types)的那些事引言 您是.Net工程师?那 .NetFramework中的类型您知道有三大类吗?(除了引用类型和值类型,还有?) 引用类型一定在“堆”上,值类型一定在“栈”上? 那引用类型在内存中的布局细节您又知道多少了?   .Net Framework 中的Types分类   C# type categorization. 带阴影的都是 C# 的内建类型关键字. 除了object and string(分别为System.Object 和System.String别名), 其他带阴影的都是简单的值类型. 下面是摘自《C#语言规范5.0》 –> 4.类型(page:77) C# 语言的类型划分为两大类:值类型 (Value type) 和引用类型 (reference type

    阅读全文>>

作者:coody分类:【_CLR浏览(815

2018-10-16

解析.NET对象的跨应用程序域访问(下卷)

    解析.NET对象的跨应用程序域访问(下篇)    转眼就到了元宵节,匆匆忙忙的脚步是我们在为生活奋斗的写照,新的一年,我们应该努力让自己有不一样的生活和追求。生命不息,奋斗不止。在上篇博文中主要介绍了.NET的AppDomain的相关信息,在本篇博文中将会主要说明.NET程序集、对象代理,以及对象的封送原理。 一.程序集解析:     谈到程序集,就要知道什么叫做程序集,我们看看程序集的定义是什么。程序集大致分为两种:一种是类库(就是我们看到的.DLL文件);一种是可执行程序(就是我们看到的.EXE文件)。程序集是一个或多个模块/资源文件的逻辑分组(一个模块成为单模块程序集或者单文件程序集;多个模块成为多模块程序集或者多文件程序集);程序集是重用、安全性以及版本控制的最小单元。程序集的主要构成,请看下面的图示:     &nbs

    阅读全文>>

作者:coody分类:【_CLR浏览(1895

2018-10-15

DotNet加密方式解析-对称加密

    DotNet加密方式解析--对称加密    离过年又近了一天,回家已是近在咫尺,有人欢喜有人愁,因为过几天就得经历每年一度的装逼大戏,亲戚朋友加同学的各方显摆,所以得靠一剂年终奖来装饰一个安稳的年,在这里我想起了一个题目“论装逼的技术性和重要性”。    都是老司机了,不扯淡,站在外面的都进来,然后请后面的把门关一下,我们接着出发。    上一篇主要介绍.NET的散列加密,散列算法主要用于签名等操作,在我们的项目中,如果对加密没有特别的要求,一般都是采用的对称加密方式,因为这种加密方式相较其他加密方式较为简单,但是这种加密方式比较的高效,所以今天就介绍一下.NET的对称加密方式。 一.DotNet对称加密概述:    对称加密是采用单密钥加密方式,这也就意味着加密和解密都是用同一个密钥。

    阅读全文>>

作者:coody分类:【_CLR浏览(1361

2018-10-16

DotNet加密方式解析-散列加密

    DotNet加密方式解析--散列加密   没时间扯淡了,赶紧上车吧。    在现代社会中,信息安全对于每一个人都是至关重要的,例如我们的银行账户安全、支付宝和微信账户安全、以及邮箱等等,说到信息安全,那就必须得提到加密技术,至于加密的一些相关概念,在这里就不说了。    这一次将会主要讲解.NET的加密方式,接下来将会分别介绍散列加密,对称加密,非对称加密等等加密方式在.NET中的应用,本文主要讲解散列加密在.NET中的应用实例。 一.DotNet散列算法概述:    说到散列应该都不会陌生,并且首先都会想到MD5加密,但是对于散列更加深入的了解,恐怕知道的人就不会那么多了。散列算法创建了一个散列码,也叫做“消息摘要”或“消息指纹”,看到“消息指纹&r

    阅读全文>>

作者:coody分类:【_CLR浏览(1690

2018-10-17

垃圾回收机制GC知识再总结兼谈怎么用好GC

    垃圾回收机制GC知识再总结兼谈如何用好GC一、为什么需要GC 应用程序对资源操作,通常简单分为以下几个步骤: 1、为对应的资源分配内存 2、初始化内存 3、使用资源 4、清理资源 5、释放内存 应用程序对资源(内存使用)管理的方式,常见的一般有如下几种: 1、手动管理:C,C++ 2、计数管理:COM 3、自动管理:.NET,Java,PHP,GO… 但是,手动管理和计数管理的复杂性很容易产生以下典型问题: 1.程序员忘记去释放内存 2.应用程序访问已经释放的内存 产生的后果很严重,常见的如内存泄露、数据内容乱码,而且大部分时候,程序的行为会变得怪异而不可预测,还有Access Violation等。 .NET、Java等给出的解决方案,就是通过自动垃圾回收机制GC进行内存管理。这样,问题1自然得到解决,问题2也没有存在的基础。 总结:无法自动化的内存管理方式极容易产生bug

    阅读全文>>

作者:coody分类:【_CLR浏览(1565

2018-10-17

关于GC跟析构函数的一个趣题

    关于GC和析构函数的一个趣题这个有趣的问题感谢装配脑袋友情提供。 请看如下代码: public class Dummy { public static Dummy Instance; public int X = 1; ~Dummy() { Instance = this; } } 通过如下代码进行调用(输出日志的地方我稍作调整): Task.Run(() => { var d = new Dummy(); d = null; GC.Collect(); GC.WaitForFullGCComplete(); }).Wait(); var isNull = Dummy.Instance == null; Conso

    阅读全文>>

作者:coody分类:【_CLR浏览(732

2018-10-16

CLR值类型跟引用类型

    CLR值类型和引用类型知识点:引用类型、值类型、装箱、拆箱 CLR支持两种类型:引用类型和值类型。引用类型在堆上分配内存,值类型在线程栈上分配内存。值类型与引用类型如下所示:   值类型对象有两种表示形式:未装箱和已装箱。将一个值类型的变量付给另一个值类型变量,会执行一次逐字段的复制。 装箱:将一个值类型转换为一个引用类型称为装箱。装箱会发生如下操作: 1、在托管堆中分配好内存。分配的内存大小等于值类型各个字段需要的内存大小之和加上类型对象指针和同步块索引需要的内存量。 2、值类型的字段复制到新分配的堆内存。 3、返回对象的地址。 拆箱:将一个引用类型转换为值类型,首先值类型的内存分配在线程栈中,而引用类型的内存分配在托管堆中,所以需要把引用类型中的所有字段都复制到线程栈中。CLR通过两个步骤来完成这个复制操作。 1、获取已装箱的对象中的各个字段的地址。这个过程称为拆箱。 2、将

    阅读全文>>

作者:coody分类:【_CLR浏览(1872

2018-10-15

关于.NET参数传递模式的思考

    关于.NET参数传递方式的思考   年关将近,整个人已经没有了工作和写作的激情,估计这个时候很多人跟我差不多,该相亲的相亲,该聚会喝酒的聚会喝酒,总之就是没有了干活的心思(我有很多想法,但就是叫不动我的手脚,所以我只能看着别人在做我想做的事,吃我想吃的东西。)。本人由上个月的每周四五篇,到现在的文章缩短到每周一篇,说个实话,现在的一篇也有不想写的心思了(这一篇还是咬着牙写的,感觉实在是写不动了,写博客太折腾人了,谁写谁知道啊!),不过还是希望写出来可以帮到大家,如有写的不足的地方,还望大家多多指正,知识在于总结和反思,对别人也对自己都是一个提高。      这里先来一段废话,缓和一下气氛,免得让大家很尴尬(太直接了还是不太好,总不能见到喜欢的女生就表白吧,还得多多的相处,让人觉得你稳重有深度。),现在进入我们今天的博客内容,那就是.NET的

    阅读全文>>

作者:coody分类:【_CLR浏览(692

2018-10-17

CLR简介(1)

    CLR简介(一)什么是通用语言运行时(CLR),简单来讲: CLR是一个支持多种编程语言及多语言互操作,完整的高级虚拟机。 有点拗口,而且不是很有启发性,但上面的文字是将又大又复杂的CLR的功能归类以便容易理解的第一步。它从一万英尺的高度来帮助我们理解CLR的设计目标。从这个高度明了CLR之后,我们可以深入其各个组件了。 CLR: 一个(极少见的)完整编程平台 每个程序在运行的时候都有惊人数量的运行时依赖。虽然程序很明显都是由一种特定的编程语言写就,但这只是程序员编写程序多种依据中的一种。每个有用的程序都需要某些 运行时函数库 以便其能跟电脑的其它资源(如用户输入设备,磁盘文件,网络通信等)交互。程序也需要转换成计算机硬件可以直接执行的某种格式。这些依赖的数量是如此之多,范围之广,使得编程语言的设计者通常都引用其它标准来规范它们。例如C++编程语言不会规定C++程序

    阅读全文>>

作者:coody分类:【_CLR浏览(688

2018-10-15

关于.NET错误处理的思考

    关于.NET异常处理的思考    年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的看着大佬们发表心情。     以上的废话说的够多了,这里就不再废话了,还是切入正题吧。     在项目开发中,对于系统和代码的稳定性和容错性都是有对应的要求。实际开发项目中的代码与样例代码的区别,更多的是在代码的运行的稳定性、容错性、扩展性的比较。因为对于实现一个功能来说,实现功能的核心代码是一样的,可能只是在写法上优化而已,但是在实现某一个操作上使用的类来说,这一点是绝大多数时候是一样的。这样看来,我们在实际开发的过程中,需要考虑的问题比较多,已经不仅仅局限于某一具体的功能实现,更多的是代码的稳定性

    阅读全文>>

作者:coody分类:【_CLR浏览(1713

2018-10-16
上一页 1/1页 下一页