随笔分类 - C#
摘要:
在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,一直到2000年,该算法都是推荐系统领域最著名的算法。 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人...
        阅读全文
            
在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,一直到2000年,该算法都是推荐系统领域最著名的算法。 本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人...
        阅读全文
摘要:
PageRank 通过网页与网页之间的链接关系计算各网页权重,一般权重高的网页特点是:链接向它的网页数量多、链向它的网页其权重也较高。PageRank 就是通过这样的连接关系,一轮轮迭代计算后得出各网页的权重。 思路拓展一下,其实人与人之间也是连接着的,在社会的人际关系网中,每个人的社会地位和身价也...
        阅读全文
            
PageRank 通过网页与网页之间的链接关系计算各网页权重,一般权重高的网页特点是:链接向它的网页数量多、链向它的网页其权重也较高。PageRank 就是通过这样的连接关系,一轮轮迭代计算后得出各网页的权重。 思路拓展一下,其实人与人之间也是连接着的,在社会的人际关系网中,每个人的社会地位和身价也...
        阅读全文
摘要:
先用C#写好类型,然后自动生成标准格式的XSD。支持Class和Enum类型的设计;支持基元类型、自定义类型、泛型列表、自定义类型数组等属性;支持自定义类型之间的依赖关系;支持契约分组(指定Request/Response分到同一个xsd文件);支持契约汇总(对于自定义类型,最终体现在一个汇总xsd文件中,并自动引用其它xsd文件)...
        阅读全文
            
先用C#写好类型,然后自动生成标准格式的XSD。支持Class和Enum类型的设计;支持基元类型、自定义类型、泛型列表、自定义类型数组等属性;支持自定义类型之间的依赖关系;支持契约分组(指定Request/Response分到同一个xsd文件);支持契约汇总(对于自定义类型,最终体现在一个汇总xsd文件中,并自动引用其它xsd文件)...
        阅读全文
摘要:
一共4个数字,共需要3个运算符,可以构造一个二叉树,没有子节点的节点的为值,有叶子节点的为运算符例如数字{1, 2, 3, 4},其中一种解的二叉树形式如下所示:因此可以遍历所有二叉树可能的形式,4个数的全排列,从4种运算符中挑选3种运算符(运算符可以重复)核心步骤1:需要遍历所有二叉树的可能...
        阅读全文
            
一共4个数字,共需要3个运算符,可以构造一个二叉树,没有子节点的节点的为值,有叶子节点的为运算符例如数字{1, 2, 3, 4},其中一种解的二叉树形式如下所示:因此可以遍历所有二叉树可能的形式,4个数的全排列,从4种运算符中挑选3种运算符(运算符可以重复)核心步骤1:需要遍历所有二叉树的可能...
        阅读全文
摘要:
BEncoding是BitTorrent用在传输数据结构的编码方式,我们最熟悉的“种子”文件,它里面的元数据就是 Bencode 过的字典表。虽然比用纯二进制编码效率低,但由于结构简单而且不受字节存储顺序影响(所有数字以十进制编码,不存在大端小端的问题)——这对于跨平台性非常重要。而且具有较好的灵活性,即使存在故障的字典键,只要将其忽略并更换新的就能...
        阅读全文
            
BEncoding是BitTorrent用在传输数据结构的编码方式,我们最熟悉的“种子”文件,它里面的元数据就是 Bencode 过的字典表。虽然比用纯二进制编码效率低,但由于结构简单而且不受字节存储顺序影响(所有数字以十进制编码,不存在大端小端的问题)——这对于跨平台性非常重要。而且具有较好的灵活性,即使存在故障的字典键,只要将其忽略并更换新的就能...
        阅读全文
摘要:
连接数据库是程序员经常要做的事情, 通常情况下, 需要连接SQL Server中的哪个数据库是已知的, 用户在输入SQL Server的服务器IP、用户名、密码和数据库名字后, 如果所有信息输入正确, 就可以建立连接了. 让用户尽量少打字 每次让用户输入这么多信息的确很糟糕, 可以改进一下设计: 服务器IP和用户名可以存放在配置文件里面, 初始化的时候默认加载到...
        阅读全文
            
连接数据库是程序员经常要做的事情, 通常情况下, 需要连接SQL Server中的哪个数据库是已知的, 用户在输入SQL Server的服务器IP、用户名、密码和数据库名字后, 如果所有信息输入正确, 就可以建立连接了. 让用户尽量少打字 每次让用户输入这么多信息的确很糟糕, 可以改进一下设计: 服务器IP和用户名可以存放在配置文件里面, 初始化的时候默认加载到...
        阅读全文
