机器人CPP编程基础-03变量类型Variables Types
机器人CPP编程基础-02变量Variables
全文AI生成。
C++
#include<iostream>using namespace std;main()
{int a=10,b=35; // 4 bytescout<<"Value of a : "<<a<<" Address of a : "<<&a <<endl;cout<<"Value of b : "<<b<<" Address of b : "<<&b <<endl;short s=20; //2 bytescout <<"Value of s : "<< s << endl;float f1=20.03; //4 bytesdouble d1=50.55416416; //8 bytescout <<"Value of f1 : "<< f1 << endl;cout <<"Value of d1 : "<< d1 << endl;char c1='A';cout<<c1<<endl;string s1="Hello Tridib";cout<<s1<<endl;string s2="Welcome to CPP !";cout<<s2<<endl;string combineStrings=s1+", "+s2;cout<<combineStrings<<endl;bool b1=true; //Boolean is true or false. FALSE IS ALWAYS ZERO, EVERY OTHER NUMBER IS TRUE.cout<<b1<<endl;b1=1515;cout<<b1<<endl;b1=-445;cout<<b1<<endl;b1=0;cout<<b1<<endl;//Positive numbers or unsigned numbers. Increases the positive range.unsigned short int u1=60445;cout<< u1 <<endl;const string myname="Tridib";cout << myname << endl;}
该代码是用C++编写的,它包含了各种数据类型的声明和初始化,以及如何使用cout
语句来打印这些变量的值和地址。下面是每行的详细解析:
以上就是对这段代码的详细解析。
#include<iostream>
: 包含输入/输出流的库。这使得程序可以使用输入和输出功能。using namespace std;
: 声明使用std
命名空间。std
是标准缩写,表示标准库。这样,我们就可以直接使用标准库中的名字,而不用在每个名字前都写std::
。main()
: 程序的主函数,所有C++程序都从这里开始执行。int a=10,b=35;
: 声明两个整数变量a和b并初始化为10和35。cout<<"Value of a : "<<a<<" Address of a : "<<&a <<endl;
: 使用cout
打印"Value of a : "和变量a的值,然后打印"Address of a : "和变量a的地址。&
操作符用于获取变量的内存地址。endl
用于插入新行。cout<<"Value of b : "<<b<<" Address of b : "<<&b <<endl;
: 与上述类似,但打印的是变量b的值和地址。short s=20;
: 声明一个短整型变量s并初始化为20。在大多数系统上,short通常是2字节(16位)。cout <<"Value of s : "<< s << endl;
: 使用cout
打印"Value of s : "和变量s的值。float f1=20.03;
: 声明一个单精度浮点型变量f1并初始化为20.03。在大多数系统上,float通常是4字节(32位)。double d1=50.55416416;
: 声明一个双精度浮点型变量d1并初始化为50.55416416。在大多数系统上,double通常是8字节(64位)。cout <<"Value of f1 : "<< f1 << endl;
: 使用cout
打印"Value of f1 : "和变量f1的值。cout <<"Value of d1 : "<< d1 << endl;
: 使用cout
打印"Value of d1 : "和变量d1的值。char c1='A';
: 声明一个字符变量c1并初始化为'A'。cout<<c1<<endl;
: 使用cout
打印变量c1的值,也就是字符'A'。string s1="Hello Tridib";
: 声明一个字符串变量s1并初始化为"Hello Tridib"。cout<<s1<<endl;
: 使用cout
打印变量s1的值,也就是"Hello Tridib"。string s2="Welcome to CPP !";
: 声明另一个字符串变量s2并初始化为"Welcome to CPP !"。cout<<s2<<endl;
: 使用cout
打印变量s2的值,也就是"Welcome to CPP !"。string combineStrings=s1+", "+s2;
: 将s1和s2连接在一起,创建一个新的字符串combineStrings。cout<<combineStrings<<endl;
: 使用cout
打印变量combineStrings的值,也就是"Hello Tridib, Welcome to CPP !"。bool b1=true;
: 声明一个布尔型变量b1并初始化为true。在C++中,布尔类型的值只能是true或false。cout<<b1<<endl;
: 使用cout
打印变量b1的值,也就是true。在C++中,输出布尔值时会自动转换为字符串"true"或"false"。b1=1515;
: 将变量b1的值更改为整数1515。在C++中,布尔类型的值也可以是0或非0的任何整数。cout<<b1<<endl;
: 使用cout
打印变量b1的值,由于非零的整数会被视为true,所以这里输出的是true。b1=-445;
: 将变量b1的值更改为-445。cout<<b1<<endl;
: 使用cout
打印变量b1的值,由于非零的整数会被视为true,所以这里输出的是true。
-
b1=0;
: 将变量b1的值更改为0。 cout<<b1<<endl;
: 使用cout
打印变量b1的值,由于布尔类型的值只能是true或false,所以这里输出的是false。unsigned short int u1=60445;
: 声明一个无符号短整型变量u1并初始化为60445。在大多数系统上,unsigned short通常是2字节(16位)。cout<< u1 <<endl;
: 使用cout
打印变量u1的值。由于是无符号类型,所以可以输出大于255的整数。const string myname="Tridib";
: 声明一个常量字符串变量myname并初始化为"Tridib"。const关键字表示该变量的值不能被修改。cout << myname << endl;
: 使用cout
打印变量myname的值,也就是"Tridib"。
C++是一种多范式编程语言,支持多种变量类型。下面是C++中主要的变量类型及其描述:
-
基本类型
-
整数类型:这些类型用于存储整数值。有符号和无符号两种类型。
int
: 通常为32位,但大小可能因平台而异。short
: 通常为16位。long
: 通常为32位或64位,大小可能因平台而异。long long
: 通常为64位,大小可能因平台而异。
-
浮点类型:这些类型用于存储带有小数点的值。
float
: 单精度,通常为32位。double
: 双精度,通常为64位。
-
字符类型:这些类型用于存储单个字符或ASCII值。
char
: 有符号或无符号,通常为8位。
-
布尔类型:
bool
,用于存储逻辑值,可以取true
或false
。
-
-
复合类型
- 数组:用于存储相同类型的多个元素。
- 字符串:字符数组,用于存储多个字符。
- 结构体:用于将多个不同类型的变量组合在一起。
- 联合体:用于在内存中共享多个不同数据类型的变量。
-
指针类型
int *p;
:定义一个指向整数的指针。double *dp;
:定义一个指向双精度浮点数的指针。char *cp;
:定义一个指向字符的指针。
-
引用类型
int &ref;
:定义一个对整数变量的引用。引用和它引用的变量在内存中是同一实体。
-
枚举类型
enum color { red, green, blue };
:定义了一个名为color的枚举类型,包含三个可能的值:red、green和blue。
-
自定义类型
- 类:定义自定义的数据类型和方法。类是一种用户自定义的数据类型,可以包含属性(变量)和方法(函数)。
-
特殊类型
void
:表示无类型,常用于函数的返回值类型,如void func()
表示该函数没有返回值。const
:表示常量,一旦给定值就不能改变。例如const int a = 10;
,a的值就不能再改变。volatile
:表示易变的,即程序无法预知该变量的值会随时发生变化。例如硬件寄存器的值、正在运行的进程等。
-
复合类型(如数组、指针、引用等)的进一步扩展:
- 指针数组:数组的元素是指针类型。例如
int *arr[5]
定义了一个包含5个指向整数的指针的数组。 - 指向指针的指针:例如
int **pp;
定义了一个指向指针的指针,该指针可以指向一个整数类型的变量。 - 引用数组:例如
int &arr[5]
定义了一个包含5个整数引用的数组。每个引用都是它引用的数组元素的别名。
- 指针数组:数组的元素是指针类型。例如
-
函数指针:指向函数的指针,例如
int (*fp)(int)
定义了一个接受一个整数参数并返回一个整数的函数指针。 -
智能指针:C++11引入了智能指针,以帮助管理动态分配的内存。智能指针是一种类,它以一种安全的方式自动管理动态分配的内存。以下是一些智能指针类型:
std::unique_ptr<T>
:这种类型的指针在离开作用域时自动删除其所有权。它只能指向一个对象,并保证其指向的对象在任何时刻都有一个所有者。std::shared_ptr<T>
:这种类型的指针允许多个智能指针共享同一个对象。当最后一个智能指针离开作用域或被重置时,它会自动删除所指向的对象。std::weak_ptr<T>
:这种类型的指针也是指向共享对象的,但不会增加对象的引用计数。当最后一个shared_ptr
离开作用域或被重置时,weak_ptr
将看到对象的析构。
这些是C++中的主要变量类型。根据需要,还可以创建自定义类型和结构,以满足特定的编程需求。
C++14引入了一些新的变量类型,这些类型在C++11和C++17中都有所扩展。以下是一些C++14中引入的新变量类型:
-
原子类型(Atomic Types):这些类型定义在<atomic>头文件中,用于表示可以在不引起其他线程阻塞的情况下被单独操作的值。原子类型包括整数、浮点数和指针类型。
atomic<T>
:定义了一个原子操作的基本类型。原子操作是一种在单个线程中执行的操作,它可以在没有其他线程干扰的情况下修改数据。atomic_flag
:定义了一个原子标志,可以用于实现简单的原子布尔操作。
-
数组的初始化:C++14引入了一种新的数组初始化方法,允许使用花括号
{}
进行初始化。例如:
cpp复制代码
int arr[] = {1, 2, 3, 4, 5}; |
-
通用 Lambda 捕获:C++14引入了通用 lambda 捕获,允许捕获变量,无论它们是否在作用域中。例如:
cpp复制代码
auto lambda = [captured_var = some_global_var](){ /* Use captured_var */ }; |
- 右值引用(Rvalue References):进一步扩展了右值引用,使其更易于使用和更灵活。C++14引入了
std::move
和std::forward
函数,用于移动语义和完美转发。 - 类型萃取(Type deduction):C++14引入了一些新的类型萃取规则,包括萃取数组和函数类型的参数。
- Unicode 支持:C++14引入了更全面的 Unicode 支持,包括新的字符类型和函数。
- 线程局部存储(Thread-local storage):C++14引入了线程局部存储,允许为每个线程存储单独的变量副本。
- 二进制字面值:C++14引入了新的二进制字面值,包括二进制整数和二进制浮点数。
- 字面值的显示浮点数:C++14允许在字面值中使用显示浮点数,例如
0x1p+2n
表示一个十六进制浮点数。
这些是C++14引入的一些主要变量类型和功能。这些功能增强了语言的表达力和性能,并提供了更多的灵活性和控制。
C++20引入了一些新的变量类型和功能,进一步扩展了语言的表达力和性能。以下是一些C++20中引入的新变量类型和功能:
-
概念(Concepts):概念是一种用于指定类型必须满足的条件的语言特性。可以使用概念来约束模板参数的类型,以便在模板实例化时确保类型符合特定的要求。这有助于提高代码的可读性和可维护性。
cpp复制代码
template <typename T> concept bool C() { return requires (T t) { t++; }; } | |
template <C T> void f(T t) { ++t; } |
-
结构化绑定(Structured Binding):C++20引入了结构化绑定,允许将一个表达式的值直接分配给多个变量。这使得在解构数组、元组或其他复合类型时更加方便。
cpp复制代码
int a = 1, b = 2; | |
auto [c, d] = a + b; // c = 3, d = 3 |
-
if constexpr:C++20引入了
if constexpr
语句,它允许在编译时根据条件选择不同的代码路径。这对于在编译时进行条件编译和静态分派非常有用。
cpp复制代码
template <typename T> void f(T value) { | |
if constexpr (std::is_integral_v<T>) { | |
// 处理整数类型 | |
} else if constexpr (std::is_floating_point_v<T>) { | |
// 处理浮点数类型 | |
} | |
} |
- 三向比较(Three-way Comparison):C++20引入了三向比较运算符
<=>
,用于执行基于比较的操作。这可以用于实现自定义类型的比较操作。 - 模板别名(Template Aliases):C++20引入了模板别名,允许使用别名来简化模板的声明和使用。
- 折叠表达式(Fold Expressions):C++20引入了折叠表达式,允许在展开二元或三元运算符时进行递归计算。这对于实现高阶函数和泛型算法非常有用。
- 嵌套的命名空间(Nested Namespaces):C++20允许在命名空间内部定义另一个命名空间,以更好地组织代码。
- 上下文重复名称(Contextual Repeated Name):C++20允许在特定上下文中重复使用名称,这有助于提高代码的可读性。
- 模块(Modules):C++20引入了模块,这是一种将代码划分为逻辑单元的方式,以提高编译速度和代码组织。模块可以用于实现特定功能或库的封装和重用。
- 概念工具(Concept Tools):C++20提供了一组工具,用于定义和操作概念。这有助于提高代码的可读性和可维护性。
这些是C++20引入的一些主要变量类型和功能。这些功能进一步增强了语言的表达力和性能,并提供了更多的灵活性和控制。
Arduino
#include <avr/pgmspace.h> void setup() { Serial.begin(9600); int a = 10; Serial.print("Value of a : "); Serial.print(a); Serial.print(" Address of a : "); Serial.println(&a); short s = 20; Serial.print("Value of s : "); Serial.println(s); float f1 = 20.03; Serial.print("Value of f1 : "); Serial.print(f1); Serial.println(); double d1 = 50.55416416; Serial.print("Value of d1 : "); Serial.println(d1); char c1 = 'A'; Serial.print(c1); Serial.println(); const char* s1 = "Hello Tridib"; Serial.println(s1); const char* s2 = "Welcome to CPP !"; Serial.println(s2); const char* combineStrings = pgm_read_word(&combineStrings); //pgm_read_word(&combineStrings) is used to get the address of the combineStrings variable in flash memory space and is not related to the original code Serial.println(combineStrings); bool b1 = true; Serial.println(b1); b1 = 1515; Serial.println(b1); b1 = -445; Serial.println(b1); b1 = 0; Serial.println(b1); unsigned short int u1 = 60445; Serial.println(u1);
} void loop() { // put your main code here, to run repeatedly:
}
Arduino IDE使用的是C++的变量类型,因此它支持C++的所有常见变量类型。以下是在Arduino IDE中常用的C++变量类型:
-
基本类型
int
: 用于表示整数值,通常为16位。unsigned int
: 用于表示无符号整数值,通常为16位。long
: 用于表示长整数值,通常为32位。unsigned long
: 用于表示无符号长整数值,通常为32位。char
: 用于表示字符值,通常为8位。bool
: 用于表示布尔值,可以取true
或false
。float
: 用于表示单精度浮点数值,通常为32位。double
: 用于表示双精度浮点数值,通常为64位。
-
指针类型
int *p;
:定义一个指向整数的指针。char *str;
:定义一个指向字符数组的指针。
-
数组类型
int arr[10];
:定义一个包含10个整数的数组。char str[] = "Hello";
:定义一个包含字符串"Hello"的字符数组。
-
结构体类型
struct MyStruct { int id; char name[20]; };
:定义一个名为MyStruct的结构体,包含一个整型成员变量id和一个字符数组成员变量name。
-
联合体类型
union MyUnion { int id; char name[20]; };
:定义一个名为MyUnion的联合体,包含一个整型成员变量id和一个字符数组成员变量name。
-
函数类型
int myFunction(int arg1, char arg2);
:定义一个名为myFunction的函数,接受一个整型参数arg1和一个字符型参数arg2,并返回一个整型值。
-
自定义类型
typedef int MyInt;
:定义一个新的类型别名MyInt,相当于int类型。
-
枚举类型
enum MyEnum { RED, BLUE, GREEN };
:定义一个名为MyEnum的枚举类型,包含三个可能的值:RED、BLUE和GREEN。
-
类型转换
- 自动类型转换:将一种类型的值赋给另一种类型的变量时,编译器会自动进行类型转换。例如,将一个整数值赋给一个浮点变量时,编译器会将整数值转换为浮点数。
- 强制类型转换:使用强制类型转换运算符将一种类型的值转换为另一种类型。例如,
(float) x
将x转换为浮点数类型。
-
常量和常量表达式
- 常量:使用const关键字定义常量,其值在程序运行期间不可改变。例如,const int kConstantValue = 42;
- 常量表达式:使用const和字面值初始化器定义常量表达式。常量表达式必须是可以在编译时计算出结果的表达式,不能包含变量或函数调用。例如,const int kConstantExpression = 4 * 7;是常量表达式,而const int kVariableExpression = k + 1;不是常量表达式,因为k的值在编译时无法确定。
这些是在Arduino IDE中常用的C++变量类型和相关概念。了解这些变量类型和概念对于编写Arduino程序非常重要。
ROS1
AI生成是否可行???
#include <ros/ros.h>
#include <std_msgs/String.h> int main(int argc, char **argv)
{ ros::init(argc, argv, "my_node"); ros::NodeHandle nh; int a=10,b=35; // 4 bytes ros::console::cout << "Value of a : " << a << " Address of a : " << &a << ros::console::endl; ros::console::cout << "Value of b : " << b << " Address of b : " << &b << ros::console::endl; short s=20; //2 bytes ros::console::cout << "Value of s : " << s << ros::console::endl; float f1=20.03; //4 bytes ros::console::cout << "Value of f1 : " << f1 << ros::console::endl; double d1=50.55416416; //8 bytes ros::console::cout << "Value of d1 : " << d1 << ros::console::endl; int c1 = 65; ros::console::cout << c1 << ros::console::endl; std_msgs::String s1; s1.data = "Hello Tridib"; ros::console::cout << s1.data << ros::console::endl; std_msgs::String s2; s2.data = "Welcome to CPP !"; ros::console::cout << s2.data << ros::console::endl; // string concatenation not supported in ROS // you can use roscpp'sRosOutSignal to achieve this easily. // RosOutSignal().outStr(s1.data + ", " + s2.data); // instead of the line above you can do: std_msgs::String combineStrings; combineStrings.data = s1.data + ", " + s2.data; ros::console::cout << combineStrings.data << ros::console::endl; bool b1=true; //Boolean is true or false. FALSE IS ALWAYS ZERO, EVERY OTHER NUMBER IS TRUE. ros::console::cout << b1 << ros::console::endl; b1=1515; ros::console::cout << b1 << ros::console::endl; b1=-445; ros::console::cout << b1 << ros::console::endl; b1=0; ros::console::cout << b1 << ros::console::endl; //Positive numbers or unsigned numbers. Increases the positive range. unsigned short int u1=60445; ros::console::cout << u1 << ros::console::endl; // const string myname="Tridib"; is not supported in ROS, you should use a string_view instead. (not implemented in roscpp at the time of writing)
}
ROS1 Noetic是ROS1的一个版本,使用C++作为主要的编程语言。在ROS1 Noetic中,常见的C++变量类型包括以下几种:
- 基本类型:与标准C++相同,包括int、float、double、char等。
- 智能指针类型:ROS1 Noetic主要使用
std::shared_ptr
和std::unique_ptr
两种智能指针类型,用于自动管理资源的生命周期。 - 回调函数类型:ROS1 Noetic提供了ROS1特定的回调函数类型,如
boost::function
和boost::slot
,用于实现事件驱动的回调机制。 - 命名空间:ROS1 Noetic使用了多个命名空间,如
ros
、std_msgs
、sensor_msgs
等,用于组织和管理ROS相关的代码和消息类型。 - 消息类型:ROS1 Noetic使用特定的消息类型,如
std_msgs::String
、sensor_msgs::Image
等,用于在ROS系统中进行节点之间的通信。这些消息类型通常定义在ROS1的消息规范中。 - 服务类型:ROS1 Noetic使用特定的服务类型,如
ros::ServiceServer
和ros::ServiceResponse
,用于在ROS系统中实现服务调用。这些服务类型定义在ROS1的服务规范中。 - 动作类型:ROS1 Noetic使用特定的动作类型,如
actionlib::SimpleActionClient
和actionlib::SimpleGoal
,用于在ROS系统中实现复杂的行为控制。这些动作类型定义在ROS1的动作规范中。
除了上述变量类型外,ROS1 Noetic还提供了许多其他的工具和库,用于实现机器人控制、传感器数据处理、可视化等功能。
相关文章:

