<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Razor87的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/razor87</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; razor87]]></copyright><item><title><![CDATA[快速排序的四种python实现]]></title><link>https://blog.csdn.net/razor87/article/details/71155518</link><guid>https://blog.csdn.net/razor87/article/details/71155518</guid><author>razor87</author><pubDate>Thu, 04 May 2017 15:30:26 +0800</pubDate><description><![CDATA[快速排序算法，简称快排，是最实用的排序算法，没有之一，各大语言标准库的排序函数也基本都是基于快排实现的
本文用python语言介绍四种不同的快排实现
1. 一行代码实现的简洁版本

quick_sort = lambda array: array if len(array)  array[0]])
    
2. 网上常见的快排实现
def quick_sort(array, left]]></description><category></category></item><item><title><![CDATA[CPU与内存的中转站 ——了解CPU缓存的秘密]]></title><link>https://blog.csdn.net/razor87/article/details/39495681</link><guid>https://blog.csdn.net/razor87/article/details/39495681</guid><author>razor87</author><pubDate>Tue, 23 Sep 2014 11:06:41 +0800</pubDate><description><![CDATA[转载自 青原的日记]]></description><category></category></item><item><title><![CDATA[摄像机、观察矩阵与取景变换]]></title><link>https://blog.csdn.net/razor87/article/details/16853167</link><guid>https://blog.csdn.net/razor87/article/details/16853167</guid><author>razor87</author><pubDate>Thu, 21 Nov 2013 02:04:58 +0800</pubDate><description><![CDATA[重看DX龙书，发现之前想不通的地方居然一下就懂了，可能是我太笨，把一些简单问题搞复杂了。
本文记录的是我对取景变换的一些心得。

首先要弄清楚相机代表什么
其实它就是我们的眼睛，因为最终绘制出来的东西，就是相机视野中的对象。
取景变换，就是要把物体从世界坐标系变换到观察坐标系（即相机空间）中来。取景变换可以分为两个步骤：
1、在世界坐标系中使所有对象跟着相机平移，将相机移至坐标原点。注]]></description><category></category></item><item><title><![CDATA[Effulgent的《深入理解Direct3D9》整理版]]></title><link>https://blog.csdn.net/razor87/article/details/8921982</link><guid>https://blog.csdn.net/razor87/article/details/8921982</guid><author>razor87</author><pubDate>Mon, 13 May 2013 18:44:35 +0800</pubDate><description><![CDATA[本文转载自：CG迷途大熊猫
太喜欢这篇文章了，干脆转载了，对D3D有了新的理解之后就来读一遍 ^_^
深入理解Direct3D9


深入理解D3D9对图形程序员来说意义重大，我把以前的一些学习笔记都汇总起来，希望对朋友们有些所帮助，因为是零散笔记，思路很杂，还请包涵。

其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DEVICE、QUERY、Pre]]></description><category></category></item><item><title><![CDATA[INTEL处理器识别和CPUID指令(二) CPUID指令]]></title><link>https://blog.csdn.net/razor87/article/details/8711712</link><guid>https://blog.csdn.net/razor87/article/details/8711712</guid><author>razor87</author><pubDate>Sun, 24 Mar 2013 01:33:29 +0800</pubDate><description><![CDATA[CPUID指令有两套函数，第一套函数返回处理器的基本信息，第二套函数返回处理器的扩展信息。图一总结了CPUID指令所能输出的处理器的基本信息。CPUID指令的输出完全依赖于EAX寄存器的内容，根据EAX寄存器中的值，执行CPUID指令时会调用不同的函数(见表一)。
为了确定CPUID指令输出处理器的基本信息时，EAX寄存器所能接受的最大的输入值，应用程序应该将EAX寄存器赋值为0并执行CPUID]]></description><category></category></item><item><title><![CDATA[INTEL处理器识别和CPUID指令(一) CPUID指令与状态寄存器的演变]]></title><link>https://blog.csdn.net/razor87/article/details/8711468</link><guid>https://blog.csdn.net/razor87/article/details/8711468</guid><author>razor87</author><pubDate>Sun, 24 Mar 2013 00:50:02 +0800</pubDate><description><![CDATA[按：本系列翻译自INTEl官方的CPUID指令文档《Intel® Processor Identification and the CPUID Instruction》，由于我自身英语水平有限，之前顶多也就在上学时翻译过一些英语短文，翻译这种对准确性要求较高的文档，错误在所难免，这次就当做是练笔吧，以后会进行修改完善。
      从INTEL486(*)开始，INTEL处理器提供了一个直接的方]]></description><category></category></item><item><title><![CDATA[批处理for命令/f参数的用法]]></title><link>https://blog.csdn.net/razor87/article/details/8252998</link><guid>https://blog.csdn.net/razor87/article/details/8252998</guid><author>razor87</author><pubDate>Mon, 03 Dec 2012 19:14:26 +0800</pubDate><description><![CDATA[转载自ChinaHuanyang的专栏>