摘要:
Google 图片搜索功能 在谷歌图片搜索中, 用户可以上传一张图片, 谷歌显示因特网中与此图片相同或者相似的图片. 比如我上传一张照片试试效果:原理讲解 参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual hash algorithm)...
        阅读全文
            
Google 图片搜索功能 在谷歌图片搜索中, 用户可以上传一张图片, 谷歌显示因特网中与此图片相同或者相似的图片. 比如我上传一张照片试试效果:原理讲解 参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual hash algorithm)...
        阅读全文
摘要:
昨晚看到一个帖子, 说的是三行代码实现快速排序, 虽说在LINQ技术下, 三行代码是可以将快速排序的思路很直白明了的呈现出来, 这是函数式编程的优点. 看到这段代码里三个Where, 我心里不免有些疑问, Where不就枚举了整个链表了么, 这样做还是所谓的"Quick Sort"吗...
        阅读全文
            
昨晚看到一个帖子, 说的是三行代码实现快速排序, 虽说在LINQ技术下, 三行代码是可以将快速排序的思路很直白明了的呈现出来, 这是函数式编程的优点. 看到这段代码里三个Where, 我心里不免有些疑问, Where不就枚举了整个链表了么, 这样做还是所谓的"Quick Sort"吗...
        阅读全文
摘要:
问题是这样的: 有一些离散的点, 在坐标系中把它们拟合成一条曲线, 其中有一段看上去很像是直线, 现在要求出这段"直线"的起始坐标和结束坐标, 并把这条线的方程求出来...
        阅读全文
            
问题是这样的: 有一些离散的点, 在坐标系中把它们拟合成一条曲线, 其中有一段看上去很像是直线, 现在要求出这段"直线"的起始坐标和结束坐标, 并把这条线的方程求出来...
        阅读全文
摘要:
比较喜欢第二种方法, 第二种方法获取了目录下每个文件的所有信息. String path = @"X:\xxx\xxx";//第一种方法var files = Directory.GetFiles(path, "*.txt"); foreach (var file in files) Console.WriteLine(file);//第二种方法DirectoryInfo folder = new DirectoryInfo(path); foreach (Fi...
        阅读全文
            
比较喜欢第二种方法, 第二种方法获取了目录下每个文件的所有信息. String path = @"X:\xxx\xxx";//第一种方法var files = Directory.GetFiles(path, "*.txt"); foreach (var file in files) Console.WriteLine(file);//第二种方法DirectoryInfo folder = new DirectoryInfo(path); foreach (Fi...
        阅读全文
摘要:
寻路算法不止 A* 这一种, 还有递归, 非递归, 广度优先, 深度优先, 使用堆栈等等, 有兴趣的可以研究研究. 如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块(用 B 表示)是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块...
        阅读全文
            
寻路算法不止 A* 这一种, 还有递归, 非递归, 广度优先, 深度优先, 使用堆栈等等, 有兴趣的可以研究研究. 如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块(用 B 表示)是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块...
        阅读全文
摘要:
线程将 CPU 进行虚拟化后变成一个个的逻辑 CPU, 而物理 CPU 只有1个(多核CPU则有多个CPU), 一个 CPU 同时只能做一件事. 在任何时候, Windows 只将一个线程分配给一个 CPU, 那个线程允许运行一个"时间片", 一旦时间片到期, Windows 就上下文切换到另一个线程,  每次上下文切换都执行以下操作...
        阅读全文
            
线程将 CPU 进行虚拟化后变成一个个的逻辑 CPU, 而物理 CPU 只有1个(多核CPU则有多个CPU), 一个 CPU 同时只能做一件事. 在任何时候, Windows 只将一个线程分配给一个 CPU, 那个线程允许运行一个"时间片", 一旦时间片到期, Windows 就上下文切换到另一个线程,  每次上下文切换都执行以下操作...
        阅读全文
摘要:
服务端, 声明ServerSocket, 绑定(Bind)一个IP并指定这个IP的通信端口, 比如是127.0.0.1:9050, ServerSocket可以监听来自多个IP发送的连接请求, 监听(Listen)方法的参数可以设置允许的最多连接请求个数. 然后调用异步接受请求的方法(BeginAccept), 如果接受到某个客户端发来连接请求, 这时定义一个新的CommunicateSocket专门负责与这个客户端通信. 然后可以通过CommunicateSocket.BeginSend()方法给客户端发送数据, CommunicateSocket.BeginReceive()可以接收客户端发来的数据...
        阅读全文
            
