自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

每天都在摸鱼

传播技术

  • 博客(40)
  • 收藏
  • 关注

原创 3.6 Protobuf的编译和使用

1 hash_map需要宏 _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS;然后从NetGut下载Protobuf的相关文件,进行编写代码。3 ETC宏 SPEPARATOR宏 注意加空格。数据封包,解包,打包是快捷,高效的。4 修改编译,每次只编译1个项目。与语言无关、平台无关、可扩展的。将生成的lib复制到当前目录。生成相关代码 然后添加进去,这个东西是比较容易修改的。Protobuf的使用。用于序列化结构化数据的。

2022-10-20 09:38:35 548 1

原创 3.5 sqlite3的封装

就配置好了 为什么不需要 sqlite3ext.h 是只有dll的情况 没有lib。先编译生成静态库 然后复制库文件 和 sqlite3.h 头文件。有二种一种是偏向于API 容易移植 ,一种是偏向业务,这个封装是是偏向于API的。

2022-10-19 20:45:16 696

原创 3.4 sqlite3的SQL语法和接口,和示例

体积小支持window和Linux(包括Android),跨平台性很好采用的一种库函数的形式来提供数据库的服务文件性的数据库缺点,不能使用网络,单纯就是本地数据库加密性能不是很好,安全性不足插入INSERT INTO 表名 (列名1,…)VALUES (列1值,…);

2022-10-18 22:51:42 930

原创 3.3.3 WTL对话框和控件自定义

3.3.3 WTL对话框和控件自定义。

2022-10-18 20:00:45 231

原创 3.3.2 WTL应用向导安装和项目建立

使用WScript.exe Setup.js进行安装 可以添加后缀/debug 安装debug版本。1 找到AppWizard目录下的 Setup.js文件 目的是为了让其支持高版本VS2022,如果想VS2022 使用 使用VS2019创建 然后VS2022打卡 ,并且安装WTL。发现只有VS2017 新键 字符串的值并把下载目录的值填入。nVErsions加1 并且添加一个项, 就是刚才设置的。

2022-10-18 14:56:45 1165

原创 3.3.1 WTL的使用第一个Frame程序

在 工具 ->NuGet包管理器->管理解决方案的NuGet程序包 然后搜索WTL安装。或者自己进行下载源码 然后添加到包含目录。并且改ID为IDR_MAINFRAME。添加类似加速器的图标,

2022-10-18 13:49:26 103

原创 3.1 WTL概述,简单使用和ATL概述,简单使用

UI库是基于WTL ,WTL是基于ATL UI库可以自己制作MFC 兼容性导致其性能下降 对大型项目影响很大 影响架构设计有一定的基础封装不是mfc的框架,可以自己定制一些窗口行为(WTL)WTL对模板编程有要求ATL Activity Template Library .NET编程。

2022-10-18 10:04:00 1182

原创 3.2 ATL的进阶使用,对话框的添加,背景绘制

对ATL 添加对话框的使用

2022-10-17 22:57:59 198

原创 2.2 COM格式说明,Xml使用和封装

介绍COM对MsXMl进行封装和使用

2022-10-17 20:52:39 1268

原创 2.1 Json格式说明和使用

