Aliexpress API 授权流程整理
    
            
摘要:Aliexpress API 授权流程整理前言我零零总总用了好几个月的时间,写了一个自用的小程序,从 Aliexpress 上抓取订单的小程序。刚开始写的时候,该API还没有开放,而且没有订单相关的功能。我完全是通过模拟用户在网页上的操作来做的:获取网页源码,用正则取数据,然后组装到本地数据库。期间经历过Ali 的数次微调,每次微调,我都要耗费几个小时做程序上的调整,最大的改动就是Ali 弄个新的 和 老的 订单展示页并存的时候。最难的部分当数用户登陆部分,一次登陆,需要跨几个域,收集这几个域返回的 Cookie,收集好几个ajax返回的结果. Cookie 的问题,我用同一个 CookieC
        
阅读全文
 
            
        
        
            
    RDLC(Reportview)报表
    
            
摘要:你还可以再诡异点吗——SQL日志文件不断增长前言今天算是遇到了一个罕见的案例。SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽。但这次我碰到的问题确实比较诡异,其解决方式也是我第一次使用。下文将为各位看管详细介绍我的解决思路。现象一客户反馈数据库的日志文件不断增长,已分配的磁盘空间快使用完,尝试过事务日志截断(事务日志备份)的操作,但没有任何效果。分析遇到这个问题,我最直接的感受:肯定有大的事务一直在执行,导致日志备份无法截断事务日志的大小。首先,我在该数据库下运行DBCC loginfo() 图一从图一的红色框可以看到,数据
        
阅读全文
 
            
        
        
            
    一种简单,轻量,灵活的C#对象转Json对象的方案(续)
    
            
摘要:一种简单,轻量,灵活的C#对象转Json对象的方案(续)本文参考资料一种简单,轻量,灵活的C#对象转Json对象的方案[源码]Literacy 快速反射读写对象属性,字段 一段废话之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的好处在于它的灵活可扩展性上,所以我可以很方便的对他进行优化和扩展! 性能优化JsonBuilder第一版对一般对象的是进行实时反射的,所以性能不会很好,所以我首先想到的是优化他的性能看我前几天发表过一篇《[源码]Literacy 快速反射读写对象属性,字段》的文章,这东西的效率不错,用来代替反射正好。我把优化后的类取名QuickJsonBuil..
        
阅读全文
 
            
        
        
            
    堆栈和堆得区别与垃圾回收
    
            
摘要:堆栈和堆得区别与垃圾回收堆栈和堆得区别:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。堆和堆栈的垃圾回收:堆栈不存在垃圾回收的问题, 直接压栈就可以了。堆的话,需要复杂的垃圾回收机制。垃圾回收是对堆来进行操作,堆中的对象是否有效, 是通过遍历堆栈来获取的, 就是一个引用计数的问题。一个引用类型的实例化过程:Class a = new Class();1) Class a 的时候, 生成一个空的引
        
阅读全文
 
            
        
        
            
    导出&导入
    
            
摘要:导出&导入上一文中,我们大致明白了,利用MEF框架实现自动扫描并组装扩展组件的思路。本文我们继续前进,从最初的定义公共接口开始,一步步学会如何使用MEF。在上一文中我们知道,对于每一个实现了公共规范的扩展组件,都需要进行导出,随后我们的主应用程序文件中会自动进行组装。这便产生了一个疑问:为什么需要导出?如果大家还记得,以前我们用VC++写.dll文件时,都会把需要提供给别人调用的函数标记为导出函数,这样别人才能调用我们编写的函数。就好比我们的家,我们一般会有客厅,既然叫客厅,当然是展现给客人看的。有客人来了,我们会在客厅接待,当然我们不愿意让客人进入我们的卧室,那是较为隐私的地方。因此
        
阅读全文
 
            
        
        
            
    C# winform调用WebBrowser经典怪问题总结
    
            
摘要:C# winform调用WebBrowser经典怪问题总结最近一直研究网页数据采集,单单采集数据,其实HtmlAgilityPack就足够了。对HtmlAgilityPack感兴趣的可以到这里看看:C#采集代理服务器ip并设置IE代理--HtmlAgilityPack实战代码但是有个问题:要是想要模拟人工输入数据,进行表单提交HtmlAgilityPack就办不了,Skybound.Gecko(firfox的.net开源代码)也办不了这个事情。Skybound.Gecko不支持点击,不知道大家有没有新的方法。反正我只能用微软自带的WebBrowser来模拟网页点击了。刚开始一切正常,但是随着功
        
阅读全文
 
            
        
        
            
    逆变与协变详解
    
            
摘要:逆变与协变详解逆变(contravariant)与协变(covariant)是C#4新增的概念,许多书籍和博客都有讲解,我觉得都没有把它们讲清楚,搞明白了它们,可以更准确地去定义泛型委托和接口,这里我尝试画图详细解析逆变与协变。变的概念我们都知道.Net里或者说在OO的世界里,可以安全地把子类的引用赋给父类引用,例如:?123//父类 = 子类stringstr = "string";objectobj = str;//变了而C#里又有泛型的概念,泛型是对类型系统的进一步抽象,比上面简单的类型高级,把上面的变化体现在泛型的参数上就是我们所说的逆变与协变的概念。通过在泛型参数
        
