首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

0x3f3f3f3f

前阵子无意中看到了一个不一样的取值,INF=0x3f3f3f3f,这时我又郁闷了,这个值又代表的是什么?于是我去寻找答案,发现这个值的设置真的很精妙!...另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=2122219134...,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。...现在好了,如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f的每个字节都是0x3f!...所以要把一段内存全部置为无穷大,我们只需要memset(a,0x3f,sizeof(a))。 所以在通常的场合下,0x3f3f3f3f真的是一个非常棒的选择!

99610

linux 异步通知《Rice linux 学习笔记》

这篇文章来讲讲linux中的异步通信的原理,相关函数的说明,以及驱动程序的实现。 信号的概念: 信号,是一种软中断(软件层上对中断机制的一种模拟)。...为 Linux 提供了一种处理异步事件的方式。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。...首先获取默认配置flags =fcntl(fd, F_GETFL); 然后将FASYNC标志设置进去fcntl(fd, F_SETFL, flags | FASYNC); 驱动程序处理异步信号说明: 1...、当应用程序使用F_SETOWN,内核将进程的ID赋值给filp->f_owner. 2、当应用进程使用F_SETFL将FASYNC设置进去,则会调用驱动程序的fasync方法。..., getpid()); flags = fcntl(fd, F_GETFL); fcntl(fd, F_SETFL, flags | FASYNC); for(;;) {

1.4K20

0x3f3f3f3f常量在编程中的妙用

我们的常量还应该满足“无穷大加无穷大依然是无穷大”,至少两个无穷大相加不应该出现灾难性的错误,这一点上2147483647(0x7fffffff)依然不能满足我们 到网上找了下,发现很多大牛都是用0x3f3f3f3f...0x3f3f3f3f的十进制是1061109567,也就是10^9级别的(和0x7fffffff一个数量级),而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形...另一方面,由于一般的数据都不会大于10^9,所以当我们把无穷大加上一个数据时,它并不会溢出(这就满足了“无穷大加一个有穷的数依然是无穷大”),事实上0x3f3f3f3f+0x3f3f3f3f=2122219134...,这非常大但却没有超过32-bit int的表示范围,所以0x3f3f3f3f还满足了我们“无穷大加无穷大还是无穷大”的需求。...,那么奇迹就发生了,0x3f3f3f3f的每个字节都是0x3f

90320

linux下误执行rm -f命令后,如何恢复文件?

hi,偶然间看到在linux运行了rm命令之后还能恢复,很是神奇所以就看了下,不知道是不是真的,管他呢先转载啊,不行再删呗反正怎么都是灌水,此文教程并未测试,如有问题请@原作者,在我们在生产环境服务器上执行...删除 误删除服务器目录/root/selenium/Spider下的MySql.Data.dll文件: rm -f /root/selenium/Spider/MySql.Data.dll ll /root...在Linux系统中,每个运行中的程序都有一个宿主进程彼此隔离,以/proc/进程号来体现(Linux本质上就是一个文件系统),比如:ls -l /proc/13067 查看进程PID为13067的进程信息...;当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行 rm -f 删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见

7K31

对于无穷大0x3f3f3f3f的选择

一般会有两个选择:0x7fffffff和0x3f3f3f3f 比如对于int类型的数,有的人会采用INT_MAX,即0x7fffffff作为无穷大。...0x3f3f3f3f 0x3f3f3f3f的十进制为1061109567,和INT_MAX一个数量级,即10^9数量级, 而一般场合下的数据都是小于10^9的。...0x3f3f3f3f的数值为1061109567,它的两倍也只有2122219134,不会溢出。 这样就有一个好处,当两个无穷大相加的时候可以使int型整数不溢出,并使数值仍为无穷大。...而使用0x3f3f3f3f在对于数组初始化的时候也比较方便,一般数组批量赋值时会使用memset函数,如果想将一个数组全部定义为"无穷大"的0x3f3f3f3f,因为memset函数是对字节进行操作,而...0x3f3f3f3f的每个字节都是0x3f,所以可以直接定义为memset(array, 0x3f, sizeof(array)) 在java中使用Arrays.fill(arr,0x3f3f3f3f)

10410

鸿蒙开发者的必修课:Linux底层IO方式深度剖析 ‍

鸿蒙开发者的必修课:Linux底层IO方式深度剖析 ‍ 摘要 在这篇博客中,我们将探讨Linux底层的几种IO(输入/输出)方式,为鸿蒙开发者提供一个清晰的理解。...关键词:鸿蒙OS、Linux、IO模型、阻塞非阻塞、IO多路复用、性能优化。 引言 对于鸿蒙开发者来说,深入理解Linux底层的IO方式不仅有助于优化应用性能,还能在面对复杂场景时更加得心应手。...// 非阻塞IO的示例 void nonblocking_read() { char buffer[100]; fcntl(fd, F_SETFL, O_NONBLOCK); // 设置为非阻塞模式..., getpid()); int flags = fcntl(fd, F_GETFL); fcntl(fd, F_SETFL, flags | FASYNC); // 开启异步通知 }...Linux Manual Pages. 鸿蒙OS开发文档.

12010

从内核角度看怎么设置connect超时

但我们发现 connect 函数并没有提供超时的设置,而在 Linux 系统中,connect 的默认超时时间为75秒。所以,在连接不上服务端的情况下,我们需要等待75秒,这对我们不能接受的。...通过 SO_SNDTIMEO 设置 connect 超时时间 虽然 connect 系统调用没有提供超时的设置,但我们通过查阅 Linux 内核代码可以发现,connect 系统调用的超时时间可以通过..., 0); fcntl(sockfd, F_SETFL, flags|O_NONBLOCK); // 设置为非阻塞 int n = connect(sockfd...-1; // 出错 } else if (0 == n) { return 0; // 超时 } } fcntl(fd,F_SETFL...这种设置 connect 的超时时间的方式比前面设置 SO_SNDTIMEO 值的方式更为通用,因为在非 Linux 系统中,设置 SO_SNDTIMEO 值的方式不一定有效。

1.9K10
领券