随笔分类 - c#点滴
c#基础的个人积累
摘要:debian(kali Linux) 安装net Core curl -sSL https://raw.githubusercontent.com/dotnet/cli/rel/1.0.0-preview1/scripts/obtain/dotnet-install.sh | bash /dev/s
阅读全文
摘要:在上一篇文章(Immutable Collections(2)ImmutableList实现原理.(上)),分析了)ImmutableList的初始化过程,本篇博客分析除初始化之外的行为,当然概括起来也很简单——添加、删除、修改。这些行为的背后,我们会看到不可变集合的不变性是如何保持的,如何在不完全拷贝的情况下返回新的集合等等特性的秘密。
阅读全文
摘要:
前言
在上一篇文章(Immutable Collections(1)),我简要说明了不可变集合的基本概念和简单应用。从本篇博文开始,会探讨下几个典型集合类型的内部实现机制。本篇博客主要探讨ImmutableList实现原理。
阅读全文

摘要:
从 .NET4.0开始,到现在的4.5,我们可以感受得到微软在并行、多线程、异步编程上带给开发人员的惊喜。在多线程开发中,无可避免的涉及多个线程共享对象问题,Immutable Object(不可变对象)在保证线程安全方面的重要性被凸显出来。简单不可变对象,比如单例,我们可以很轻松的创建并维护,一些复杂对象,对象引用或者集合对象的场景 ,创建和维护不可变对象变得困难了很多。微软在这方面也做了很多努力,目前看最令我欣喜的就是Immutable Collections了。如果您了解函数式编程,那么对此肯定不会陌生。
当然除了线程安全,不可变集合还有其他的应用场景,本文也会有所涉及。
笔者最近研读了几篇MSDN Blog中关于Immutable Collections的英文博文(在文后会给出链接)。我看到的博客中的代码和我下载的版本有些出入,我根据自己的理解重新整理,改编成此文,水平有限,欢迎讨论。
阅读全文

摘要:
今天要谈论的主题是Emit,反射的孪生兄弟。想要通过几篇博客详尽的讲解Emit也是很困难的事情,本系列计划通过两个简单的实例来讲解,计划写三篇博客:
1) 说说Emit(上)基本操作;
2) 说说Emit (中)ILGenerator;
3) 说说Emit (下)Emit在AOP和单元测试中的应用;
这几篇博客不可能涵盖Emit所有内容,只希望能让您知道Emit是什么,有哪些基本功能,如何去使用。
阅读全文

摘要:
最近一直在和同事讨论单元测试的问题,在对已有代码的可测试性进行评估的时候,我们发现业务逻辑层和持久层的测试分离成为了难点。本篇文章给出了四种基本方案,主要讨论最后一种方案的实施过程中遇到的一个dynamic 类型变量调用静态方法的解决方案,同时兼顾单元测试,和分层解耦。
阅读全文

摘要:重构,是编写代码必须要面对的一项操作,同时也应该是程序员乐于实践的一项内容。不论是逻辑实现还是设计过程,乃至整个分层结构,我们都可能面临并且实施重构。这篇文章不会告诉您什么是重构,如何去优美的重构等等的理论,只想和大家分享一些感受,并且探讨一些问题。最近的两周,我一直对我们团队的一个子业务框架做重构的工作,很多地方让我感到很痛苦,于是便有了这篇文章。牵一发而动全身的根源在哪里当我打开解决方案,查看代码的时候,我们会发现很多问题,比如冗余的代码,性能低下的逻辑实现等等,但是当我着手去改造的时候,潜意识告诉我整个似乎不能动,牵扯的面太广了。更改一个小地方,上下一串都要做相应的调整,这当然不是我想要
阅读全文
摘要:今天去尚都国际中心的一家公司面试NET开发,信心满满,可是却被打击的够呛,题不多没做对几道。现在分享出来,共同讨论下。 1.判断数组元素是否存在重复,要求时间复杂度为O(n)(这个没记清楚)2.有一个游客在海上登陆一个小岛。临行前,亲友告诉他这个海域有两个小岛,一个叫“诚实岛”,一个叫“说谎岛”;诚实岛的居民只说真话,说谎岛的居民只说谎话。两个岛上的...
阅读全文
摘要:2007-08-16 00:13#include<iostream>using namespace std;int main(){int n,m;unsigned int mask = 32768;cin>>n;for(int i=0;i<=15;i++){m = (n&mask);if(m>0)cout<<"1";elsecout<&...
阅读全文
摘要:问题:今有邮箱150个,按序编号。全部关闭。邮递员从二号开始一次将2的倍数的邮箱打开,然后数倍数为3的邮箱,已经打开的关闭,已关闭的打开。依次操作倍数为4,5,6,。。。。。。150为止。输出最后关闭的邮箱号码。
阅读全文
摘要:2007-09-12 11:14#include<iostream>using namespace std;#include <math.h>void outPrime(int n){int *numberAll = new int[n];for(int i=1;i<n;i++)numberAll[i] = i+1;for(int m=1;m<sqrt(n);m...
阅读全文
摘要:2007-09-13 21:05//接收一个字符串,给每个单词加上双引号,将其中的"no"替换成"yes"// 不区分大小写using System;namespace ConsoleApplication1{/// <summary>/// Class1 的摘要说明。/// </summary>class Class1{ /// <summary> /// 应...
阅读全文
摘要:2007-09-12 16:42/*实现最大为300位的大整数加法,输入数3位一节,以‘,’隔开,以‘b’结尾。如123,456b*/#include<iostream>#include<string>using namespace std;int main(){int a[101];int b[101];for(int l=...
阅读全文
摘要:2007-09-15 17:26//要求连续输入五个大写字母,若有错误,提示信息并重新输入using System;class BigT{static void Main(){ Console.WriteLine("请输入五个大写字母"); String s = Console.ReadLine(); char []array = s.ToCharArray(); if(array.Length&...
阅读全文
摘要:2007-09-25 14:57using System;namespace BubbleSorter{/// <summary>/// Class1 的摘要说明。/// </summary>public class BubbleSorter{ public void Sort(int[] list) { int i,j,temp; bool done = false; j...
阅读全文
摘要:2007-11-22 16:05using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Net;namespace WindowsApplication2{/// &...
阅读全文
摘要:2007-11-22 16:07using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Net.Sockets;using System.Net;using Syst...
阅读全文
摘要:2007-11-22 16:10//广播数据包,服务端using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Net.Sockets;using System.Net...
阅读全文
摘要:2007-11-22 21:08//SeqList.hclass SeqList{protected:DataType *list;int maxsize;int size;public:SeqList(int max=0);~SeqList(void);int Size(void)const;void Insert(int i,const DataType& item);DataType...
阅读全文
摘要:2008-03-09 22:07//program.csusing System;using System.Collections.Generic;using System.Windows.Forms;namespace DriveInfo_GetDrives{ static class Program { /// <summary> /// 应用程序的主入口点。 /// </s...
阅读全文