自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 SQLite交叉编译

1.下载源码并解压源码路径如下,下载autoconf版本解压。

2024-07-02 15:36:45 237

原创 在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。

在Linux环境下使用sqlite3时,如果尝试对一个空表进行操作(例如插入数据),可能会遇到表被锁定的问题。这通常是因为sqlite3在默认情况下会对空表进行“延迟创建”,即在实际需要写入数据之前,表不会被真正创建。这种情况下,如果有另一个进程或线程正尝试读取这个表,可能会导致锁定。可以修改sqlite3的行为,使用PRAGMA指令关闭延迟创建功能,例如执行PRAGMA auto_vacuum = FULL;可以通过执行一条查询来强制创建表,例如使用SELECT查询表中的数据。– 查询表以强制创建。

2024-07-02 11:14:17 644

原创 嵌入式linux sqlite3读写demo

如果数据库不存在,它会创建一个新的数据库。然后,它创建一个名为users的表(如果表不存在的话),接着插入一条记录。最后,它执行一个查询来列出users表中的所有记录。确保您有足够的权限来创建和修改example.db文件,并且您的环境中安装了SQLite3库。运行程序后,您应该在当前目录下看到example.db文件,并且在控制台上看到表的创建和插入操作以及查询结果。以下是一个简单的C语言程序,使用SQLite数据库进行读写操作的示例。请确保您已经安装了SQLite3库。

2024-07-01 19:46:43 359

原创 在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 366

原创 在Linux系统中,使用OpenSSL生成CSR(Certificate Signing Request),并同时生成PEM格式的公钥和私钥的命令如下:

这些命令会生成一个2048位的私钥,一个CSR文件,以及一个对应的PEM格式的公钥。在执行这些命令时,系统会提示您输入证书的信息,如组织名称、联系人信息等。

2024-06-11 15:43:09 416

原创 在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 522

原创 在Linux系统中,使用OpenSSL生成私有证书文件,并提取私钥的步骤如下:

上述命令中,我们首先生成了一个2048位的私钥存储在private.pem文件中。然后,我们创建了一个自签名的证书签名请求(CSR),并用该私钥生成了自签名的证书(CRT)。最后,我们使用openssl rsa命令将私钥从private.pem格式中提取出来,并以PEM格式输出到private.key文件中。

2024-05-29 16:33:23 351

原创 生成 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 446

原创 ./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 153

原创 在回调函数中调用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 219

原创 curl获取文件长度

在回调函数中,你可以通过传入的CURL*指针来获取HTTP响应头信息,从而获取content length(内容长度)。// 这里可以处理下载的数据,userdata可以是一个文件指针或其他用于保存数据的结构体。// 可以将content length保存到userdata中。// 这里的buffer是包含HTTP头信息的缓冲区。// 获取content length的回调函数。// 检查是否包含content-length头。// 解析content length。// 写数据回调函数。

2024-05-11 11:22:49 478

原创 c语言 CURLOPT_HTTPHEADER

c语言 CURLOPT_HTTPHEADER

2024-05-06 14:18:27 492