含有/F的FOR详细说明
含有/F的for有很大的用处，在批处理中使用的最多，用法如下：
格式：                   
FOR /F ["options"] %%i IN (file) DO command
FOR /F ["options"] %%i IN ("string") DO command
FOR /F ["opti]]></description><category></category></item><item><title><![CDATA[[debug]调试Release版本应用程序]]></title><link>https://blog.csdn.net/razor87/article/details/6293333</link><guid>https://blog.csdn.net/razor87/article/details/6293333</guid><author>razor87</author><pubDate>Fri, 01 Apr 2011 09:13:00 +0800</pubDate><description><![CDATA[引言如果在您的开发过程中遇到了常见的错误，或许您的Release版本不能正常运行而Debug版本运行无误，那么我推荐您阅读本文：因为并非如您想象的那样，Release版本可以保证您的应用程序可以象Debug版本一样运行。如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过Release版本测试，然而当您测试的时候却发现问题，那么请看我们的调试规则1:规则1: 经常性对开发软件进行Debug和Release版本的常规测试.测试Release版本的时间间隔越长，排除问题的难度越大，至少对Releas]]></description><category></category></item><item><title><![CDATA[C++函数间动态内存的传递]]></title><link>https://blog.csdn.net/razor87/article/details/6017649</link><guid>https://blog.csdn.net/razor87/article/details/6017649</guid><author>razor87</author><pubDate>Thu, 18 Nov 2010 10:07:00 +0800</pubDate><description><![CDATA[（转载自： http://mxdxm.javaeye.com/blog/585432）当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道.这些往往会使人受尽折磨.所以如果你想深入C/C++编程,你必须静下心来,好好苦一番. 　　现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递.并且在软件开发中很多专业人员并不能写出相关的合格的代码. 　　【引入】 　　看下面的例子,这是我们在编写库函数或者项目内的共同函数经常希望的.    ]]></description><category></category></item><item><title><![CDATA[C++引用本质]]></title><link>https://blog.csdn.net/razor87/article/details/5989681</link><guid>https://blog.csdn.net/razor87/article/details/5989681</guid><author>razor87</author><pubDate>Fri, 05 Nov 2010 14:13:00 +0800</pubDate><description><![CDATA[在看这篇文章之前，请你先要明白一点：那就是c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制，也就是说是编译器确保了你在完成任务之前的正确行为，如果你的行为不正确，那么你休想构造出任何可执行程序来。但如果真正到了产生可执行代码阶段，无论是c，c++,还是pascal，大家都一样，你认为c和c++编译器产生的机器代码会有所不同吗，你认为c++产生的机器代码会有访问限制吗？那么你错了。什么const，private，统统没有（const变量或许会放入只读数据段），它不会再给你任何的限制，你可以利用一切]]></description><category></category></item><item><title><![CDATA[C++编译器和连接器介绍]]></title><link>https://blog.csdn.net/razor87/article/details/5987311</link><guid>https://blog.csdn.net/razor87/article/details/5987311</guid><author>razor87</author><pubDate>Thu, 04 Nov 2010 14:47:00 +0800</pubDate><description><![CDATA[有些人写C/C++(以下假定为C++)程序，对unresolved external link或者duplicated external simbol的错误信息不知所措（因为这样的错误信息不能定位到某一行）。或者对语言的一些部分不知道为什么要（或者不要）这样那样设计。了解本文之后，或许会有一些答案。    首先看看我们是如何写一个程序的。如果你在使用某种IDE（Visual Studio，Elicpse，Dev C++等），你可能不会发现程序是如何组织起来的（很多人因此而反对初学者使用IDE）。因为使用ID]]></description><category></category></item></channel></rss>