TypeCodes

Linux C/C++多进程同时写一个文件(三)

本文是这《Linux C/C++多进程同时写一个文件》系列文章的第三篇,上一篇文章演示了两个亲缘关系的进程(父子进程)同时写一个文件的情形,并得出了数据只会错乱但不会覆盖的结论。这篇文章主要是在第一篇文章的基础上,加上上篇文章的分析,更深下一步地探索两个非亲缘关系的进程同时写一个文件的问题。

1 查看要写入的文件的inode信息 …

- 阅读剩余部分 -

Linux C/C++多进程同时写一个文件(二)

本文是这《Linux C/C++多进程同时写一个文件》系列文章的第二篇,上一篇文章演示了两个非亲缘关系的进程同时写一个文件的情形,并得出了数据只会错乱但不会覆盖的结论。这篇文章主要是讨论两个亲缘进程(fork)同时写一个文件的情况。

1 查看要写入的文件的inode信息

使用如下命令可以查看要写入的文件LINUX_MUTIL_PROCESS_WRITE对应的inode情况,可以看到它的值为 …

- 阅读剩余部分 -

Linux C/C++多进程同时写一个文件(一)

近期会写关于《Linux C/C++多进程同时写一个文件》的系列文章,主要是探索在Linux下非亲缘关系的多进程和具有亲缘关系的多进程同时写一个文件的问题。例如,当两个进程同时写一个文件,那么写入结果是怎样的呢?是否会出现数据丢失的情况?是否会出现覆盖?是否会出现错乱?

本文是这一系列文章的第一篇,通过两个非亲缘关系的进程演示同时写一个文件的情形,最终得出结论、回答上面的问题。

1 查看要写入的文件的inode信息

使用如下命令可以查看要写入的文件 …

- 阅读剩余部分 -

Linux C++简单实现一个批量插入的sql脚本生成工具

之前项目上隔三差五地要手工批量导入一些数据,于是自己用C++写了这个sql脚本文件的生成工具。

Linux C++简单实现一个批量插入的sql脚本生成工具

1 需求说明

批量插入多个用户收费信息,也就是用户id不同,但是包括所属区域代号、收费模式和费率值等数据是相同的。如果使用手工拼接insert语句工作量很大,而且可能出现差错,所以改用程序来生成。

只需要配置好相关参数,然后直接执行程序就可以把生成的sql脚本交给DBA处理了。

2 C++程序

代码比较简单,从main函数中可以看出主要流程是先读取配置文件(见小节3 …

- 阅读剩余部分 -

使用C++ STL库统计一散文中单词出现次数和行号

在开发过程中经常会遇到文件处理的情形,例如统计一篇文章单词的数量、行数、出现频率最高的几个单词等等。这篇文章主要通过C++来解析一篇文章,实现每个单词(不区分大小写)出现的总次数和出现的行号的统计。

使用C++ STL库统计一散文中单词出现次数和行号

1 演示程序

文件处理能比较好地考验对开发语言基础技能的掌握能力,因为这需要去考虑数据的读取、数据的存储方式、数据的处理等等,可能不同的处理方法会得到不同的效率和结果。

下面的代码主要是使用C++的STL库解析一篇英文散文(网上看到不错就wget下来了),涉及的编程基本点如下 …

- 阅读剩余部分 -

Linux C++使用函数模板实现JSON数据快速和完整写入到文件

昨天在自己的CentOS7机器上编译了JSONCPP库,然后根据api写了下面这个简单的测试程序。代码涉及了文件流数据读取和写入、jsoncpp库的读写api的使用。整个处理流程是先读取一个json格式文件的内容,然后把这些内容分别用jsoncpp库的Json::FastWriter(快速写入)和Json::StyledWriter(完整写入)这两个方式写入到两个文件中,最后读取这两个文件并输出。

Linux C++使用函数模板实现JSON数据快速和完整写入到文件

1 测试程序

代码比较简单,通过函数模板 …

- 阅读剩余部分 -

C++中使用vs2015和g++对new开辟的堆内存是否初始化的分析

在C++中使用new运算符在堆中申请一内存块的使用权的同时还可以执行对该内存块的初始化工作。下面通过使用2个类对象和2个基本数据类型来分析使用new class_objectnew class_object()new intnew int()对这块内存的初始化情况。

1 示例程序

这里用下面这个C++程序作为演示,在后面两个小节中分别使用g …

- 阅读剩余部分 -

Linux TCP客户端出现CLOSE_WAIT后进入死循环

前文中讲述了Linux服务端TCP的某个链路变成CLOSE_WAIT状态,然后由于客户端已经关闭了(发送了RST标志的报文),那么服务端如果继续向这个链路中写入数据的话就会收到SIGPIPE信号而终止,这篇文章主要通过客户端进入CLOSE_WAIT后由于收到服务端产生的RST标志报文进入死循环的情况。注:RST表示复位 …

- 阅读剩余部分 -