自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 docker tomcat 404

替换文件:

2024-07-19 14:24:54 22

原创 使用C函数实现滚动日志

1、使用open_memstream函数实现。这个函数没有试过,应该可以。3、动态增长分配malloc。

2024-07-19 08:30:00 205

原创 docker: error pulling image configuration: download failed after attempts=6: dial tcp i/o timeout

启动nginx报错:1、配置镜像源vim /etc/docker/daemon.json输入以下内容:{ "registry-mirrors":[ "https://i1el1i0w.mirror.aliyuncs.com", "https://hub-mirror.c.163.com", "https://registry.aliyuncs.com", "htt

2024-07-18 14:24:30 828

原创 scanf和sscanf函数使用

sscanf:解析字符串,按照指定格式存储到变量中。scanf:从键盘读取数据,按照格式存储到变量中。其后是一序列数目不定的指针参数,存储解析后的数据.format:字符串格式描述;str:待解析的字符串;

2024-07-18 08:30:00 142 1

原创 scp命令使用

SCP是Secure Copy Protocol(安全拷贝协议)的缩写,是SSH(Secure Shell)协议的一部分,用于在网络之间传输文件。其使用加密的方式在本地主机和远程主机之间复制文件。

2024-07-17 09:51:16 569

原创 C语言宏函数使用

预处理指令来定义的。它们不是真正的函数,而是在编译前由预处理器处理的文本替换指令。宏函数常用于执行简单的替换或计算,并且可以用于定义常量、简化代码或执行一些简单的条件编译。/输出:The maximum value is: 10。// 定义一个宏函数,用于计算两个数中的较大值。宏函数(通常称为宏或宏定义)在C和C++中是通过。

2024-07-17 08:30:00 156

原创 Linux驱动基础

驱动

2024-07-16 14:41:50 1194

原创 Linux c函数fprintf和fwrite区别

fprintf和fwrite是C语言中用于将数据写入文件的两个函数,它们在功能、参数、数据处理方式、可读性和性能等方面存在显著差异。

2024-07-16 08:30:00 356

原创 Linux抽象套接字

在UNIX和类UNIX系统中,socket编程提供了一种机制,允许进程之间进行通信。其中,UNIX域套接字(UNIX domain socket)是一种特殊的套接字,用于同一台机器上的进程间通信(IPC)。UNIX域套接字可以使用两种类型的地址:路径名套接字(pathname socket)和抽象套接字(abstract socket)。

2024-07-15 15:28:51 869

原创 linux内核中的HZ

是一个非常重要的宏定义,它代表了内核的“心跳”频率,即每秒内核时钟中断的次数。这个值在不同的系统和架构上可能有所不同,但通常是一个固定的值,比如100、250或1000等,这取决于硬件的能力和内核的配置。这样的设计可以使得内核能够更精细地控制时间相关的操作,提高系统的响应性和效率。这个表达式在内核代码中经常用于计算与时间相关的值,尤其是在需要基于时间间隔进行操作的场景中。也是一个整数,它代表的是在内核时钟中断计数上的倍数,而不是真正的时间长度(秒或毫秒)。例如,在内核的定时器或调度器代码中,可能会使用。

2024-07-15 14:58:41 433

原创 git 撤销操作

在 Git 中,撤销修改可以通过多种方式实现,具体取决于你想撤销的修改类型(未提交的修改、已提交的修改、合并等)。这个命令会撤销工作区中指定文件的所有未提交修改,恢复到最近一次提交的状态。这个命令会将工作区和暂存区的所有修改都撤销到最近一次提交的状态,请慎用,因为它会丢失所有未提交的修改。这个命令会生成一个新的提交,用于撤销指定的提交(通过提交哈希值指定)。这个命令会将指定文件从暂存区移除,但保留工作区的修改。这个命令会撤销最近一次提交,但保留修改在暂存区。这个命令会撤销最近一次提交,并丢弃所有修改。

2024-07-10 09:41:51 184

原创 windows环境下socket使用

环境:vscode+cmake。

2024-07-03 18:09:05 412

原创 Linux下多进程访问同一个共享库处理流程

需要注意的是,虽然代码段是共享的,但并不意味着物理内存中的每一页都被所有进程同时访问。当多个进程共享同一块物理内存时,如果其中一个进程试图修改这块内存(例如,修改一个全局变量的值),系统会为该进程创建一个这个内存页的副本,并将修改应用到这个副本上,而不是原始的内存页。这样,其他进程仍然可以看到原始的内存页内容,而修改的进程则看到了它自己的修改版本。的代码段(即包含函数和常量的部分)通常只会被加载到内存中一次,并被多个进程共享。)被多个进程加载时,通常并不会将整个库“加载”到内存中两次。

2024-06-23 07:00:00 307

原创 Linux字节对齐小程序

pragma pack(pop) // 恢复之前的对齐设置。

2024-06-21 08:00:00 127

原创 Linux 多进程情况下文件读写加锁

文件读取加锁:#include #include #include #include #include #include #define LOCK_FILE "/root/priv/cjson/test.lock"#define DATA_FILE "json.txt" int main() { int fd_lock,

2024-06-20 17:42:03 1686

原创 Linux 获取文件大小fstat、stat使用

使用fstat获取时:使用stat时:或者:

2024-06-19 11:32:46 194

原创 解析cJSON数组

json串:{}代码 :if(!fp) {\n");return -1;fclose(fp);return -1;fclose(fp);return -1;if(ret!\n");goto err1;goto err2;goto err3;goto err4;i++) {if (item!= NULL ) {ret = -1;break;err4:

2024-06-19 11:12:57 638

原创 Linux c根据分隔符解析字符串

/ 如果 end 是 NULL,则 begin 保持不变。// 这里使用 sizeof 也可以,但最好是明确告诉函数字符串的实际长度。// strncpy 需要指定复制的长度,并确保包含空字符。// 循环条件改为 i < count 而不是 i

2024-06-17 17:23:07 316

原创 fopen w和 w+属性的区别

2、不同点:“w”,在fopen后,只能能进行写操作,如果写完后读文件,则必须首先要先fclose(fd);然后重新fopen(fd,"r");原文链接:https://blog.csdn.net/modi000/article/details/105838606。"w+",则可以在写入数据之后,接着进行读数据;(顺序不能反,因为w属性会将文件内容清空)。注意:“w+”在进行写操作之后,需要调整文件指针再进行读操作,因为此时文件指针是在末尾处。1、相同点:都会将已存在的文件内容清空;

2024-06-17 10:54:22 694

原创 Linux函数localtime和time使用整理

/time_t就是long int 类型。//time_t就是long int 类型。

2024-06-14 10:31:55 532

原创 linux shell查看24h内修改的文件

执行命令:

2024-06-13 15:05:30 116

原创 linux bind failed: Address already in us

如果创建的文件是:rm /tmp/mysocket。

2024-06-13 10:47:31 836

原创 perror和printf的区别

在功能、输出位置、缓冲和刷新以及使用复杂性等方面存在显著的区别。选择使用哪个函数取决于具体的应用场景和需求。如果需要打印系统错误信息,在C语言编程中都是用于打印信息的函数,但它们在多个方面存在显著的区别。而如果需要更灵活和复杂的输出控制,则应该使用。

2024-06-12 09:57:56 604

原创 Linux socket非阻塞发送

调用(如果数据可以一次发送),但在某些情况下(如网络拥塞或套接字为非阻塞模式),它可以提供更好的整体性能和响应性。当套接字设置为非阻塞模式时,如果数据不能立即发送(例如,由于网络拥塞或接收端缓冲区已满),总之,这种设计允许函数更健壮地处理各种可能的网络条件和错误情况,并确保数据的完整发送。)完全写入到套接字(socket)中,即使在这个过程中可能会遇到中断或其他导致。调用,此函数允许非阻塞套接字在准备好发送更多数据时继续发送数据。),这个函数确保所有数据都被发送,直到达到请求的长度(,并更新发送的字节数(

2024-06-07 16:11:40 664

原创 Linux使用命令截取指定长度字符串

3745556458696c37455139734f74486f75706136487172644f70674974684f57b67cacf5dcb5ebd320732cd551b3e534b7f5e69fa252c982f6bc4ff07918730096bf655f40c2974891b7630cb92e2262746d609e635fece9c193f19294fea7cb截取前64个字符,使用命令:

2024-06-06 10:17:01 374

原创 usb设备在主机和VMWare虚拟机中切换连接

操作:点击菜单栏虚拟机(M)>可移动设备>选择自己的usb设备>连接(断开与 主机 的连接)

2024-06-06 09:00:00 276

原创 Linux 字符串和二进制互转

for (i=0;i<dst_len;i++) {for (i=0;i++) {

2024-06-05 17:06:42 197

原创 Linux c fread/fseek 函数

函数:fread。

2024-06-05 17:03:27 490

原创 windows调用c/c++ dll库操作

2、打开powershell。1、安装mingw环境。3、编写java和so。

2024-06-05 16:51:53 100

原创 jni调用c++ so库,找不到本地函数

生成的头文件时,你需要确保你的函数名遵循JNI的命名规范。但是,在C++中,由于函数重载和模板等特性,编译器通常会使用名称修饰(name mangling)来区分不同的函数签名。名称修饰是一种将函数名转换为一种包含函数签名信息的内部表示形式的技术,以确保链接器可以区分具有相同名称但不同签名的函数。在大多数平台上,这些宏没有实际效果,但在某些平台上,它们可能用于指定特定的调用约定或导出属性。生成的头文件,你的JNI函数名都将遵循JNI的命名规范,并且不会被C++编译器进行名称修饰。,你可以确保无论是否使用。

2024-06-03 16:13:28 235

原创 vscode编译c/c++找不到jni.h文件

jdk安装目录下的三个文件,复制它们到vc目录下的include文件夹下。:点击所选版本的“Download”按钮。

2024-06-03 10:11:35 1245 1

原创 c++基础创建对象

在C++中,test a;和是两种不同的初始化或创建对象的方式,而且它们之间存在根本的区别。test a;这是对象a的栈上分配。在声明test a;时,编译器会在栈上为a分配内存,并调用test类的默认构造函数(如果存在)。这种方式创建的对象在离开其作用域时会自动销毁,其生命周期与包含它的块(例如函数、循环等)的生命周期相同。这里,a是一个指向test对象的指针,该对象在堆上分配。你需要记住,对于在堆上分配的对象,你需要显式地调用delete来释放它们,否则会导致内存泄漏。test a;a。

2024-06-03 09:00:00 352

原创 jni调用so或dll区别

如果你希望你的Java应用程序能够在多个操作系统上运行,并且你希望使用JNI来调用本地代码,那么你需要为每个目标平台创建不同的本地库文件(例如,为Windows创建。在Java中通过JNI(Java Native Interface)调用本地代码时,所使用的动态库文件扩展名(如。方法来加载本地库,并通过指定不带扩展名的库名来让Java运行时系统为你选择正确的库文件。在这个例子中,如果Java应用程序在Windows上运行,Java运行时系统会尝试加载名为。然后,在Java代码中,你可以使用。

2024-06-03 09:00:00 307

原创 c++函数基础总结

静态成员函数,顾名思义,是类的静态成员。因为它们不依赖于任何类的实例,所以可以在没有类的实例的情况下被调用。在这个例子中,myFunction是MyClass的一个静态成员函数。可以在没有类的实例的情况下被调用:静态成员函数可以在没有类的实例的情况下被调用。可以在任何地方被调用:静态全局函数可以在任何地方被调用,只要是在定义它的文件中。只能访问静态成员:静态成员函数只能访问类的静态成员,不能访问类的非静态成员。内部链接性:静态全局函数在链接时具有内部链接性,只在定义它们的文件中可见。

2024-06-01 09:00:00 429 1

原创 notepad++快速分割字符

在“查找目标”中输入你的正则表达式。例如,如果你想按照每行的3个字符分割,可以使用。(不包括引号),这样每3个字符的部分会被分割到新的一行。打开“查找和替换”对话框,选择“正则表达式”。打开Notepad++,选择你要编辑的文档。再次替换\r,替换为空,将多行合并为一行。

2024-05-30 09:00:00 403

原创 Linux共享内存创建和删除

define SHM_SIZE (64 + 32) // 公钥64字节 + 私钥32字节。// 假设这里已经成功设置了共享内存的大小。// 映射共享内存到进程地址空间。// 初始化共享内存并设置公钥和私钥。// 复制公钥和私钥到共享内存。// 初始化共享内存并设置公钥和私钥。// 删除共享内存的名称。// 取消映射共享内存。// 设置共享内存的大小。// 清理并删除共享内存。// 清理并删除共享内存。

2024-05-29 10:36:14 2396

原创 Linux查看设备信息命令

查看grub版本号:rpm -qa | grep -i "grub"

2024-05-29 09:00:00 559

原创 /lib、/lib64和/usr/local/lib的区别

来自动查找和加载所需的库,而不是直接指定库的路径。这样可以确保应用程序在不同的系统和配置上都能够正确运行。这几个目录都用于存放库文件(即共享库或动态链接库),但它们在用途和管理上有一些区别。ubuntu和centos下面没有so,一般放在lib下了。在编写应用程序或脚本时,应该尽量使用动态链接器(如。64位系统上是64位的库,但是兼容32位的库。在Linux系统中,

2024-05-28 17:14:52 342

原创 linux 目录 /usr/lib和 /usr/lib64区别

目录通常用于存储库文件(libraries),这些库文件是程序运行时所需的共享代码和数据。这两个目录之间的主要区别在于它们所包含的库文件的架构(architecture)和用途。的主要区别在于它们所包含的库文件的架构和用途。在 64 位系统上,可能包含 32 位库或向后兼容的库。通常包含 64 位库,而。在 Linux 系统中,

2024-05-28 16:46:59 720

原创 Linux内核编译流程4.19

Linux内核编译流程

2024-05-28 09:00:00 520

空空如也

空空如也

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

TA关注的人

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