自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Linux环境编程(七)--------------进程间通信( 信号、文件、环境变量、命令行参数、无名管道、有名管道、共享内存、消息队列、信号量、套接字)

基本概念:什么是进程间通信:是指两个或多个进程之间交互数据的过程,因为进程之间是相互独立,为了协同工作必须交互数据。进程间通信的分类:简单的进程间通信:信号、文件、环境变量、命令行参数。传统的进程间通信:管道文件(有名管道、匿名管道)XSI进程间通信:共享内存、消息队列、信号量。网络进程间通信:套接字传统进程间通-管道管道是UNIX系统中最古老的进程间通信方式,古老就意味着所有系统都支持,早期的管道都是半双工,现在有些系统的管道是全双工(但要假定系统仅支持半双工)。管道是一种特殊的文件,它

2020-09-10 16:39:35 143 1

原创 Linux环境编程(六)--------------进程创建、正常退出、异常终止、子进程回收

进程基本概念:1、进程与程序 程序就是存储在磁盘上的可执行文件,程序被加载到内存中开始运行叫进程。一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序。2、进程的分类 进程一般分为三种类型:交互进程、批处理进程、守护进程。 守护进程一般都处于活跃状态,运行在后台,由于系统在开机时通过启动脚本自动创建的。3、查看进程 简单形式:ps 显示当前用户有控制终端的进程信息。 列表形式:ps auxw 显示进程详细信息 **a 所有用户的.

2020-09-04 20:40:47 344

原创 Linux环境编程(五)--------------信号、定时器

Linux环境编程(五)基本概念1、中断 当程序接收消息后中止当前正在执行的程序,转而执行其它任务,等其它任务执行完成后再返回,这种执行模式叫中断,分为硬件中断和软件中断。2、信号 是一种软件中断,由操作系统发出,程序接收后会执行相应的操作。3、常见信号 kill -l 显示所有信号 SIGINT Ctrl+c 终止 SIGQUIT Ctrl+\ 终止+core SIGFPE 除0 终止+core SIG

2020-09-04 19:39:00 78

原创 Linux环境编程(四)--------------文件同步、文件权限 、大小修改、目录操作功能函数和运用

