- 博客(68)
- 收藏
- 关注
原创 选择排序(直接选择排序、堆排序)
直接选择排序直接选择排序是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。我们这里直接给出选择排序的优化,一次选出两个数据。
2017-07-10 16:28:05
304
原创 CRC校验算法
CRC:即循环冗余校验码是在链路层被广泛使用的检错技术。 是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。
2017-07-08 23:23:40
324
原创 Linux线程死锁
什么是死锁死锁是两个或者两个以上的进程由于竞争资源而造成的,相互竞争系统资源或进行进程间的“永久”阻塞,如无外力作用,这些进程将永远不能向前推进。死锁进程 陷入死锁状态的进程称为死锁进程,所占用的资源或者需要他们进行某种合作的进程就会相继陷入死锁,最终可能导致整个系统瘫痪。产生死锁的四个必要条件 1.互斥: 一个资源一次只能被一个进程所使用,其他进程不能访问已分配给其他进程
2017-06-09 15:19:04
423
原创 C++类型萃取
在Seqlist中,我们对于内置类型,通过memcopy和memmove这两个方式进行拷贝,自定义类型或string类型我们要通过for循环赋值的方式拷贝。那么系统如何区分是哪种类型呢?虽然通过typeid可以获取变量类型,但是这样获取到的类型,无法用来做变量的声明。因此,我们这里引入类型萃取。#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>u
2017-05-15 11:30:05
301
原创 shared_ptr之定制删除器
shared_ptr是用来管理多种资源的,而我们现在往往会误认为用来管理动态开辟的内存空间,像是打开文件(fopen)、malloc等多种情况,也需要shared_ptr来管理,因此,我们便需要定制删除器。template<class T>class Free{ void operate()(T* _ptr) { free(_ptr);
2017-05-14 14:35:16
889
原创 shared_ptr
先贴代码:template<typename T>class SharedPtr{public: SharedPtr(T* ptr = 0) :_ptr(ptr) { _count = new int(1); } SharedPtr(const SharedPtr<T>& sp) : _ptr(sp._ptr)
2017-05-14 14:13:31
238
原创 scoped_ptr
通过上一篇博客,我们发现管理权转移这种方式存在问题较大,接下来我们看一下scoped_ptr。直接贴代码:template<typename T>class ScopedPtr{public: ScopedPtr(T* ptr = 0) :_ptr(ptr) {} T& operator*() { return *_
2017-05-13 11:37:13
374
原创 初识智能指针+模拟auto_ptr
举个例子,当我们动态申请一块内存空间,使用完毕之后也正常释放该内存空间,但是若是在申请与释放中间,我们进行了异常处理,程序直接结束,则将造成内存泄漏。因此,我们引入智能指针。将自己申请的内存空间交给智能指针去处理。RAII(不能等同于智能指针)资源分配及初始化( Resource Acquisition Is Initialization)定义一个类来封装资源的分配和释放一种规范,一种解决问题的思想
2017-05-13 10:49:10
322
原创 函数模板、类模板
当我们需要通过函数实现同一类而非同一种功能时,往往会通过一下几种方式来实现,但是他们又或多或少存在着各种各样的缺陷: 1.对函数进行重载,针对每个所需相同行为的不同类型重新实现它。 缺陷:一旦有新类型出现,就要重新添加对应函数。 代码的复用率很低 如果只是返回值类型不同,函数重载无法解决 不
2017-05-11 11:42:21
389
原创 C++中的多态问题
多态:即多种形态。 我们把具有继承关系的多个类型称为多态类型。 引用或指针的静态类型与动态类型不同这一事实正是c++语言支持多态性的根本所在。对象类型分为静态类型和动态类型。静态类型:对象编译阶段确定类型(又叫早绑定、静态绑定)动态类型:在程序执行阶段确定对象的类型(又叫晚绑定、动态绑定)静态多态:编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推 断出要调用
2017-04-13 21:11:16
378
原创 有关malloc的三个问题
有关于malloc的三个问题,困扰了很久,多处搜查资料,无奈对malloc的底层实现仍然不够透彻,将现阶段所获知的相关内容整理出来,后期再进一步完善。 1.如何知道申请的空间就是所需的空间大小 2.free的时候只给了指针那么如何知道该free多大的空间 3.申请空间的时候怎么知道哪些用了哪些没用。malloc函数是glibc提供的库函数。glibc的内存管理使用的方法是ptmal
2017-04-10 17:21:07
759
原创 C++中的继承
在初次接触到C++语言时,便了解到C++的三个重要特性:封装、继承、多态。 今天便来谈一谈继承。继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称子类或派生类,已经存在的类成为基类或父类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。 通过继承,一个新建的子类从父类那里获得父类的特性。从另一角
2017-04-05 16:53:48
257
原创 Linux粘滞位
我们知道,Linux中关于文件的权限有三种: r– 读权限(可以读这个文件) -w- 写权限(可以对这个文件进行写操作) –x 执行权限(可执行该文件)在关于Linux中的权限一文中,经讨论发现,如果用户需要进入一个目录,那么需要这个目录具备可执行的权限。 而若是具备写权限,则可以删除该目录中的任何文件。 如上图所示,在root用户下, 在所有权限均为可读可写可执行的目录tes
2017-03-30 21:59:43
310
原创 Linux关机指令
今天发现身边很多人在Linux中关机时,都是直接点小叉叉。 所以整理了Linux中关机的相关指令。关机命令halt 立刻关机 poweroff 立刻关机shutdown -h now 立刻关机(root用户使用) shutdown -h 10 10分钟后自动关机(如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启)重启命令reboot shut
2017-03-27 22:06:37
218
原创 Linux中的find指令
find 指令在Linux中是很常用到的一个查找命令。用于在文件树中查找文件,并做相应的处理。 它的功能非常地强大,可以结合正则匹配来搜索系统中的指定的内容。 find命令用于在目录下查找文件。在不指定查找目录的情况下,find会在对整个系统进行遍历。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。 在运行一个⾮常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历
2017-03-26 22:22:09
538
原创 Linux下的三个时间
在Linux系统下,我们可以通过stat指令来查看文件的时间。 stat 文件名 即可查看该文件的时间。 由上图可见,系统共显示了三个时间。 分别为: Access:文件最后的访问时间 Modify:文件最后的修改时间 Change:对文件inode信息最后的修改时间linux中的三个时间①Modify time(mtime) 当该文件的内容数据更改时,就会更改这个时
2017-03-24 12:50:20
732
原创 Linux相关权限
在Linux系统下,一切皆文件,既然是文件,那不同的文件便具有其相对应的权限,否则,任意一个用户都可以对所有文件进行修改,若修改了配置文件,后果不堪设想。
2017-03-20 15:55:57
467
原创 类的六个默认成员函数
类中,默认生成六个成员函数:构造函数拷贝构造函数析构函数赋值运算符重载取地址(&)运算符重载const修饰的取地址运算符重载
2017-03-19 21:21:22
385
原创 Linux环境变量
Linux 的变量可分为两类:环境变量和本地变量环境变量,或者称为全局变量,存在于所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。
2017-03-13 18:28:19
376
原创 C++命名空间相关解析
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突。 在多文件编译时,多个全局变量取名重复了,产生了命名冲突,这样的程序在C中,是无法通过编译的。如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。
2017-03-09 11:47:13
293
原创 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
指针数组和数组指针指针数组:强调数组,然后数组中的元素都是指针,数组的大小是通过数组本身来决定。 数组指针:强调指针,就是说它还是一个指针变量,只不过他指向数组,至于他所指向的数组多大,这个就不知道了。int *p1[10];int (*p2)[10];指针数组和数组指针主要的区别主要是看优先级结合。”()”的优先级是最高的,下来是”[ ]”,再下来是”“;*int* p1[10]:根据优先
2017-02-14 13:17:29
404
原创 关于C函数的调用过程——栈桢
栈桢通俗来讲,栈桢就是函数的调用过程。栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。
2017-01-12 15:48:04
895
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