- 博客(35)
- 收藏
- 关注
原创 深入理解Linux启动过程 && 0号进程,1号进程
深入理解Linux启动过程Linux系统的启动过程由很多阶段组成,这篇博客从初始化引导程序到第一个用户空间应用程序探索Linux启动进程。我们先从Linux启动的顶层视图开始分析,以便能有一个整体的认识。 当系统第一次启动或重启的时候,处理器将执行一个已知地方的代码。对应个人电脑,这个地方是存在主板上内存内的BIOS当一个启动设备被发现,第一阶段引导程序被加载到RAM并执行。...
2018-08-15 12:21:58
4798
原创 智能指针和循环引用
智能指针(四个)智能指针:实际上是一个栈上的对象,并不是一个指针类型。所有的智能指针都重载了operator ->来访问对象的引用,所以weak_ptr不能算智能指针 因为它没有重载->和*。RALL机制:通过利用对象的自动销毁,让资源具有了生命周期,有了自动回收的功能。智能指针由三大版本 1. 管理权转移(std::Autoptr) 2. 简单粗暴的防拷贝(b...
2018-08-14 16:03:35
764
原创 Python入门-控制流
Python中的控制流大体上和大部分面向对象的控制流相似,分为以下几个:if语句while语句for语句continue,break语句接下来分别讲解一下这些控制流的使用方法if语句Python中的if语句和if-else语句与C/C++中的很相似,其作用就是对代码程序的一个判断执行 在Python里,if和else语句后都必须加上‘:’ Python中...
2018-06-01 11:13:14
361
原创 Python入门-注释和数据类型
python能做什么 Python具有简单、易学、免费、开源、可移植、可扩展、可嵌入、面向对象等优点,它的面向对象甚至比java和C#.net更彻底。 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无限的。 下面这些公司都在使用Python完成各种各样的任务,国内:豆瓣、搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、热酷、土豆、新浪、果壳…; 国外:谷歌、NASA...
2018-05-24 00:49:14
905
原创 初识Shell脚本
什么叫做Shell?Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是 一种程序设计语言。Shell 是指一种应用程序,一种和内核沟通的外壳应用程序的统称。这个应用程序有时提供了一个界 面,用户通过这个界面访问操作系统内核的服务。Shell和Bash的联系shell如果叫做媒婆,bash就是王婆,媒婆当中的佼佼者。...
2018-05-24 00:48:58
272
原创 C++项目 - 文件压缩
文件压缩开发环境:Windows Visual Studio 2013项目概述:利用Huffman编码可对任意文件(包含图片、视频、音频)进行压缩和解压缩。使用技术:运用到的数据结构:Heap堆、Huffmantree哈夫曼树、Huffmancode哈夫曼编码项目思想:压缩文件时利用小堆建立哈夫曼树,依据建立的哈夫曼树产生哈夫曼编码。利用哈夫曼编码对文件进行压缩,产...
2018-04-24 17:17:09
1249
原创 C/C++ 常见的库函数-strxxx类型对的字符串操作
strxxx对字符串的操作1.strlen 求字符串的长度strlen是对一个字符串进行求长度,这个长度是不包括字符串尾部的\0,通过指针加加对整个字符串进行遍历求长度。size_t strlen(char const* string){ int length; for(length = 0;*string++! = '\0') { l...
2018-04-24 15:48:31
590
原创 Linux 使用命令安装gcc/g++, gdb, vim
linux中使用gcc来编译C程序,使用g++来编译C++程序,使用GDB来调试程序,这些使用工具都需要自己进行安装,那么应该怎样配置这些工具呢?首先,在命令行中输入vi查看一下vim的信息如下: 然后,输入ls -a查看是否存在.vimrc和.viminfo这样的配置文件,结果如下: 1.配置gcc、g++Centos中使用yum来配置gcc和g++,若要安装gcc,则在...
2017-11-07 20:12:54
2780
原创 Linux 常见指令
df命令df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。语法df(选项)(参数)选项-a或--all:包含全部的文件系统; --block-size=<区块大小>:以指定的区块大小来显示区块数目; -H或--si:与-h参数相同,但在计算时是以1000 Bytes为换...
2017-11-07 19:56:02
482
转载 C++ 智能指针
C++ 智能指针详解一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、...
2017-09-29 18:02:56
289
原创 C++ 为什么模板不支持分离编译?
首先我要介绍分离编译的概念?一个程序由若干个原文件共同实现,每个源文件单独编译生成目标文件,然后再将所有的目标文件链接起来生成单一的可执行程序的过程.ps.我所理解的分离编译就是不在同一个.h或.cpp文件中定义和实现.程序编程过程如图所示 生成的源文件即在对应的.h和.cpp文件组成编译单元(其中.h的代码被扩展到包含.h的.cpp文件里),然后编译器把.cpp问津编译为目标文件.obj文件(文
2017-09-29 17:57:33
337
原创 C++ 菱形继承
1.菱形继承是什么如上,菱形继承即多个类继承了同一个公共基类,而这些派生类又同时被一个类继承。这么做会引发什么问题呢,让我们来看一段代码#include<iostream>using namespace std;class Person{public: string name;};class Student : public Person{protected: int
2017-08-03 16:32:48
566
原创 C++ 多态&多态对象模型
1:什么多态? 虚函数&多态 虚函数–类的成员函数前面加virtual关键字,则这个成员函数称为虚函数。 虚函数重写–当在子类的定义了一个与父类完全相同的虚函数时,则称子类的这个 函数重写(也称覆盖)了父类的这个虚函数。总结:派生类重写基类的虚函数实现多态,要求函数名、参数列表、返回值完全相 同。(协变除外)基类中定义了虚函数,在派生类中该函数始终保持虚函数的特性。只有类的成员函数才
2017-08-01 20:49:49
411
原创 C++项目 - 大数四则运算
大数运算开发环境:Windows Visual Studio 2013项目概述:利用String类实现对大数的读写,以及实现大数之间的加、减、乘、除、取模和比较运算。使用技术:C++、String类。项目思想:使用C++类将超过C++中能够存储最大整型变量(long long int)所能存储的范围的数转换成字符串进行存储,将存储大数的字符串拆开进行分析,逐位进行运...
2017-07-29 15:39:06
1162
原创 C++ 实现双向链表
一.为什么要使用双向链表? 1.单链表的结点都只有一个指向下一结点的指针。 2.单链表的数据元素无法直接访问其前驱元素。 逆序访问单链表是极其耗费时间的。void Reverse(pList* pplist){ assert(pplist); if (*pplist==NULL) { return; } else {...
2017-07-27 23:13:03
509
原创 C++ 写时拷贝
浅拷贝1、概念:所谓的浅拷贝就是当在进行对象的复制时,只是进行对象的数据成员的拷贝,其中默认的拷贝构造函数也是浅拷贝。大多数情况下,使用浅拷贝是没有问题的,但是当出现动态成员,就会出现问题。 2、当浅拷贝时,出现了动态成员,当调用析构函数时,一块内存就有可能被析构多次。 写时拷贝1、概念:因为浅拷贝的缺陷,所以在这个时候我们就引入了引用计数的拷贝。【说明】:引用计数的拷贝是用来解决浅拷贝存在的问
2017-07-24 16:40:06
493
原创 C++ 模拟String类增删查改
String是C++中的重要类型,程序员在C++面试中经常会遇到关于String的细节问题,甚至要求当场实现这个类。只是由于时间关系,可能只要求实现构造函数、析构函数、拷贝构造函数等关键部分。String的实现涉及很多C++的基础知识、内存控制及异常处理等问题,仔细研究起来非常复杂,本文主要做一个简单介绍和讲解模拟实现String类的增删查改。#define _CRT_SECURE_NO_WARNI
2017-07-22 20:09:40
678
原创 C++ 动态内存管理
1.C的动态内存管理细节在说明C语言内存管理之前,要知道什么是内存,内存我个人认为可以理解为带有标签的盒子,所谓的带标签的盒子就像我们住的寝室一样有门牌号,盒子内只能存储固定类型的数据或变量,就如男生寝室只能住男生一样。那么c语言中有多少种盒子呢?有静态存储区、动态存储区、内部寄存器区域。我们通常定义的变量如果没有特意说明类型默认为自动变量类型存储在动态存储区C语言自带了三个内存管理函数,...
2017-07-21 17:05:14
571
原创 C++ 引用和指针
C语言中函数有两种传参的方式:传值和传址。 以传值方式,在函数调用过程中会生成一份临时变量用形参代替,最终把实参的值传递给新分 配的临时变量即形参。它的优点是避免了函数调用的副作用,确无法改变形参的值。如果要改变实 参的值,只能通过指针传递。void swap (int left, int right) { int temp = left; left = right;
2017-07-04 14:50:08
391
原创 C++ *深度解析*【函数重载】的实现原理
在c语言中,在同一作用域内、函数名必须是唯一的,也就是说不可以出现同名函数。在c语言中,如果想要实现整数、长整数、双精度数的加法运算函数时、三个函数是不允许同名同姓的。必须如下:int IntAdd(int a,int b);//整数相加long LongAdd(long a,long b);//长整数相加double DoubleAdd(double a,double b);//双精度数相加
2017-07-03 23:43:08
656
原创 C语言 算法课程设计 会场安排
会场安排**问题描述:假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场.设计一个有效的贪心算法进行安排.(这个问题实际上是著名的图着色问题.若将每一个活动作为图的一个顶点,不相容活动间用边相连.使相连顶点着不同颜色的最少着色数,相应于要找最少会场数.)**程序内容包含 1.可自定义活动个数 2.可以使用文件和窗口两种方法对活动时间进行录入 2.对时间进行...
2017-06-28 19:42:27
1232
原创 C语言 链表面试题
链表是c语言中颇为重要的简单数据结构,在面试中常常被面试官所考到,接下来我就为大家提供一些经常面试中常常被问到面试题的源码。函数声明:typedef int DataType;typedef struct Node { DataType data; struct Node* next;}Node,*pNode,*pList;void InitList...
2017-06-28 19:32:18
652
原创 C语言实现三子棋V2.0
升级内容:1.在以前的版本上增加了是选择玩家或者电脑先走 2.对电脑下棋进行了智能化,加入了对权重的判断使电脑变强,基本上玩家不可能赢电脑,最多是平局。下面为大家献上源码:如果你觉得有点儿意思的话请点赞!game.h#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<...
2017-06-28 19:23:31
475
原创 C语言简单的数据结构动态链表
c语言简单的数据结构动态链表 实现单链表代码如下:头文件: LinkList.h#ifndef __LINKLIST_H__#define __LINKLIST_H__#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef int DataTyp...
2017-06-23 15:15:02
752
原创 C语言 课程设计 实现简单的车辆管理系统
题目要求:源代码:头文件 Manage.h#ifndef__MANAGE_H__#define__MANAGE_H__#include<stdio.h>#include<Windows.h>#defineMAX 10typedefstructCar//每一辆车所包含的信息{intnum;inttime;doublemoney;intusenum;...
2017-06-23 14:52:34
13690
原创 linux task_struct的结构注释
调度数据成员 (1) volatile long states; 表示进程的当前状态: ? TASK_RUNNING:正在运行或在就绪队列run-queue中准备运行的进程,实际参与进程调度。 ? TASK_INTERRUPTIBLE:处于等待队列中的进程,待资源有效时唤醒,也可由其它进程通过信号(signal)或定时中断唤醒后进入就绪队列run-queue。 ? TASK_UNINTER
2017-04-12 21:54:21
424
原创 关于makefile的解释
Makefile是一种配置文件, Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个m
2017-04-12 21:52:01
400
原创 Linux下使用vim 编写简单的进度条
在linux环境下,使用vim编写一个简单的小程序–进度条 代码如下 &nb
2017-04-12 21:44:01
491
原创 Linux中进入一个目录需要的权限,以及创建文件
首先我们先创建一个目录hqc 将目录属性改为100(只可执行) 发现可以进入该目录 但是不能够在当前目录下创建文件 之后我们将目录的属性改为500(可读可执行) 发现依旧不可以在该目录下创建文件 我们接着将目录属性改为300(可写入可执行) 此时 我们可以在该目录下创建文件了 但是不能够将这个文件显示出来 最后我们将该目录文件属性修改为700(可读可写入可执行) 此时我们可
2017-03-20 21:52:15
1039
原创 Linux中对于Access,Modify,Change的解释
Access 意思是“访问”。 用编辑器打开一个文件的时候; 在终端上用cat、more 、less、grep、sed读取文件的内容; 一个被设为壁纸的图片文件在我们进入xwindow; 把一个文件作为输入文件进行cp; 用file命令来查看文件类型; 可执行文件被执行; 音频视频文件被播放; 此文件的Access的时间记录都会被更新(空文件例外),纯粹的access是不会影响后面两
2017-03-20 21:14:09
1894
原创 简单的数据结构——顺序表
定义: 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。 实现: SeqList.h #define _CRT_SECURE_NO_WARNINGS 1 #ifndef __SEQLIST_H_#define __SEQLI
2017-02-23 20:34:49
408
原创 编写宏时需要注意的几点
编写宏时需要注意的几点 1.注意宏是不可调试的 写宏的时候一定要细心 2 注意运算优先级的问题#define MAX(X, Y) X>Y?X:Yint main(){int i = 3;int j = 1;int m=MAX(i+j);printf("%d\n",m);}这就是一种错误的代码 因为没有考虑运算优先级当宏出现问题的时候首先判断是否为优先级的问题 其次对宏进行全选找出其中
2017-01-07 14:37:23
731
原创 编写一个程序 用宏实现两个数的比较大小
编写一个程序 用宏实现两个数的比较大小 计算机科学里的宏(Macro),是一种批量批处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。 代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#defi
2017-01-07 14:17:10
4079
原创 C语言编写三子棋V1.0
c语言编写三子棋text.c#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<time.h>#include<stdlib.h>#include"game.h"void game(){ int ret = 0; char board[ROWS][C...
2016-12-27 16:22:33
1000
原创 C语言编写扫雷
c语言编写扫雷游戏 保证第一次扫雷不会被炸死 并且实现标记的功能**代码如下: text.c#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<time.h>#include<stdlib.h>#include "game.h"void game(){ char ...
2016-12-27 16:08:33
798
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人