机器人CPP编程基础-03变量类型Variables Types
机器人CPP编程基础-02变量Variables 全文AI生成。 C #include<iostream>using namespace std;main() {int a10,b35; // 4 bytescout<<"Value of a : "<<a<<" Address of a : "<<&a <<endl;cout<<"Val…...
或许有用的开源项目平台——物联网、区块链、商城、CMS、客服系统、低代码、可视化、ERP等
摘自个人印象笔记Evernote Export wumei-smart-物美智能开源物联网平台 官网:https://wumei.live/ gitee:https://gitee.com/kerwincui/wumei-smart 一个简单易用的物联网平台。可用于搭建物联网平台以及二次开发和学习。适用于智能家居、智慧办公、智慧…...

火车头采集伪原创插件【php源码】
大家好,小编来为大家解答以下问题,python代码大全和用法,python代码大全简单,现在让我们一起来看看吧! 火车头采集ai伪原创插件截图: 1、题目:列表转换为字典。 程序源代码: 1 #!/us…...

【数学】CF1514 C
Problem - 1514C - Codeforces 题意: 思路: Code: #include <bits/stdc.h>using i64 long long;constexpr int N 2e5 10; constexpr int M 2e5 10; constexpr int mod 998244353;void solve() {int n;std::cin >> n;std:…...

