<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[挨踢生涯]]></title><description><![CDATA[Delphi,C#,VC++,SQL SERVER,ORACLE]]></description><link>https://blog.youkuaiyun.com/yxp200401</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yxp200401]]></copyright><item><title><![CDATA[Oracle基础知识整理总结]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/41010003</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/41010003</guid><author>yxp200401</author><pubDate>Tue, 11 Nov 2014 12:58:53 +0800</pubDate><description><![CDATA[1. Oracle跟SQL Server 2005的区别？ 
宏观上： 
1). 最大的区别在于平台，oracle可以运行在不同的平台上，sql server只能运行在windows平台上，由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性 
2). oracle使用的脚本语言为PL-SQL，而sql server使用的脚本为T-SQL 
微观上： 从数据类型]]></description><category></category></item><item><title><![CDATA[接口成员显示实现]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/38800907</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/38800907</guid><author>yxp200401</author><pubDate>Sun, 24 Aug 2014 22:15:07 +0800</pubDate><description><![CDATA[（interface）用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。在前面的文章中，我们已经对C#接口的概念，如何定义接口以及如何对接口进行访问等问题进行了详细的讨论。在这些知识的基础上，本文我们将来了解实现接口的方法。

 

显式实现接口成员

为了实现接口，类可以定义显式接口成员执行体（Explicit interface member

impleme]]></description><category></category></item><item><title><![CDATA[Invoke与begininvoke]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/38800817</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/38800817</guid><author>yxp200401</author><pubDate>Sun, 24 Aug 2014 22:11:09 +0800</pubDate><description><![CDATA[在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate，至于委托的本质请参考我的另一随笔：对.net事件的看法。
 
一、为什么Control类提供了Invoke和BeginInvoke机制？
关于这个问题的最主要的原因已经是dotnet程序员众所周知的，我在此费点笔墨再次记录到自己的日志，以便日后提醒一下自己。
1、windows程序消息机制
Window]]></description><category></category></item><item><title><![CDATA[invoke与begininvoke]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/38800739</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/38800739</guid><author>yxp200401</author><pubDate>Sun, 24 Aug 2014 22:07:41 +0800</pubDate><description><![CDATA[首先说下，invoke和begininvoke的使用有两种情况：

  1. control中的invoke、begininvoke。

  2. delegrate中的invoke、begininvoke。  

  这两种情况是不同的，我们这里要讲的是第1种。下面我们在来说下.NET中对invoke和begininvoke的官方定义。

  control.invoke(参数d]]></description><category></category></item><item><title><![CDATA[序列化与反序列化]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/38800455</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/38800455</guid><author>yxp200401</author><pubDate>Sun, 24 Aug 2014 22:02:54 +0800</pubDate><description><![CDATA[序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化，它将流转换为对象。这两个过程结合起来，可以轻松地存储和传输数据。例如，可以序列化一个对象，然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。反之，反序列化根据流重新构造对象。此外还可以将对象序列化后保存到本地，再次运行的时候可以从本地文件中“恢复”对象到序列化之前的状态。
在.net中有提供了几]]></description><category></category></item><item><title><![CDATA[C# 泛型]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/38750101</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/38750101</guid><author>yxp200401</author><pubDate>Fri, 22 Aug 2014 07:53:15 +0800</pubDate><description><![CDATA[泛型：通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化，从而实现灵活的复用。
例子代码：
class Program
    {
        static void Main(string[] args)
        {
            int obj = 2;
            Testint> test = new Test]]></description><category></category></item><item><title><![CDATA[C# 反射]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/38750097</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/38750097</guid><author>yxp200401</author><pubDate>Fri, 22 Aug 2014 07:51:36 +0800</pubDate><description><![CDATA[反射（Reflection）是.NET中的重要机制，通过放射，可以在运行时获得.NET中每一个类型（包括类、结构、委托、接口和枚举等）的成员，包括方法、属性、事件，以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射，即可对每一个类型了如指掌。如果获得了构造函数的信息，即可直接创建对象，即使这个对象的类型在编译时还不知道。 



程序代码在编译后生成可执行的应用，我们首先要]]></description><category></category></item><item><title><![CDATA[Delphi之多线程编程(一)]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/38359047</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/38359047</guid><author>yxp200401</author><pubDate>Sun, 03 Aug 2014 16:57:04 +0800</pubDate><description><![CDATA[Delphi之多线程编程(一)


本文的内容取自网络，并重新加以整理，在此留存仅仅是方便自己学习和查阅。所有代码均亲自测试 delphi7下测试有效。图片均为自己制作。


多线程应该是编程工作者的基础技能, 但这个基础我从来没学过，所以仅仅是看上去会一些，明白了2+2的时候，其实我还不知道1+1。


开始本应该是一篇洋洋洒洒的文字, 不过我还是提倡先做起来, 在尝试中去理解]]></description><category></category></item><item><title><![CDATA[设计模式系列之05-原型模式（Prototype Pattern）]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/22157273</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/22157273</guid><author>yxp200401</author><pubDate>Wed, 26 Mar 2014 10:39:55 +0800</pubDate><description><![CDATA[概述
在软件系统中，有时候面临的产品类是动态变化的，而且这个产品类具有一定的等级结构。这时如果用工厂模式，则与产品类等级结构平行的工厂方法类也要随着这种变化而变化，显然不大合适。那么如何封装这种动态的变化？从而使依赖于这些易变对象的客户程序不随着产品类变化？
意图
用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。
结构图

Prototype模式结构图
生活中的例子]]></description><category></category></item><item><title><![CDATA[设计模式系列之04-工厂方法模式（Factory Method）]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/22156203</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/22156203</guid><author>yxp200401</author><pubDate>Wed, 26 Mar 2014 10:29:31 +0800</pubDate><description><![CDATA[概述
在软件系统中，经常面临着“某个对象”的创建工作，由于需求的变化，这个对象的具体实现经常面临着剧烈的变化，但是它却拥有比较稳定的接口。如何应对这种变化？提供一种封装机制来隔离出“这个易变对象”的变化，从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变？这就是要说的Factory Method模式了。
意图
定义一个用户创建对象的接口，让子类决定实例化哪一个类。Factory M]]></description><category></category></item><item><title><![CDATA[SQL效率分析之02]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/22049673</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/22049673</guid><author>yxp200401</author><pubDate>Tue, 25 Mar 2014 11:47:53 +0800</pubDate><description><![CDATA[（1）选择最有效率的表名顺序(只在基于规则的优化器中有效)：    ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名，FROM子句中写在最后的表(基础表 driving table)将被最先处理，在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个]]></description><category></category></item><item><title><![CDATA[SQL效率分析之01]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/22049445</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/22049445</guid><author>yxp200401</author><pubDate>Tue, 25 Mar 2014 11:45:16 +0800</pubDate><description><![CDATA[1.关于SQL查询效率，100w数据，查询只要1秒，与您分享:

机器情况
p4: 2.4
内存: 1 G
os: windows 2003
数据库: ms sql server 2000
目的: 查询性能测试,比较两种查询的性能

SQL查询效率 step by step

-- setp 1.
-- 建表
create table t_userinfo
(
use]]></description><category></category></item><item><title><![CDATA[CRC校验原理]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8815811</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8815811</guid><author>yxp200401</author><pubDate>Wed, 17 Apr 2013 20:16:20 +0800</pubDate><description><![CDATA[1、循环校验码（CRC码）：是数据通信领域中最常用的一种差错校验码，其特征是信息字段和校验字段的长度可以任意选定。
2、生成CRC码的基本原理：任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如：代码1010111对应的多项式为x6+x4+x2+x+1，而多项式为x5+x3+x2+x+1对应的代码101111。
3、CRC码集选择的原则：若设码字长度为N]]></description><category></category></item><item><title><![CDATA[串口通信校验方式（even，odd，space，mark）]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8815787</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8815787</guid><author>yxp200401</author><pubDate>Wed, 17 Apr 2013 20:13:04 +0800</pubDate><description><![CDATA[无校验 （no parity）
奇校验 （odd parity）：如果字符数据位中"1"的数目是偶数，校验位为"1"，如果"1"的数目是奇数，校验位应为"0"。（校验位调整个数）
偶校验 （even parity）：如果字符数据位中"1"的数目是偶数，则校验位应为"0"，如果是奇数则为"1"。（校验位调整个数）
mark parity：校验位始终为1
space parity：校验位始终为]]></description><category></category></item><item><title><![CDATA[自定义通信协议]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8809053</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8809053</guid><author>yxp200401</author><pubDate>Tue, 16 Apr 2013 15:06:24 +0800</pubDate><description><![CDATA[现在大部分的仪器设备都要求能过通过上位机软件来操作，这样方便调试，利于操作。其中就涉及到通信的过程。在实际制作的几个设备中，笔者总结出了通信程序的通用写法，包括上位机端和下位机端等。
1．自定义数据通信协议
  这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤、无线等等通信方式。在这个层面上，底层软件提供两个基本的操]]></description><category></category></item><item><title><![CDATA[接口（interface）与抽象类（abstract class）]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8803851</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8803851</guid><author>yxp200401</author><pubDate>Mon, 15 Apr 2013 14:40:04 +0800</pubDate><description><![CDATA[一、抽象类：
      抽象类是特殊的类，只是不能被实例化；除此以外，具有类的其他特性；重要的是抽象类可以包括抽象方法，这是普通类所不能的。抽象方法只能声明于抽象类中，且不包含任何实现，派生类必须覆盖它们。另外，抽象类可以派生自一个抽象类，可以覆盖基类的抽象方法也可以不覆盖，如果不覆盖，则其派生类必须覆盖它们。


       二、接口：
      接口是引用类型的，类似于类,和抽]]></description><category></category></item><item><title><![CDATA[RS232与RS485]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8803732</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8803732</guid><author>yxp200401</author><pubDate>Mon, 15 Apr 2013 14:20:12 +0800</pubDate><description><![CDATA[分析仪器中常用到RS232与RS485接口，现就RS232与RS485接口的区别及各自特点以及在使用中应注意事项作以下描述：
1.什么是RS-232-C接口？采用RS-232-C接口有何特点？传输电缆长度如何考虑？
      答：计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低，特别是在远程传输时，避免了多条线路特性的不一致]]></description><category></category></item><item><title><![CDATA[Delphi实现进制转化（2进制，8进制，10进制，16进制）]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8803533</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8803533</guid><author>yxp200401</author><pubDate>Mon, 15 Apr 2013 13:51:00 +0800</pubDate><description><![CDATA[delphi中有直接把10进制转换成16进制的函数：
  function   IntToHex(Value:   Integer;   Digits:   Integer):   string;   overload;  
  function   IntToHex(Value:   Int64;   Digits:   Integer):   string;   overload;]]></description><category></category></item><item><title><![CDATA[设计模式系列之03-建造者模式（Builder Pattern）]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8709017</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8709017</guid><author>yxp200401</author><pubDate>Sat, 23 Mar 2013 09:58:39 +0800</pubDate><description><![CDATA[概述
在软件系统中，有时候面临着“一个复杂对象”的创建工作，其通常由各个部分的子对象用一定的算法构成；由于需求的变化，这个复杂对象的各个部分经常面临着剧烈的变化，但是将它们组合在一起的算法确相对稳定。如何应对这种变化？如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化，从而保持系统中的“稳定构建算法”不随着需求改变而改变？这就是要说的建造者模式。
本文通过现实生活中的买KFC的例子，]]></description><category></category></item><item><title><![CDATA[设计模式系列之02-抽象工厂模式（Abstract Factory）]]></title><link>https://blog.youkuaiyun.com/yxp200401/article/details/8708856</link><guid>https://blog.youkuaiyun.com/yxp200401/article/details/8708856</guid><author>yxp200401</author><pubDate>Sat, 23 Mar 2013 08:48:57 +0800</pubDate><description><![CDATA[概述
在软件系统中，经常面临着“一系列相互依赖的对象”的创建工作；同时由于需求的变化，往往存在着更多系列对象的创建工作。如何应对这种变化？如何绕过常规的对象的创建方法（new），提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合？这就是我们要说的抽象工厂模式。
意图
提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类。
模型图
逻辑模型：

物]]></description><category></category></item></channel></rss>