- 博客(20)
- 收藏
- 关注
原创 插入排序算法之Java实现
插入排序插入排序(Insertion Sort)顾名思义就是讲未排序的元素插入到已排序的队列中以构成新的有序队列。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。原理每次都将当前元素插入到左侧已经排序的数组中,使得插入之后左侧数组依然有序,如图:代码实现Java实现:public static voi...
2019-11-08 13:04:15
191
原创 冒泡排序算法之Java实现
冒泡排序冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。原理每次比较相邻的两个元素,将最大或者最小的元素交换到最右端,如图:代码实现Java实现:1...
2019-10-26 12:30:15
176
原创 Java中自定义异常的声明与处理
Java中自定义异常的声明与处理一、编写自己的异常类需要注意1、所有的异常都必须是Throwable 的子类; 2、如果希望写一个检查性异常类,则需要继承Exception类; 3、如果希望写一个运行时异常类,那么需要继承RuntimeException类。二、自定义异常类实例银行账户的模拟,通过银行卡的号码完成识别,可以进行存钱和取钱的操作。InsufficientF...
2018-05-23 19:45:01
2587
原创 Linux中的进程通信(二)--信号量
一、什么是信号量信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新
2017-04-24 22:01:52
448
原创 Linux中的进程通信(一)--命名管道
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。 进程间通信的本质是两个不同的进程看到同一份公共资源。进程间通信的步骤: 1.父进程调用pi
2017-03-22 21:59:06
643
原创 Linux中的管道容量
管道管道(pipe) 管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有其自己的数据结构。根据管道的适用范围将其分为:无名管道和命名管道。 ● 无名管道 主要用于父进程与子进程之间,或者两个兄弟进程之间。在Linux系统中可
2017-03-08 15:52:01
1316
原创 C++中的深浅拷贝和写时拷贝
浅拷贝先来看一段代码:#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include <string.h>using namespace std;class String{public: //构造函数 String(const char *_pstr = "") :m_iSize(strlen(_p
2017-03-07 16:05:20
411
原创 C和C++中的动态内存管理
C中的动态内存管理1、C语言中使用malloc/calloc/realloc/free进行动态内存管理,malloc/calloc/realloc用来在堆上开辟空间,free将申请的空间释放掉。 1)malloc 原型:void * malloc(size_t size); 该函数将在堆上分配一个size byte大小的内存。它分配的单原完全按字节大小计算,因此如此分配N个单原的student
2017-03-06 22:47:52
551
原创 Linux下实现简单的shell解释器
什么是shellshell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接受用户输入的命令并把它送入内核去执行。 实际上shell就是一个命令解释器,它解释有用户输入的命令并且把它们送到内核。不仅如此,shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。shell变成语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编
2017-02-28 16:35:42
6539
5
原创 Linux中的file结构体解析
Linux–struct file结构体struct file(file结构体): struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。 它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和
2017-02-20 11:07:07
4181
原创 Linux中的t权限位详解
t权限位在Linux中,如果对一个目录具有写权限,那么我们就可以在这个目录下创建删除文件。现在我们要创建这样一个目录,我们可以在这个目录里创建文件,但是其他用户不能删除这个文件。在这里就要用到一个特殊的权限:粘着位 在linux中有三种特殊权限,分别为: SetUID = 4:在所有者设置的权限 SetGID = 2:在所属组设置的权限 粘着位
2017-02-20 10:36:32
13937
2
原创 Linux中的atexit函数
什么是atexit函数? 起初学习C语言的时候,我们都知道整个程序的入口是main函数,但是其实事实并不是如此,在内核中可以使用链接器来设置程序的开始地方。当内核使用一个exec函数执行C程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序将此例程指定为程序的其实地址。启动历程从内核获取命令行参数和环境变量,然后为main函数做好准备。Atexit简介函数名: atexit头
2017-02-20 10:06:17
396
原创 进程调度算法解析
进程调度算法何为进程调度算法? 进程调度算法是指根据系统的资源分配策略所规定的资源分配算法。 调度也称dispatcher 这是内核的主要职责之一就是决定该轮到哪个任务运行了多数实时内核是基于优先级调度算法的每个任务根据其重要程度的不同被赋予一定的优先级基于优先级的调度法指CPU总是让处在就绪态的优先级最高的任务先运行然而究竟何时让高优先级任务掌握CPU的使用权有两种不同的情况这要看
2017-02-18 22:16:15
441
原创 Linux下进度条实现以及缓冲区和回车换行
进度条实现1.首先,为了实现进度条,我编写了一段小的C代码:#include<stdio.h>#include<unistd.h>int main(){ int i = 0; char b[102]; const char *lb = "-\\|/"; b[0] = '\0'; while(i <=100 ){ printf("[%-10
2017-02-16 21:22:58
585
原创 Linux中Access Modify Change以及find指令的含义
stat命令首先,在当前工作目录下新建一个.c文件。这里我创建的为test.c。 然后stat test.c文件如下: 其中出现了三个时间,其含义分别如下: 1.Access:对于文件来说,当我们用编辑器打开file,或使用cat more less grep sed 等等命令读取文件内容,以及使用file cp命令操作文件,或执行可执行文件时,Acces
2017-02-15 20:04:56
1004
原创 浅析C++中的多态
多态的引出 多态(polymorphism)一词最初来源与希腊,意思是具有多种形态或形式的情形,多态性是面向对象程序设计的一个重要特征。利用多态性可以设计和实现一个易于扩展的系统。静态多态 静态多态又称静态链接或者早绑定。 编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误。#de
2016-11-11 22:51:47
381
原创 C++中的构造函数,拷贝构造函数,析构函数和赋值运算符重载
1.构造函数 类的数据成员不能在声明类时初始化,为了解决这个问题,C++提供了构造函数(constructor)来处理对象的初始化。**构造函数特点:** 1->函数名和类名相同。 2->无返回值,没有类型。(实际返回当前对象的引用) 3->构造函数不需要用户调用,也不能被用户调用,只会在新的对象被创建时,由编译器自动调用,且在对
2016-11-09 16:39:55
611
原创 什么是C++中的this指针
this指针的引出每个对象中的数据成员都分别占有存储空间,如果对同一哥类定义了n个对象,则有n组同样大小的空间以存放n个对象中的数据成员。每个成员函数都有个特殊的指针——this指针。它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。this指针的特性1.this指针是隐式使用的,它是作为参数被传递给成员函数的。2.this指针的类型 类类型* const。3.this
2016-11-08 22:14:31
337
原创 面向对象之C++中的继承
1.何为继承 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。 在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类(base class)”或“父类(father c
2016-11-07 11:20:10
451
原创 C语言求一个3*4整数矩阵中的最大元素。
算法思想:先使变量max的初值等于矩阵中第一个元素的值,然后遍历矩阵,每次遍历都找出”最大值“放在max中,遍历完成后,max的值就是所有元素中的最大值。#define _CRT_SECURE_NO_WARNINGS 1#include#includeint max_value(int arr[][4]){int i, j, max;max = arr[0][0];
2016-08-06 19:00:15
3347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人