文件同步:1、在写入数据时内存与磁盘之间也有一个缓冲区,这种机制降低了磁盘读写次数,提高了读写的效率。2、但这种机制带来的后果就是磁盘中的数据与实写入的数据不匹配,系统提供了一个函数可以让缓冲区中的数据立即写入到磁盘。void sync(void);功能:把缓冲区中的数据同步到磁盘注意:并不等到数据同步完成后才返回,而是把缓冲区的数据加入到写入队列。int fsync(int fd);功能:把指定文件的内容从缓冲区同步到磁盘注意:会等到完全定稿磁盘才返回int fdatasync(in

2020-09-04 19:16:03 77

原创 基于log4cplus库封装日志管理

基于log4cplus库封装日志管理log4cplus下载和编译下载地址编译运行封装log4cplus头文件cpp文件log4cplus配置总结这算是我正式上班后的第一篇CSDN文章,这也是一个上级安排的工作,也参考了很多的文章,会在本篇文章最后列出几篇文章。log4cplus下载和编译下载地址我下载的是最新的logcplus _2.0.7link作者的GitHub地址link编译运行下载过后自行解压就行,我用的是CMake的GUI做批量处理,解压好的文件下有一个cmakelist.txt

2021-08-28 23:18:27 423

原创 Linux环境编程(九)--------------线程概念,线程管理,线程属性

一、基本概念1、线程就是进程的进程路线,它是进程内部的控制序列,或者说它是进程的一部分(进程是一个资源单位,线程是的一部分负责真正的执行)。2、线程是轻量级的,没有自己独立的代码段、数据段、bss段、堆、环境变量、命令行参数、文件描述符、信号处理函数、当前目录等资源。3、线程有自己独立的栈内存、线程ID、错误码、信号掩码等。4、一个进程中可以包含多个线程(多个执行路线),但至少有一个,这个线程要主线程,//默认情况下主线程结束其它线程会跟着一起结束。5、ps -T -p 或者使用htop命令查看

2020-09-10 16:55:14 132

原创 Linux环境编程(八)--------------套接字使用(socket),多路复用,TCP和UDP协议的网络通信

一、套接字基本特点:socket是一种接口技术,被抽象成一个文件操作,可以让进程之间通信,也可以让不同计算机的进程通信(网络)。 1. int socket(int domain, int type, int protocol); 功能:创建套接字 domain: AF_UNIX/AF_LOCAL 本地通信,进程间通信 AF_INET 基于IPv4地址通信 AF_INET6 基于IPv6地址通信 type: SO

2020-09-10 16:50:38 208

原创 空指针和野指针(知识点巩固)

1、空指针:空指针保存一个空地址,空地址用NULL表示,其实地址为0,空指针不能随意访问;short *pa=NULL;//pa保存0地址,pa保存空指针//读查看printf("pa指向的0地址保存的数据是:%#x\n",*pa);//写修改 *pa=250;//向空地址0写入2502、野指针指那些释放内存,但是指针赋值为空,这时候的指针指向任意地址,好可怕,例如指向内核地址或不属于本程序的内存地址,程序会被kill,即奔溃。内存泄漏:分为堆泄露和资源泄露 两种,内存分配失败或者内存分

2020-09-08 21:24:13 301

原创 Linux环境编程(三)--------------系统调用、一切皆文件、随机读写、文件描述符

Linux环境编程(三)系统调用:系统调用就是操作系统提供的一些功能供程序员们调用,这些调用已经被封装成了C函数的形式,但是它们不是标准C的一部分。一般应用程序运行在用户态(使用的是0~3G的内存),系统调用工作在内存态(使用的是3~4G的内存)。常用的标准库函数大部分时间运行在用户态,底层偶尔也会调用系统调用进入内核态。系统调用的代码是内核的一部分,其外部接口以函数定义共享库中(linux-gate.so,ld-linux.so),这些接口的实现利用软中断进入内核态执行真正的系统调用。

2020-09-02 09:51:14 295 1

原创 Linux环境编程(二)--------------内存管理、进程映像、虚拟内存

Linux环境编程(二)一、内存管理用户层STL 自动分配/释放内存 调用C++C++ new/delete 调用CC malloc/free 调用POSIXPOSIX brk/sbrk 调用LinuxLinux mmap/munmap 调用内核系统层kernal kmalloc/vmalloc 调用驱动driver get_free_page二、进程映像程序是存储在磁盘上的可执行文件,当执行程序时,

2020-09-02 09:34:18 129 2

原创 Linux的环境编程(一)------------系统介绍、编译工具、库、环境变量表

LINUX环境编程前期入门是学习了有关的LINUX的资料,也是在逐步的融汇贯通。UNIX系统介绍:最早版于1970年问世于贝尔实验室,作者是丹尼斯.里奇和肯.汤普逊。是最早的多用户、多任务、支持多种CPU架构,高安全性、高稳定性、高可靠性。既能构架大型关键性业务系统的商用服务器,也能支持嵌入式设备。MiniX基于微内核加载的类UNIX系统,名为MINIX(即小型的UNIX),并开放全部源代码给大学教学和研究工作,Linux之父林纳克斯,正是在受了MiniX的启发,才开发了Linux系统。L

2020-09-02 09:25:14 121 2

原创 超级简单推箱子小游戏 (简单代码和思路)

推箱子游戏演示代码展示#include<stdio.h>#include<stdlib.h>#include<getch.h>int main(int argc,const char*argv[]){ int cut=0; int a[8][8]={ {0,0,3,3,3,3,0,0}, {0,0,3,5,5,3,0,0}, {0,0,3,0,5,3,0,0},

2020-08-22 19:31:08 3492 3

原创 超级简单的迷宫代码 初学者程序

迷宫走迷宫一种比较有趣,操作简单的小游戏。#include<stdio.h>#include<getch.h>#include<stdlib.h>#include<time.h>int main(int argc,const char*argv[]){ //构造迷宫地图 char maze[10][10]={ {'#','#','#','#','#','#','#','#','#','#'},

2020-08-22 19:19:06 4170

原创 超级简单五子棋小游戏(含代码)

五子棋简单功能实现游戏功能演示代码如下:#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <getch.h>// 棋盘char board[15][15];// 棋子坐标char kx = 7 , ky = 7;// 角色char role = '@';// 显示棋盘void show_board(void){ system("clear");

2020-08-22 18:53:04 3619

原创 常见的查找算法--------顺序查找、哈希查找、二分查找(递归算法和循环算法)简单代码及应用范围

常见的查找算法头文件、宏定义、主函数#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define LEN 10#define swap(a,b) {typeof(a) t=a; a=b; b=t;}//数值交换宏#define show_arr(arr,len) {for(int i=0; i<len; printf("%d ",arr[i++]));printf("\n");}//

2020-08-22 09:37:24 1020

原创 PAT 乙级(Basic Level) C语言(1001~~1095部分传送门)

PAT 乙级题目刷了一半,有些题是看别人的也不会 由于是还没又开始认真学编程是写的,大多都没注释。1001 害死人不偿命的(3n+1)猜想 1002 写出这个数1004 成绩排名 1005 继续(3n+1)猜想 1006 换个格式输出整数1007 素数对猜想1008 数组元素循环右移问题1009 说反话1010 一元多项式1011 A+B和C1012 数字分类1013 数素数1014福尔摩斯的约会1016 部分 A+B1017A除以B1018 锤子剪刀布1021 个位数统

2020-08-19 22:07:25 839 1

原创 学生成绩管理 +教师人员管理 +管理员系统----------(结构体和文件读写相关的函数承接)【更新2】

学生管理系统项目总结分析(附代码)这是第一次和团队完成一个小项目,代码又臭又长,而且功能未完全实现,操作方式不统一,限制条件不充分,在过多输入时会发生段错误,仅供参考。后期我们团队会优化代码减少代码量。让代码更加简洁,方便阅读。本次只是上传代码,希望大家多多批评提出建议 感谢!!!界面函数//学生 教师 管理员 界面程序#include<stdio.h>#include<getch.h>#include<stdbool.h>#include<stdl

2020-08-03 10:39:06 1006 1

原创 十大经典排序算法(冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序)代码以及简单问题

日常可用的排序桶排序5 3 5 2 8遍历数组,把数组每次遇到的数,在另一个数组的对应下标内容 加1。这个算法就好比预先有几个桶【暂定为10个】,编号从0~9。每出现一个数,就在对应编号的桶中放一个小旗子,最后只要数数每个桶中有几个小旗子就OK 了。例如2 号桶中有1 个小旗子,表示2 出现了一次;3 号桶中有1 个小旗子,表示3 出现了一次;5 号桶中有2 个小旗子,表示5出现了两次;8 号桶中有1 个小旗子,表示8 出现了一次。再次外遍历第二个数组,内遍历该存储的次数;在这里插入图片描述#

2020-07-30 10:08:00 434 2

原创 神奇的指针

神奇指针在哪里指针是一种数据类型,使用它可以用来定义指针变量,指针变量中存储的其实是整数,这种整数代表了内存的编号。== 为什么要使用指针:==1、函数之间相独立,但有些时候需要共享变量。传参是值传递全局变量容易命名冲突使用数组还需要传递长度命名空间是独立的,但地址空间是同一个,所有指针可以解决这个问题。2、由于函数之间传参是值传递(内存拷贝),对于字节数比较多的变量,值传递效率较低,如果传递变量的地址只需要传递4|8字节。3、堆内存无法取名字,它不能像data、bss、stack让变量名

2020-07-22 16:28:40 411 1

原创 函数及其相关内容

函数自定义函数:​ 函数声明:告诉编译器函数的格式,方便它检查调用时的参数。​ 返回值类型 函数名(类型1 变量名1,类型2 变量名2,…);​ 隐式声明:如果在调用函数没有声明和定义,编译会猜测函数的格式​ 根据实参猜测函数的参数类型,返回值默认为int。​ 函数定义:如果函数的定义在调用之前,可以省略函数声明。 返回值类型 函数名(类型1 变量名1,类型2 变量名2,...) ​

2020-07-18 15:20:35 148

原创 进制 原反补码 位运算符

进制 / 原反补码 / 位运算符## 十进制转二进制​ 求余法:用2对数据求余,然后再对商继续求余,直到商为0结束,过程中产生的余数就是该数据的二进制(逆序)。​ 求权法:数据 - 2^(n-1) 如果可以减 第n位就是1,否则是0。输入一个正整数m,显示该数据的n(>=2)进制,超过10的用字母显示。#include <stdio.h>int main(int argc,const char* argv[]){ int m = 0 , n =

2020-07-16 20:13:47 201

原创 C语言简介:小白入门来了

C语言简介:BCPL->newB->C->UNIX->Linux->gcc​ C语 言专门编写操作系统的语言,所以天生适合对硬件编程,也以运行速度快著称,也非常适合实现数据结构和算法。​ 由于出现时间过早,有很多缺陷,也没想普通人会使用C语言编程,因此存在着些陷井,但前辈总结了一些避免的经验《C语言陷井和缺陷》。​ 自由源于自律。C89语法标准,也是gcc默认的语法标准。C99语法标准,对C语言的扩展和增强 std=gnu99。C11语法标准,全

2020-07-15 18:15:53 240 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除