服务端, 声明ServerSocket, 绑定(Bind)一个IP并指定这个IP的通信端口, 比如是127.0.0.1:9050, ServerSocket可以监听来自多个IP发送的连接请求, 监听(Listen)方法的参数可以设置允许的最多连接请求个数. 然后调用异步接受请求的方法(BeginAccept), 如果接受到某个客户端发来连接请求, 这时定义一个新的CommunicateSocket专门负责与这个客户端通信. 然后可以通过CommunicateSocket.BeginSend()方法给客户端发送数据, CommunicateSocket.BeginReceive()可以接收客户端发来的数据...
        阅读全文
摘要:
C#2.0出现了匿名方法, 这在一定程度上节省了我们维护代码上下文的精力, 也不需要思考为某个方法取什么名字比较适合. 在FCL的一些方法中要求传入一个Delegate类型的参数, 比如Control.Invoke或者Control.BeginInvoke方法...
        阅读全文
            
C#2.0出现了匿名方法, 这在一定程度上节省了我们维护代码上下文的精力, 也不需要思考为某个方法取什么名字比较适合. 在FCL的一些方法中要求传入一个Delegate类型的参数, 比如Control.Invoke或者Control.BeginInvoke方法...
        阅读全文
摘要:
一种经常发生的装箱 Int32 i = 100;Console.WriteLine("The number is: " + i); 通过VS SDK Tools里的IL DASM工具看看产生的IL代码...
        阅读全文
            
一种经常发生的装箱 Int32 i = 100;Console.WriteLine("The number is: " + i); 通过VS SDK Tools里的IL DASM工具看看产生的IL代码...
        阅读全文
摘要:
几个月前做的一个软件里想添加一个天气预报功能, 也就是利用了一下Google Weather的接口: http://www.google.com/ig/api?hl=zh-cn&weather=某某...不忘书中所讲: 耗时操作, 且非计算密集型任务, 最好使用异步方法. 根据Anders Hejlsberg的视频中演示的那样, 我写出下面一段代码, 也是很多人拿来演示异步的经典写法...
        阅读全文
            
几个月前做的一个软件里想添加一个天气预报功能, 也就是利用了一下Google Weather的接口: http://www.google.com/ig/api?hl=zh-cn&weather=某某...不忘书中所讲: 耗时操作, 且非计算密集型任务, 最好使用异步方法. 根据Anders Hejlsberg的视频中演示的那样, 我写出下面一段代码, 也是很多人拿来演示异步的经典写法...
        阅读全文
摘要:
实际中有时需要对数据进行分析, 最近就遇到了这样一个情况: 有一系列横坐标是时间, 纵坐标是记录值的一些数据, 但横坐标却不是等距记录的. 就是说在第一分钟记录一次, 第二分钟记录一次, 第四分钟记...
        阅读全文
            
实际中有时需要对数据进行分析, 最近就遇到了这样一个情况: 有一系列横坐标是时间, 纵坐标是记录值的一些数据, 但横坐标却不是等距记录的. 就是说在第一分钟记录一次, 第二分钟记录一次, 第四分钟记...
        阅读全文
摘要:
分部方法那些方法原型或定义都是在分部类的声明中指定, 但是没有在该分部类的相同声明中提供方法的具体实现方法. 一般情况下, 在相同分部类中的其它任何声明中都没有对这个方法的任何实现...
        阅读全文
            
分部方法那些方法原型或定义都是在分部类的声明中指定, 但是没有在该分部类的相同声明中提供方法的具体实现方法. 一般情况下, 在相同分部类中的其它任何声明中都没有对这个方法的任何实现...
        阅读全文
摘要:
"扩展方法"是一个静态类的静态方法, 我们可以像调用其它类实例的方法那样来调用扩展方法. 扩展方法的声明和调用 例如我想给string类型添加一个ToInt32的静态方法, 把string类型变成Int32类型:
        阅读全文
            
"扩展方法"是一个静态类的静态方法, 我们可以像调用其它类实例的方法那样来调用扩展方法. 扩展方法的声明和调用 例如我想给string类型添加一个ToInt32的静态方法, 把string类型变成Int32类型:
        阅读全文
摘要:
var是初始化一个匿名类型对象的专用关键字, 如果结合var和匿名类型, 在C#3.0中初始化一个匿名类型的对象是十分有个性的, 这样的初始化方法让当时刚接触C#的我一直摸不清头脑, 例如下面这个例子...
        阅读全文
            
var是初始化一个匿名类型对象的专用关键字, 如果结合var和匿名类型, 在C#3.0中初始化一个匿名类型的对象是十分有个性的, 这样的初始化方法让当时刚接触C#的我一直摸不清头脑, 例如下面这个例子...
        阅读全文
浙公网安备 33010602011771号