自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (24)
  • 收藏
  • 关注

原创 网络字节序

本文讲解了什么是网络字节序,为什么采用网络字节序。

2024-04-16 00:01:39 233

原创 TCP穿透NAT

https://edu.51cto.com/course/28749.html

2021-08-08 07:36:59 198

原创 Torrent字符串类型合法性检测

// TorrentDataParse.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdlib.h>#include <string.h>#include <string>bool IsValidInt(char * pData, int & nNum){ char * pTemp = pData; int nState = 0; char c = 0; char buf.

2021-07-12 11:50:51 185

原创 Torrent整型数据类型合法性检测

// TorrentDataParse.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdlib.h>#include <string.h>bool IsValidInt(char * pData, int & nNum){ char * pTemp = pData; int nState = 0; char c = 0; char buf[256] = { 0 }; if (!pD.

2021-07-12 11:22:58 188

原创 P2P穿透实现

https://edu.51cto.com/course/28082.htmlpengyou

2021-06-12 10:42:42 829

原创 VLC SDK下载路径

http://download.videolan.org/pub/videolan/vlc/下载文件vlc-3.0.12-win32.7z 解压后:SDK目录SDK目录里面就是开发包。

2021-05-19 20:18:01 344

原创 S5PV210 KEY轮询模式点LED