阅读全文
 
            
        
        
            
    Scut游戏服务器免费开源框架-3
    
            
摘要:Scut游戏服务器免费开源框架--快速开发(3)Scut快速开发(3)1 开发环境需要安装的软件a) 消息队列b) 数据库,Sql2005以上版本c) VS2010开发工具(.Net Framework 4.0以上)2 代码框架项目划分三层:实体层,组件层,业务逻辑层(脚本层);模型层主要是数据实体映射,自定义缓存结构;组件层主要负责实现中层层扩展功能;业务逻辑层主要负责实现游戏功能;2.1 数据库创建游戏划分成三个库:DemoConfig库(负责存储游戏配置数据) 、DemoData库(负责存储游戏玩家数据)和DemoLog库(游戏玩家日志记录数据);如图 这里只为每个库建...
        
阅读全文
 
            
        
        
            
    进程与进程间通信
    
            
摘要:进程与进程间通信多线程开发扫盲系列第一编:进程与进程间通信1. 操作系统的进程与线程管理2. 进程的启动和终止3. 进程通信1.进程与线程管理进程(process)是一个具有独立功能的程序在一个数据集合上的一次动态执行过程。这个定义太理论化了,用一句通俗的话取代它:进程可以简单理解为一个正在运行的程序。程序与进程的区别可以用图形像地表达出来。 Window设计了两种代码运行环境,用户模式(User Mode)和核心模式(kernel Mode),普通的应用程序运行于用户模式中,而操作系统的关键代码(比如负责分配与回收内存、创建和销毁进程等功能的代码)运行于核心模式下。 在windows中,”系
        
阅读全文
 
            
        
        
            
    EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子
    
            
摘要:EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子被章节讲解EF里的继承映射关系,分为TPH、TPT、TPC。具体:1.TPH:Table Per Hierarchy这是EF的默认的继承映射关系:一张表存放基类和子类的所有列,用discriminator区分数据。我们新建一个度假村Resort实体类: /// /// 度假村类 /// public class Resort : Lodging //这里继承了Lodging类 { public string Entertainment { get; set; } //娱乐 ...
        
阅读全文
 
            
        
        
            
    一种简单,轻量,灵活的C#对象转Json对象的方案
    
            
摘要:一种简单,轻量,灵活的C#对象转Json对象的方案简单,是因为只有一个类轻量,是因为整个类代码只有300行灵活,是因为扩展方式只需要继承重写某个方法即可首先我将这个类称之为JsonBuilder,我希望它以StringBuilder的方式来实现Json字符串的转换public class JsonBuilder{ protected StringBuilder Buff = new StringBuilder(4096);//字符缓冲区 public string ToJsonString(object obj) { ....... return ...
        
阅读全文
 
            
        
        
            
    使用C#开发计划任务调度服务
    
            
摘要:使用C#开发计划任务调度服务在系统运维中常常需要定期去跑一些计划任务,比如扫描服务器监控其性能、检查SQL Server作业是否正常、监控MQ队列是否存在堵塞现象等。如果使用Windows计划任务调度,一来管理起来就比较松散,二来如需更改计划任务的配置就必须登录到服务器上进行修改,造成很大的不便。因此笔者在实际工作中自行开发计划任务调度服务来处理这些任务,将调度周期、任务配置等经常需要修改的配置信息保存到数据库中,并开发一个前台界面进行维护和管理。一、基本结构计划任务调度服务使用插件的方式处理各类不同的计划任务,插件必须继承自服务框架提供的MonitorTask抽象类,并在数据库中注册任务名、
        
阅读全文
 
            
        
        
            
    多线程带给我们的一些思考
    
            
摘要:C#编程总结(五)多线程带给我们的一些思考Posted on2013-08-20 12:45停留的风阅读(490) 评论(2)编辑收藏多线程带给我们的一些思考如有不妥之处,欢迎批评指正。1、什么时候使用多线程? 这个问题,对于系统架构师、设计者、程序员,都是首先要面对的一个问题。 在什么时候使用多线程技术? 在许多常见的情况下,可以使用多线程处理来显著提高应用程序的响应能力和可用性。 上一章,我们讲了几个多线程的应用案例,主要的应用场景也做了介绍。这里不再赘述。 http://www.cnblogs.com/yank/p/3232955.html2、如何才能保证线程安全? 使用多线...
        
阅读全文
 
            
        
        
            
    Form.Close跟Form.Dispose
    
            