Json的格式说明和使用格式全称:JavaScript Object Notation格式特点:1.与开发语言无关2.轻量级的数据存储格式3.易于解析和封装4.数据对象内部一般采用key-value模式来存储5.支持数组、字符串、整数、小数、对象、布尔、空6.可以用于数据传输、数据保存、数据交换格式详解:{“name”:“张三”,“age”:18,“身高”:1.81,“生日”:“2002-01-02”,“学校”:“北大青鸟”,“专业”:[“厨师”,“挖掘机”],

2022-10-17 13:06:06 217

原创 1.2 Linux服务器环境搭建

配置基础LInux 开发环境

2022-10-17 00:33:08 470

原创 C++11的新特性详解

C++111 静态断言 可以直接添加提示内容static_assert(sizeof(int)==2, "no support 16");2 解决了>> 符号的混淆 如 会被识别位右移符号//如:typedef std::vector<std::vector<bool> >Flags; //在早期必须分开 因为优先度 不同 会别解析位 右移符号3 扩展的friend的声明 可以声明一个声明的类,类的别名,或者未声明的类为友原元//如果类未声明,要使其为

2022-03-25 00:20:41 890

原创 3.6 视频服务器-服务器层实现

先顶层的,再具体功能的良好的封装可以提升开发效率(线程安全的队列、线程、线程池)服务器实现线程安全队列 template<class T>//T是我们直接决定class TianChenQueue{//线程安全的队列,(利用IOCP实现)public: enum { TCNone, TCPush, TCPop, TCSize, TCClear, }; typedef struct IocpParam { size_t nOperator;//操作

2022-03-24 13:11:51 178

原创 C++使用64位汇编demo

1 建立项目正常的控制台项目2 配置环境3 添加汇编如下:;includelib ucrt.lib 已经有了includelib legacy_stdio_definitions.libincludelib kernel32.libextern printf:proc .codeprintfStr proc sub rsp,28h;防御编程 防止溢出 一个习惯 call printf;调用 mov rax,666 add rsp,28h ret printfStr

2022-03-16 23:47:46 1218

原创 C++写模块给Java使用

1 建立项目1在VS2019建立动态库2在IntelliJ IDEA Community Edition 建立一次程序

2022-03-16 22:08:32 1549

原创 4 160Crackme第四个之ajj.1 和 自动注册程序

1 打开软件熟悉发现没有提示看下介绍信息2 找到切入发现是Delphi编写没有 接触过 搜索下Delphi反汇编发现有个工具叫DeDeDark 中文的 下载然后分析发现有点击的事件 是0x457E7C 和 0x457FB8 其中叫chkcode 是0x457C40 有点可疑打开x96dbg看下 在单击的地方下个断点 然后稍微看下3 具体分析名称注册码使用 12345678 987654321然后 Enter 确定发现出来一串奇怪字符串黑头Sun Bird14dsel

2022-03-15 09:40:11 433

原创 3 160Crackme第三个之Afkayas.2 和 自动注册程序

1 打开软件熟悉点击确定:发现出现意思是类型失配 然后确定就结束了我们思考类型失配 :不就是字符和数据吗 然后我们尝试输入数字发现出现这个2 找到切入逆向工具使用的是x96dbg我们尝试使用MessageBox -A -W -ExA -ExW 发现并没有断下 (上一篇一样的…防止独立看的) Message有以下几个版本:1- MessageBoxA,MessageBoxW;2- MessageBoxExA,MessageBoxExW;3- MessageIndirectA,

2022-03-13 11:14:05 716

原创 2 160Crackme第二个之Afkayas.1 和 自动注册程序

1 打开软件熟悉点击确定:发现有2 找到切入我们尝试使用MessageBox -A -W -ExA -ExW 发现并没有断下 Message有以下几个版本:1- MessageBoxA,MessageBoxW;2- MessageBoxExA,MessageBoxExW;3- MessageIndirectA,MessageBoxIndirectW;4- MessageBoxTimeoutA,MessageBoxTimeoutW.5 还有ShellMessageBoxA和ShellMe

2022-03-12 11:53:14 825

原创 3.5 视频服务器-RTSP实现(框架搭建)

协议的实现一个基于TCP的RTSP服务器 加入协议处理一个基于UDP的RTP服务器 加入数据处理1 线程池使用线程池 去管理任务 和 Session2 封装socket使用共享指针管理3 PTSPServer实现接受信息解析字符回复信息0 OPTIONS 1 DESCRIBE 2 SETUP 3 PLAY 4 TEARDOWN 确定Session主程序 PTSPServer Init Invoke Stop类图:...

2022-02-28 12:21:07 4714

原创 C++三种线程池的实现方法 demo

第一种基于函数的任务管理系统优点:简单 方便缺点:会暴露底层 不宜扩展//基于函数的任务管理系统 会暴露底层#include <Windows.h>#include <iostream>#include<vector>#include <string>#include <process.h>using namespace std;//有handle有实体对应 网络 文件.... 存在 不要复制 指针 #ifndef WIN32

2022-02-22 18:12:12 390

原创 3.4 RTP协议

文本 和 二进制 协议RTP协议二进制协议,最重要的就是内容成分组成(嵌套式)和位宽RTP包由一个头部和数据荷载/数据负载组成头部格式如下左边是高位,右边是低位V表示版本号,2个bitP表示填充位,1个bit。为0表示包尾部没有填充附加字节;为则表示有X表示扩展位,1个bit。为1表示包头后面还有一个扩展头部CC是CSRC个数,4bit。表示后面CSRC的个数0~15个M表示标记位,1个bit。给配置文档来用的PT表示荷载类型,7个bit。序列号(SN),16个bit时间戳,32

2022-02-22 13:25:48 1665

原创 3.3 sdp格式说明*

sdp格式说明Sdp由多行的key=value组成 一定”顺序”完整的sdp包括 会话元数据、网络描述,流描述、加密描述、Qos和分组描述但是一般会话描述、网络描述和流描述(也叫媒体描述)是必须的,其他的可选v=开始都是会话描述m=开始都是媒体描述 (网络描述 和 流描述)t=开始时时间描述 (网络描述)会话描述:v表示版本o表示用户、会话id(session)、会话版本、网络类型(inet)、地址类型、地址一个典型的例子是o=name 12345678901 1 IN IP4

2022-02-22 09:38:34 518

原创 3.2 RTSP 协议详解

RTSP协议详解一般是服务器是被动 在一些游戏服务器是主动RTSP协议是基于RTP(数据包)和RTCP(控制命令 UDP)之上的RTSP使用RTP传输媒体数据,使用RTCP来交互控制命令整个协议是先用RTSP进行信息交互RTSP的控制命令交然后再使用RTP/RTCP进行媒体数据传输互格式客户端的请求格式:Method url version\r\nCSeq: x\r\nxxx\r\n...\r\nmethod表示方法,具体见后面详细内容Url就是请求地址,一般为rtsp://i

2022-02-21 20:47:03 1699

原创 3.1 视频服务器介绍

服务器视频服务器介绍视频服务器的分类有很多种,比如按照架构,按照使用的技术,按照功能,以及按照角色等等视频点播服务器:用于提供视频的点播服务。一些视频网站多是这种模式。视频可以是长视频,比如电影;也可以是短视频。用户请求对应的源,就会给用户播放内容。视频直播服务器:用于实时直播一些视频内容。部分的新闻视频、综艺视频、人物访谈等等会采用这种形式。直播内容和点播不同,不会给用户看前面的内容,无法快进,也无法修改播放速率。视频转播服务器:用于传递其他视频源的内容。转播的视频源可能是其他网络的、设备的或者

2022-02-20 23:50:55 1382

原创 2.5 客户端开发-测试设计

测试设计开发测试(白盒测试,代码开放,开发人员自己做的)1.单元测试2.模块测试3.整体(集成)测试4.控件外观测试功能测试(灰盒测试,部分代码开放,开发人员配合测试人员)1.流程测试子流程测试、整体流程测试、组合流程测试、代码覆盖测试、功能覆盖测试、逻辑覆盖测试2.功能点测试控件测试、功能测试鲁棒性测试1.不同资源测试本地资源、网络资源、音频、文本、可执行文件2.容错性测试地址错误、缺失、不完整、指向内容不正确3.意外的流程错乱的流程、缺失的流程、错误的流程4.输入操作

2022-02-19 22:33:00 131

原创 2.4 客户端开发-整体开发完成

整体开发总结1 先设计,后开发(可以显著提升代码质量,可以显著提升开发效率)2 控制层(中间层)设计的时候,需要对接口留一定的可扩展余地3 从UI入手进行设计其他问题1 增加了拖动和打开 文件2 修复了定时器bug3 修复指定窗口播放4 优化了拖动效果5 修复了切换视频问题...

2022-02-19 15:50:47 117

原创 2.3 客户端开发-控制层开发

控制层开发总结1 细节需要不断的完善,追加一些命令和方法,调整接口参数2 尽可能改功能模块,而非控制模块的接口和架构3 设计接口的,要考虑可扩展性#pragma once#include "VLCTOOL.h"#include "VideoClinetDlg.h"enum VLCCommand{ VLCTOOL_PLAY, VLCTOOL_PAUSE, VLCTOOL_STOP, VLCTOOL_GET_VOLUME, VLCTOOL_GET_POSTION,};class V

2022-02-19 00:06:53 364

原创 2.2 客户端开发-VLCTOOL开发

代码的开发VLCTOOL开发总结在有详细设计的情况下,开发难度会下降很多有设计的情况下,编译上也会减少错误必要的时候,可以细微的调整设计include <string>#include <vlc.h>class VlcSize{public: int nWidth; int nHeight; VlcSize(int width = 0,int height = 0) { nWidth = width; nHeight = height; }

2022-02-18 22:48:48 116

原创 2.1 客户端开发-UI开发

对话1 MFC的默认的事件添加,不一定是有效的,滑动条的处理就是一个例子2 尽量遵循设计,但是一些细节是可以审时度势,进行微调 如:Slider控件本身并没有响应滑动的消息函数,但可以通过主窗体的OnHScroll()响应。在类向导中为对话框添加WM_HSCROLL消息,在响应函数中添加:...

2022-02-18 21:17:49 105

原创 1.6 客户端设计-类图

类图的绘制 libvlc封装类 控制类 时序处理1 设计修改比代码修改要容易2 设计图比较直观3 为了大规模的软件开发准备的

2022-02-18 17:52:36 327

原创 1.5 客户端设计-详细设计

详细设计​ libvlc的封装层是我们比较好确定的(易用性)​ 因为这块是对库的封装,其他部分的流程对其影响不大,主要是为其提供参数​ 所以这块我们可以单独设计​ 而界面层的设计要相对繁琐一些,因为依赖于各个控件和其交互事件的处理​ 控制层也相对容易,处理好与模型层的接口,剩下的就是响应用户交互信息即可​ 时序图的绘制: ​...

2022-02-18 15:42:51 414

原创 1.4 客户端设计-模块设计

模块设计​ 按照MVC架构,V层比较好确定,就是UI控件​ 此外libvlc我们需要单独封装起来,作为模型层的一部分来看增加可移植性​ 然后是控制层来统领全局,将UI上的交互同步到模型层​ 同时控制层掌控整个程序的流程APP模块 VideoClientApp模块​ InitInstanceUI模块 VideoClinetDlg​ 接口 :​ Play Pause Stop响应​ 定时器:::OnTimer 来刷新进度条​ 滑动条拖动响应接口​ 地址输入

2022-02-18 13:38:47 247

原创 1.3 客户端-设计思路

1需求​ 1 需求(视频播放器) ->功能​ 2 核心功能(libvlc)<<.团队情况.未来发展,功能的完备性>> ->设计2设计​ 首先从架构的角度去思考一个客户端应该选用什么架构​ MVC: model(模型层 数据) View (视图 UI) Control(中间层 业务)​ .COM/.NET: 软件即服务​​ MVC 架构​ 播放器需要有播放、暂停/继续、停止、进度显示、跳转位置、地址输入等基本功能​ 整个应该使用MFC的视窗模式UI呈

2022-02-17 22:27:04 278

原创 1.2 vlc库命令行的基本使用 一个demo

VLC库的基本使用关键的库函数:创建实例libvlc_new()加载媒体libvlc_media_new_path()/libvlc_media_new_location()(file:///、http://、rtsp://、screen://)创建播放器libvlc_media_player_new_from_media()设置播放窗口libvlc_media_player_set_hwnd()开始播放 下面函数要等到这个执行才可以执行libvlc_media_player_play

2022-02-17 20:36:04 562

原创 1.1 vlc的集成

VLC库的集成VLC库的集成稍微有一些注意事项首先需要在VLC的github官网获取源码VLC的下载地址:https://github.com/videolan/vlc使用git或者下载代码压缩包之后,可以得到其源码这个默认是在Linux下编译的可以在Ubuntu下进行编译然后添加到环境变量VLC在进行引用 其他语言可能需要在附加包含目录中加入...

2022-02-17 17:54:35 456

原创 1.0 音视频项目介绍和vlc介绍

概述VLC是Video Lan Client的缩写,原先是几个法国的大学生做的项目,后来他们把VLC作为了一个开源的项目,吸引了来自世界各国的很多优秀程序员来共同编写和维护VLC,才逐渐变成了现在这个样子。(ffmpeg)它的支持情况操作系统:Windows、WinCE、Linux、MacOSX、BEOS、BSD、Android访问形式:文件、DVD/VCD/CD、http、ftp、mms、TCP、UDP、RTP、IP组播、IPv6、rtsp编码格式:MPEG*、DIVX、WMV、MOV、3GP、FLV

2022-02-17 17:14:58 1988

原创 1.1 仿造Q项目技术栈

2022-02-16 21:45:51 134

原创 1.0 仿造QQ项目准备

完成此项目的电脑配置推荐​ 8 代以上 I5/I7CPU,支持虚拟化(能够安装 VMware),win10 专业版操作系统,16G 或以上的内存;学服务器开发,电脑配置是必须要有的;学习的方法和要求一定不能眼高手低,要手把手敲;保持代码和老师代码一致;方便以后定位问题\首先要理解原理,理解周边知识点;epoll、socket、线程 API必须做笔记;项目的技术知识与储备C++语法学完 70%Windows/Linux 网络编程,Socket 编程,TCP/UDP/HTTP..

2022-02-16 20:50:00 664

原创 C++异常处理try-catch

C++异常处理try-catch#include <iostream>#include <cmath>using namespace std;int main(){ double triangle(double, double, double); double a, b, c; cin >> a >> b >> c; try { while (a>0&&b>0&c>0) {

2021-11-12 15:38:10 707

原创 基于文件学生管理系统

学生管理系统2021 6 10实现了基于文件中学生添加,删除,按照成绩从上到下排列 代码107行完整代码在下面1.初始化文件void beireadstu(){ int ret = 1; for (int i = 0;ret>0; i++) { ret=fscanf(pFile,"%d %s %d %d %d\n",&(stu + i)->id, &(stu + i)->name, &(stu + i)->math, &(stu

2021-06-11 00:04:08 75

空空如也

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

TA关注的人

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