- 博客(132)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
原创 确认号的工作原理
这个数据包中的Flags,Acknowledgement 和 Push 两个字段被置位。其中的 [TCPSegment Len:98] 表示这个数据包的长度为98。当客户端收到数据包,会发送一个Ack 数据包给到服务器。当TCP正常连接后,服务器向客户端发送数据。Ack数据包内容如下。
2024-03-31 21:04:09 426
原创 TCP 三次握手
在TCP协议中,初始化ISN是TCP连接建立过程中客户端用来初始化序列号的一个值。这个值在TCP三次握手的第一步中被客户端放入了SYN数据包的序列号字段中。服务接受到SYN包后,会发送一个数据包给到客户端。其中的Acknowledgement 和Syn 两个字段被置位。**第一步:**客户端会发送一个数据包。包内的Flags的 Syn字段被置位从而表明它是一个Syn数据包。此时的序列号数值为0。
2024-03-31 20:27:08 455
原创 2021-06-23
一个添加指定路径库的CMakecmake_minimum_required( VERSION 3.10)project(FindLib)set(CMAKE_CXX_STANDARD 11)add_definitions(-D__STDC_CONSTANT_MACROS ) # 添加自定义宏link_directories( /home/hdp/lib) #Add directories in which the linker will look for libraries.list(A
2021-06-23 16:52:23 588
原创 字节流读写的小demo
int main(void){ //////////////////写二进制数据到stdout 中 uint16_t width = 700; ///////// putc() return the character written as an unsigned char cast to an int int ret = putc( width>> 0, stdout); printf("\t [%d] \n",ret); //[188]
2021-04-23 09:54:48 165
原创 实例解释三次握手发生了什么
实例解释三次握手发生了什么TCP 协议构成首先了解一下TCP数据包的结构。TCP数据被封装在一个 IP 数据包中。下面是TCP 数据包的格式[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-404GxqeR-1616987363631)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20210329102115344.png)]下面是TCP 首部数据格式源端口号和目的端口号,以及IP 首部
2021-03-29 11:10:04 150
原创 一个简单的模型 视图 代理的应用
先上代码啊。祭源码class MyListView : public QWidget{ Q_OBJECTpublic: MyListView() { data << " 111" << " 222" <<" 333"; model = new QStringListModel(this); model->setStringList(data); listView = n
2021-03-17 19:25:22 119
原创 Graphics View Framework
Graphics View Framework文章目录Graphics View FrameworkThe Graphics View ArchitectureSceneViewItem自定义itemGraphics View 提供了一个用于管理大量定制的2D 图形项目并与之交互的表层,以及一个用于可视化这些item的Widget,并支持缩放和旋转。该框架包含一个事件传播架构,该架构允许对scene 中的item 进行双精度交互能力。item 可以处理按键事件,鼠标按下、移动、释放和双击事件,还可以跟
2021-03-17 11:44:59 251 1
原创 C++标准库 STL —— 仿函数和适配器
仿函数function call operator 仿函数中的 函数名,是一个 operator()仿函数主要是用来服务算法的,如果要被算法调用就需要重载 ()。这里称这种()为 function call operator仿函数主要分为三大类:算术类template <class T>struct plus : public binary_function<T, T, T> { T operator()(const T& x, const T &
2021-03-16 18:21:25 259
原创 Qt 中的 Stack 和 STL 中的 Stack
令人吃惊的是,QStack 是通过继承 QVector 来实现的。The QStack class is a template class that provides a stack.QStack inherits from QVector. All of QVector’s functionality also applies to QStack.template<class T>class QStack : public QVector<T>{public:
2021-03-16 10:43:51 537
原创 Qt 遇到的问题
setGeometry: Unable to set geometrysetGeometry: Unable to set geometry 120x30+860+476 on QWidgetWindow/‘QInputDialogClassWindow’. Resulting geometry: 178x89+860+476 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 178x89, maximum size: 5242
2021-03-15 15:33:11 695 1
原创 C++标准库 STL -- 容器源码探索
文章内容为侯捷老师的《C++标准库与泛型编程》的学习笔记第二讲:容器源码探索源码之前,了无密码。GP 编程Containers 和 Algorithm 团队各自忙自己的事情,其间通过 Iterator 进行沟通。Algorithm 通过 Iterator 确定操作的范围,Iterator 从 Container 取用元素。template<class T>inline const T& max(const T& a, const T& b){ r
2021-03-10 09:42:13 228
原创 C++标准库 STL -- STL 体系结构基础介绍
STL 体系结构基础介绍文章目录STL 体系结构基础介绍代码示例容器分类vector关于vector 的动态扩充deque红黑树multisetmultimaphashTableunordered_multisetallocator组成:容器(constainers)算法(algorithm)迭代器(iterators)仿函数(functors)适配器(adapters)分配器(allocators)容器就是数据结构,容器中放入数据,要占用内存,但是在使用容器的时候,我们只关心如何存取
2021-03-09 18:03:55 328
原创 Linux ffmpeg 源码编译,支持ffpla 播放mov(h264+aac)
文章目录ffmpeg 安装ubuntuubuntu 源码编译windowsffmpeg 安装ubuntu在ubuntu 中安装的方式sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-nextsudo apt-get install ffmpeg安装后有这些命令 ubuntu 源码编译我们通过上面下载好的ffmpeg,在终端执行$ffmpeg,得到以下内容ffmpeg version 3.4.8-0ubuntu0.2 Copyri
2021-01-20 18:10:58 288
原创 Linux 常用开发命令
文章目录Linux 常用开发命令查看文件内容的某几行读取标准输入的数据,并将其内容输出成文件性能分析工具Top软件管理命令进程管理IO重定向查看文件大小和文件夹大小Linux 常用开发命令查看文件内容的某几行$ cat arg.c | head -20 | tail -2#cat 查看文件内容#head 查看文件内容前几行#tail 查看文件内容后几行。读取标准输入的数据,并将其内容输出成文件# who | tee who.out性能分析工具Toptop命令是Linux下常用的
2021-01-18 22:08:19 158
原创 Qt XLSX windows下的使用
文章目录Qt XLSX windows下的使用下载源码编译安装使用注意事项Qt XLSX windows下的使用下载源码下载源码,地址为编译启动Qt5的终端窗口,在源码目录执行Setting up environment for Qt usage...E:\Qt\Qt5.9.8\5.9.8\mingw53_32>cd C:\Users\admin\Downloads\source\QtXlsxE:\Qt\Qt5.9.8\5.9.8\mingw53_32>C:C:\
2021-01-05 18:17:14 344
原创 Address already in use 的现象
“Address already in use 的现象下面建立的套接字都是TCP 套接字。server 创建监听套接字 socket1,绑定一个指定端口,并接受若干连接。在另外一个终端再次运行server ,在bind 出会返回错误“Address already in use ”(即使使用了SO_REUSEADDR)server 创建监听套接字,绑定了一个指定端口,并接受了若干连接。杀死server后在重新启动server,程序会在 bind 出返回错误 “Address already
2020-12-31 11:20:29 902
原创 看 侯捷老师 C++ 面向对象编程的笔记
文章目录C++ 面向对象编程基于对象C 和C++class template 模板参数传递:pass by value 和 pass by reference返回值:pass by value 和 pass by referenceBig Three ,三个特殊的成员函数生命周期和作用域new 和delete 的关键字浅析array new 一定要搭配 array delete面向对象复合复合模式下的构造和析构构造函数调用——有内而外析构函数调用——由外而内委托(Delegation) Compositio
2020-12-28 18:15:24 244
原创 Typora + gitee 搭建个人图床
文章目录Typora 搭建个人图床配置Typora配置gitee创建仓库生成token我的选择是如下配置picGo验证服务异常错误Typora 搭建个人图床配置Typora进入Typora 的偏好设置选择 插入图片的动作为:上传图片选择上传服务设定下载PicGo配置PicGo的路径验证图片上传选项配置gitee创建仓库新建仓库的不会的就面壁而泣。设置为共有生成token进入个人设置,选择私人令牌注意,私人令牌的权限很大。不过你可以自己选择。我的选择是如下
2020-12-25 10:40:54 509 2
原创 RIME 的简单配置和我遇到的误区
文章目录安装记录几个之前的误区:安装首先我会从官方下载RIME 的安装包安装完毕后,会有程序目录和用户目录。我会将 Rime 扩充词库 中的词典拷贝到用户目录中。具体如何配置,《Rime With Schemata 介绍》中有所介绍。记录几个之前的误区:所有自定义配置文件的后缀为.custom.yaml推荐的定制方法是:创建一个文件名的主体部分(「.」之前)要与定制的文件相同、次级扩展名(位于「.yaml」之前)写作.custom的定制档,形如:path: "一级设定项/二级
2020-12-17 16:51:55 919
翻译 RIME 必知必会
RimeWithSchemata方案定义要让Rime实现某种具体输入法的功能,就需要一些数据来描述这种输入法以何种形式工作。即,定义该输入法的【个性】。如「汉语拼音」、「注音」、「仓颉码」、「五笔字型」,这些方法可凭借Rime提供的通用设施、给定不同的工作参数来实际操作。以本文介绍的规格写成一套套的配方,就是 Rime 输入方案。Rime with Text Files文本为王。Rime的配置文件、输入方案定义及词典文件,均为特定格式的文本文档。因此,一款够专业的文本编辑器,是设计Rime输入方
2020-12-17 16:49:08 2244
原创 visual studio 使用
visual studio 使用格式化On Windows Shift + Alt + FOn Mac Shift + Option + FOn Ubuntu Ctrl + Shift + I自动换行跳转到Visual Studio Code中的右括号Mac Cmd + Shift+\Windows Ctrl + Shift+
2020-12-16 13:53:51 98
原创 C++ 泛型编程——模板
文章目录C++模板类模板函数模板类模板中的全特化和偏特化全特化参数的偏特化范围的偏特化成员模板C++模板模板有类模板,函数模板和成员模板。类模板template <typename T>class complex{public: complex(T r = 0, T i = 0) :re(r), im(i) {} T real() const { return re; } T imag() const { return im; }private: T re, im;
2020-12-09 19:14:17 124
原创 live555源代码分析-1
Live555liveMedia项目的源代码包含有:UsageEnvironment 和 TaskScheduler,GroupSock,LiveMedia, BasicEnvironmen。UsageEnvironment 和 TaskScheduler类用于事件的调度,实现异步读取事件的句柄的设置以及错误信息的输出。另外,还有一个HashTable类定义了一个通用的hash 表,其它代码要用到这个表。这些类都是抽象类,在应用程序中基于这些类来实现自己的子类。groupsock类是对网络接口的封装
2020-12-09 11:05:35 418
原创 一步步了解RTSP
文章目录什么是RTSP协议使用`live555` 搭建RTSP 流服务器RTSP 客户端和服务器交互过程OPTIONDESCRIBESETUPPLAYPAUSE`TEARDOWN`RTSP协议什么是RTSP协议RTSP 是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP 协议与HTTP协议类似。RTSP 被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般RTSP本身并不用于传送媒体流数据。媒体数据的传
2020-11-20 17:26:10 1563
转载 Qt/Qt Quick宏浅议
请尊重原创作品和译文。转载请保持文章完整性,并以超链接形式注明原始作者地址http://blog.csdn.net/changsheng230,方便其他朋友提问和指正。刚开始接触Qt的朋友可能对Qt在使用当中需要声明的各色各样的宏感到神秘而又陌生,本文将介绍Qt中经常使用的几个宏: Q_OBJECT, SIGNAL与SLOT, Q_SIGNALS 与 Q_SLOTS, Q_EMIT ,Q_INVOKABLE, Q_PROPERTY:宏的头文件出处:$QTDIR/src/corelib/kernel/q
2020-11-12 17:46:31 473
原创 QWebSocket 客户端通信
QWebSocket 客户端通信WebSocket 是 HTML5 提供的一种在单个TCP连接上进行全双工通讯的协议。WebSocket 是的客户端和服务器之间的数据交换变得更加简单,允许服务器端主动向客户端推送数据。在WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。WebSocket 实例WebSocket 协议本质上是一个基于 TCP 的协议。为了建立一个 WebSocket连接,客户端浏览器首先要向服务器发起一个 HT
2020-10-16 12:49:47 663
原创 Qt UDP 广播
Qt UDP 广播发送方 timer = new QTimer(this);//创建一个定时器,定时广播数据 udpSocket = new QUdpSocket(this);//创建一个 udp socketQByteArray datagram = "Broadcast message " + QByteArray::number(messageNo);udpSocket->writeDatagram(datagram.data(), datagram.size(),
2020-10-15 15:23:53 727
原创 win10 sublime Text中文 逗号 不识别——软件包管理
今天在win10 的平台上使用 sublime Text 在写入**,**时,被识别为一个无效字符。然后搜索发现需要安装 ConverToUTF-8 。首先需要安装 包管理器import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaeeebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.inst
2020-09-21 22:10:00 694
原创 NFS 挂载超时
NFS 执行超时今天换了一块板子,在使用mount 挂载NFS 时出现了超时的错误。mount: mounting 192.168.1.108:/home/root/mdworkdir on /root/nfs/ failed: Connection timed out然后开始考虑是不是网络问题导致,先ping一个nfs server 主机,无法可以ping通,然后设置IPifconfig 192.168.1.100 up配置之后,可以ping通,但还是无法挂载,后来尝试一下ping 网易16
2020-08-17 11:43:38 3508
原创 V4L2采集视频
/** * 1. 打开设备 * 2. 获取设备能力 * 3. 设置视频格式 * 4. 进行内核空间和用户空间的内存映射 * 5. 开启视频流 * 6. 获取视频流 * 7. 关闭视频流 * 8. 取消映射 * 9. 关闭设备 * * * */#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include &
2020-07-21 21:25:30 472
原创 编译h264 生成动态库,头文件
下载git clone https://code.videolan.org/videolan/x264.git编译$ mkdir _build$ ./configure --prefix=`pwd`/_build --enable-shared --enable-static --disable-opencl --disable-asm$ make安装$ make install查看编译后的文件$ tree _build/_build/├── bin│ ..
2020-07-18 11:02:30 597 1
原创 生成内核源码文档的方式
进入内核源码的顶级目录查看生成文档的方式linux-3.10:13:54] make help输出内容如下Documentation targets:Linux kernel internal documentation in different formats:htmldocs - HTMLpdfdocs - PDFpsdocs - Postscriptxmldocs - XML DocBookmandocs .
2020-07-16 18:15:56 243
原创 vscode 快捷键
分屏Windows: Ctrl + \ 或者 2,3,4ctrl + \ 相等于 :vsp按下Ctrl按键,如果有2,则跳转到编辑器2,如果没有则创建新的编辑器。注意:如果没有编辑器2,则Ctrl + 3 没有效果。编辑器网格布局快速打开和关闭侧边栏Ctrl + B合并行「Join Line」editor.action.joinLines相等于 vim 中的Shift + j代码格式化「Code Formatting」Linux:Ctrl + Shift + I代码折叠「Cod
2020-07-08 20:34:09 1174
原创 Linux开启ssh 远程登录
Linux开启ssh 远程登录密码登录:安装sshapt-get install ssh这个东西默认是没有装的修改配置文件vim /etc/ssh/sshd_config重启配置服务service sshd restart其它如果 service sshd restart 执行失败,错误好像是找不到sshd 的服务,此时需要通过 apt-get install ssh确认一下 你的ssh服务 是否安装。...
2020-07-04 10:47:07 3720
原创 本地git 配置
user.email=1538822184@qq.comuser.name=隔壁张三不在家alias.st=statuscore.editor=vim
2020-07-01 15:12:47 151
原创 初始FFMPEG
ffmpeg信息FFmpeg 已安装的编码器。$ ffmpeg -encoders查看 FFmpeg 支持的编码格式,视频编码和音频编码都在内。$ ffmpeg -codecsffprobe命令识别并输出视频信息$ffprobe -v error -show_streams -print_format json <input> 使用ffmpeg -hwaccels命令查看支持的硬件加速选项$ffmpeg -hwaccelsHardware acceler
2020-06-16 14:35:41 200
原创 交叉编译 ffmpeg 包含 h264编码器
libx264交叉编译下载源码包下载地址 :x264wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2解压并配置$ tar jxvf x264-master.tar.bz2$ mkdir _build$ ./configure --cross-prefix=arm-buildroot-linux-gnueabihf- --prefix=`pwd`/_build --ho
2020-06-16 09:02:10 664
原创 Linux FB 的学习
linux FB 是CPU 到显示器中的中间人,像一个池子一样。CPU 将操作好的数据项放到池子中,然后再将这些数据显示到屏幕上。它的好处在于 用户可以将FB看成一个显示内存的影响,当将其映射到用户进程空间是可以直接进行读写操作。操作的方式是通过ioctl的方式,有底层驱动实现。直接使用命令行操作FB 的方式用命令:$ dd if=/dev/zero of=/dev/fb 清空屏幕用命令:#dd if=/dev/fb of=fbfile可以将fb中的内容保存下来;可以重新写回屏幕: #dd i
2020-06-08 10:22:39 1718
FFmpeg.zip
2020-03-28
src.tar.gz
2020-02-09
haroopad-v0.13.1-x64.deb
2016-10-30
vm虚拟机下的root密码修改为什么那么随便?
2016-05-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人