SqlServer基础之(触发器)
概念: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发&#x…...

数据结构刷题训练:队列实现栈
目录 前言 1. 题目:使用队列实现栈 2. 思路 3. 分析 3.1 创建栈 3.2入栈 3.3 出栈 3.4 栈顶数据 3.5 判空和 “ 栈 ” 的销毁 4. 题解 总结 前言 我们已经学习了栈和队列,也都实现了它们各自的底层接口,那么接下我们就要开始栈和队列的专项刷…...

(统计学习方法|李航)第四章 朴素贝叶斯算法——贝叶斯估计
贝叶斯估计方法: 计算男女时只有两个值,所以K2 贝叶斯估计就是拉普拉斯平滑 估计方法:为什么叫做贝叶斯估计呢? 例题: 重新回顾以下朴素贝叶斯: 对他求导,求出最大值 得到了色i他的估计值&…...

企业直播MR虚拟直播(MR混合现实直播技术)视频介绍
到底什么是企业直播MR虚拟直播(MR混合现实直播技术)? 企业直播MR虚拟直播新玩法(MR混合现实直播技术) 我的文章推荐: [视频图文] 线上研讨会是什么,企业对内对外培训可以用线上研讨会吗&#x…...
React Fiber: 从 Reconciliation 到 Concurrent Mode
React Fiber 是 React 中的一种新的协调算法,它的主要目的是提高 React 的性能和可维护性。在 React Fiber 之前,React 使用了一种叫做 Stack Reconciliation 的算法来处理组件的更新和渲染。但是 Stack Reconciliation 存在一些问题,比如无法…...

