- 博客(105)
- 收藏
- 关注
原创 python1
以下是 Python 代码中常用知识的总结,涵盖基础语法、数据结构、控制流、函数、面向对象编程、模块与包、文件操作、异常处理以及一些常用标准库和第三方库的使用:基础语法变量与数据类型变量声明:Python 是动态类型语言,无需声明变量类型,直接赋值即可,如 num = 10。基本数据类型:包括整数(int)、浮点数(float)、字符串(str)、布尔值(bool)等。例如:pythonage = 25注释单行注释:使用 # 开头,如 # 这是一个单行注释。
2025-02-18 13:50:59
805
原创 linux c cpu调整线程调度优先级
在调用pthread_setschedparam之前,你可能需要使用setuid(0)或者seteuid(0)来设置实际用户ID为0(即root用户),或者在编译时使用gcc -o thread_scheduling thread_scheduling.c,并且确保该程序对于目标系统是可执行的。在这个示例中,我们定义了一个线程函数thread_function,它首先获取当前线程的调度参数,然后尝试将调度策略设置为SCHED_FIFO(先进先出策略),并将优先级设置为该策略允许的最大值。
2024-08-09 10:14:16
521
原创 在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。
在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。这通常是因为sqlite3在默认情况下会对空表进行“延迟创建”,即在实际需要写入数据之前,表不会被真正创建。这种情况下,如果有另一个进程或线程正尝试读取这个表,可能会导致锁定。可以修改sqlite3的行为,使用PRAGMA指令关闭延迟创建功能,例如执行PRAGMA auto_vacuum = FULL;可以通过执行一条查询来强制创建表,例如使用SELECT查询表中的数据。– 查询表以强制创建。
2024-07-02 11:14:17
723
原创 嵌入式linux sqlite3读写demo
如果数据库不存在,它会创建一个新的数据库。然后,它创建一个名为users的表(如果表不存在的话),接着插入一条记录。最后,它执行一个查询来列出users表中的所有记录。确保您有足够的权限来创建和修改example.db文件,并且您的环境中安装了SQLite3库。运行程序后,您应该在当前目录下看到example.db文件,并且在控制台上看到表的创建和插入操作以及查询结果。以下是一个简单的C语言程序,使用SQLite数据库进行读写操作的示例。请确保您已经安装了SQLite3库。
2024-07-01 19:46:43
422
原创 在C语言中,可以使用strtol函数来将字符串中的16进制数转换为10进制整数
这段代码定义了一个mac_string_to_hex函数,它接受一个指向MAC地址字符串的指针和一个用于存储16进制表示的MAC地址的字节数组。函数通过strtol函数逐字节转换16进制数,并将结果存储在提供的字节数组中。main函数中演示了如何使用这个函数。在C语言中,可以使用strtol函数来将字符串中的16进制数转换为10进制整数,进而转换为MAC地址的字节表示。
2024-06-18 15:42:12
534
原创 在Linux系统中,使用OpenSSL生成CSR(Certificate Signing Request),并同时生成PEM格式的公钥和私钥的命令如下:
这些命令会生成一个2048位的私钥,一个CSR文件,以及一个对应的PEM格式的公钥。在执行这些命令时,系统会提示您输入证书的信息,如组织名称、联系人信息等。
2024-06-11 15:43:09
596
原创 在Linux系统中,可以使用OpenSSL来生成CSR(Certificate Signing Request)、PEM格式的公钥和PEM格式的私钥。
在Linux系统中,可以使用OpenSSL来生成CSR(Certificate Signing Request)、PEM格式的公钥和PEM格式的私钥。private.key:原始私钥格式文件。private.pem:PEM格式的私钥。public.pem:PEM格式的公钥。csr.pem:CSR证书签名请求。
2024-06-11 14:08:46
807
原创 在Linux系统中,使用OpenSSL生成私有证书文件,并提取私钥的步骤如下:
上述命令中,我们首先生成了一个2048位的私钥存储在private.pem文件中。然后,我们创建了一个自签名的证书签名请求(CSR),并用该私钥生成了自签名的证书(CRT)。最后,我们使用openssl rsa命令将私钥从private.pem格式中提取出来,并以PEM格式输出到private.key文件中。
2024-05-29 16:33:23
517
原创 生成 SSH 证书和私钥
这里 -t rsa 指定密钥类型为 RSA,-b 4096 指定密钥长度为 4096 位,而 -C 后面跟的是证书的注释信息,通常是用户的电子邮件。执行完毕后,你会在指定的位置(默认是 ~/.ssh/id_rsa)找到私钥文件和证书文件,它们分别是 id_rsa 和 id_rsa.pub。生成 SSH 证书和私钥的过程通常涉及使用 ssh-keygen 命令。执行命令后,系统会提示你输入文件保存位置和密码,如果你不想设置密码可以直接按回车接受默认设置。根据提示设置文件保存位置和对证书的加密密码(可选)。
2024-05-29 15:56:45
899
原创 ./configure 放开OPENSSL_X509_H宏定义
在使用 ./configure 脚本编译软件时,可以通过在命令行中添加 --enable-FEATURE、–with-PACKAGE 或 --disable-FEATURE 等参数来配置宏。这些参数会设置配置变量,进而可能影响编译时的宏定义。确保查看软件的 configure.ac 或 configure.in 文件,以了解可用的配置选项和宏定义。这里的 CFLAGS 是用来指定编译器标志的变量,-DMACRO_NAME 会在编译时定义 MACRO_NAME。
2024-05-28 16:07:52
263
原创 在回调函数中调用curl_easy_getinfo
在回调函数内部,我们通过 curl_easy_getinfo 获取了 CURLINFO_BYTES_SENT 信息,即已传输的字节数,并打印出来。注意,我们将 CURL * 句柄作为 userp 传递给回调函数,并在 curl_easy_getinfo 中用作第一个参数。如果你想在 CURLOPT_WRITEFUNCTION 对应的回调函数中调用 curl_easy_getinfo,通常是为了获取传输的数据大小、HTTP 状态码等信息。
2024-05-11 14:09:34
553
原创 curl获取文件长度
在回调函数中,你可以通过传入的CURL*指针来获取HTTP响应头信息,从而获取content length(内容长度)。// 这里可以处理下载的数据,userdata可以是一个文件指针或其他用于保存数据的结构体。// 可以将content length保存到userdata中。// 这里的buffer是包含HTTP头信息的缓冲区。// 获取content length的回调函数。// 检查是否包含content-length头。// 解析content length。// 写数据回调函数。
2024-05-11 11:22:49
715
原创 linux 数据链路层 socket编程 广播
在Linux系统中,要进行数据链路层的socket编程,并发送广播包,你可以使用原始套接字(raw socket),并将IP头设置为广播地址。请注意,广播可能受到许多安全限制,并且通常只在局域网内使用。在外部网络上发送广播包可能会被网络管理员禁止或受到限制。此外,正确的以太网类型和其他以太网头部信息需要根据实际网络环境进行设置。这段代码创建了一个原始套接字,并设置了一个用于本地网络的广播地址。然后,它使用sendto函数发送一个字符串作为广播包。
2024-04-12 16:04:07
580
原创 linux c++ 多网卡情况下,如何判断原始套接字接收到的是哪个网卡的数据
在上面的代码中,ihl字段在IP头部中标识了头部的长度,这通常也可以用来区分不同的网卡。为了更准确地识别网卡,你可以使用系统调用getsockopt来获取接收数据的网卡名称,但这通常需要额外的系统调用和复杂的处理。在Linux系统中,使用原始套接字(raw socket)接收网络数据时,可以通过解析IP头部来判断接收到的数据是哪块网卡接收的。请注意,在实际应用中,原始套接字的使用和数据解析需要具备root权限,并且需要小心处理,因为直接接收和处理网络数据可能会影响系统的正常工作。
2024-04-10 15:30:34
647
原创 c++ 通过子网掩码获取ip字符串中的网络地址
这个函数接受两个字符串参数,一个是IP地址,另一个是子网掩码。使用inet_pton函数将字符串形式的IP和子网掩码转换为适合计算的整数形式。然后,通过按位与操作将子网掩码应用于IP地址,以提取网络地址。最后,使用inet_ntop将网络地址转换回字符串形式,并返回。以下是一个简单的函数,它接受一个IP地址字符串和子网掩码字符串,并返回网络地址(也是一个IP地址字符串)。在main函数中,我们提供了IP地址和子网掩码的示例,调用getNetworkAddress函数,并打印输出网络地址。
2024-04-09 19:51:40
321
原创 c++ 根据ip主机号和子网掩码随机生成ip
这段代码定义了一个random_ip函数,它接受一个基础IP地址和子网掩码,然后生成一个随机的IP地址。在主函数中,我们设置了基础IP地址和子网掩码,并调用random_ip函数生成随机IP地址,最后输出这个地址。请注意,生成的IP地址将位于与子网掩码匹配的相同网络号内,但主机号将是随机的。如果需要生成完全符合子网掩码规则的IP地址(例如,在一个C类子网中的随机地址),则需要更复杂的逻辑来确保生成的IP地址不会超出子网范围。在C++中,可以使用以下方法根据给定的IP地址和子网掩码来随机生成IP地址。
2024-04-09 16:59:13
510
原创 字符串地址转换为sockaddr_in
注意:inet_pton函数用于处理IPv4和IPv6地址,而inet_ntoa函数用于将in_addr结构体转换回点分十进制字符串形式。这段代码定义了一个str_to_sockaddr_in函数,它接受一个字符串形式的IP地址和一个整型的端口号,然后将它们转换为sockaddr_in结构体。在main函数中,我们调用这个函数并打印出转换结果。printf(“转换成功: IP=%s, Port=%d\n”, inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
2024-04-09 14:55:31
517
原创 cmake 怎么给CMAKE_TOOLCHAIN_FILE赋值
在使用CMake时,可以通过命令行参数-DCMAKE_TOOLCHAIN_FILE=来为CMAKE_TOOLCHAIN_FILE变量赋值。这个参数指定了一个CMake脚本,该脚本包含了特定交叉编译工具链的设置。例如,如果你有一个名为toolchain.cmake的文件,并且它位于当前目录,你可以使用以下命令来调用CMake:如果文件位于不同的目录,你需要提供完整的路径:在toolchain.cmake文件中,你可以设置交叉编译工具链相关的变量,如编译器路径、链接器路径、目标操作系统、架构等。
2024-04-03 17:47:48
1494
原创 cmake怎么打印INCLUDE_DIRECTORIES
注意:在CMake中,INCLUDE_DIRECTORIES命令不仅仅是添加头文件的搜索路径,它还会影响到后续使用find_package的行为。因此,在使用find_package之前调用INCLUDE_DIRECTORIES可能会改变find_package的搜索结果。在CMake中,INCLUDE_DIRECTORIES命令用于指定将被所有依赖于它的targets的头文件搜索路径。这将打印出所有的Makefile命令,包括所有的头文件路径。这将打印出指定目标的包含路径。
2024-03-21 15:52:59
1629
原创 write文件描述符阻塞与非阻塞区别
找write非阻塞代码1(这文章不错,可以转载过来)参考文章:socket阻塞和非阻塞对于阻塞Socket而言,如果发送缓冲区没有空间或者空间不足的话,write操作会直接阻塞住,如果有足够空间,则拷贝所有数据到发送缓冲区,然后返回.对于写操作write,原理和read是类似的,非阻塞socket在发送缓冲区没有空间时会直接返回错误号EWOULDBLOCK,表示没有空间可写数据,如果错误号是别的值,则表明发送失败。如果发送缓冲区中有足够空间或者是不足以拷贝所有待发送数据的空间的话,则拷贝前面N个能
2023-01-27 15:38:27
481
原创 configure生成的makefile中工具的版本,可以直接修改为自己使用的版本
configure生成的makefile中工具的版本,可以直接修改为自己使用的版本
2022-09-30 10:04:46
499
原创 如何提高顺序类容器的删除速度?
例如vector1.iterator_swap 交换两个迭代器所指向的内容(其中一个指向要删除的元素,另外一个指向容器末尾元素)2.交换完成之后,pop_back末尾元素。上述做法算法复杂度为O
2022-02-13 14:17:32
244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人