- 博客(132)
- 收藏
- 关注
原创 PID的离散化
上一篇《PID的基本原理》中介绍的PID公式是基于连续信号或模拟信号的,无法或不便于直接在实际的编程中使用,所以需要对其进行离散化处理。原公式为:进行离散化:k值为进行反馈调节的次数;T为两次调节之间的时间差。
2026-04-20 09:07:18
145
原创 PID的基本原理
整体策略。闭环控制算法,动态改变施加到被控对象的输出值,使得被控对象某一物理量的实际值,能够快速、准确、稳定地跟踪到指定目标值。是一种基于误差调控的算法,其中规定:误差=目标值-实际值,PID的任务是使误差始终为0。PID的含义。比例、积分、微分的缩写。优点。对被控对象模型要求低,无需建模,即使被控对象内部运作规律不明确,PID也可以进行调控。
2026-04-20 06:11:41
347
原创 套接字编程
1、知识图谱 2、举例 例1:创建sockaddr_in结构体变量,并绑定套接字 //创建套接字 int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //创建sockaddr_in结构体变量 struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); //每个字节都用0填充 serv_addr.sin_family = AF_INET; //使用
2020-07-13 17:01:35
325
原创 c++中的细节知识点(八)
1、知识图谱 2、举例 例1:模板函数的定义举例 template<typename T> void Swap(T *a, T *b){ T temp = *a; *a = *b; *b = temp; } 例2:类模板的定义举例 template<typename T1, typename T2> //这里不能有分号 class Point{ public: Point(T1 x, T2 y): m_x(x), m_y(y){ } public:
2020-07-09 11:54:19
331
原创 C++中的细节知识点(七)
1、知识图谱 2、举例 例1:转换构造函数下理解全局函数重载和成员函数重载的区别 在上图中,转换构造函数可以将15.6和28.3等浮点数转换成Complex类型,这样便于参与运算,并且重要的是,转换完之后,这些数就可以使用成员函数了,因为他们已经被编译器修改成了Complex的对象。 另外,在编译器进行转换时,只会将参数进行转换,而不会将一个普通的数进行转换。 Complex c2 = c1 + 15.6会进行如下的转换: Complex c2 = c1.operator+(Complex(15.6));
2020-07-08 11:07:01
248
原创 c++中的细节知识点(六)
1、知识图谱 2、举例 例1:构成多态的条件的举例分析 #include <iostream> using namespace std; //基类Base class Base{ public: virtual void func(); virtual void func(int); }; void Base::func(){ cout<<"void Base::func()"<<endl; } void Base::func(int n){
2020-07-01 19:50:47
284
原创 c++中的细节知识点(五)
1、知识图谱 2、举例 例1:using改变派生类中继承的基类成员权限 #include<iostream> using namespace std; //基类People class People { public: void show(); protected: char *m_name; int m_age; }; void People::show() { cout << m_name << "的年龄是" << m_ag
2020-06-27 21:53:07
536
原创 c++中的细节知识点(四)
1、知识图谱 2、举例 例1:临时数据的取地址 int n = 100, m = 200; int *p1 = &(m + n); //m + n 的结果为 300 int *p2 = &(n + 100); //n + 100 的结果为 200 bool *p4 = &(m < n); //m < n 的结果为 false 上面的例子是错误的。 int func(){ int n = 100; return n; } int *p = &
2020-06-18 20:36:18
188
原创 c++中的细节知识点(三)
1、知识图谱 2、举例 例1:静态成员变量的访问 //通过类类访问 static 成员变量 Student::m_total = 10; //通过对象来访问 static 成员变量 Student stu("小明", 15, 92.5f); stu.m_total = 20; //通过对象指针来访问 static 成员变量 Student *pstu = new Student("李华", 16, 96); pstu -> m_total = 20; 例2:静态成员函数的使用举例 #include
2020-06-07 16:57:37
283
原创 c++中的细节知识点(二)
1、知识图谱 2、例子 例1:成员对象的初始化 Car::Car(int price, int radius, int width): m_price(price), m_tyre(radius, width)/*指明m_tyre对象的初始化方式*/{ }; 例2:在类中包含成员对象时的构造和析构函数的调用顺序 #include<iostream> using namespace std; class Tyre { public: Tyre() { cout << "Ty
2020-06-03 22:02:58
210
原创 c++中的细节知识点(一)
1、知识图谱 2、const在c++中和c语言中的区别举例2 #include <stdio.h> const int n = 10; void func(); int main(){ func(); printf("main: %d\n", n); return 0; } #include <stdio.h> extern int n; void func(){ printf("module: %d\n", n); } 在上面的例子中,c++下,
2020-06-03 09:35:19
338
原创 C语言中的细节知识点(五)
1、知识图谱 2、指针数组的例子 #include <stdio.h> int main(){ char *lines[5] = { "COSC1283/1284", "Programming", "Techniques", "is", "great fun" }; char *str1 = lines[1]; char *str2 = *(lines + 3); char
2020-05-23 22:34:41
393
原创 C语言细节知识(四)
1、知识图谱 2、C语言条件编译 2.1 #if的用法 #if 整型常量表达式1 程序段1 #elif 整型常量表达式2 程序段2 #elif 整型常量表达式3 程序段3 #else 程序段4 #endif 它的意思是:如常“表达式1”的值为真(非0),就对“程序段1”进行编译,否则就计算“表达式2”,结果为真的话就对“程序段2”进行编译,为假的话就继续往下匹配,直到遇到值为真的表达式,或者遇到 #else。这一点和 if else 非常类似。 需要注意的是,#if 命令
2020-05-23 17:46:46
438
原创 C语言中的细节知识(二)
1、知识图谱 2、密码输入函数代码 void GetPassWD(char *pwd,int pwdlen) { int i = 0; char ch=0; while (i<pwdlen) { ch = _getch(); if (ch == '\r') { //按下回车,结束密码输入 printf("\n"); break; } if (ch=='\b'&&i>0) { //按下退格,删除一个字符 i--; printf
2020-05-21 18:54:40
356
原创 TCP滑动窗口机制
1、数据分片 2、滑动窗口机制 2.1 单一发送总是要等回复,效率太低: 2.2 设置窗口,提升效率 以下的窗口大小为3: 窗口大小指的是可以发送数据包的最大数量。在实际使用中,它可以分为两部分。第一部分表示数据包已经发送,但未得到确认应答包;第二部分表示允许发送,但未发送的数据包。在进行数据包发送时,当发送了最大数量的数据包(窗口大小数据包)时,有时不会同时收到这些数据包的确认应答包,而是收到部分确认应答包。那么,此时窗口就通过滑动的方式,向后移动,确保下一次发送仍然可以发送窗口大小的数据包。这样的
2020-05-19 20:02:05
1082
原创 三次握手详解
1、知识图谱 2、捕获三次TCP包进行以上验证 3、现在构造TCP包进行握手(42号工具) 已知主机 A 的 IP 地址为 192.168.59.131,端口 443 处于开放状态。主机 B 的 IP 地址为 192.168.59.135,端口 8080 处于开放状态。通过主机 A 连接主机 B,构造 3 次握手。 1)在主机 A 上构造第 1 次握手包,连接主机 B 的 8080 端口,执行命令如下: netwox 42 -x -s 192.168.59.131 -d 192.168.59.13
2020-05-19 17:22:58
481
原创 ICMP数据包实验
1、构造ICMP数据包(65号工具) 显示reached表示主机可达,unreached表示主机不可达。 从上面抓取的包可以看到请求包,type、code分别是8、0 从上面抓取的包可以看到应答包,type、code分别是0、0 2、伪造ICMP数据报(66号工具) 上面1中使用自己的主机进行探测抓包,会被发现,现在如果不想被发现,可以使用伪造icmp数据报的方法。 伪造 IP 地址为 192.168.59.140,MAC 地址为 00:0c:29:ca:e4:99,执行命令如下: netwox
2020-05-17 19:26:02
2542
原创 基于ARP协议进行扫描的一些实验
1、判断单一主机(55号工具) netwox 55 -i 192.168.59.135 如果主机启动,那么就会显示ok,否则就是没有启动,不显示任何内容。 可以对ARP包进行抓取: 源 IP 地址和 MAC 地址为目标主机的地址;目标 IP 地址和 MAC 地址为 netwox 主机的地址,表示目标主机成功向 netwox 主机返回了响应。 2、扫描多个主机(71号工具) netwox 71 -i 192.168.59.133,192.168.59.134,192.168.59.135,··· 192
2020-05-17 16:14:01
674
原创 免费的ARP包
1、知识图谱 2、操作试验(注意和一般的ARP包区分) netwox 33 -g 192.168.59.132 -i 192.168.59.132
2020-05-17 10:31:52
337
原创 ARP协议的工作机制
1、知识图谱 2、基本操作 2.1 查看当前主机缓存信息 2.2 随意找一个主机进行探测 2.3 再次查看当前主机缓存信息 可以看到,多了192.168.0.2
2020-05-16 21:38:28
594
原创 IP地址详解
1、知识图谱 2、一些基本操作 2.1 探测局域网中所有主机的IP地址、主机名和 MAC 地址信息 netwox 3 -a 192.168.59.0/24 自己组建的局域网中只有两台电脑,其IP地址是192.168.0.1和192.168.0.2,Hostname是其对应的主机名,Eth是物理地址。在搜索时,其范围是192.168.0.0到192.168.0.255, unresolved表示主机不存在于网络中,并且其物理地址显示默认值00:00:00:00:00:00。 2.2 用类似的方法还可以探
2020-05-16 17:28:03
351
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1