Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux C ftruncate 函数清空文件注意事项(要使用 lseek 重置偏移量)

Linux C ftruncate 函数清空文件注意事项(要使用 lseek 重置偏移量)

之前有个要把打开的文件清空,然后重新写入的需求,但是使用 ftruncate(fd, 0)后,并没有达到效果,反而文件头部有了"",长度比预想的大了。究其原因是没有使用 lseek 重置文件偏移量,是我太天真了,以为清空文件就会从头开始写入。------------------------------------- 我是解释分割线 --------------------------------------首先 man ftruncate 看下帮助手册NA...
C++拾遗--虚函数原理

C++拾遗--虚函数原理

前言C++的多态依赖虚函数来实现。若类存在虚函数,则每一个类的实例都维护了一个地址,这个地址指向虚函数表。虚函数表中存放的是类中所有虚函数的地址。下面我们找出虚函数表的地址,从而获得每个虚函数的地址,然后使用地址直接调用虚函数。正文1.空类的size#include <iostream>using namespace std;class MyClass{};int main(){cout << "sizeof(MyClass) = ...
C++拾遗--引用(左值引用、右值引用)

C++拾遗--引用(左值引用、右值引用)

前言引用就是别名(alias)。所谓别名,就是对已存在的对象另起一个名字。本身含义并不难理解,但与其它概念一组合,就成了使用难点。再加上新标准提出了新的一种引用-右值引用,引用这一概念就变得更加难以理解和使用。正文随着新标准(新标准往往就是新的技术)的提出,引用这一概念分成两类:左值引用、右值引用。其中左值引用是最常用的一种,而右值引用则是语言使用上的一种革新。1.左值引用左值引用的基本语法Type &引用名 = 左值表达式;#include &l...
Java信号量Semaphore

Java信号量Semaphore

SemaphoreSemaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。Semaphore实现的功能就类似厕所有5个坑,假如有10个人要上厕所,那么同时只能有多少个人去上厕所呢?同时只能有5个人能够占用,当5个人中 的任何一个人让开后,其中等待的另外5个人中又有一个人可以占用了。另外等待的5个人中可以是随机获得优先机会,也可以是按照先来后到的顺序获得机会,这取决于构造Semaphore对象时传入的参数选项。单个信号量的Se...
Java的JDK已经可以无警告编译通过

Java的JDK已经可以无警告编译通过

OpenJDK,Java 的开源参考实现(也是 Oracle JDK 的基础)已经达到了一个重要的里程碑。包含了类库代码的 jdk 仓库,在将要发布的 JDK 9 中已经消除了所有的编译警告,Joe Darcy 和其他一些人领导 Oracle 工程师们在这上面耕耘了数月,也就此画上完美句号,这其中也包含了一些来自社区的贡献。Java 像其他编程语言,例如C一样,支持一种检查模式(linting mode),它可以对糟糕的代码样式和可能不安全的编码做法发出警...
.NET 4.6中新的任务并行库特性

.NET 4.6中新的任务并行库特性

在即将发布的 .NET 4.6 中,.NET 中的任务并行库将会进行某些调整。其中会包括一些新的帮助方法以减少代码量,可能还会有性能方面的优化。除此之外,TPL 将会通过使用一个新的解决方案对 SetResult 方法中某个复杂的问题进行处理。可以将 Task.FromResult 视为一个典型样板,这一函数用于创建一个已经完成的 Task 对象,而无需首先创建一个 TaskCompletionSource 对象。开发者无法模拟这一效果,因此这需要访问 T...
Python中的字符串驻留

Python中的字符串驻留

C#中的字符串驻留熟悉.NET的人都应该知道C#中的字符串驻留机制,.NET维护了一个驻留池,它会把在编译期间就相同的字符串只保留一份拷贝。如果仅在运行期间值才相同的字符串变量,.NET不会为这个2个相同的字符串变量指向同一份引用的。不过.NET提供了一个方法,让开发人员可以强制将两个相同的字符串指向同一个引用,使用String类中的Intern方法。string s1 = "!QAZ2wsx3$%5$$%fe _ ###4@"; string s2 = ...
Java静态内部类详解

Java静态内部类详解

从事Java开发的人对内部类相信不陌生。什么是内部类呢?定义在一个类内部的类就叫做内部类。比较常见的是非静态内部类,使用相当广泛。而其实静态内部类在某些情况下也有很大的用处,只是它在使用的时候会有一些限制,所以在软件开发中静态内部类不太常见。本文就详解下Java静态内部类使用的相关知识,以帮助大家了解它的意义和使用限制,更好的使用静态内部类。 一、静态内部类的使用目的 在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为...
内部类广播需要public和static

内部类广播需要public和static

采用广播接收者(BroadcastReceiver)使service与activity进行通信。在该例子中我们在service子类中定义了一个自定义的广播接收者,该广播接收者监听activity发出的特定的广播,并从而触发onReceive方法,我们在此方法中间接调用service类的方法,从而实现了service与activity间的通信。例子中的广播接收者是采用动态的方式注册的(即使用registerReceiver和unregisterReceive...
理解隐式类型、对象初始化程序和匿名类型

理解隐式类型、对象初始化程序和匿名类型

在C# 3.0中,几乎每个新特性都是为LINQ服务的。所以,本文将介绍下面几个在C# 3.0中引入的新特性:自动实现的属性隐式类型的局部变量对象和集合初始化程序隐式类型的数组匿名类型其实这几个特性都是比较容易理解的,对于这几个特性,编译器帮我们做了更多的事情(想想匿名方法和迭代器块),从而简化我们的代码。自动实现的属性在C# 3.0以前,当我们定义属性的时候,一般使用下面的代码public class Book{private int _id;privat...
C#迭代器

C#迭代器

在.NET中,迭代器模式是通过IEnumerator和IEnumerable接口以及它们的泛型版本来实现的。如果某个类实现了IEnumerable接口,就说明它可以被迭代访问,调用GetEnumerator()方法将返回IEnumerator的实现,这个就是迭代器本身。在C# 1.0中,利用foreach语句实现了访问迭代器的内置支持,让集合的遍历变得简单、明了。其实,foreach的实现就是调用GetEnumerator和MoveNext方法以及Curr...
<< 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 >>