
C#开发
aofengdaxia
码农。
展开
-
C# 中HttpClient无法发送json对象
使用场景在C#开发过程中经常会遇到调用API接口的情况,特别是wpf和后台通信。而被调用的接口只接受json字符串。public String Post(string url, object obj){ using(var client = new HttpClient()) { try { var str = JsonConvert.SerializeObject(user); var content = new StringContent(str,Encoding.UTF8原创 2021-06-05 09:18:02 · 1184 阅读 · 1 评论 -
探索Rx的主要接口
IObservable / IObserver 接口在.NET Framework 4.0基类库中可用,并且它们包含在可以安装在.NET 3.5,Silverlight 3和4以及Javascript中的包中。IObservable/IObserver Rx将异步和基于事件的数据源公开为基于推送的可观察序列,由.NET Framework 4.0中的新IObservable 接口抽象。 这个IO翻译 2017-03-06 14:05:15 · 3696 阅读 · 0 评论 -
为IObservable实现自己的运算符
您可以通过为LINQ库不提供的操作添加新运算符,或者通过创建自己的标准查询运算符实现来提高可读性和性能,从而扩展Rx。 编写自定义版本的标准LINQ操作符在您希望使用内存中对象操作时以及当预期自定义不需要查询的全面视图时非常有用。创建新操作符 LINQ提供了一整套操作符,涵盖了一组实体上的大多数可能的操作。 但是,您可能需要一个运算符为查询添加特定的语义,尤其是如果您可以在代码中多次重复使翻译 2017-03-06 15:11:02 · 706 阅读 · 0 评论 -
使用LINQ运算符查询可观察序列
在与现有.NET事件桥接时,我们已将现有.NET事件转换为可观察序列以订阅它们。 在本主题中,我们将观察可观察序列的一类本质作为IObservable 对象,其中通用的LINQ操作符由Rx程序集提供以操作这些对象。 大多数运算符采用可观察序列并对其执行一些逻辑并输出另一个可观察序列。 此外,从代码示例中可以看出,您甚至可以在源序列上链接多个运算符,以根据您的确切要求调整结果序列。使用不同的运算符翻译 2017-03-06 14:32:16 · 1090 阅读 · 0 评论 -
与现有异步源桥接
除.NET事件外,.NET Framework中还存在其他异步数据源。 其中之一是异步方法模式。 在该设计模式中,提供了两种方法。 一个方法(通常命名为BeginX)用于启动计算并返回一个IAsyncResult句柄,该句柄传递给第二个方法(通常称为EndX),然后检索计算结果。 完成通常通过实现AsyncCallback委托或轮询IAsyncResult.IsCompleted来发出信号。 代码坚翻译 2017-03-06 14:14:13 · 675 阅读 · 0 评论 -
与现有.NET事件桥接
Rx提供了工厂方法,以便与.NET中的现有异步源桥接,以便您可以使用由任何类型的数据流提供的丰富的组合,过滤和资源管理功能。 本主题检查FromEventPattern运算符,它允许将.NET事件作为可观察序列“导入”到Rx中。 每次引发事件时,OnNext消息将被传递到可观察的序列。 然后,您可以像任何其他可观察序列一样处理事件数据。 Rx并不旨在替换现有的异步编程模型,如.NET事件,异步翻译 2017-03-06 14:11:22 · 619 阅读 · 0 评论 -
Rx入门
本系列文章讲解Reactive Extensions (Rx),以及如何使用它来使开发异步应用的程序员受益。在本系列文章中重要包含以下内容 1. Rx应用场景 2. 安装Rx 3. Rx的不同版本相关系列 使用Rx 额外的资源 Rx MSDN开发者中心原文地址:https://msdn.microsoft.com/en-us/library/hh242975(v=vs.103).as翻译 2017-03-06 11:45:31 · 562 阅读 · 0 评论 -
Rx应用场景
本文主要描述使用Rx对当前使用.net事件模型和异步编程的好处。使用Rx的优点 无论是你处理传统的桌面程序还是基于Web的应用程序,你都必须时不时地处理异步编程。桌面程序的I/O操作或者UI线程,可能需要很长时间才能完成,而在完成过程中可能阻塞其他的线程。Silverlight禁止任何阻塞线程的调用,你唯一可以做的就是使用异步编程。 然而,现代异步编程模型的用户必须手动管理事件的异常和取消。 要编翻译 2017-03-06 13:47:45 · 1534 阅读 · 2 评论 -
面试过部分童鞋,遇到的一些技术问题总结
为什么要用三层或者多层结构(包括MVC结构)?好多人说自己写过三层结构的网站,或者多层结构,结构基本上模仿的petshop。但是问问他们为什么要做成三层结构,有什么好处呢?为什么不写在一起呢?个人认为有几个好处 1. 三层结构降低耦合,方便大型系统的分工。(大多数人会回答这个) 2. 提供代码的重用度。 3. 封装变化,减少因为变化带来的代码变动。这个原则是建立在普遍认为UI的变动会强于底层业原创 2017-03-08 16:29:16 · 2099 阅读 · 0 评论 -
C#并发编程
首先推荐大家看一组博文,很浅显和通俗易懂的讲解了C#并发编程在.net 4.0 以后增加的内容,特别是Parallel和Task。五天玩转C#并发和多线程编程http://www.cnblogs.com/yunfeifei/p/3993401.html 做为入门和普及的文章。 然后可以深入的学习下下面的这篇文章。学习TPL http://www.cnblogs.com/vw...转载 2017-03-02 15:55:35 · 1979 阅读 · 0 评论 -
C#异步编程:ConfigeAwait
收集了一些文章的内容:进行整理 http://www.cnblogs.com/cmt/p/configure_await_false.html转载 2017-03-02 14:37:09 · 1125 阅读 · 0 评论 -
C# 异步编程:async和await (2)
以下内容主要来自于C#并发编程经典实例:为读书的一些记录和练习。1、在异步中等待一段的时间Task.Delay(timeSpan);2、报告进度 static void Main(string[] args) { CallMyMethodAsyc(); Console.WriteLine("Main End");原创 2017-03-02 14:30:18 · 910 阅读 · 0 评论 -
C#中的异步:async和await
C#中在.net 4.5以后增加了async和await两个关键词,把同步开发中可能阻塞线程的方式放到异步中,企图用async和await的方式来取代以前的线程池和Thread的方式。MSDN上的一个例子如下:// Three things to note in the signature: // - The method has an async modifier. // - The原创 2017-03-01 14:52:18 · 9315 阅读 · 0 评论 -
整理一下以前写的俄罗斯方块的文章
很早以前写了一些俄罗斯方块系列的文章,很多人读,一直有很多人留言提问,我整理下,定置起来,如果有时间,根据自己的理解,继续完善一下。希望大家喜欢。学习C#从俄罗斯方块开始(一)概述学习C#从俄罗斯方块开始(二)俄罗斯方块的规则和算法的简单实现学习C#从俄罗斯方块开始(三)俄罗斯方块的优化和美化因为时间关系,根据自己对俄罗斯方块的理解些了以上的三个文章,大家希望看到如何更新,写一些什么内容,我原创 2015-07-18 14:52:32 · 3114 阅读 · 0 评论 -
C#中lock,Monitor和Mutex的测试代码
关于lock,Monitor和Mutex他们同一线程不互斥的测试代码如下:lockusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace TestThread{ class Program {原创 2015-07-06 11:20:03 · 1902 阅读 · 0 评论 -
lock,Monitor,Mutex的区别
网络上有一很多关于这三个的区别。但是个人的实验跟他们写的有一些出入。把个人的理解写出来,供大家拍砖。 http://www.cnblogs.com/bile/archive/2013/01/08/2850712.html 这个文章上写了很多,网络上很多人的转载的。但是个人测试不敢苟同。lock和Monitor的区别一、lock的底层本身是Monitor来实现的,所以Monitor可以实现lock原创 2015-07-06 10:56:18 · 7673 阅读 · 0 评论 -
使用Subjects
Subject 类型实现IObservable 和IObserver ,在它既是观察者又是可观察者的意义上。您可以使用主题订阅所有观察者,然后将主题订阅到后端数据源。以这种方式,主体可以充当一组订户和源的代理。你可以使用主题实现一个自定义observable与缓存,缓冲和时间移位。此外,您可以使用主题向多个订阅者广播数据。 默认情况下,主题不通过线程执行任何同步。他们不采取调度程序,而是假定所翻译 2017-03-06 14:48:40 · 1658 阅读 · 0 评论 -
创建和订阅简单可观察序列
您不需要手动实现IObservable 接口来创建可观察的序列。 同样,您不需要实现IObserver 来订阅序列。 通过安装Reactive Extension程序集,您可以利用Observable类型,该类型提供了许多静态LINQ运算符,用于创建具有零个,一个或多个元素的简单序列。 此外,Rx提供了订阅扩展方法,根据代理采用OnNext,OnError和OnCompleted处理程序的各种组合。翻译 2017-03-06 14:41:55 · 1212 阅读 · 0 评论 -
protocal buffer的一些基本整理
什么是Protocal buffer?protocal buffer 是一种类似XML和json的序列化格式,方便把数据从一个进程传输到另外一个进程。为什么选择Protocal buffer?相比于xml 和json,proto使用二进制进行保存和传输,占用的更小的字节,同时序列化和反序列化的效率远远高于json和xml。所以非常适合移动端的数据传输。常见的一些学习资料手把手教你如何安装Protoc原创 2017-10-10 08:41:12 · 1245 阅读 · 0 评论 -
未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
win 2012 server系统 CefSharp 67.00:System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到指定的模块.解决方法: 需要先下载安装 Visual C++ Redistributable Packages for Visual Studio 2015 x86...原创 2018-09-14 11:51:06 · 18577 阅读 · 0 评论 -
如何把asp.net core的文件作为服务在windows下面部署
把Asp.netcore在Linux部署遭遇到部分库无法使用的情况,我决定吧asp.net core部署到Windows 服务器上。 但是如果当做传统的ASP.net文件来部署,发现行不通。网上讲了很多的操作步骤,但是得重启服务器,懒得重启了。 直接运行了生成的exe是可以访问的。但是当用户注销以后,必须要有问题。于是想到,把.net的exe当做服务就可以了。 找到了一个很好的工具 ns...原创 2018-07-13 17:07:18 · 2157 阅读 · 0 评论 -
安装WSL并且部署.net Core
什么是WSLWindows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,目标是使纯正的Ubuntu 14.04 “Trusty Tahr”映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。安装WSL管理...原创 2018-07-13 17:02:41 · 2025 阅读 · 0 评论 -
ASP.Net Core刚刚踩过几个坑
接触微服务的思想以后,甚是认同。综合考虑建议公司转成java来做开发,奈何目前的几个元老都是.net人员。于是决定用.net Core。方便在linux和docker中去部署。1、System.Drawing.Common这个库在.netcore中使用不会提醒任何依赖.net 框架,但是却无法在linux上使用。提示找不到gdiplus,照着网上的方法去安装gdiplus,然并卵。 ...原创 2018-07-13 16:55:45 · 3253 阅读 · 4 评论 -
.net 一个可以像操作XML一样操作HTML的文档的类库 HtmlAgilityPack
具体操作和使用,稍后整理,先做以下记录原创 2018-05-28 10:20:55 · 447 阅读 · 0 评论 -
关于TCP粘包的Netty处理的方法
这篇文章讲解的非常好,特别是对自己定义长度的方式进行处理。 https://blog.youkuaiyun.com/u010853261/article/details/55803933转载 2018-04-24 12:06:26 · 958 阅读 · 0 评论 -
聊聊Dotnetty
以前,我曾经写过一个C/S的期货交易系统。C/S就绕不开通信,我大概的了解了.net 的通信机制后,选择用TCP长连接实现了通信,客户端可以调用服务器端,服务器端可以主动推送消息到客户端。实现是实现了,但是代码笨重而且低效。近来又要解决一个C/S的通信问题。感觉到自己以前写的通信继续复用会触犯自己的洁癖,同时深感自己的精力大不如以前,重新写一个优雅而且高效的通信的中间件没有任何信心。于是就在网络上...原创 2018-04-24 11:23:05 · 11714 阅读 · 2 评论 -
Quartz Cron Expressions
Cron Expressions(Cron 表达式)是用来展示时间集合的字符串。在不同的系统或者框架上,Cron Expressions 的标准会有所差异。对于 Quartz Cron Expressions 来说,它被用来配置 CronTrigger 实例,由空格隔开分7个子表达式: 1. Seconds (秒):范围为0-59的整数,可出现, - * /四个字符; 2. Minutes...转载 2018-04-02 18:04:59 · 279 阅读 · 0 评论 -
使用Topshelf创建Windows服务
Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务。Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。https://w...转载 2018-04-02 16:16:04 · 476 阅读 · 0 评论 -
受不了开源软件了
本来打算搞了Lua给C#使用,在使用过程中需要处理json,结果要让我疯掉了。 如果使用Lua的cjson来处理,需要先下载一个cjson的库放到目录下面去使用。然后没有编译好的Cjson库,需要额外下载源码。然后把源码需要进行自己编译。才能使用,然后自己编译还没有可视化的平台。 也许是用windows的平台给惯坏了,即便是C#需要引用外面的库,通过NUGET很轻松可以获得编译好的库。...原创 2018-03-22 17:56:57 · 403 阅读 · 0 评论 -
AutoMapper的使用
什么是AutoMapper?在多层结构中,经常用到对象到对象的转化,比如数据库Entity到Model的转化,Model和ViewModel的转换,手工去写复制太过麻烦。AutoMapper就是一个可以实现自动转换的类库。 AutoMapper是一个对象与对象的映射器。对象-对象映射通过将一种类型的输入对象转换为不同类型的输出对象来工作。让AutoMapper感兴趣的是,它提供了一些有趣的约...原创 2018-03-12 16:55:00 · 3029 阅读 · 0 评论 -
《C#敏捷开发实践》读书整理
《C#敏捷开发实践》是一本相当不错的良心之作。本书分为两个部分:第一部分:讲了敏捷开发的一些原则,书中列举了一些很不错的实现例子。本书主要使用的是Scrum的敏捷开发流程 第二部分:通过一个具体开发过程中的实践,讲了如何应用这些模式。对于本书的理解本书讲解了C#敏捷开发,首先我们承认没办法做出一个大而全的软件,没办法一次性的完成用户的需求。所以我们需要去拥抱变化,采用迭代的方式...原创 2018-02-27 12:40:46 · 1224 阅读 · 0 评论 -
基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库。分布式缓存框架:Microsoft Velocity:微软自家分布式缓存服务框架。Memcahed:一套分布式的高速缓存系统,转载 2018-01-31 10:05:14 · 456 阅读 · 0 评论 -
C#线程等待句柄
互斥对象 Mutexprivate Mutex m = new Mutex();public void Method(){ m.WaitOne(); //执行操作 m.ReleaseMutex();}共享资源SemaphoreSemaphore是一个信号量,可以让多个资源分类型的同时进行。书中一个重要的有代表性的例子就是图书馆有多个电脑,有若干个人使用电脑的问题。是一个不错原创 2015-07-06 10:48:44 · 2881 阅读 · 0 评论 -
线程锁
1、Monitor的使用Monitor.Enter(obj);//对某个对象进入独占模式Monitor.Exit(obj);//对某个对象释放独占模式Monitor的顺序执行。 可以让一个线程先执行,其他线程随后执行。//方式1、//A线程lock(obj){ //执行操作 Monitor.Pulse(obj);}//B线程lock(obj){ Monito原创 2015-07-03 18:45:29 · 3897 阅读 · 0 评论 -
巧妙利用VS 的分栏功能,提高开发效率
废话不说,上图:原创 2011-11-05 12:18:49 · 4975 阅读 · 5 评论 -
利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览
我们在一些场合经常需要模拟浏览器进行一些操作,比如模拟投票,或者模拟点击,或者Web游戏外挂。而C#中封装好的WebClient可以在某些要求不算搞的场景实现Http的Post和Get。具体请见代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using Sy原创 2011-11-19 17:59:54 · 11256 阅读 · 0 评论 -
Entity Framework 4.1需要注意的事项【学习笔记】
在以前使用Linq和ADO.net的时候,我习惯把数据库使用数据库文件,放置在App_Data下面。1、最近学习和研究EF 4.1。在使用 Code first来生成数据库的时候。屡次使用都不成功,在网络上大量搜索原因却不得,最后把数据库连接字修改成放置在 .\SQLEXPRESS的数据库服务后可以完成。值得注意的是如果使用Code first来生成数据库的时候,必须保证数据库不存在,否则会出原创 2011-11-15 16:42:42 · 1182 阅读 · 0 评论 -
用Ueditor为Asp.net mvc打造可视化HTML编辑器
在Asp.net WebForm时代,Web系统的HTML可视化编辑器可以使用FTB一类的控件,直接引入工具箱拖拉即可实现。但是在Asp.net MVC时代,直接使用服务器端控件是不符合MVC的标准和约束,会出现这样或者那样的问题。UEditor似乎又是不错的一款可视化编辑器,有百度做后台支撑,开源,而且样式漂亮,自定义容易……所以我决定在我的系统中使用Ueditor作为可视化编辑工具,但是因为U原创 2011-10-24 09:18:59 · 20307 阅读 · 21 评论 -
Asp.net MVC 中Ajax的使用
Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近。可以更自由、更灵活的去控制HTML的结构、样式和行为。而这点对于Ajax的应有来说,Asp.net MVC确实要比WebForm优秀很多。我对Asp.net MV原创 2011-10-17 08:40:02 · 35514 阅读 · 0 评论 -
asp.net MVC 2 中的重用: Master pages、Partials 、Child actions以及MVC 控件
微软给asp.net 带上MVC的翅膀,很大一个原因就是为了满足大中型软件开发的工程化和规范化。而要实现软件的工程化和规范化,重用就是软件工程中很大一个要求。所以在asp.net MVC中,微软也尽可能的提供了各种重用。在View层面上,Master Pages 、Partial原创 2011-09-25 23:41:36 · 172 阅读 · 0 评论