/* * 文件名: 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] //.

2021-03-16 13:35:52 121

原创 S5PV210 UART使用printf和scanf

关键代码:#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

2021-03-14 22:06:36 188

原创 S5PV210初始化DDR

#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.

2021-02-18 11:38:12 238

原创 S5PV210重定位

#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.

2021-02-16 20:57:25 110

原创 S5PV210打开和关闭catche

mrc p15, 0,r0,c1,c0,0bic r0,r0,#(1<<12) //关闭catcheorr r0,r0,#(1<<12) //打开catchemcr p15,0,r0,c1,c0,0

2021-02-14 18:54:10 189

原创 使用C语言

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

2021-02-14 16:17:33 152

原创 4个LED灯流水灯

#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 .

2021-02-13 18:19:35 1668

原创 键盘钢琴发音原理

相信很多喜欢音乐的小伙伴都玩过一款软件,叫做键盘钢琴,这款软件的确做得很棒,这时,可能有一些会开发的小伙伴就要想这个键盘钢琴软件是如何开发的呢?可以这么说,想要开发这款软件需要对乐理有一定的了解,并且对MIDI要非常的熟悉,本篇文章,我们主要介绍一下这个键盘钢琴的发音原理,如果我们要让计算机发生,那么我们需要使用midi设备,所以,我们需要选择要打开的midi设备,然后向设备输出消息,就可以让计算机发出声音,我们主要介绍发音原理,其它的功能,同学们感兴趣可以去看MIDI消息格式。MIDI发音主要使用了两

2020-11-12 15:22:20 751

原创 使用gdb反汇编的方法

话不多说,需要的小伙伴,往下看,可以跟着我一步步地学习如何使用gdb反汇编。#include <stdio.h>#include <locale.h>#include <iostream>int main(){ int i = 3; int k = ++i + ++i + ++i; std::cout << k << std::endl; return 0;}~

2020-08-15 13:11:39 11545

原创 Bridge模式

假设我们要开发一套UI控件库,所有的UI控件都派生于Windows接口,假设控件有100个,而且我们的目标是UI控件库可以跨Widows,Linux,Unix,那么我们该怎么做呢?第一种做法,我们把每个UI控件都实现3遍,分别对应3个平台Linux、Windows、Unix,那么我们一共需要实现300次,非常麻烦,那么是否有更好的方法呢?有,这就是桥模式。第二种方法:桥模式我们首先定义1个Window接口,然后把所有UI控件需要的基本操作定义在Window中,然后再让所有的UI控件都继承WInd

2020-05-09 14:53:46 172

原创 PROTOTYPE模式难点解析

这个模式在C++中什么时候才会使用,为什么不直接new,大家只要明白一个场景,就会知道它的用处。比如,现在让你设计一个游戏,一共有8个关卡,每关的小兵有四种,但是第一关的小兵最弱,第八关的小兵最强,你怎么设计?你可能认为这还不简单,需要小兵的时候,直接new一个相应的小兵,就可以了。但是这样做会遇见一个问题,比如第一关的小兵和最后一关的小兵,他们的属性肯定不一样,因此,如果直接new,导致...

2020-05-06 13:59:30 235

原创 Factory Method 模式难点解析

首先大家要知道什么是框架,为什么使用框架,明白了这个后,大家就知道Factory Method诞生的原因了。什么是框架?1 、是一组相关类的集合。2、具有通用性。3、是半成品。我们为什么使用框架?因为框架是半成品,所以我们使用框架可以降低我们的开发成本,提升开发效率。Factory Method诞生的原因假如我们要开发一个框架,因为框架具有通用性,半成品的特点,所以...

2020-05-04 20:23:30 199

原创 Builder模式

许多同学反映GOF设计模式看不懂,我认为主要两点原因:1、你的工作经验太少,或者根本就没有经验。2、GOF举得的例子,你认为不好理解,我个人也认为GOF举得例子并不是很恰当。我本来想写代码,但是最后还是决定不写了,因为我认为这个代码并不难,关键是明白Builder模式到底讲的是什么,这才是关键,如果大家明白了Builder模式的本质,代码自己就可以写出来。好了,废话不多说,我们言归...

2020-05-03 17:34:30 182

原创 Abstract Factory模式

// AbstractFactory.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"//主板class CMainBoard{public: //显示主板信息 virtual void Print() = 0;};//华硕主板class CAsusBoard :public CMainBoard{public: void Pr...

2020-05-01 16:58:55 221

原创 我的JS富文本编辑器(1)

近来,无事,学习js,感觉很有意思,于是乎想写个自己的富文本编辑器,重在明白它的原理,于是,自己写了一个可以改变文本和插入图片的富文本编辑器的雏形,由于我本人不是前端工程师,所以,错误之处,在所难免,以下是这个富文本编辑器的雏形,喜欢的小伙伴可以看看。源码如下:<!DOCTYPE html><html lang="en"><head> ...

2020-02-28 16:24:39 188

原创 冒泡排序的并行计算

本人也是并行计算的小白,在这里记录下自己的学习笔记。今天做了一下冒泡排序的并行计算比较:串行冒泡排序如下:#include <stdio.h>#include <stdlib.h>#include <windows.h>void BubbleSort(int * pData, int nSize){ if (!pData) { ...

2020-01-04 16:15:43 4205

原创 关键字词法识别

本人想做一个自己的脚本语言,但是又不想使用lex之类的词法分析器,又不想自己画状态转换图,所以,写了下面的一段程序,它的功能是:有如下若干个关键字:char * KeyWords[1024] = { "var", "+", "-", "*", "/", "%", "if", "else", "switch", "case", "while", "do", "fo...

2019-10-16 12:00:13 1065

原创 Direct2D简介

Direct2D是一套高性能、高质量的2D图形渲染接口,它的出现主要是为了满足以下的开发:1 大型的企业级本地应用开发2 控件库或者是控件工具包开发人员3 服务端2D图形渲染4 在D3D中进行2D绘制,主要是为了实现用户接口元素的绘制,比如3D游戏中的菜单元素。运行环境要求:win7或者vista之后的桌面系统windows 2008以后的服务器系统原文:htt...

2019-09-29 20:47:30 1270

原创 Bresenham绘制直线学习笔记

今天学习计算机图形学第三版,使用Bresenham绘制直线,有一些公式推导的不是很细致,自己推导了一番,记录一下,方便自己日后学习。疑惑点:参考图:推导过程:又因为:P0 = 2 * DeltaY * x0 - 2 * DeltaX * y0 + 2 * DeltaY + DeltaX*(2b - 1)因为:所以2 * b * DeltaX = ...

2019-09-25 15:10:19 245

原创 Bresenham画线K>1时的递归公式

算法1 k&gt;1此时y增加1,x增加小于1,所以以y为主。P1在直线的左方假设直线上相邻两点S1,S2 ,S1.x &lt; S2.x, S1在屏幕上逼近P1,S2应该逼近哪个点呢?假设P2.x = p1.x + 1因为S2.x = S1.x + ∆x因为P1.x &lt; S1.x &lt; p1.x + 0.5所以p1.x + ∆x &lt; S1.x + ∆x...

2019-01-15 17:34:38 4102

原创 中点画线算法实践

输入两点,用中点画线算法绘制直线,效果如下:输入两点,计算出斜率k,当斜率k不存在时,就是一条垂直的线段,如果k存在,计算出直线方程的系数A,B,C,这里根据斜率分为3种情况:|k|=1x,y递增一样,直接绘制就可以。|k|&lt;1 B D(M_prev) D(M_next) &gt;0 ...

2019-01-12 13:58:36 1087

原创 关于斜率大于1的中点画线的公式推导

首先还是假设直线L的一般公式为:Ax+By+C=0,并且斜率大于1,那么这个时候代表x变化慢,y变化快,那么这时我们应该让y每次递增1,x是否递增,需要判断,判断方法如下:首先假设直线的起点(x1,y1),终点为(x2,y2),那么从起点开始,起点的下一个点的坐标应该是(x_next,y_next),因为y每次递增1,所以y_next = y1+1,那么x_next应该取哪个点呢?设起点的...

2019-01-10 15:36:36 8709

原创 中点画线中的一些不严谨的地方

我认为对于初学者,特别是自学的人,因为没有老师可以请教,所以任何一点不严谨的地方都会让人困惑很久,我个人认为计算机图学中关于中点画线有如下的不严谨的地方:1、假设直线的一般方程AX+BY+C = 0,那么A=-(deltaY),B=(deltaX),C=-B(deltaX),这个前提是斜率存在的情况下,但是我见过的老师和教材的讲解,却没有前提,具体推导如下:假设直线上的两点(x1,y1),...

2019-01-09 16:28:33 440

原创 用DDA绘制直线

最近在学习计算机图形学,下面是我的DDA效果: 输入斜率k,截距b,就可以绘制出直线,需要的小伙伴,可以从下面的地址下载:https://download.csdn.net/download/u011711997/10904838 ...

2019-01-09 12:32:55 2142

原创 如何用虚拟机VMware和Linux路由器搭建一个虚拟网络

今天为大家介绍一下如何使用虚拟机VMware和Linux路由器搭建一个虚拟网络,具体的网络拓扑如下:一共需要5台虚拟机,其中3台是路由器,它们使用Linux来模拟,另外两台分别是192.168.2.10和192.168.5.10,这两个网段是私网,192.168.1.166和192.168.1.103是我的笔记本和台式机,它们代表公网。下面我说一下关键技术点,因为内容太多了。1)为...

2018-12-26 17:11:26 2543 1

原创 SNAT也不是Full Clone NAT

测试命令如下:iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens37 -j SNAT --to-source 192.168.3.1测试命令结果如下:大量测试表明:SNAT大部分是Full Clone NAT,但是不稳定,有时会变化。...

2018-12-26 13:56:11 833

原创 MASQUERADE并不是Full Clone NAT

最近在忙p2p的环境搭建,首先搭建的肯定是Full Clone Nat,网上的大神们说用MASQUERADE就是Full Clone Nat,比如:iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -o ens37 -j MASQUERADE实际测试证明,这么配置并不是Full Clone Nat.具体结果如下:...

2018-12-26 11:52:34 558

原创 用Dynamips和虚拟机搭建虚拟网络1

今天和大家分享一个虚拟网络的搭建过程,这个虚拟网络的具体拓扑如下:路由器使用Dynamips,我们使用cisco 3660路由器,虚拟机使用VMware和XP,物理机是Win10,Dynamips安装在物理机Win10上,路由器模拟器的配置文件下载地址如下:https://download.csdn.net/download/u011711997/10852184我的物理机地址:...

2018-12-15 13:04:42 1363

原创 dynamips中网卡参数如何和网络连接中的具体网卡匹配

使用dynamips可以搭建虚拟的网络环境,所以很多人都知道,但是有一个小疑惑,相信很多人都有,就是如何根据网卡参数匹配具体的网卡连接,比如我的机器上的网卡参数如下:那么我们如何根据这些网卡参数来找到对应的网络连接呢?我本机的网络连接如下:大家仔细观察,可以发现,网络连接中的名字和和上面的网卡型号的值并不匹配,那么该如何具体定位呢?下面由我带大家走一圈。首先我们应该知道{5...

2018-12-11 22:33:39 846

原创 关于音频重采样计算的理解

av_rescale_rnd(swr_get_delay(swr_ctx, 48000) + 1024, 44100, 48000, AV_ROUND_UP);这里48000是输入音频A的采样率,44100是输出视频B的采样率,这行代码的意思是说,如果转换1024个音频A,能够生成多少个音频B,那为什么要使用swr_get_delay呢,大家可以这么理解,当我们的项目是一个实时的推流项目的时...

2018-11-07 10:56:43 2594 3

原创 使用nginx搭建windows流媒体服务器

准备工具:nginxhttps://download.csdn.net/download/u011711997/10719195ffmpeghttps://ffmpeg.zeranoe.com/builds/ffmpeg只需要下载static版本。下载nginx后,解压nginx,然后修改conf/nginx-win.conf的内容为自己需要的配置,具体如下:#us...

2018-10-14 12:00:20 3515

原创 ffmpeg-4.0.2版本中ffplay播放器在vs2013下的编译

相信很多想要学习播放器开发的小伙伴都知道ffplay,但是却不知道如何在vs2013下去编译,虽然网上已经有了一些教程,但是都不完整,或者ffmpeg的版本太老,所以就有了今天这篇文章。好了,废话少说,直接上干货。第一步下载ffmpeg源码,下载地址http://ffmpeg.org/download.html,具体界面如下:第2步,下载ffmpeg的二进制版本,有些小伙伴可能会问...

2018-09-16 13:31:42 1288 1

原创 用ffmpeg开发屏幕录制-高延君-专题视频课程

使用VC++和ffmpeg开发屏幕录制,使用D3d录制屏幕,使用Audio Core API实现声卡录制和麦克风的录制,使用ffmpeg实现编码,后保存为mp4文件。

2018-07-25 09:47:47 454

原创 声卡&麦克风实时采集并重采样

上篇文章讲了如何用最新的技术采集声卡和麦克风,但是在工作中通常需要进行重采样为(44100、FLTP),再进行推流,所以本篇是在上次的基础上完成了重采样,重采样的核心代码如下:// audiocap.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "AudioCapT.h"#include &lt;conio.h&gt;extern...

2018-07-13 15:15:29 3745

key_polling.zip

S5PV210 KEY 轮询模式 点起 4 个LED灯。

2021-03-16

uart_c_printf_scanf.zip

S5PV210 UART 串口 非 FIFO 使用 printf scanf

2021-03-14

ddr_init.zip

DDR初始化并重定位

2021-02-18

relocate.zip

S5PV210重定位

2021-02-16

init_c.zip

使用C语言实现了4个LED灯闪烁。

2021-02-14

S5PV210 myled.rar

嵌入式开发入门

2021-02-13

使用C++和MIDI演示键盘钢琴发音原理

使用vc++演示的MIDI键盘钢琴发音原理的代码,小伙伴们可以通过查看代码对midi的使用有一个基本的了解。

2020-11-12

关键字词法分析扫描程序.rar

可以添加多个关键字,并且自动产生状态转换表,然后扫描文件,打印出所有的关键字。

2019-10-16

BresenhamLine.rar

采用Bresenham绘制直线,使用MFC的方式,为了方便各位小伙伴参考。希望对大家有所帮助。

2019-09-25

用MFC实现的DDA画线

用MFC实现的DDA,方便查看效果,需要的小伙伴可以下载。

2019-01-08

使用dynamips搭建虚拟网络1

路由器使用Dynamips模拟器,虚拟机使用WinXP,物理机使用Win10.

2018-12-15

搭建rtmp流媒体服务器的nginx

使用这个nginx搭建windows下流媒体服务器,不用再去下载nginx-rtmp-module。 具体搭建方式,可以查看我的博客。

2018-10-14

声卡麦克风重采样

这个代码可以实时录制声卡或者麦克风,并重新采集为44100,FLTP,然后保存为test44100.pcm,可以使用ffplay播放。

2018-07-13

声卡麦克风采集bug修复

上个代码采集的数据不完整,导致播放的时候,偶尔会变音,因为缓冲的数据没有完全读完,这个版本,完全没有问题,这个是32位版本,所以播放的时候命令要改为: ffplay -ar 48000 -ac 2 -f f32le -i test.pcm

2018-07-13

声卡麦克风采集

这个代码使用了core audio api 录制声卡和麦克风,但是不能同时录制,因为这个一个可以录制声卡和麦克风的通用类,没有混音,所以只能同时录制一种,录制完成后,会保存到test.pcm,然后使用ffplay -ar 48000 -ac 2 -f s16le -i test.pcm 来播放。 注意:声卡和麦克风的切换方式只需要改一个变量即可: ac.SetDeiveType(CAudioCapT::SPEAKER); 如果录制麦克风,设置如下: ac.SetDeiveType(CAudioCapT::MICPHONE);

2018-07-06

使用Wave系列API开发录音机和播放器

演示了如何使用WaveIn开发录音机,如何使用WaveOut开发播放器。

2018-06-14

WaveIn&WaveOut;的使用示例

用WaveIn开发的录制,用WaveOut开发的播放,目的是方便广大爱好者的学习。

2018-06-14

B+树的源代码

最简单的B加树源码,只实现了添加和删除、打印操作,方便学习。

2018-05-23

最简单的B树

包括了插入,删除,层遍历,销毁。虽然实现的功能不多,但是方便学习。

2018-05-15

duilib支持SIZE的自定义控件

这是一个duilib自定义控件,可以根据主窗口的变化,自动调整自己的大小。

2018-05-02

MFC制作漂亮界面之登录界面

MFC制作漂亮界面之登录界面的源码,主要使用前面学过的内容来实践一个完整的界面。

2018-02-27

mfc对话框分隔管理器

大家好 这是一个实现对话框分隔条的类和例子代 码 希望对大家有用    使用场合:将一个对话框分隔成多个子对话框 使用方法如下(例如:水平方向将对话框分隔成两 个子对话框): 1 创建左右两个子对话框类 模板Style: child 2在要划分的对话框头文件中添加如下代码:    水平方向分隔管理器   CSplitManager m SplitH;    左子窗口   左子对话框类 m LeftWnd;    右子窗口   右子对话框类 m RightWnd; 3 在要划分的对话框的OnInitDialog中添加如下代码: 添加代码开始 设置分隔条的类型是水平方向的分隔 m SplitH SetType SPLIT MANAGER TYPE H ; 设置分隔条的厚度 m SplitH SetThickness 5 ; 设置左窗口 m SplitH SetFirstChildDialog &amp;m LeftWnd 40 左子窗口占父窗口宽度的40% IDD DIALOGL ; 设置右窗口 m SplitH SetSecondChildDialog &amp;m RightWnd IDD DIALOGR ; 创建分隔条 左窗口 右窗口 m SplitH Create T &quot;&quot; WS CHILD|WS VISIBLE|SS NOTIFY|SS GRAYRECT 分隔条窗口Style this 分隔条的父窗口 1001 分隔条ID 不能重复 ; 添加代码结束 4 在将要划分的对话框的OnSize中添加如下代码: if m SplitH m hWnd { m SplitH AutoAdjustSize cx 父窗口的新的 宽度 cy 父窗口的新的高度 ; }">大家好 这是一个实现对话框分隔条的类和例子代 码 希望对大家有用    使用场合:将一个对话框分隔成多个子对话框 使用方法如下(例如:水平方向将对话框分隔成两 个子对话框): 1 创建左右两个子对话框类 [更多]

2014-02-18

ebase SQL解析器-1

ebase的源代码,ebase是一个简易的SQL解析器,希望对大家有用。

2013-08-21

DIY SQL解析器

ebase的说明文档,ebase是一个简易的SQL解析器。

2013-08-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除