原创 在CMake中添加编译宏(

cmake

2024-04-26 15:12:54 438

原创 linux 数据链路层 socket编程 广播

在Linux系统中,要进行数据链路层的socket编程,并发送广播包,你可以使用原始套接字(raw socket),并将IP头设置为广播地址。请注意,广播可能受到许多安全限制,并且通常只在局域网内使用。在外部网络上发送广播包可能会被网络管理员禁止或受到限制。此外,正确的以太网类型和其他以太网头部信息需要根据实际网络环境进行设置。这段代码创建了一个原始套接字,并设置了一个用于本地网络的广播地址。然后,它使用sendto函数发送一个字符串作为广播包。

2024-04-12 16:04:07 502

原创 linux c++ 多网卡情况下,如何判断原始套接字接收到的是哪个网卡的数据

在上面的代码中,ihl字段在IP头部中标识了头部的长度,这通常也可以用来区分不同的网卡。为了更准确地识别网卡,你可以使用系统调用getsockopt来获取接收数据的网卡名称,但这通常需要额外的系统调用和复杂的处理。在Linux系统中,使用原始套接字(raw socket)接收网络数据时,可以通过解析IP头部来判断接收到的数据是哪块网卡接收的。请注意,在实际应用中,原始套接字的使用和数据解析需要具备root权限,并且需要小心处理,因为直接接收和处理网络数据可能会影响系统的正常工作。

2024-04-10 15:30:34 459

原创 c++ 通过子网掩码获取ip字符串中的网络地址

这个函数接受两个字符串参数,一个是IP地址,另一个是子网掩码。使用inet_pton函数将字符串形式的IP和子网掩码转换为适合计算的整数形式。然后,通过按位与操作将子网掩码应用于IP地址,以提取网络地址。最后,使用inet_ntop将网络地址转换回字符串形式,并返回。以下是一个简单的函数,它接受一个IP地址字符串和子网掩码字符串,并返回网络地址(也是一个IP地址字符串)。在main函数中,我们提供了IP地址和子网掩码的示例,调用getNetworkAddress函数,并打印输出网络地址。

2024-04-09 19:51:40 225

原创 c++ 根据ip主机号和子网掩码随机生成ip

这段代码定义了一个random_ip函数,它接受一个基础IP地址和子网掩码,然后生成一个随机的IP地址。在主函数中,我们设置了基础IP地址和子网掩码,并调用random_ip函数生成随机IP地址,最后输出这个地址。请注意,生成的IP地址将位于与子网掩码匹配的相同网络号内,但主机号将是随机的。如果需要生成完全符合子网掩码规则的IP地址(例如,在一个C类子网中的随机地址),则需要更复杂的逻辑来确保生成的IP地址不会超出子网范围。在C++中,可以使用以下方法根据给定的IP地址和子网掩码来随机生成IP地址。

2024-04-09 16:59:13 443

原创 字符串地址转换为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 358

原创 cmake执行时指定参数

cmake

2024-04-07 10:59:50 543

原创 cmake 条件判断

cmake使用

2024-04-07 10:19:48 398

原创 cmake 怎么给CMAKE_TOOLCHAIN_FILE赋值

在使用CMake时,可以通过命令行参数-DCMAKE_TOOLCHAIN_FILE=来为CMAKE_TOOLCHAIN_FILE变量赋值。这个参数指定了一个CMake脚本,该脚本包含了特定交叉编译工具链的设置。例如,如果你有一个名为toolchain.cmake的文件,并且它位于当前目录,你可以使用以下命令来调用CMake:如果文件位于不同的目录,你需要提供完整的路径:在toolchain.cmake文件中,你可以设置交叉编译工具链相关的变量,如编译器路径、链接器路径、目标操作系统、架构等。

2024-04-03 17:47:48 639

原创 c++ string怎么copy固定长度的数据

/ 想要复制的长度。

2024-03-21 20:00:36 330

原创 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 725

原创 write文件描述符阻塞与非阻塞区别

找write非阻塞代码1(这文章不错,可以转载过来)参考文章:socket阻塞和非阻塞对于阻塞Socket而言,如果发送缓冲区没有空间或者空间不足的话,write操作会直接阻塞住,如果有足够空间,则拷贝所有数据到发送缓冲区,然后返回.对于写操作write,原理和read是类似的,非阻塞socket在发送缓冲区没有空间时会直接返回错误号EWOULDBLOCK,表示没有空间可写数据,如果错误号是别的值,则表明发送失败。如果发送缓冲区中有足够空间或者是不足以拷贝所有待发送数据的空间的话,则拷贝前面N个能

2023-01-27 15:38:27 381 1

原创 configure生成的makefile中工具的版本,可以直接修改为自己使用的版本

configure生成的makefile中工具的版本,可以直接修改为自己使用的版本

2022-09-30 10:04:46 442

转载 互斥锁、自旋锁、读写锁……理清它们的区别和应用

互斥锁、自旋锁、读写锁……理清它们的区别和应用

2022-07-20 10:27:30 264

原创 vectorresize和reverse区别。

填坑

2022-02-13 15:54:16 421

原创 如何提高顺序类容器的删除速度?

例如vector1.iterator_swap 交换两个迭代器所指向的内容(其中一个指向要删除的元素,另外一个指向容器末尾元素)2.交换完成之后,pop_back末尾元素。上述做法算法复杂度为O

2022-02-13 14:17:32 231

原创 cpu消耗

IO操作(文件读写)不消耗cpu,逻辑计算消耗cpu

2022-02-10 09:31:45 557

原创 volatile能否保证longlong类型的原子性。

volatile能否保证longlong类型的原子性。

2022-02-01 07:19:59 451

原创 【无标题】

单链表反转 :头上的拿到写到尾巴上

2022-01-20 21:41:05 262

原创 关系型数据库

各表通过某些共同的值相互关联,所以才叫关系型数据库。

2022-01-12 07:40:04 145

原创 快排-快速排序

2022-01-11 23:06:07 108

原创 直接排序

直接插入排序,从第二个元素起开始,如果后面的元素比前一个大,不需要排序,如果小于前一个,则插入到数组第一个做哨兵,用这个元素和前面的每一个元素循环比较,找到比他大的,插入进去。...

2022-01-11 21:48:01 183

原创 冒泡算法

n个元素,冒泡要冒n-1趟,这里m是第几趟。n-m等于第m趟要比较几次。然后大的跑后面去,小的在前面。

2022-01-11 21:42:06 254

原创 linux为何要挂载-(转载)

原作者:java学习网https://mp.weixin.qq.com/s?src=11&timestamp=1641864581&ver=3551&signature=q8dgQutu8BZWql7sAYf-76JF6q2W3oh5jd-AV46T9Qi9ta576qL7zmE0iNPGo3HKPQT0E3RYVm209xAxeuHeUffc4lr9N9icUZXNt-bQMcE0fA94l*RLjOIF26gAJQ2L&new=1Linux 系统中“一切皆文件”,所有

2022-01-11 09:36:48 558

原创 软链接和硬链接

硬链接:ln 源文件 链接文件hard链接文件和源文件共享同一个inode。inode中会对源文件以及硬链接文件进行计数,删一个减1,删到0时,删除真正的文件内容。l硬链接文件和源文件因为指向同一个inode,因此修改时间大小什么都完全一致。软链接:ln -s 源文件 链接文件软链接文件对应一个新的inode,删掉源文件,则无法访问软链接。...

2022-01-11 09:14:40 347

原创 shared_ptr是否是线程安全的?

等等等…

2022-01-11 08:47:32 190

原创 linux交换分区(swap)

linux交换分区即是linux的SWAP分区 SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。需要注意的是,虽然这个SWAP分区能够作为"虚拟"的内存,但它的速度比物理内存可是慢多了,因此如果需要更快的速度的话,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存.SWAP分区只是临时的解决办法.交换分区(swap)的合理值一般在内存的2 倍左右

2022-01-11 08:46:52 1343

原创 32位linux为啥用户使用内存不能超过3GB

linux32位操作系统将进程的虚拟地址空间作了分配,整个4GB被划分成了2部分,其中操作系统本身用去了一部分,共1GB,剩下的3GB空间都是留给进程使用的。那么从原则上讲,进程最多可以使用3GB的虚拟空间,也就是说整个进程在执行的时候,所有的代码,数据包括通过c语言malloc等方法申请的虚拟空间之和不可以超过3GB。如果使用超过3GB,使用64位处理器即可,虚拟地址空间超级大...

2022-01-09 11:28:53 1154

空空如也

空空如也

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

TA关注的人

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