- 博客(42)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 vim进阶使用
相关链接:简明vim 练级攻略给程序员的vim速查卡Taglist 插件 https://www.vim.org/scripts/script.php?script_id=273Taglist 插件 https://github.com/yegappan/taglistTaglist如何使用 https://www.cnblogs.com/diegodu/p/7088596.htmlcscope插件 https://blog.csdn.net/magiclyj/article/details/7
2020-06-05 19:58:14
265
原创 控制台快捷命令
Linux 快捷指令,实用度高的,在前面。<C> + a 跳转到命令开始<C> + e 跳转到命令末尾<C> + c 中断当前进程<C> + b 光标左移一位,backup<C> + f 光标右移一位, forward<C> + d 删除光标所在位置的字符<C> + w 删除光标前一个参数...
2021-02-18 14:37:24
1049
原创 CUnit和lcov安装和使用
CUnit系统ubuntu 18.04 版本CUnit-2.1-31.在网址https://sourceforge.net/projects/cunit/ ,下载CUnit压缩包解压缩tar jxvf CUnit-2.1-3.tar.bz2cd CUnit-2.1-3安装相关工具sudo apt install libtoolroot# aclocalwarning : aclocal: warning: autoconf input should be named
2020-12-21 15:51:30
2567
1
原创 Linux硬盘空间不足解决办法
一. 软链接目录法(建议)通过ln -s {实际目录} {软链接目录}使用其他分区的存储空间,来避免/home目录下空间不足chown 切换目录权限二. 重新分配空间法参考链接2.1 查看磁盘信息查看磁盘使用情况,逻辑卷的挂载格式为/dev/mapper/VolumeGroupName-LogicalVolumeName#df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 3.3
2020-06-30 19:28:11
1540
2
原创 代码编辑技巧
Windows 和 Linux 共享目录1、ubuntu,https://blog.csdn.net/agr21673/article/details/102263553备注:18.04可用2、smb权限设置 https://blog.csdn.net/linglongwunv/article/details/5212875soughtinsight1、中文字符配置...
2020-02-11 08:46:19
111
原创 常用工具介绍,安装和使用方法
代码覆盖率检测工具gcov/lcovhttps://blog.csdn.net/gatieme/article/details/78368667代码单元测试框架 cUnit下载安装 http://cunit.sourceforge.net/doc/introduction.html#description介绍和例子https://www.cnblogs.com/linux-...
2019-09-24 15:16:33
568
15
原创 程序员修炼之道-从小工到专家——阅读笔记
Tips摘录:1、Care About Your Craft 关注你的技艺2、Think! About Your Work 思考!你的工作3、Provide Options, Don't Make Lame Excuses 提供各种选择,不要找蹩脚的借口4、Don't Live With Broken Windows 不要容忍破窗户5、Be a Catalyst for ...
2019-08-20 11:29:53
192
原创 我的vim使用手册
目录相关链接:一、.vimrc配置二、简单操作命令模式文档操作类多窗口三、中阶操作命令模式移动光标文本复制删除操作文本搜索另存为四、高阶操作命令重复光标移动代码自动对齐单词移动批量替换自动提示(自动补齐功能)可视化选择 相关链接:简明vim 练级攻略 给程序员的vim速查卡 Taglist 插件 ht...
2019-07-19 14:44:44
212
原创 Linux之利用文件描述符进行通知的定时器:timerfd API
目录提问:系统调用:1、创建2、设置3、获取定时器时间间隔和剩余时间4、timerfd与fork()及exec()之间的交互5、通过read()从timefd文件描述符读取到期信息测试代码:何时使用?参考资料:提问:如何使用timerfd API? 什么时候需要使用?系统调用:1、创建#include <sys/timerf...
2019-07-19 11:44:36
320
原创 Linux网络编程(二) —— SO_REUSEADDR套接字选项
目录提问:用来解决什么问题?如何使用?参考资料提问:用来解决什么问题? 如何使用?用来解决什么问题?避免当TCP服务器重启时,尝试将套接字绑定到当前已经同TCP结点相关联的端口上时出现的EADDRINUSE(地址已使用)错误。这个问题会在下面两种情况中出现: a 之前连接到客户端的服务器要么通过close(),要么因为崩溃(被信号杀死)而执行了主动关闭。这使得...
2019-07-19 09:44:31
399
原创 文件I/O --- 通用的I/O模型 (一、系统调用)
一、提问:如何使用C语言访问UNIX系统下的文件? 内核是如何记录文件打开的信息的? 使用中有什么需要注意的地方?1.1参考资料Linux/UNIX系统编程手册(上册) 第4章1.2基本知识:所有执行I/O操作的系统调用都以文件描述符,一个非负整数(通常是小整数),来指代打开的文件(类似于代号,别名)。 文件描述符用以表示所有类型的已打开的文件,包括管道(pipo),FIFO...
2019-07-18 23:01:27
206
原创 类设计者的检查清单
——————摘自C++沉思录(注:其中加了一些个人的注释)1.你的类需要构造函数吗?2.你的数据成员是私有的吗?3.你的类需要一个无参构造函数吗?如果使用了自定义的构造函数,那么编译器不会默认生成构造函数,这时候如果需要调用无参构造函数,则必须我们自己显示地写一个。如果为了阻止无参数实例化,还需要考虑数组的问题。4.是不是每个构造函数初始化所有的数据成员?5.类需要析...
2019-07-12 21:45:11
131
原创 MySQL数据库c语言接口
目录提问: 1.MySQL数据库提供的接口有哪些? 2.如何通过c语言使用数据库?1.MySQL数据库提供的接口有哪些?1.1 综述1.1.1 主要流程1.1.2 mysql_init()1.1.3mysql_real_connect()1.1.4mysql_query()1.1.5mysql_store_result()、...
2019-06-08 13:50:46
626
原创 Linux之异步I/O
提问:异步I/O(AIO)有哪些接口?如何使用? 为什么需要异步I/O?优缺点是什么?基本概念:在异步非阻塞 I/O 中,我们可以同时发起多个传输操作。这需要每个传输操作都有惟一的上下文,这样我们才能在它们完成时区分到底是哪个传输操作完成了。在 AIO 中,这是一个aiocb(AIO I/O Control Block)结构。这个结构包含了有关传输的所有信息,包括为数据准备的用户缓冲...
2019-06-05 10:49:24
323
2
原创 MMAP使用(一、基本接口)
提问:mmap是什么?有什么用? mmap的接口怎么使用?每个参数又有什么作用?回答:1.mmap是什么?有什么用?mmap将一个文件或者其它对象映射进内存。mmap操作提供了一种机制,让用户程序直接访问设备内存,这种机制,相比较在用户空间和内核空间互相拷贝数据,效率更高。在要求高性能的应用中比较常用。mmap映射内存必须是页面大小的整数倍,面向流的设备不能进行mmap,mmap的...
2019-06-03 22:33:54
2259
原创 MySQL数据库基本操作
ubuntu 18.04.1 数据库是MySQL 8.0.16参考网址:教程w3cschool https://www.w3school.com.cn/sql/sql_foreignkey.asp刷题 牛客网https://www.nowcoder.com/ta/sql目录DDL:数据定义语言、Data Definition LanguageDML:数据操纵...
2019-06-03 19:51:02
218
2
原创 MMAP使用(二、参数相关分析)
1.内存保护和文件访问模式交互mmap映射需要文件描述符的读权限(即open时需要加上读权限),不然不能使用。 所有内存保护组合与使用O_RDWR标记打开文件是兼容的。 一些硬件架构不允许对一个分页的只写访问。prot值 描述 PROT_NONE 区域无法访问 PROT_READ 区域内容可读取 PROT_WRITE 区域内容可修改 PROT_EX...
2019-06-02 11:32:39
562
原创 Linux之网络编程(一)(参考代码)
1.点分十进制转化为二进制数,二进制数转化为点分十进制。#include <func.h>int main(int argc, char* argv[]){ ARGS_CHECK(argc, 2); struct in_addr addr; int ret; ret = inet_aton(argv[1], &addr); p...
2019-05-29 23:41:57
309
1
原创 Linux之网络编程(一)
提问:什么是网络编程?为什么需要网络编程? c语言提供了哪些结构体和接口?如何使用? TCP和UDP的区别?Linux之网络编程(一)(参考代码)https://blog.csdn.net/birdunderastarrysky/article/details/90631822使用SELECT实现即时聊天小程序目录提问:基本常识:英文缩写与全称:L...
2019-05-28 08:55:06
199
原创 Linux之线程同步——nptl线程库(二)(基础代码)
Linux之线程同步——nptl线程库(二)原理篇https://blog.csdn.net/birdunderastarrysky/article/details/90573820头文件链接https://blog.csdn.net/birdunderastarrysky/article/details/90578635注:每个函数的错误检查由于写上会导致不方便阅读,所以没加上。...
2019-05-26 21:05:49
294
原创 Linux之线程同步——nptl线程库(二)(施工中)
Linux之线程同步——nptl线程库(二)(基础代码)https://mp.csdn.net/postedit/90573953提问:线程同步是什么意思?为什么需要线程同步?不同步会导致什么后果? 线程同步有什么方法,接口?如何使用? 如何使用线程条件变量?基本常识:临界区(critical section)是指访问某一共享资源的代码片段。 原子操作(atomic ...
2019-05-26 21:05:44
217
原创 Linux之线程——nptl线程库(一)
提问:什么是线程?为什么需要线程? 如何使用线程?线程的使用接口? 线程的实际应用有哪些?可以与哪些技术结合?(这个以后我用了再来补充,或新开一节)基本常识:并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我...
2019-05-24 16:50:21
1782
5
原创 IPC之共享内存
1.提问1.什么是共享内存?2.使用环境(用来解决什么问题)是什么?3.接口是什么样的?如何使用?2.什么是共享内存?1. 两个或多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存段会成为一个进程用户空间内存的一部分,因此这种IPC机制无需内核介入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。2. 优点...
2019-05-24 10:30:29
254
原创 消息队列
消息队列的原理消息队列允许进程以消息的形式交换数据。 消息队列进行的通信是面向消息的,即读者接收到写者写入的整条消息。读取一条消息的一部分而让剩余部分遗留在队列中或一次读取多条消息都是不可能的。这一点与管道不同,管道提供的是一个无法区分的字节流(即使使用管道时读者一次可以读取任意数量的字节数,不管写者写入的数据块大小是什么)。 除了包含数据外,每条消息还有一个用整数表示的类型。从消息队列中...
2019-05-22 09:30:54
99
原创 文件权限
提问:如何看linux中文件的权限?r,w,x,t,s五种权限分别表示什么意思?对于文件和目录有什么区别?如何修改linux中文件的权限?1.如何看linux中文件的权限?ls -l2.r,w,x,t,s五种权限分别表示什么意思?对于文件和目录有什么区别?r表示read,即可读,也就是可以访问该文件或者目录。w表示write,即可写,也就是可以修改该文件;可以增添或删改目...
2019-05-20 22:09:20
755
原创 linux下的目录操作(未完成版)
需要对目录进行什么样的操作?1.创建和删除目录2.获取目录信息3.改变目录的访问权限4.获取、改变当前目录5.以后有的话再补充。1.创建和删除目录头文件#include<sys/stat.h>#include<sys/types.h>#include<unistd.h>函数int mkdir(const char *pathname, ...
2019-05-20 09:25:55
124
原创 Linux下基于文件描述符的文件操作
文件打开与关闭int open(const char* pathname, int flags);//文件名,打开方式int open(const char* pathname, int flags, mode_t mode);//文件名,打开方式 权限int create() //不常用int close(int fd);open出错时返回-1。flag表示打开或创建的方式...
2019-05-17 09:19:57
402
1
原创 realloc实现原理
windows 7visual studio 20171.malloc申请的空间会把新空间每个字符置为cd。2.realloc会将原内存上的二进制直接拷贝到新空间,多余的新申请的空间也会把新空间每个字符置为cd。所以会拷贝‘\0’。应该是通过malloc申请空间,memmove来完成移动。3.https://www.cnblogs.com/duger/archive/2013/...
2019-05-10 17:10:30
2266
1
原创 全局变量与静态变量
1.全局变量作用域为定义处到文件末尾,但是在程序开始就占用内存了。#include<stdio.h>#include<stdlib.h>//这样是可以的extern int g;int k = 10;int main() { int i = 100; printf("%d", g); return 0;}int g = 10;#inc...
2019-05-03 19:50:46
1419
原创 ++运算符注意事项和字符处理函数
#include<stdio.h>#include<stdlib.h>void main() { char a[10] = "hello my"; char b[10] = { 0 }; char *t = mystrcpy(b, a); printf("%s\n", b); printf("%s\n", t); char *a1 = a; char ...
2019-05-01 20:00:30
125
原创 二维数组的使用
对于数组之类如何分辨名字是什么意思。c++primer提供了一种建议,从里往外读。也就是a是指向大小为4的数组(int [4] )的指针。二维数组在传递时,列数一定要写。 第一种传入二维数组:#include<stdio.h>#include<stdlib.h>void print(int (*a)[4], int row, int col) ...
2019-05-01 17:44:43
126
原创 c语言编程Tips
优先级: 单目>算术>关系>逻辑编程Tips:少加括号,减少阅读的难度。在使用等于号(==)时, 常量放左边,变量放右边,避免出错(写成赋值运算符)。短路运算 代替 if() 0 == j && printf("you can't see me\n"); 1 == j || printf("your can't see me\n"); ```整...
2019-05-01 08:49:16
172
原创 交换两个数的方法
方法一,±法(注意a+b不能超过整形表示范围)int a = 10;int b = 15;a = a + b; // a = 25b = a - b; // b = 10; a = a - b; // a = 15;方法二, 建立临时变量方法三,异或1.一个数与零异或,得到这个数本身。2.一个数与自身异或,等于0。3.异或有交换律int a = 10;int b = 15...
2019-04-30 18:39:25
102
原创 visual studio 2017问题
问题1:对于下面代码int i;while(scanf("%d,&i) != EOF){}必须要摁三次ctrl+z(windows环境下表示EOF),才能推出循环问题2:缓冲区刷新不能够使用fflush(),而是使用rewind(stdio)来刷新缓冲区。...
2019-04-30 16:59:33
132
1
原创 数值运算细节
整形中4字节以下的数据类型在进行数值运算时,会先扩展到32位(4B),再进行数值运算。short a = 32767;对应二进制为: 0111 1111 1111 1111a << 1 >> 1;会先扩张到32位:0000 0000 0000 0000 0111 1111 1111 1111左移:000 0000 0000 0000 0111 1111 111...
2019-04-30 15:20:03
365
原创 c语言中浮点数精度陷阱
浮点数在计算机中采用数符+阶码+尾数表示。主要有以下几个需要注意的点:1.float型 有效数字为6-7位, double型 有效数字为15-16位。2.浮点数间比较大小不能通过==运算符比较。因为在机器中小数采用近似值表示。 需要通过减法去比较。如float f1 = 4.56;if(abs(f1-4.56)<1e-6){ printf("f1 is...
2019-04-30 13:03:07
2067
原创 内联函数分析
优点: 1.可以避免函数调用的开销。将函数指定为内联函数,通常就是将它在每个调用点上“内联地”展开。 2.格式如下:inline 返回类型 函数名(参数列表){ //具体操作} 3.内联函数主要用于优化规模小,流程直接,频繁调用的函数。 4.内联说明只是向编译器发出一个请求,编译器可以选择忽略这个请求。缺点: 1.很多编译器都不支持内联递...
2019-04-29 08:48:03
100
原创 new和delete究竟做了什么?
作为一个c++初学者,只是简单的认为new就是新建一个对象,delete就是删除一个对象。而在面对下面一个问题时,就感觉有些困惑,new和delete到底做了什么? 问题是:给定下面的类,为其实现一个默认构造函数和必要的拷贝控制成员。class TreeNode{private: std::string value; int count;...
2019-04-28 19:44:03
540
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人