- 博客(52)
- 收藏
- 关注
转载 iOS中的延时执行
一.performSelector方法必须在主线程中执行,否则无效。不阻塞线程[self performSelector:@selector(Delay) withObject:nil afterDelay:3.0f];- (void)Delay { NSLog(@"执行"); }二.NSTimer定时器必须在主线程中执行,否则无效。不阻塞线程[NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@select
2020-08-12 13:50:15
606
原创 谜一样的this指针?
this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向调用该成员函数的那个对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,都隐式使用 this 指针。当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。this 指针被隐含地声明为: ClassName con...
2019-11-04 21:28:53
336
原创 桥接和NAT的定义与区别
三种模式的简介VMWare提供了三种工作模式它们是bridged(桥接模式)NAT(网络地址转换模式)host-only(主机模式)要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式。这里首先大概介绍它们什么情况下需要它们。bridged相当于创建一台独立的电脑。你可以让它跟主机通信,但是网络需要手工配置host-only是与主机隔离的,但是虚拟机之间是可以相互...
2019-10-24 13:42:37
1349
原创 实现有头指针的双向循环链表
无头单向非循环链表的实现常见的单链表面试题DLinkList.h#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int DLDataType;typedef struct ListNode { DLDataType data; struct L...
2019-08-25 15:24:14
474
原创 常见的单链表面试题
1.从尾到头打印单链表思路:采用递归的思路,当plist-&amp;gt;next指向的节点为NULL时,递归停止,开始反向依次输出链表上的节点void TailToHead(ListNode *plist){ if(plist == NULL) return; TailToHead(plist-&amp;gt;next); printf(&quot;%d-&amp;gt;&quot;,plist-&am
2019-08-25 15:12:39
739
原创 无头单向非循环链表的实现
简介链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域,由于不必按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。分...
2019-08-25 13:24:06
350
原创 CentOS7 修改硬件时间和系统时间
查看系统时间[root@localhost ~]# dateTue Jun 13 10:20:13 CST 2017查看硬件时间[root@localhost ~]# hwclock --showTue 13 Jun 2017 02:11:12 AM CST -0.848845 seconds可以看出系统时间比硬件时间快,系统时间是准确的假如系统时间和硬件时间都不准确更新系统...
2019-08-18 21:05:39
679
原创 vim配置三步走
vim的强大和必需性让我们相遇,下面直接三步教你配置好你的vim!!!配置vim版本要求:CentOS 7 及以上 64 位系统(其余的Linux系统也是同样的步骤)安装vimplus(建议在普通用户下安装):git clone https://github.com/chxuan/vimplus.git ~/.vimpluscd ~/.vimplus./install.sh安...
2019-08-18 19:51:16
192
原创 图解:为虚拟机CentOS 7设置静态IP
之前在连接虚拟机时,总是会出现IP地址不见的情况,在经过查找资料后,终于找到了这个详细的教程,特此分享!!1.设置虚拟机的网络连接方式:按照如下图设置,英文版的对照设置即可顺序依次为:虚拟机——》设置——》网络适配器——》勾选设备状态——》选择NAT模式——》确定2.配置虚拟机的NAT模式具体地址参数:(1)编辑–虚拟网络编辑器–更改设置(2)选择VMnet8–取消勾选使用本...
2019-08-13 18:00:39
436
原创 static关键字
前言在 C 语言中,static 关键字不仅可以用来修饰变量,还可以用来修饰函数。使用 static 关键字修饰的变量称为静态变量。静态变量的存储方式与全局变量一样,都是静态存储方式。需要特别说明的是,静态变量属于静态存储方式,属于静态存储方式的变量却不一定就是静态变量。例如,全局变量虽然属于静态存储方式,但并不是静态变量,它必须由 static 加以定义后才能成为静态全局变量。静态变量作...
2019-08-12 20:32:27
280
原创 const关键字
const 在实际编程中用得并不多,const 是 constant 的缩写,意为“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法很简单,就在通常定义变量时前面加 const 即可,如:const int a = 10;con...
2019-08-12 18:34:02
869
1
原创 git的配置
Git是什么?一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 。Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样我们可以选择在合适的时间将本地版本推送到统一的版本管理服务器;Git每次会提取整个代码仓库的完整镜像,相当于对整个代码仓库都进行了一次备份,这样计时版本服务器除了问题,我们可以直接采用本地仓库恢复!结合本地版本管理功能,远程版本管理...
2019-08-07 12:37:02
614
原创 动态顺序表的增删改查及相关操作
顺序表的概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组 上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储 // 顺序表的静态存储 #define N 100 typedef int DataType; typedef struct SeqLi...
2019-08-01 16:46:25
362
原创 超详细的结构体声明、定义及初始化
结构体概念结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。比如存储一个班级学生的信息,肯定包括姓名、学号、性别、年龄、成绩、家庭地址等项...
2019-07-31 12:41:06
22522
3
原创 程序猿必学之堆排序
2、堆排序要想了解堆排序的过程,首先得知道什么是堆?要想了解什么是堆,首先得知道什么是二叉树?而在堆排序中使用的完全二叉树只是二叉树的一种,所以先得了解什么是完全二叉树?完全二叉树(百度百科):若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。简单来说,就是一棵从上往下,从左往右的必须依次布...
2019-07-28 16:08:28
450
原创 深浅拷贝
先来说一下什么叫拷贝?所谓拷贝,是把一个事物变成两个的过程,我们了解到最多的拷贝方式应该就是CTRL+C/V吧,但是在C/C++中的拷贝有它独特的地方,独特在哪呢?独特在于C/C++中拷贝的事物不同:只拷贝指针而不管指针指向的内容,这种称为浅拷贝;拷贝了指针并且拷贝指针指向的内容叫做深拷贝。先来看一下浅拷贝:class Func {public: Func(const char* st...
2019-04-23 21:42:08
325
原创 不使用加号求两个整数的和
1、简单直接,负负得正即可int add(int a, int b){ return a-(-b);}2、逐步给其中的一个数+1,另一个数-1(判断需要+1的数的原则是该数&lt;0),加减操作保持平衡即可注:当要相加的两个数比较大时,这种方法的效率太低int add(int a,int b){ while(a&gt;0) { a--; b++; } whi...
2019-03-13 21:26:08
1344
原创 啥是API?
阅读编程资料时经常会看到API这个名词,网上各种高大上的解释估计放倒了一批同学,当你在看到下面这一段话时可能就有点头痛了。“API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。——百度百科”下面我们来看一下到底啥是API...
2019-03-12 11:36:47
951
原创 宏和函数
在程序中扩展#define定义符号和宏时,需要涉及以下几个步骤:调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换;替换文本随后被插入到程序中原来文本的位置,对于宏,参数名被它们的值替换;最后再次对结果文件进行扫描,看看他是否包含由#define定义的符号,如果是,就重复上述的处理过程。宏和函数的对比:宏做的是简单的字符串替换,而...
2019-02-26 00:37:17
680
原创 override 和 final 标识符
实际应用中经常会发现虚函数在C++中会引起很多问题,因为没有一个强制的机制来标识虚函数在派生类中被重写了。virtual关键字并不是强制性的,这给代码的阅读增加了一些困难,因为你不得不去看继承关系的最顶层以确认这个方法是不是虚方法。在派生类中使用virtual关键字会让代码更易读但会出现一些不明显的错误,示例:class B {public: virtual void f(short)...
2019-01-29 23:05:21
450
原创 多态(其一)
多态性作为C++的三大特性之一,它不仅增加了面向对象软件系统的灵活性,进一步减少了冗余信息,而且显著提高了软件的可重用性和可扩展性。1.概念所谓多态性就是不同对象在收到相同的消息时,所产生的不同的动作。在C++中,就是指用一个名字定义不同的函数,这些函数执行不同但又相似的操作,从而可以使用相同的方式来调用这些具有不同功能的同名函数。也就是说,可以用同样的接口来访问不同的函数,从而实现“一个接...
2019-01-29 22:56:12
253
原创 银行家算法
#define _CRT_SECURE_NO_WARNINGS#include &lt;iostream&gt;#include &lt;stdio.h&gt;#include &lt;string&gt;#include &lt;iomanip&gt;#include &lt;stdbool.h&gt;using namespace s
2019-01-06 17:11:48
2587
1
原创 C语言------学生成绩管理系统
利用C语言写一个简单的学生成绩管理系统,实现以下几个功能:学生信息录入学生信息修改学生信息删除学生信息查找(学号/班级)学生信息输出代码:#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;string.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;#define t 100void fun(struct
2019-01-01 23:13:44
1140
原创 内存泄漏
概念:内存泄漏是指程序猿自己从堆上申请空间,没有释放后果:程序运行后置之不理,并且随着时间的流失消耗越来越多的内存(比如服务器上的后台任务,尤其是嵌入式系统中的后台任务,这些任务可能被运行后很多年内都置之不理);新的内存被频繁地分配,比如当显示电脑游戏或动画视频画面时;程序能够请求未被释放的内存(比如共享内存),甚至是在程序终止的时候;泄漏在操作系统内部发生;泄漏在系统关键驱动中发...
2018-12-31 20:14:16
230
原创 链接转换成文字
在网页上经常可以看到一些链接是以文字的形式表现的,这样不仅可以是整篇文章看起来更加整洁,也可以有效地表示出链接的含义,经过学习得出以下方法,希望对你有用。<a href="http://www.xx.com" >我的博客链接</a>我的博客链接前面的网址是你要转换的链接,后面的是你想转换成的文字。如图示:...
2018-12-11 12:50:05
19456
9
原创 Markdown编辑器的字体、缩进问题的解决方法
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式,但它本身是不支持修改字体、字号与颜色等功能的!优快云-Markdown编辑器是其衍生版本,扩展了Markdown的功能(如表格、脚注、内嵌HTML等等)!字体的修改方法就是使用内嵌HTML来实现。&amp;lt;font face=&quot;黑体&quot;&amp;gt;黑体字&amp;lt;/
2018-11-30 23:31:35
1714
原创 设计模式------单例模式
一、单例模式的概念单例模式是设计模式的一种,那么设计模式又是什么呢?设计模式(Design pattern)代表了最佳的实践,是软件开发人员在软件开发过程中面临的一般问题的解决方案,这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化,是软件工程的基石脉络,如同大...
2018-11-30 19:41:11
301
原创 VS2017中scanf报错的解决方法
1、程序最前面使用宏:#define _CRT_SECURE_NO_WARNINGS(这种方法是最简便有效的,本人常用的);2、程序最前面使用:#pragma warning(disable:4996);3、把scanf改为scanf_s(这种方法编译器已经有所提示,但为了兼容C语言的语法,并不推荐这种方法,要一个一个去改比较麻烦);4、在新建项目时取消勾选“SDL检查”,如下图:5、若...
2018-11-29 17:02:45
3346
原创 快速排序
快速排序的思路:在一组数据中选择一个数作为基准值,记为pivot;将数组中小于基准值的放在基准值的左边,大于基准值的放在基准值的右边;对每个分割出来的区间递归处理。示意图:下面对以上三步各自做一定说明:1.选择基准值:1). 选择数组最左/右边的数;2).选择数组的最左边的数和最右边的数以及最中间的数,在三个数中任意选择一个;3).在数组中随机选择2.数组分成小的区...
2018-11-27 22:32:28
411
原创 C语言------三子棋
三子棋是一个很简单的游戏,用C语言实现,就是实现以下功能:1.初始化界面(棋盘);2.显示界面;3.玩家和电脑交替走棋;4.在每次走棋之后判断是否有人胜利;5.判断棋盘是否已下满棋子。注:此程序玩家下棋时的坐标,就是棋盘实际上显示的坐标,并不需要再进行计算,判断是从“0”还是“1”开始,即棋盘的横纵坐标的取值范围为[1,3]。下面来看具体的实现:首先是各个函数的实现Ches...
2018-11-23 20:20:36
279
原创 内存分区
有人说,一个学习过C语言的人,在看到代码时,看到的不是代码,而是一块又一块的内存,那么一个由C/C++编译的程序占用的内存分为哪几个部分呢?1.栈区(Stack):由编译器自动分配释放,存放的是为运行函数而分配的局部变量、函数的参数、返回的数据、返回的地址等等,它的操作方式类似于数据结构中的栈。2.堆区(Heap):一般由程序猿自己分配释放,若程序猿不释放,程序结束时可能由操作系统回收,分配方...
2018-11-20 00:06:50
302
原创 程序员初入
我叫梁亮,一名入门时间不长的程序员,目前主要专注于C语言的相关语法以及算法和数据结构的学习和练习。之前虽然对C语言有一定的学习和了解,但因为实际写代码的练习较少,导致目前写程序的速度和质量都不是很高,我编程的目标庸俗又不乏真实,希望毕业后能拿到一份不错的offer。编程的学习我觉得语法和实际写程序同等重要,只有在掌握了语法如何运用以后才能更好的编程,而变成也是建立在语法的基础上的,两者...
2018-11-19 17:36:51
453
原创 C++------初见
首先我们要了解为什么会有C++的出现?之所以要有C++,是因为C语言存在一定的缺陷,为了弥补这些缺陷,才出现了C++,除此之外,在C++中还引入了新的语法特性。下面简单介绍一下:1.C++关键字学习一门新的语言,都要从一个一个字开始,所以我们先来了解一下C++中的关键字。在C++98中,有63个关键字,如下表:这里并不对这些关键字一一介绍,在日常的学习中会慢慢接触到。2.命名空间在C...
2018-11-19 09:48:35
309
原创 引用
1.概念引用不是新定义一个变量,而是给已有的变量取了一个别名,编译器不会为引用的变量开辟新的内存空间,而是引用的变量共用同一块内存空间。定义方法: 类型&amp;amp;amp;amp;amp; 引用变量名(对象名) = 引用实体;void Test(){ int a = 10; int &amp;amp;amp;amp;amp;ra = a;//ra为a的引用 cout &amp;amp;amp;amp;lt;&amp;am
2018-11-13 18:55:29
319
原创 Xshell 6连接CentOS 7报错Could not connect to '192.168.122.1' (port 22): Connection failed.
我之前在网上找了各种方法,都没有连接成功,很多都是说防火墙或者桥接/net连接的问题,我研究了很久,都没有什么用,或许你可以试试这种方法。解决方法:很可能是你并没有生成IP地址,可以试一下&amp;quot;service network restart&amp;quot;,就会生成一个新的IP地址,如下图:然后再重新尝试连接,就可以连上了。在你输入了&amp;quot;service network restart&amp;quot;
2018-11-07 16:21:08
11228
6
原创 C语言------扫雷
实现一个简单的扫雷游戏,必须涵盖以下几个基本的功能:雷随机分布;第一次找到的坐标不是雷的位置(如果是,则重新输入坐标);当输入坐标不是雷时,展开该坐标周围,并标明雷的数目;可以对雷的位置进行标记。想要雷的位置随机分布,需要调用rand()函数,它的头文件是#include&amp;amp;lt;stdlib.h&amp;amp;gt;;当第一次输入的坐标是雷的位置时,则重新输入。当你输入一个坐标...
2018-10-29 18:55:50
387
原创 通讯录实现(其三)
在前两篇对通讯录以数组和动态数组的形式实现以后,还想要该项目进一步优化,可以将之前输入的联系人信息存下来,在下次需要打开时,直接读取之前的文件即可,不需要再次输入。本次优化的点在于,文件的加载和存档:文件加载:在初始化阶段完成。文件存档:在退出程序时完成。(退出异常时可能导致存档失败)因为大部分代码都是相同的,所以本篇博客并不将所有的代码附上,若有需要,可以点击下面的链接:在此只将优...
2018-10-24 19:39:01
314
原创 通讯录实现(其二)
在上一篇博客中,利用数组简单实现了通讯录的一些基本功能,有需要的可以点击下面的链接进行查看:https://blog.youkuaiyun.com/Hb_key/article/details/83213597之前是直接创建了固定大小的数组,难免存在空间浪费和存储上限的问题,接下来对其进行一定的优化,将其改造为动态数组版。由于两者实现的主要功能都是一样的,而且在实现上并没有大的区别,所以本篇不再分析具体的...
2018-10-24 18:59:20
370
原创 通讯录实现(其一)
在C语言的学习过程中,接触到通讯录的简单实现,从简单的开始,先用数组实现此任务。思路如下:首先需要一个结构体PeoInfo来存储联系人的信息,之后需要将它定义为数组,方便存储更多的联系人。定义整形变量size,记录联系人的数目。为方便操作,封装以上两个变量,操作时,可能需要改变size的值(如果不封装,每次传参需要传两个),封装到一个新的结构体Contact中,Contact的成员分为:...
2018-10-20 15:13:57
398
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人