自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 UTF-8编码格式

已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。通过上一节的例子,可以看到“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。正如名称所示,这是所有符号的代码。1)对于单字节的符号,字节的第一位(字节的最高位)设为0,后面7位为这个符号的unicode码。

2023-06-30 10:20:50 340

原创 Linux中ip命令学习笔记

实例:一、ip link# 网卡信息1.ip link show # 显示网络接口信息2.ip link set eth0 up # 开启网卡3.ip link set eth0 down # 关闭网卡4.ip link set eth0 promisc on # 开启网卡的混合模式5.ip link set eth0 promisc offi # 关闭网卡的混个模式网卡具有如下的几种工作......

2022-06-08 12:39:54 415

原创 C语言宏定义#define中##是什么意思

如果替换文本中的参数用 (##)相连,那么参数就被实际变元替换, (##)与前后的空白符被删除,并对替换后的结果重新扫描。操作符(##),有时称为“合并”操作符,用于类对象宏和类函数宏。它允许将单独的标记加入到单个标记中,因此不能是宏定义中的第一个或最后一个标记。(##)为宏扩展提供了一种连接实际变元的手段。比如宏定义中的形式参数前面或后面有标记粘贴运算符,则形式参数将立即替换为未展开的实际参数。替换之前,不会对参数执行宏展开。eg:#define __SOCKADDR_COMMON(sa_prefix)

2022-06-08 12:20:11 669 1

原创 linux设备驱动概述

1、linux设备的分类及特点计算机系统的硬件主要由CPU、存储器和外设组成。驱动程序针对的对象是存储器和外设,包括现在CPU内部集成的存储器和外设,并不针对CPU内核。linux将存储器和外设分为3大基础类:(1)字符设备必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。(2)块设备可以按任意顺序进行访问,以块为单位进行操作的设备。如磁盘、eMMC等。(3)网络设备...

2022-04-22 14:31:16 1223

原创 UNIX系统中原子操作

1、I/O的效率#include <stdio.h>#include <unistd.h>#include <stdlib.h>#define BUFFSIZE 4096int main(void){ int n; char buf[BUFFSIZE]; while((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0) if (write(STDOUT_FILENO, buf, n) != n)

2022-01-04 09:15:25 237

原创 UNIX高级环境编程之文件I/O

1、文件描述符对于现有内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件,内核向进程返回一个文件描述符。当读、写一个文件时,使用open或creat返回的文件描述符标识该文件,将其作为参数传递给read或write。UNIX系统shell把文件描述符0与进程的标准输入关联,文件描述符1与标准输出关联,文件描述符2与标准出错关联。各种shell都是这么做的,与内核无关!!!尽管如此,如果不遵循这种惯例,很多UNIX系统应用就不能正常工...

2021-12-30 12:04:15 395

原创 UNIX系统实现中的限制

unix系统实现定义了很多幻数和常量,其中有很多已被硬编码到程序中,或用特定的技术确定。由于大量标准化工作的努力,已有若干种可移植的方法用以确定这些幻数和具体的实现定义的限制。这非常有助于改善unix环境下的软件的可移植性。 以下两种类型的限制是必须的: (1)编译时限制(eg:短整型的最大值是什么?) (2)运行时限制(eg:文件名有多少个字符?) 编译时限制可在头文件中定义。程序在编译...

2021-12-28 18:01:10 773

原创 在Linux下用C语言程序获取指点文件大小

在Linux里面有一个标准io操作光标的函数off_t lseek(int fd, off_t offset, int whence);,直接用他把光标移到最末尾就行了,这个函数的返回值就是当前光标位置相对于最前面的偏移量。(单位是字节)当然你的加上相应的头文件。int file_size(char* filename) { int fd = open(filename, O_RDONLY);//只读方式打开就够了 off_t num = lseek(fd, 0, SEEK_END

2021-11-04 22:13:22 1519

原创 const 变量的存储位置

const 变量的存储位置在C语言和C++中const 全局变量都是存储在只读数据区(.rodata),但是是有条件的,在编译期最初都是将其存储在符号表中。(1)C语言的const全局变量只有在第一次被使用时才会在只读数据区分配内存空间存储。(2)C++中的const全局变量是否分配内存空间存储取决于它的用途,如果是充当一个值替换(将一个变量名替换为一个值),那么它是不分配内存空间的。当对这个const全局变量取地址或者使用extern时,就会分配内存空间存储。空间的释放的时机遵循只读数据段内存释放

2021-11-04 01:23:02 4873 1

原创 C++中引用会不会占用内存

引用占内存吗引用的实现方式类似于常量指针(类型* const 指针)每次对引用的使用实际上就是对该指针进行解引用操作(由编译器完成)。多数时候编译器能对引用进行优化,使得在运行时,引用不占额外的存储空间但是,如果需要分配存储空间以实现所需要的语义,则编译器还是会给引用分配空间的即,引用类型的非静态数据成员,会增加类对象的大小...

2021-09-24 14:49:59 752

空空如也

空空如也

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

TA关注的人

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