- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 【C++】虚基表和虚表
1.虚基表 (1)菱形继承 在菱形继承中,类D有两个_a,一个是B类从A类继承而来的,一个是C类从A类继承而来的,在D类赋值时必须指定是对哪个 _a赋值,否则会出现数据不确定问题。 所以菱形继承会造成数据的二义性。//菱形继承class A{public: int _a;};class B:public A{public: int _b;}...
2018-07-25 17:04:29
2351
原创 【Linux】vim多行注释和取消注释
多行注释:进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来按大写字母I,再插入注释符,例如//按esc键就会全部注释了取消多行注释:进入命令行模式,按ctrl + v进入 visual block模式,按字母l横向选中列的个数,例如 // 需要选中2列按字母j,或者k选中注释符号按d键就可全部取消...
2018-06-11 16:24:16
2850
原创 【Linux】为什么子进程能继承父进程的环境变量?
为什么子进程能继承父进程的环境变量? 首先考虑进程的虚拟地址空间 命令行参数和环境变量在栈之上 2.子进程以父进程为模板,拷贝PCB、虚拟地址空间 3.所以会被继承下去 ...
2018-06-05 13:29:12
3289
原创 【Shell】Shell基础-语法
条件测试测试命令:0为正确,非0为错误test[数字之间的比较-eq #equal-ne #not equal-lt #小于 not less-gt #大于 great than-le #小于等于-ge #大于等于eg1:read myint #从标准输入中输入数字test $myint -eq 100 #检测...
2018-06-05 13:16:02
211
原创 【Shell】shell基础-符号
shell特点: 解释非编译型 弱类型 执行模式:交互/批处理模式第一个shell脚本 vim first.sh!/bin/bashecho "hello world!"注意:!叫做“”shebang“是一个约定的标记,告诉系统这个脚本使用哪一种shell。echo命令用于向窗口输出文本 执行方式两种: chmod +x test.sh / ...
2018-06-04 16:41:02
232
原创 【Linux】信号概念、信号产生、信号处理、信号三张表、可重入函数
信号就是软中断。信号提供了异步处理事件的一种方式。例如,用户在终端按下结束进程键,使一个进程提前终止。1、信号概念每一个信号都有一个名字,它们的名字都以SIG打头。例如,每当进程调用了abort函数时,都会产生一个SIGABRT信号。每一个信号对应一个正整数,定义在头文件2、信号产生的场景当用户在终端按下特定的键时,会产生信号。例如,当用户按下DELETE按键(或Cont...
2018-04-30 22:25:21
259
原创 【Linux】进程控制:创建、等待、终止和替换
什么是进程呢?在前面的博客中已经类比进程和线程做了详细介绍,这里简单提一下,不再赘述。一、进程1、进程基本概念狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统...
2018-04-30 21:28:24
213
原创 【Linux】什么是死锁以及如何避免死锁
介绍死锁之前,先来说一下操作系统中的资源分类操作系统中资源的分类按照使用次数分类 (1)可重用性资源 每一个可重用资源中的单元只能分配给一个进程使用,不允许多个线程共享。 进程使用资源顺序: (1) 请求资源,如果请求失败进程阻塞或循环等待; (2) 使用资源; (3)释放资源。 系统中的可重用资源数目都是相对固定的程序运行时不能增加或删除。...
2018-04-23 16:59:21
2951
原创 【Linux】 open/read/write/close等文件系统调用接口以及fd与FILE的比较
在Linux系统下,一切皆文件。因此文件是一个很重要的概念,接下来就介绍一下其相关的文件接口函数。一、open/read/write/close等文件系统调用接口说明1.open函数 注释: (1)函数说明:用来打开一个已经存在的文件或者创建一个普通文件 (2)参数解释: pathname:要打开或创建的目标文件 flags:打开文件时,可以传入多...
2018-04-18 17:26:42
3692
原创 有关链表的一些面试题
下面来写一写链表的笔试题整个工程基于这篇博客下的代码下面上代码,题目和解题思路都在注释里交待……//1.从尾到头打印链表void LinkListPrintReverse(LinkNode* head)//思路:递归{ if (head == NULL) { return; } LinkListPrintReverse(head-...
2018-04-13 17:28:12
232
转载 Linux的进程优先级 NI 和 PR
为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。 进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的。 就是说在同一个调度周期中,优先级高的进程占用的时间长些,而优先...
2018-04-12 11:02:51
275
转载 Linux中进程控制块PCB-------task_struct结构体结构
Linux中task_struct用来控制管理进程,结构如下:struct task_struct { //说明了该进程是否可以执行,还是可中断等信息 volatile long state; //Flage 是进程号,在调用fork()时给出 unsigned long flags; //进程上是否有待处理的信号 int sigpending; //进程...
2018-04-12 09:25:18
199
原创 Linux下进程和线程的概念
什么是进程承担分配系统资源的一个基本实体。(至少一个执行流) 它包括独立的地址空间、资源以及1个或多个线程。什么是线程线程可以看做是轻量级的进程,是CPU调度和分派的基本单位。 Linux下的进程称为轻量级的进程; 线程出错,相当于进程出错; 一个进程挂掉,不会影响别的进程,进程具有独立性; 线程更高效,进程更安全;线程的私有数据 一组...
2018-04-11 22:19:38
241
原创 【Linux】task_struct结构体成员中字段介绍
引言 任何计算机系统都包含一个基本的程序集合,成为操作系统(OS)。操作系统包括: (1)内核:进程管理、内存管理、文件管理、驱动管理…… (2)其他程序:函数库、shell程序……那么计算机是如何管理进程的呢?总结起来就是先把进程描述起来,用struct结构体,再把进程组织起来,用链表或者更高效的数据结构。什么是进程呢?概念 ...
2018-04-08 22:37:15
457
原创 有关git的一些操作
一、适用说明 本文是通过学习廖雪峰老师的git教程所做的一些总结,罗列一些简单的命令,便于后期的使用。 如果还未了解git的,可以先学习一下详细的教程,本文只适合快速查找命令。 以下给出git教程网址:廖雪峰git教程二、安装git (1) 版本为Debian、ubuntu Linux sudo apt-get install git (2) 版本低的Debian...
2018-04-07 20:29:38
143
原创 【数据结构】单链表的增、删、查、改等
今天来写一下单链表的增删查改。先来说一下链表的分类:链表由特点的不同分为: (1)单向链表; (2)双向链表 (1)不带环; (2)带环 (1)不带头结点;(2)带头结点 三种特点结合,总共有八种链表,其中 [ 单向、不带环、不带头结点 ]链表和 [ 双向、带环、带头结点 ]链表 比较常见。今天要写的单链表为:单向、不带环、不带头结点的链表。下面上代...
2018-03-26 10:24:04
633
原创 【Linux】文件描述符
1、open函数的返回值在认识open函数的返回值之前,先来认识两个概念:系统调用和库函数。(1)系统调用open、close、read、write等都属于系统提供的接口,称之为系统调用接口。(2)库函数fopen、fclose、fread、fwrite都是C标准库当中的函数,称为库函数(libc)。故,f#系列的函数,都是对系统调用的封装,方便二次开发。下面来看一下open()函数:int op...
2018-03-21 22:35:04
309
原创 【C语言】实现顺序表的增、删、查、改
在实现顺序表之前先来了解几个概念。1、线性表n(n>=0)个数据元素组成的一个有限序列,可以在其任何位置上进行插入和删除操作的线性数据结构。从数据在物理内存存储形式上线性表可分为:顺序表和链表。由上图可看出:线性表中数据与数据之间存在一对一的关系,即除第一个元素和最后一个元素外,每个元素都有唯一的直接前驱和唯一的直接后继,第一个元素没有前驱,最后一个元素没有后继。2、顺序表用一段地址连续的存...
2018-03-17 22:45:26
2050
原创 C语言--结构体的内存对齐规则
为什么存在内存对齐?大部分的资料都是这样说的:1. 平台原因(移植问题):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2. 性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因是,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。总结:结构体的内存对齐是拿空间来换时间的做法;结构体的...
2018-03-08 10:57:36
332
原创 Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp
/ bin (binaries)存放二进制可执行文件/sbin (super user binaries)存放二进制可执行文件,只有root才能访问/etc (etcetera)存放系统配置文件/usr (unix shared resources)用于存放共享的系统资源/home 存放用户文件的根目录/root 超...
2018-03-06 09:22:04
171
原创 Linux进入目录需要哪些权限
1、chmod命令chmod命令用来变更文件或目录的权限;文件或目录权限的控制分为读取(r)、写入(w)、执行(x)3种,用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。权限范围的表示法如下:u User,即文件或目录的拥有者;g Group,即文件或目录的所属群组;o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;a All,即全部的用...
2018-03-05 20:19:53
1426
原创 指针数组、数组指针、函数指针、函数指针数组……概念理解
指针数组 :是数组,是一个存放指针的数组; 跟谁先结合就是谁,例如:int *arr1[] //[]的优先级高,先于[]结合,为数组;数组指针 :是指针;例如:int (*p)[10]; 例子: int arr[10]={0}; int *p1=&arr; //ok? 警告! &arr是数组指针,p1是整型指针,类型不匹配 int (*p2)[10]=&a...
2018-02-25 23:00:12
205
原创 C语言——判断存储类型是大端还是小端
判断当前机器的字节序。思路:存1,取出第一个字节的内容: 若为小端,则为 01 00 00 00 … ;低地址为1 若为大端,则为00 00 00 0
2018-01-05 10:32:26
454
原创 C语言——使用函数指针数组实现简单的计算器
函数指针数组的用途:转移表;下面是利用函数指针数组来实现一个简单的计算器:#define _CRT_SECURE_NO_WARNINGS 1#include#includeint my_add(int x, int y){ return x + y;}int my_sub(int x, int y){ return x - y;}int my_mul(int x, i
2017-12-19 22:26:30
2187
原创 函数的调用过程,栈帧的创建与销毁
以下面一段代码为例,说一说函数的调用过程,栈帧的创建与销毁。这段代码要在VC6.0下调试,因为VC6.0对这部分的处理简单些,利于学习使用。#includeint Add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 258; int b = 20; int ret = Add(
2017-12-07 11:42:18
340
原创 不使用(a+b)/2这种方式,求两个数的平均值。
不使用(a+b)/2这种方式,求两个数的平均值。 举个例子,a有15块钱,b有5块钱,使a和b的钱数相等。算法1:把a和b的钱放一起,你一张我一张的分,就是(a+b)/2 #includeint main(){ int a = 15; int b = 5; printf("%d\n", (a + b) >> 1); system("pause");}//这种算法
2017-12-05 22:33:40
1395
原创 编写函数: 这个函数的返回值value的二进制位模式从左到右翻转后的值。
1.编写函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程
2017-12-05 13:04:36
302
原创 labview通过hostlink读写Omron CJ系列PLC,同时与多把扫码枪进行通信(心得)
这段时间做了个小项目,有关数据采集的,用的平台是labview,功能是上位机要通过串口与四把扫码枪通信,收到条码后给PLC启动指令,PLC测试完成后给上位机指令,上位机开始存数据和显示。在做的过程中遇到了一些问题,前面博客有写点击打开链接做这个项目经历了人生第一次出差,到厂方后,发现前期沟通的功能需求跟实际的需求至少有百分之80不一致,也就意味着前期做的软件需要全部推翻重来……大概熬了一整
2017-12-05 10:55:29
7207
6
原创 C语言——三子棋
game.h#ifndef _GAME_H_#define _GAME_H_#include<stdio.h>#include<stdlib.h>#include<string.h>#define ROWS 3#define COLS 3void InitBoard(char board[ROWS][COLS], int row, int col);void DisplayBoard(ch
2017-12-05 09:32:18
241
原创 C语言--有关数组的计算
关于数组,一些必会的数组运算//一维数组int a[] = {1,2,3,4}; printf("%d\n",sizeof(a)); // 4*4=16printf("%d\n",sizeof(a+0)); // 4printf("%d\n",sizeof(*a)); // 4printf("%d\n",sizeof(a+1));
2017-12-02 20:02:18
922
原创 C语言—返回一个数二进制中1的个数
1.写一个函数返回参数二进制中 1 的个数 代码1:int main(){ int num = 0; int count = 0; scanf("%d", &num); while (num) { //此处不能写为if(num%2! = 0) if (num % 2 =...
2017-11-17 22:25:30
422
原创 C语言操作符
1.算术操作符 + - * / %(1)%操作符必须为整形操作数;(2)/一边为浮点型,则结果为浮点型。2.移位操作符 (1)左移操作符: (2)右移操作符:>> 分为逻辑移位(左边补0),算术移位(左边补符号位);例:int num=-1; //操作数在内存中以补码的形式存在 num>>1;//逻辑移位:
2017-11-16 21:04:18
156
原创 hello,博客。
是的,入乡随俗。这是我的第一篇博客,hello,博客。#includeint main(){ printf("hello,博客。\n"); return 0;}奉上小黑子以表敬意。
2017-11-05 10:51:04
826
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人