摘要:关于Form.Close跟Form.Dispose我们在Winform开发的时候,使用From.Show来显示窗口,使用Form.Close来关闭窗口。熟悉Winform开发的想必对这些非常熟悉。但是Form类型实现了IDisposable接口,那我们是否需要每次关闭窗口后都去调用Dispose呢?对于这个问题我们可以查看一下Form的源码。Form.Close public void Close() { if (this.GetState(262144)) throw new InvalidOperationException(SR.GetString("Clo...
        
阅读全文
 
            
        
        
            
    C#山寨版本拨号客户端
    
            
摘要:C#山寨版本【天翼拨号客户端】---内含详细抓包,模拟数据---万事俱备,只欠东风。本帖子本来最初是发在CSDN上的,回复的也有十几个,但没有一个有技术含量的回复。。。。特来此讨论,请教,请各位高手多多指点!!原帖:山寨【天翼拨号客户端】的详细过程,内含详细抓包,模拟数据方法,只想再请教一个问题!【熟悉网络协议的高手请进!】 - CSDN论坛 - CSDN.NEThttp://bbs.csdn.net/topics/390510533官方的客户端的最大缺点:1.一台电脑不允许使用同时启动多个网卡(目的是禁止使用虚拟WIFI或通过网卡后共享网络到路由器?);2.使用路由器无法拨号(提示:不允许N
        
阅读全文
 
            
        
        
            
    C#:iterator 迭代器/partial class 分布类/泛型
    
            
摘要:C#:iterator 迭代器/partial class 分布类/泛型iterator 迭代器写个最简单的迭代,(迭代一个字符串数组):1.实现接口中的方法: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Collections; //动态数组是在这个命名空间下的,所以使用前要包含 7 8 namespace ConsoleApplication1 9 ...
        
阅读全文
 
            
        
        
            
    HtmlAgilityPack实战代码
    
            
摘要:C#采集代理服务器ip并设置IE代理--HtmlAgilityPack实战代码今天在博客园看到一篇文章,说是C#采集某某的数据,其实做采集小软件很久了,用的最好的还是HtmlAgilityPack,真的没话说,非常方便快捷。这里有详细介绍[.Net解析html文档类库HtmlAgilityPack完整使用说明--采集软件开发尤其好用].本文不做详细说明了。主要还是上代码啊。毕竟业务应用才是我们开发人员努力编码的最终目的,谁也不会为了单纯写点代码就自我满足了,满足业务需求才是主要的。最近朋友叫我帮忙写一个小程序,获取某个网站的代理。也不怕大家知道了,就是这个网站http://www.youdai
        
阅读全文
 
            
        
        
            
    摄像头、麦克风、扬声器测试程序
    
            
摘要:摄像头、麦克风、扬声器测试程序(附源码)在开发类似语音视频聊天或视频会议这样的系统时,它们通常都包含一个测试音视频设备的功能 -- 通过该测试,用户可以选择要使用的音视频设备(对于程序内部而言,就是确定要使用设备的Index),就像QQ的语音测试向导和视频设置。这里,我介绍一下如何使用OMCS来实现类似的功能,只需少量代码即可搞定。先上测试程序运行起来后的截图:如果声卡没有安装,或设备无效,会给出相应的提示,就像下面这样:1.实现思路(1)由于OMCS是基于网络的语音视频框架,是标准的C/S结构,所以必须要有服务端的存在。(2)虽然OMCS服务端可以部署在有网络连接的任何地方,但是,为了方便起
        
阅读全文
 
            
        
        
            
    依赖注入(IOC)
    
            
摘要:依赖注入(IOC)背景介绍在设计模式中,尤其是结构型模式很多时候解决的就是对象间的依赖关系,变依赖具体为依赖抽象。平时开发中如果发现客户程序依赖某个或某类对象,我们常常会对他们进行一次抽象,形成抽象的抽象类、接口,这样客户程序就可以摆脱所依赖的具体类型。这个过程中有个环节被忽略了------谁来选择客户程序需要的满足抽象类型的具体类型呢?通过后面的介绍你会发现很多时候创建型模式可以比较优雅的解决这个问题,但另一个问题出现了,如果您设计的不是具体的业务逻辑,而是公共库或框架程序呢,这时候你是一个‘服务方’,不是你调用那些构造类型,而是它们把抽象类型传给你,怎么松散地把加工好的抽象类型传递给客户程
        
阅读全文
 
            
        
        
            
    C#私房菜[二][提供编程效率的技巧]
    
            
摘要:AaronYang的C#私房菜[二][提供编程效率的技巧]前言 我的文章简单易懂,能学到东西。因为复杂的东西,讲起来,好累。阅读者只是膜拜,学不到东西,就是没用的东西,好多文章都是看不下去。我写不出来《大话设计模式》那种为了读者的书,因为没有时间写,这真的是实话。写篇文章真的其实很花时间的,最近一直看别人的东西,所以没怎么写了。有的人文章写 情感,而有的写技术。这篇文章属于中间的,你将物超所值,让代码飞起来,让技术加速。 写代码的人,我简称 Coder,简写 CD 了看网页 1. 作为一个合格的CD,遇到问题,第一件事情,不要去问别的 CD(你的导师或者上司),而是应该先去百度或者谷歌。 中文
        
阅读全文