<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gaoyi的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u011711997</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011711997]]></copyright><item><title><![CDATA[网络字节序]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/117840928</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/117840928</guid><author>u011711997</author><pubDate>Tue, 16 Apr 2024 00:01:39 +0800</pubDate><description><![CDATA[本文讲解了什么是网络字节序，为什么采用网络字节序。
]]></description><category></category></item><item><title><![CDATA[TCP穿透NAT]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/119505334</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/119505334</guid><author>u011711997</author><pubDate>Sun, 08 Aug 2021 07:36:59 +0800</pubDate><description><![CDATA[https://edu.51cto.com/course/28749.html
]]></description><category></category></item><item><title><![CDATA[Torrent字符串类型合法性检测]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/118672067</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/118672067</guid><author>u011711997</author><pubDate>Mon, 12 Jul 2021 11:50:51 +0800</pubDate><description><![CDATA[// TorrentDataParse.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;string&gt;

bool IsValidInt(char * pData, int &amp; nNum)
{
	char * pTemp = pData;

	int nState = 0;

	char c = 0;

	char buf.]]></description><category></category></item><item><title><![CDATA[Torrent整型数据类型合法性检测]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/118671324</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/118671324</guid><author>u011711997</author><pubDate>Mon, 12 Jul 2021 11:22:58 +0800</pubDate><description><![CDATA[// TorrentDataParse.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

bool IsValidInt(char * pData, int &amp; nNum)
{
	char * pTemp = pData;

	int nState = 0;

	char c = 0;

	char buf[256] = { 0 };

	if (!pD.]]></description><category></category></item><item><title><![CDATA[P2P穿透实现]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/117840943</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/117840943</guid><author>u011711997</author><pubDate>Sat, 12 Jun 2021 10:42:42 +0800</pubDate><description><![CDATA[https://edu.51cto.com/course/28082.html

pengyou
]]></description><category></category></item><item><title><![CDATA[VLC SDK下载路径]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/117043874</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/117043874</guid><author>u011711997</author><pubDate>Wed, 19 May 2021 20:18:01 +0800</pubDate><description><![CDATA[http://download.videolan.org/pub/videolan/vlc/

下载文件


vlc-3.0.12-win32.7z   

解压后：



SDK目录



SDK目录里面就是开发包。




]]></description><category></category></item><item><title><![CDATA[S5PV210 KEY轮询模式点LED]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/114878080</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/114878080</guid><author>u011711997</author><pubDate>Tue, 16 Mar 2021 13:35:52 +0800</pubDate><description><![CDATA[/*
 * 文件名：	start.S
 * 作者：	朱老师
 * 描述：	演示轮询方式处理按键
 */

#define WTCON		0xE2700000

#define SVC_STACK	0xd0037d80

.global _start					// 把_start链接属性改为外部，这样其他文件就可以看见_start了
_start:
	// 第1步：关看门狗（向WTCON的bit5写入0即可）
	ldr r0, =WTCON
	ldr r1, =0x0
	str r1, [r0]
	
	//.]]></description><category></category></item><item><title><![CDATA[S5PV210 UART使用printf和scanf]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/114806344</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/114806344</guid><author>u011711997</author><pubDate>Sun, 14 Mar 2021 22:06:36 +0800</pubDate><description><![CDATA[关键代码：


#define GPA0CON		0xE0200000
#define UCON0 		0xE2900004
#define ULCON0 		0xE2900000
#define UMCON0 		0xE290000C
#define UFCON0 		0xE2900008
#define UBRDIV0 	0xE2900028
#define UDIVSLOT0	0xE290002C
#define UTRSTAT0	0xE2900010
#define UTXH0		0xE290002]]></description><category></category></item><item><title><![CDATA[S5PV210初始化DDR]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/113844058</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/113844058</guid><author>u011711997</author><pubDate>Thu, 18 Feb 2021 11:38:12 +0800</pubDate><description><![CDATA[#define GPJ0CON 0xE0200240
#define GPJ0DATA 0xE0200244
#define GPD0CON 0xE02000A0
#define GPD0DATA 0xE02000A4
#define SVCSP 0xD0037D80
.global _start
_start:
	ldr r0,=0x11111111
	ldr r1,=GPJ0CON
	str r0,[r1]
	ldr r0,=0x11111111
	ldr r1,=GPD0CON
	str r0,[r.]]></description><category></category></item><item><title><![CDATA[S5PV210重定位]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/113828260</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/113828260</guid><author>u011711997</author><pubDate>Tue, 16 Feb 2021 20:57:25 +0800</pubDate><description><![CDATA[#define GPJ0CON 0xE0200240
#define GPJ0DATA 0xE0200244
#define GPD0CON 0xE02000A0
#define GPD0DATA 0xE02000A4
#define SVCSP 0xD0037D80
.global _start
_start:
	ldr r0,=0x11111111
	ldr r1,=GPJ0CON
	str r0,[r1]
	ldr r0,=0x11111111
	ldr r1,=GPD0CON
	str r0,[r.]]></description><category></category></item><item><title><![CDATA[S5PV210打开和关闭catche]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/113810025</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/113810025</guid><author>u011711997</author><pubDate>Sun, 14 Feb 2021 18:54:10 +0800</pubDate><description><![CDATA[mrc p15, 0,r0,c1,c0,0
bic r0,r0,#(1&lt;&lt;12) //关闭catche
orr r0,r0,#(1&lt;&lt;12) //打开catche
mcr p15,0,r0,c1,c0,0


]]></description><category></category></item><item><title><![CDATA[使用C语言]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/113808784</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/113808784</guid><author>u011711997</author><pubDate>Sun, 14 Feb 2021 16:17:33 +0800</pubDate><description><![CDATA[S5pv210默认进入SVC模式，这个模式的CPU可能已经默认初始化了SP，因为代码中，即使不初始化SP，也可以正常使用C语言。


#define GPJ0CON 0xE0200240
#define GPJ0DATA 0xE0200244
#define GPD0CON 0xE02000A0
#define GPD0DATA 0xE02000A4
#define SVCSP 0xD0037D80
.global _start
_start:
	ldr r0,=0x11111111
	ldr r1,=GP]]></description><category></category></item><item><title><![CDATA[4个LED灯流水灯]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/113802546</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/113802546</guid><author>u011711997</author><pubDate>Sat, 13 Feb 2021 18:19:35 +0800</pubDate><description><![CDATA[#define GPJ0CON 0xE0200240
#define GPJ0DATA 0xE0200244
#define GPD0CON 0xE02000A0
#define GPD0DATA 0xE02000A4
.global _start
_start:
	ldr r0,=0x11111111
	ldr r1,=GPJ0CON
	str r0,[r1]
	ldr r0,=0x11111111
	ldr r1,=GPD0CON
	str r0,[r1]
	
flash:
	ldr r0,=~(1 .]]></description><category></category></item><item><title><![CDATA[键盘钢琴发音原理]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/109636806</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/109636806</guid><author>u011711997</author><pubDate>Thu, 12 Nov 2020 15:22:20 +0800</pubDate><description><![CDATA[相信很多喜欢音乐的小伙伴都玩过一款软件，叫做键盘钢琴，这款软件的确做得很棒，这时，可能有一些会开发的小伙伴就要想这个键盘钢琴软件是如何开发的呢？可以这么说，想要开发这款软件需要对乐理有一定的了解，并且对MIDI要非常的熟悉，本篇文章，我们主要介绍一下这个键盘钢琴的发音原理，如果我们要让计算机发生，那么我们需要使用midi设备，所以，我们需要选择要打开的midi设备，然后向设备输出消息，就可以让计算机发出声音，我们主要介绍发音原理，其它的功能，同学们感兴趣可以去看MIDI消息格式。

MIDI发音主要使用了两]]></description><category></category></item><item><title><![CDATA[使用gdb反汇编的方法]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/108020961</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/108020961</guid><author>u011711997</author><pubDate>Sat, 15 Aug 2020 13:11:39 +0800</pubDate><description><![CDATA[话不多说，需要的小伙伴，往下看，可以跟着我一步步地学习如何使用gdb反汇编。


#include &lt;stdio.h&gt;
#include &lt;locale.h&gt;
#include &lt;iostream&gt;
int main()
{
        int i = 3;

        int k = ++i + ++i + ++i;

        std::cout &lt;&lt; k &lt;&lt; std::endl;

        return 0;
}
~]]></description><category></category></item><item><title><![CDATA[Bridge模式]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/106018209</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/106018209</guid><author>u011711997</author><pubDate>Sat, 09 May 2020 14:53:46 +0800</pubDate><description><![CDATA[假设我们要开发一套UI控件库，所有的UI控件都派生于Windows接口，假设控件有100个，而且我们的目标是UI控件库可以跨Widows,Linux,Unix，那么我们该怎么做呢?

第一种做法，我们把每个UI控件都实现3遍，分别对应3个平台Linux、Windows、Unix，那么我们一共需要实现300次，非常麻烦，那么是否有更好的方法呢？有，这就是桥模式。

第二种方法：桥模式

我们首先定义1个Window接口，然后把所有UI控件需要的基本操作定义在Window中，然后再让所有的UI控件都继承WInd]]></description><category></category></item><item><title><![CDATA[PROTOTYPE模式难点解析]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/105948973</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/105948973</guid><author>u011711997</author><pubDate>Wed, 06 May 2020 13:59:30 +0800</pubDate><description><![CDATA[这个模式在C++中什么时候才会使用，为什么不直接new，大家只要明白一个场景，就会知道它的用处。

比如，现在让你设计一个游戏，一共有8个关卡，每关的小兵有四种，但是第一关的小兵最弱，第八关的小兵最强，你怎么设计？

你可能认为这还不简单，需要小兵的时候，直接new一个相应的小兵，就可以了。但是这样做会遇见一个问题，比如第一关的小兵和最后一关的小兵，他们的属性肯定不一样，因此，如果直接new，导致...]]></description><category></category></item><item><title><![CDATA[Factory Method 模式难点解析]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/105921687</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/105921687</guid><author>u011711997</author><pubDate>Mon, 04 May 2020 20:23:30 +0800</pubDate><description><![CDATA[首先大家要知道什么是框架，为什么使用框架，明白了这个后，大家就知道Factory Method诞生的原因了。

什么是框架？

1 、是一组相关类的集合。

2、具有通用性。

3、是半成品。

我们为什么使用框架？

因为框架是半成品，所以我们使用框架可以降低我们的开发成本，提升开发效率。

Factory Method诞生的原因

假如我们要开发一个框架，因为框架具有通用性，半成品的特点，所以...]]></description><category></category></item><item><title><![CDATA[Builder模式]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/105905705</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/105905705</guid><author>u011711997</author><pubDate>Sun, 03 May 2020 17:34:30 +0800</pubDate><description><![CDATA[许多同学反映GOF设计模式看不懂，我认为主要两点原因：

1、你的工作经验太少，或者根本就没有经验。

2、GOF举得的例子，你认为不好理解，我个人也认为GOF举得例子并不是很恰当。

我本来想写代码，但是最后还是决定不写了，因为我认为这个代码并不难，关键是明白Builder模式到底讲的是什么，这才是关键，如果大家明白了Builder模式的本质，代码自己就可以写出来。

好了，废话不多说，我们言归...]]></description><category></category></item><item><title><![CDATA[Abstract Factory模式]]></title><link>https://blog.youkuaiyun.com/u011711997/article/details/105879498</link><guid>https://blog.youkuaiyun.com/u011711997/article/details/105879498</guid><author>u011711997</author><pubDate>Fri, 01 May 2020 16:58:55 +0800</pubDate><description><![CDATA[// AbstractFactory.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

//主板
class CMainBoard
{
public:
	//显示主板信息
	virtual void Print() = 0;
};

//华硕主板
class CAsusBoard :public CMainBoard
{
public:
	void Pr...]]></description><category></category></item></channel></rss>