<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Right_pro的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Right_o</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Right_o]]></copyright><item><title><![CDATA[[笔记]算法复习笔记---排序算法（快速排序）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/63682759</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/63682759</guid><author>Right_o</author><pubDate>Sun, 19 Mar 2017 12:26:16 +0800</pubDate><description><![CDATA[快速排序说到排序，当然少不了快速排序。快速排序其实是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据比另一部分所有数据要小，按照这种方法再对这两部分数据分别进行快速排序，整个排序过程可以递归实现，最后把元素排列成有序。]]></description><category></category></item><item><title><![CDATA[[笔记]算法复习笔记---排序算法（桶排序、冒泡排序）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/63681878</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/63681878</guid><author>Right_o</author><pubDate>Sun, 19 Mar 2017 10:52:10 +0800</pubDate><description><![CDATA[对于一个算法的性能来说，除了时间复杂度，还有空间复杂度，稳定性等一系列指标。我平常说的算法复杂度可分为两部分：时间复杂度和空间复杂度。从这两个维度综合分析，可以知道一个算法的好坏，然后才可以针对这个算法进行优化。]]></description><category></category></item><item><title><![CDATA[[笔记]算法复习笔记---栈、队列、链表（下）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/61938250</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/61938250</guid><author>Right_o</author><pubDate>Mon, 13 Mar 2017 23:31:28 +0800</pubDate><description><![CDATA[链表链表的数据结构与栈和队列有所不同，栈和队列都是申请一段连续的存储空间，然后按照顺序存储。而链表是一种在无理数非连续、非顺序的存储结构，数组元素的申请是通过每个元素的指针来联系起来的。链表分为两种：单向链表和双向链表。我们平时说的，一般是指单向链表，链表在每个节点除了存储数据之外，还额外存储两个指针，分别指向前一个节点，和后一个节点。]]></description><category></category></item><item><title><![CDATA[[笔记]算法复习笔记---栈、队列、链表（中）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/61617285</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/61617285</guid><author>Right_o</author><pubDate>Sun, 12 Mar 2017 14:25:07 +0800</pubDate><description><![CDATA[用两个栈来实现队列方法： 
入队都在Stack1中操作，出队都在Stack2中进行，入队和出队的规则如下： 
入队：直接把元素压入Stack1中。 
出队：如果Stack2不为空，直接弹出stack2的元素，如果stack2为空，将stack1中所有元素倒入stack2，然后弹出stack2栈顶元素。如果两个队列都空，队列为空队，无法出栈。]]></description><category></category></item><item><title><![CDATA[[笔记]算法复习笔记---栈、队列、链表（上）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/61616993</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/61616993</guid><author>Right_o</author><pubDate>Sun, 12 Mar 2017 14:05:26 +0800</pubDate><description><![CDATA[栈，又叫做堆栈（Stack），但是它和堆没有关系。实际上堆和栈是两种不同的概念，栈是一种只能在一端进行插入和删除的线性数据结构。栈的特点：先进先出（LIFO，Last In First Out），也可以说是先进后出（FILO，First In Last Out），我们只能从一端去操作元素。一般来说，栈主要有两种操作：一个是进栈（Push），又叫做入栈，压栈；另一个是出栈（POP）。]]></description><category></category></item><item><title><![CDATA[[笔记]算法复习笔记---数组、集合、散列表（下）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/61615956</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/61615956</guid><author>Right_o</author><pubDate>Sun, 12 Mar 2017 13:09:19 +0800</pubDate><description><![CDATA[散列表是一种空间换时间的数据结构，在算法中提升效率的一种常用的方法。但是，正如其特点，有时候所消耗的空间，真让人头疼，用的时候在二者之间权衡。散列表，又叫哈希表（HashTable），是能够通过给定的关键字的值直接访问到具体对应值的数据结构。也就是说，把关键字映到一个表中的位置来直接访问记录，以加快访问速度。通常，我们通过Key来找Value，也就是说，通过Key访问一个映射表来得到Value的地址]]></description><category></category></item><item><title><![CDATA[[笔记]算法复习笔记---数组、集合、散列表（上）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/61614294</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/61614294</guid><author>Right_o</author><pubDate>Sun, 12 Mar 2017 09:35:47 +0800</pubDate><description><![CDATA[数组是数据结构中最基础的存储方式之一，集合是数组的延伸，散列表，又称哈希表（Hash Table），许多高级语言中都是在数组的基础上实现的，当然还有其他实现形式。]]></description><category></category></item><item><title><![CDATA[Android学习笔记-Android6.0运行时权限（续）]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/54292955</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/54292955</guid><author>Right_o</author><pubDate>Mon, 09 Jan 2017 22:12:38 +0800</pubDate><description><![CDATA[如果在项目开发中，像上篇blog那样，每次需要权限的时候，就申请一下，那未免也太麻烦了，运行时权限依附于当前Activity，所以，我们尝试着封装一下。 封装运行时权限。]]></description><category></category></item><item><title><![CDATA[Android学习笔记-Android6.0运行时权限]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/54292063</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/54292063</guid><author>Right_o</author><pubDate>Mon, 09 Jan 2017 21:05:21 +0800</pubDate><description><![CDATA[Android权限机制，在Android6.0之前，其实一直很简单，在AndroidManifest.xml中进行权限声明，通过一个Intent调用即可。在Android运行时权限机制，将危险权限分离来，这类权限，需要在运行时动态申请。]]></description><category></category></item><item><title><![CDATA[Java进阶-设计模式之单例模式]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/53957209</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/53957209</guid><author>Right_o</author><pubDate>Sat, 31 Dec 2016 18:47:19 +0800</pubDate><description><![CDATA[什么是单例模式？单例模式（Singleton Pattern），顾名思义，就是被单例的对象只能有一个实例存在。单例模式的实现方式是，一个类能返回对象的一个引用（永远是同一个）和一个获得该唯一实例的方法（必须是静态方法）。通过单例模式，我们可以保证系统中只有一个实例，从而在某些特定的场合下达到节约或者控制系统资源的目的。]]></description><category></category></item><item><title><![CDATA[Java进阶-设计模式]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/53956892</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/53956892</guid><author>Right_o</author><pubDate>Sat, 31 Dec 2016 17:07:30 +0800</pubDate><description><![CDATA[好久没有更新博客，这段时间太忙了。到了期末，忙里偷闲，整理整理学习笔记。什么是设计模式？在软件工程中，【设计模式】是对软件设计中普遍存在的各种问题，所提出的 解决方案。换句话说，设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计的 经验的总结。嗯，没错，就是套路。]]></description><category></category></item><item><title><![CDATA[DOM4J生成xml文件]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51856439</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51856439</guid><author>Right_o</author><pubDate>Fri, 08 Jul 2016 00:16:02 +0800</pubDate><description><![CDATA[DOM4J生成xml文件主要步骤：1. 创建document对象，代表整个XML 
 2. 创建根节点 
 3. 向跟节点中添加属性 
 4. 生成子节点及其内容 
 5. 设置生成xml的格式 
 6. 生成xml文件例子：DOM4JTest {
    private static List<NewItem> NewItemList = new ArrayList<NewItem>();]]></description><category></category></item><item><title><![CDATA[学习笔记-Java中的xml文件读取之DOM4J解析]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51843262</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51843262</guid><author>Right_o</author><pubDate>Wed, 06 Jul 2016 23:43:21 +0800</pubDate><description><![CDATA[DOM4J同样也是一种针对Java的XML解析技术。 
它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能，包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过DOM4J API和标准DOM接口具有并行访问功能。 
 DOM4J是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使]]></description><category></category></item><item><title><![CDATA[学习笔记-Java中的xml文件读取之JDOM解析]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51843171</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51843171</guid><author>Right_o</author><pubDate>Wed, 06 Jul 2016 23:20:19 +0800</pubDate><description><![CDATA[JDOM技术是针对JAVA的一种DOM解析方式。 
JDOM仅使用具体类而不使用接口。这在某些方面简化了API，但是也限制了灵活性。第二，API大量使用了Collections类，对于熟练使用Collections类的人来说，十分方便。JDOM解析XML步骤：1. 首先需要添加JDOM的jar包。点击这里跳转至JDOM官网 
 2. 创建一个saxBuilder的对象 
 3. 创建一个输入流,将x]]></description><category></category></item><item><title><![CDATA[学习笔记-Java中的xml文件读取之SAX解析]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51843092</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51843092</guid><author>Right_o</author><pubDate>Wed, 06 Jul 2016 23:05:40 +0800</pubDate><description><![CDATA[SAX解析也是官方的一种XML文件解析方式，它是一种基于事件驱动的解析方式，使用到了回调机制。在解析的时候，并不会一次加载整个XML文件，而是以一种类似于流方式的加载方式。对于解析大型文件来说，十分有用。SAX解析XML步骤：1. 获取一个SAXParserFactory实例 
 2. 通过factory获取SAXParser实例 
 3. 创建一个ASAParserhandler对象]]></description><category></category></item><item><title><![CDATA[学习笔记-Java中的xml文件读取之DOM解析]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51842951</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51842951</guid><author>Right_o</author><pubDate>Wed, 06 Jul 2016 22:43:55 +0800</pubDate><description><![CDATA[DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM解析的时候，会将XML文件加载到内存中形成一种类似树的结构。解析前需要加载整个XML文件，这也是DOM方式的缺点。DOM解析XML步骤：1. 创建一个DocumentBuilderFactory的对象 
 2. 创建一个DocumentBuilder的对象 
 3. 通过DocumentBuilder的parse方法加载xml文件]]></description><category></category></item><item><title><![CDATA[XUSTCTF-禅啸星空write up]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51822476</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51822476</guid><author>Right_o</author><pubDate>Mon, 04 Jul 2016 17:35:36 +0800</pubDate><description><![CDATA[这是前一阵子XUSTCTF初赛时，我的write up**Web2、题目提示“老司机让你看看header”** 
       用burpsuite设置代理，截取，看到header如下图：用base64解密得到flagWeb 5、查看源代码如下：下载index.php.bak   用editplus打开，如下图：很明显，这里存在变量覆盖漏洞，构造参数?gift=<?php$flag='sexlady]]></description><category></category></item><item><title><![CDATA[MFC-双缓冲技术]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51822288</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51822288</guid><author>Right_o</author><pubDate>Mon, 04 Jul 2016 17:14:17 +0800</pubDate><description><![CDATA[在做俄罗斯方块游戏的时候，遇到游戏过程中屏幕闪烁问题，解决办法如下：使用双缓冲技术解决屏幕闪烁
运行程序，会发现程序有些闪烁，这是因为程序受WM_TIMER 消息触发，调用OnTimer 
函数，OnTimer 函数中调用Invalidate 函数的结果。Invalidate 的调用会触发对OnDraw 函数 
的调用，从而不停地重绘窗口的结果。
在VC＋＋的文档、视图结构中，CView 的OnDr]]></description><category></category></item><item><title><![CDATA[MFC添加游戏背景音乐]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51822119</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51822119</guid><author>Right_o</author><pubDate>Mon, 04 Jul 2016 16:57:37 +0800</pubDate><description><![CDATA[前一阵在给基于MFC的一个小游戏添加背景音乐的时候，刚开始是准备new一个新线程，但是在参考了一些资料与教程之后，决定采用MCI这个API，开始使用的是winmm.lib接口，使用mciSendString()函数调用，说到这点，确实很坑，网上的教程说少部分音频不能播放，很不幸，我就是那一部分，在尝试了数次时候，果断换接口，使用Vfw32.lib接口，用MCIWndCreate()函数播放，使用MC]]></description><category></category></item><item><title><![CDATA[MFC中listctrl的使用]]></title><link>https://blog.youkuaiyun.com/Right_o/article/details/51821468</link><guid>https://blog.youkuaiyun.com/Right_o/article/details/51821468</guid><author>Right_o</author><pubDate>Mon, 04 Jul 2016 15:54:51 +0800</pubDate><description><![CDATA[MFC中listCtrl的使用前一阵子做MFC项目用到了listCtrl控件，今天刚好有空，整理了一下。废话不多说，看代码。 
右键菜单：/*右键菜单*/
void CStudentMngDlg::OnNMRClickStudentList(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinte]]></description><category></category></item></channel></rss>