LTP 第五章 开发 IO 操作测试集
在本章中,我们将编写以下几个测试:
Convert read03
Convert read04
Convert close02
Convert close08
Convert open04
5.1 Convert read03
5.1.1 重写代码
12wxs@ubuntu:~/ltp/testcases/kernel/syscalls/read$ rm read03.cwxs@ubuntu:~/ltp/testcases/kernel/syscalls/read$ vim read03.c
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778/* * This program is free software; you can redistribute it and/or modify it * under the terms of ve ...
Linux Ext 文件系统
一、Ext2文件系统
1.1 概述
文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时确定的,使用 tune2fs 命令可以查看块大小。
**注:**我这里演示使用的是ext3,但是没有影响。
1234567[root@VM_120_243_centos 1]# cat /etc/fstab /dev/vda1 / ext3 noatime,acl,user_xattr 1 1proc /proc proc defaults 0 0sysfs /sys sysfs noauto 0 0debugfs /sys/kernel/debug debugfs noauto 0 0devpts /dev/pt ...
IDEA 2017激活教程
重要: 本文激活方式已经失效,请前往《IDEA 2019激活教程》查看最新激活方式。
方法一:大学edu邮箱免费注册
使用学校的邮箱可以免费使用,参考文章学生授权申请方式。注册成功后,登陆Jertbrains可以看见到期时间。
** 方法二:使用注册服务器注册(断网可能失效) **
进入ide主页面,help->register->license server ,填入:
http://ideaserver.suroot.win
方法三:使用破解补丁
(1)前往 http://idea.lanyus.com/ 下载破解补丁
(2)将其放在安装目录的bin目录下,并修改idea.exe.vmoptions 和 idea64.exe.vmoptions 文件内容:
在上面提到的这两个文件最后添加一行(将其中路径替换为自己的相应路径):
-javaagent:D:\IntelliJ IDEA 2018.1\bin\JetbrainsCrack-2.7-release-str.jar
(3)打开软件,在注册界面选择active code,写入下面注册代码:(到2099年 ...
Vim 教程
一、Vim 简介
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。代码补全、编译及错误跳转等方便编程的功能特别丰富。
它的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘流的各种巧妙组合操作却能带来极为大幅的效率提升。
二、Vim 多文本编辑
2.1 多个文件的打开与基本操作
命令:vim fileName1 fileName2
切换方法:
命令
作用
:n
切换到下一个文件
:N
切换到上一个文件
:n fileName2
切换到文件fileName2
除了使用上面的切换方法外,可以利用vim为每个文件提供的buffer号来进行切换
命令
作用
:ls
查看所有打开的文件信息
:b2
切换到buffer id为2的buffer
:bn
切换到下一个buffer
:bp
切换到前一个buffer
:bd
关闭当前buffer,并关闭对应文件
:bd2
关闭buffer id为2的buffer,并关闭对应文件
2.2 窗口分 ...
Linux 实现数据库的定时备份
在项目中,数据往往是十分重要的,这就要求我们对数据库进行实时备份。幸运的是,Linux 支持这样的功能。本文将讲述如何定时实现数据库的备份。
一、创建备份文件夹
我们以备份到 /home 路径下为例,创建 backup 文件夹:
1234[root@iZuf643t8c5urcnhm494emZ ~]# cd /home[root@iZuf643t8c5urcnhm494emZ home]# mkdir backup[root@iZuf643t8c5urcnhm494emZ home]# lsbackup
二、编写备份脚本程序
12345#!/usr/bin/bashmysqldump -uUserName -pPassWord DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sqlmysqldump -uUserName -pPassWord DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql ...
LTP 第四章 开发_exit()测试集
本章我们将结合前三章所学知识,开发一个完整的新规测试用例,在开始项目之前,请保证项目源码包的干净。
123456[wxs@bogon ltp]$ git branch master* mybranch[wxs@bogon ltp]$ git status# 位于分支 mybranch无文件要提交,干净的工作区
本章以编写 _exit() 函数为例,首先我们查看 _exit() 函数的 man-page,根据描述我们抽取出五个测试点,在本章中将依次实现它们。
4.1 Test point 1
4.1.1 测试思路
进程调用_exit()后应该立即终止,因此可以测试该进程是否仍然存在。
4.1.2 编写代码
在编写之前,首先我们要知道我们编写的_exit()测试用例属于系统调用,因此我们在ltp的系统调用文件夹中新建_exit文件夹,用于存放本章代码。
12345[wxs@bogon ltp]$ cd testcases/kernel/syscalls/[wxs@bogon syscalls]$ mkdir _exit[wxs@bogon syscalls]$ cd _exit ...
Linux 静态库和动态库
在 Windows 平台和 Linux 平台下都大量存在着库。本质上来说库是一种可执行的二进制代码(但不可以独立执行),可以被操作系统载入内存执行。
Linux下的库有两种:静态库和动态库(共享库)。本文将介绍 Linux 下静态库和动态库的概念以及相应的创建与使用方法。
一、对比
类型
特点
静态库
在编译时被链接到程序中,作为可执行程序的一部分。在程序运行时不再依赖静态库,占用内存大。
动态库
在可执行程序运行时载入内存。动态库已经在内存中不需要再次载入。
二、静态库
2.1 概念
静态库指将所有相关的目标文件打包成为一个单独的文件,即静态库文件。静态库以 .a 结尾,链接器会将程序中使用到的函数的代码从库文件中拷贝到程序中。由于每个使用静态库的应用程序都需要拷贝所有函数的代码,所以静态链接的文件会比较大。
在 Unix 系统中,静态库以一种称为存档(archive)的特殊文件格式存放在磁盘中。存档文件是一组连接起来的可重定位目标文件的集合,有一个头部用来描述每个成员目标文件的大小和位置。
2.2 静态库的创建和使用
2.2.1 环境准备
创建根文 ...
LTP 第三章 开发系统调用测试集
在第二章中我们写了 Shell 测试集,在本章,我们将开发基于 C 的系统调用测试集,使用新 API 重写既有的测试 case ,整个流程与上一章基本相同,不再赘述。
在本章中,我们将编写以下几个测试:
Convert getpagesize01
Convert getpid01
Convert unlink05
Convert getppid02
在开始之前,保证工作区的干净:
123[wxs@bogon ltp]$ git status# 位于分支 master无文件要提交,干净的工作区
3.1 Convert getpagesize01
3.1.1 重写代码
进入 getpagesize 目录,删除原有 getpagesize01 文件,并重写 getpagesize01.c:
12345[wxs@bogon ltp]$ cd testcases/kernel/syscalls/getpagesize/[wxs@bogon getpagesize]$ lsgetpagesize01 getpagesize01.c Makefile[wxs@bogon getpages ...
LTP 第二章 开发 Shell 测试集
2.1 准备环境
2.1.1 清理环境
在第一章中我们使用了git clone将项目克隆到了本地,并且编写了一个简单的c测试和Shell测试。
在本章开始之前,我们要保证源码包项目的干净,即恢复到最开始克隆时的状态,具体步骤参考相关《Git 教程》。
Tip: 如果你觉的恢复干净对你有困难的话,最简单粗暴的方法就是删掉重新克隆了…
注: 清除前一定要注意数据备份,清除后第一章做的修改就不复存在了…
恢复后,项目状态如下:
123[wxs@bogon ltp]$ git status# 位于分支 master无文件要提交,干净的工作区
更新项目到最新状态:
12[wxs@bogon ltp]$ git pullAlready up-to-date.
2.1.2 创建自定义分支
为了不对原项目产生影响,我们使用自定义的分支,并且本章的操作均在此分支中进行。
创建自定义分支mybranch,并切换到mybranch分支:
12345[wxs@bogon ltp]$ git checkout -b mybranch切换到一个新分支 'mybranch'[wxs@bog ...
数据结构 第九章 查找
9.1 基本概念
(1)列表
由同一类型的数据元素(或记录)构成的集合,可利用任意数据结构实现。
(2)关键字
数据元素的某个数据项的值,用它可以标识列表中的一个或一组数据元素。
如果一个关键字可以唯一标识列表中的一个数据元素,则称其为主关键字,否则为次关键字。 当数据元素仅有一个数据项时,数据元素的值就是关键字。
(3)查找
根据给定的关键字值,在特定的列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。
若找到相应的数据元素,则称查找是成功的,否则称查找是失败的,此时应返回空地址及失败信息,并可根据要求插入这个不存在的数据元素。
表的查找分为静态查找和动态查找:
静态查找
在查找过程中只是对数据元素进行查找
动态查找
在实施查找的同时,插入找不到的元素,或从查找表中删除已查到的某个元素,即允许表中元素变化
(4)平均查找长度(ASL)
为确定数据元素在列表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度(ASL)。
对于长度为 n 的列表,查找成功时的 平均查找长度为:
其中 Pi为查找列表中第 i ...