【PostgreSQL内核学习(十一)—— OpenGauss源码学习(CopyTo)】
可优化语句执行 概述什么是列存储?列存的优势 相关函数CopyToCStoreCopyToCopyStatetupleDescCStoreScanDesc CStoreBeginScanRelationSnapshotProjectionInfo GetCStoreNextBatchRunScanFillVecBatchCStoreIsEndScan CStoreEndScan 声明:本文的部分内容…...

计算机网络 网络层 IPv4地址
A类地址第一位固定0 B类10 其下同理...
【程序员社交】多和高层次人群交流
定义问题:如何多和高层次人群交流获取经验提升自己? 收集信息:通过社交媒体、行业论坛、行业大会等途径获取高层次人群的信息和观点,并了解他们的工作经历、技能和能力。 分析信息:分析收集到的信息,了解…...
机器学习笔记 - 基于C++的深度学习 三、实现成本函数
机器学习中的建模 作为人工智能工程师,我们通常将每个任务或问题定义为一个函数。 例如,如果我们正在开发面部识别系统,我们的第一步是将问题定义为将输入图像映射到标识符的函数F(X)。但是问题是如何知道F(X)公式? 事实上,使用公式或一系列固有规则来定义F(X)是不可行的(…...

lazada、shopee店铺如何利用测评提高权重和排名?
在 lazada、shopee平台上开店后,卖家们必须对店铺的权重进行更多的关注。如果店铺的权重越高,那么它就会带来更多的流量和更多的订单,那么在 lazada、shopee平台上开设一家店铺,该怎样增加它的店铺权重和排名呢? laza…...

安全第二次
一,iframe <iframe>标签用于在网页里面嵌入其他网页。 1,sandbox属性 如果嵌入的网页是其他网站的页面,因不了解对方会执行什么操作,因此就存在安全风险。为了限制<iframe>的风险,HTML 提供了sandb…...
125、SpringBoot可以同时处理多少请求?
SpringBoot可以同时处理多少请求? 一、前言二、线程池4大参数图解三、代码示例一、前言 我们都知道,SpringBoot默认的内嵌容器是Tomcat,也就是我们的程序实际上是运行在Tomcat里的。所以与其说SpringBoot可以处理多少请求,到不如说Tomcat可以处理多少请求。 关于Tomcat的默…...

SSE技术和WebSocket技术实现即时通讯
文章目录 一、SSE1.1 什么是SSE1.2 工作原理1.3 特点和适用场景1.4 API用法1.5 代码实现 二、WebSocket2.1 什么是WebSocket2.2 工作原理2.3 特点和适用场景2.4 API用法2.5 代码实现2.6 心跳检测 三、SSE与WebSocket的比较 当涉及到实现实时通信的Web应用程序时,两种…...

什么是敏捷开发?
敏捷开发流程:制度化、规范化地PUA程序员的顶级神器!!!...
tcp发送整型,结构体等数据的方法
测试环境 Receiver: x86 UbuntuSender: arm64 android 发送整型数 C语言和套接字库来发送一个整型变量(int)的客户端程序。 它首先创建一个TCP套接字,然后连接到指定的服务器地址和端口。接着,它将一个整型变量(in…...

【Unity每日一记】让一个物体按余弦曲线移动—(三角函数的简单运用)
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...