
C#
午夜支枕听河流
Github链接:https://github.com/ZSCXI
展开
-
C# 网络编程(二)
网络编程的实现原创 2017-02-14 15:04:43 · 312 阅读 · 0 评论 -
C#算法系列(7)——快速排序
快速排序其实是前面提到的最慢的冒泡排序的升级,它们都属于交换排序。它也是通过不断比较和移动交换来实现排序的,只不过它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较次数和移动次数。本文将实现快速排序,且针对几种方案,对快排进一步优化。一、基本思想 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录原创 2017-12-03 21:00:24 · 1185 阅读 · 0 评论 -
C#算法系列(8)——线性表
由于线性表操作相对前面二叉树,排序算法等比较简单,所以,就今天一口气写完它的所有基本概念和操作。本文,首先介绍了一下,线性表有哪几种实现方式及各自的优缺点,然后还以单链表为例,实现了链表的头插法创建、尾插法创建、查找元素、删除元素、增加元素等常用操作,希望看了之后能有所收获!一、线性表存储方式1.顺序存储结构 指的是用一段地址连续的存储单元一次存储线性表的数据元素。一般用,一维数组来实现原创 2017-12-05 20:51:49 · 699 阅读 · 0 评论 -
C#算法系列(3)——二叉排序树
一、什么是二叉排序树 二叉排序树,又称为二叉查找树。它或者是一棵空树,或者具有下列性质的二叉树: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若它的右子树不空,则右子树上所有结点的值均大于它的根节点的值; (3)它的左右子树分别为二叉排序树。 构造一棵二叉排序树的目的,其实并不是为了排序,而是原创 2017-11-27 13:13:05 · 1180 阅读 · 1 评论 -
C#算法系列(11)——KMP模式匹配算法
今天要实现的这个算法是在复习串操作时出现的,之前看过一遍,但时隔久远,毫无印象,捡起来还有点儿困难,发现当时理解不是那么透彻,自己主要理解难点是这个算法如何求解next数组。明白之后,发现它也并不难理解,就是有些资料的术语起了误导的作用,下面会按照小白的思路进行一系列说明,力求道明它的本质。一、KMP算法背景 主要是要解决求解子串在主串中第一次出现位置的问题,KMP的提出能使得这个求解过原创 2017-12-15 16:58:48 · 2092 阅读 · 0 评论 -
C#算法系列(12)——折半查找、插值查找、斐波那契查找
折半查找又称为二分查找,插值查找是在折半查找算法基础上优化而来,斐波那契查找算法又是针对插值查找进一步优化的,因此,我们先看下简单的折半查找算法,然后再剖析另外两种查找算法。注意,这里的查找均是有序表的查找,也就是说,待查的列表必须为有序的。因此,需要在查找之前,对列表进行排序操作。一、折半查找 折半查找的基本思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则原创 2018-01-02 19:30:01 · 1191 阅读 · 0 评论 -
C#基础系列(1)之索引器
一、索引器背景 索引器允许类或结构的实例就像数组一样进行索引。 无需显式指定类型或实例成员,即可设置或检索索引值。 索引器类似于属性,不同之处在于它们的访问器需要使用参数。二、实现索引器1.需要注意几点使用索引器可以用类似于数组的方式为对象建立索引。get 取值函数返回值。 set 取值函数分配。this 关键字用于定义索引器。value 关键字用于定义 set 索引器所赋的值原创 2018-05-10 15:27:31 · 1055 阅读 · 0 评论 -
C#基础系列(2)之迭代器
1.迭代器介绍       在.NET中,迭代器模式被IEnumerator和IEnumerable及其对应的泛型接口所封装。如果一个类实现了IEnumerable接口,那么就能够被迭代;调用GetEnumerator方法将返回IEnumerator接口的实现,它就是迭原创 2018-05-11 00:47:27 · 417 阅读 · 0 评论 -
哈希表概述
一、什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表或哈希表。具体表现为:存储位置 = f(key);二...原创 2018-05-22 21:46:50 · 5387 阅读 · 0 评论 -
C# 控制台+NHbidernate配置Mysql
本文参考链接:NHibernate Codeproject1. 在VS里面创建控制台示例程序首先,创建一个C#控制台程序,在这里,我命名为UserNHibernateToMySQL。2. 导入MySql.Data 和NHibernate的DLL文件在项目引用上面右键,“管理NuGet程序包”,搜索并导入MySql.Data 和NHibernate的DLL文件,导入成功之后,如...原创 2018-07-25 18:51:22 · 446 阅读 · 0 评论 -
PhotonServer入门(一)
1.安装PhotonServer(1)首先下载PhotonServer,或者点击PhotonServer直接下载 (2)双击运行PhotonServer安装包,进行解压。 (3)解压出来后,如果是64位电脑,则运行 E:PhotonServerSDK\Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\bin_Win64文件夹下的PhotonC...原创 2018-08-03 21:35:43 · 3861 阅读 · 0 评论 -
PhotonServer入门(二)
1.Unity客户端与PhotonServer交互流程       本文主要针对Unity创建的客户端与基于PhotonServer创建的服务端交互进行进行简单示例说明。首先看一下二者发生交互的图解。  &原创 2018-08-08 20:29:08 · 1027 阅读 · 1 评论 -
C#算法系列(6)——归并排序
本文主要描述了归并排序的两种实现方式,递归方式和非递归方式,以及二者的优缺点比较。下面首先介绍一下归并排序的原理。一、理解归并排序 归并排序的本质:通过两两合并排序再合并,最终获得了一个有序的数组。通过在纸上演示,就会发现它其实是一棵倒置的完全二叉树。 原理:假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或原创 2017-12-03 17:13:27 · 999 阅读 · 0 评论 -
C#算法系列(5)——希尔排序、堆排序
这几天一直在整理排序算法,并想挨个实现出来,个人认为实现算法的代码多敲总不是坏事,写多了自然感觉就出来了。今天想要实现的希尔排序和堆排序,首先介绍这两种排序算法的实现原理,后面再上具体实现代码。一、希尔排序 (1)原理:本质是针对直接插入排序的改进、通过一个自定义的增量,并按照这个增量分割成若干个子序列。使得每次排序,让子序列都趋于有序。直到增量递减为1时,整个序列将基本有序。增量为1时原创 2017-12-03 15:44:49 · 467 阅读 · 0 评论 -
C#算法系列(2)——线索二叉树
首先在这里声明一下,本篇博客参考另外一位大神的博客,博客链接如下:http://blog.youkuaiyun.com/UncleMing5371/article/details/54176252。由于写的很好理解,所以就拿来借鉴一下,主要目的也是出于学习,让自己的算法能力有所提高。如果有版权问题,欢迎私信我,我收到后立马删除。好了,看下今天的主题——线索二叉树。线索二叉树的由来可以参考以上我上篇文章,C#算法原创 2017-11-23 11:04:32 · 1105 阅读 · 0 评论 -
C# 委托理解
C# 委托理解转载 2017-03-17 18:16:31 · 280 阅读 · 0 评论 -
C# 网络编程(TCP、UDP)
一 TCP协议 基于TCP协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息。 使用Tcp协议通讯需要具备以下几个条件: (1).建立一个套接字(Socket) (2).绑定服务器端IP地址及端口号(服务器端) (3).利用Listen()方法开启监听(服务器端) (4).利用Accept()方法尝试与客户端建立一个连接(服务原创 2017-05-22 20:30:05 · 1430 阅读 · 0 评论 -
C# 网络编程(一)
本文源连接:博客 命名空间 在网络环境下,我们最感兴趣的两个命名空间是System.Net和 System.Net.Sockets。 (1)System.Net命名空间通常与较高程的操作有关,例如download或upload,试用HTTP和其他协议进行Web请求等等. (2)System.Net.Sockets命名空间所包含的类通常与较低程的操作有关。如果要直接使用Socket转载 2017-05-23 10:14:41 · 278 阅读 · 0 评论 -
C#文本解析
文本解析有3种,分别为:XML解析,JSON解析和Excel解析一 XML解析 XML解析,可以细分为两种,一种是子节点的字段值较多,另一种是子节点的属性较多。本文会通过具体示例来详细讲述以上两种的适用场景。 下面现在第一种,子节点的字段值较多的。解析示例:如解析下述XML文件。被解析的xml文件:<skills> <skill> <id>2</id>原创 2017-05-24 22:18:03 · 2441 阅读 · 0 评论 -
C#线程、任务和同步
一、进程和线程的区别 一个进程可以有多个线程;操作系统的设计可以归结为三点:(1)以多进程形式,允许多个任务同时运行;(2)以线程形式,允许单个任务分成不同的部分运行。(3)提供协调机制,一方面防止进程之间产生冲突,另一方面允许进程之间共享资源。二、通过委托方式创建线程这当中包括3种方式判断线程结束,代码如下: Program.csclass Program {原创 2017-05-22 10:30:17 · 744 阅读 · 0 评论 -
C#算法系列(4)——简单排序算法小结
本篇文章主要讲述3种基本排序算法以及具体代码如何实现的,分别为冒泡排序,简单选择排序和直接插入排序,排序方式采用从小到大。根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序。内排序是在排序整个过程中,待排序的所有记录全部被放置在内存中。外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内存外存之间多次交换数据才能进行。排序算法的性能主要受3个方面影响:原创 2017-11-28 15:58:30 · 447 阅读 · 0 评论 -
C#算法系列(9)——栈
这两天在复习栈操作,从顺序结构,链式结构,到最后通过一个应用场景来进行检验栈操作,即表达式的四则运算,希望看了之后能够有所收获。一、栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端成为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表,简称LIFO结构。 由此可知,栈的本质,就是线性表,只要前面的线性表章节掌握好了原创 2017-12-08 15:28:13 · 1424 阅读 · 3 评论 -
C#算法系列(10)——循环队列、链队列
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。它是一种先进先出的线性表,简称FIFO。允许插入的一端称为队尾,允许删除称为队头。 循环队列的提出主要是用于解决顺序队列的假溢出问题。解决假溢出的办法就是后面满了,再从头开始,头尾相接的循环。我们把队列的这种头尾相接的顺序存储结构称为循环队列。本文将从循环队列的顺序存储和链队列出发,讲解常用的出队与入队操作。下面先看下循原创 2017-12-10 14:46:50 · 3514 阅读 · 0 评论 -
C#算法系列(1)——二叉树
本文主要讲述二叉树的两种创建方式与四种遍历方式,以及附上具体的实现代码。 两种创建方式分别为:顺序存储和链式存储。遍历方式有:先序遍历、中序遍历、后序遍历以及层次遍历。一、 二叉树的性质 介绍性质主要是为了后续进行编写二叉树遍历算法的时会用到。在二叉树的第i层上至多有2^(i-1)个结点(i≥1)。深度为k的二叉树至多有2^k -1 个结点(k≥1)。对任何一棵二叉原创 2017-11-21 21:31:58 · 7905 阅读 · 0 评论 -
C#基础系列(3)之关键字partial
之前一直以为它很简单,就没把它太当回事。今天却在项目代码当中遇到了这个关键字,才发现对它的认识仅仅停留在表面上,因此,为了深刻记住它,特此写一篇博客。1. 什么是partial类型? C# 2.0 引入了局...原创 2019-08-20 15:21:00 · 452 阅读 · 0 评论