自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pin_na

三天不读书,智商输给猪

  • 博客(36)
  • 收藏
  • 关注

原创 1024啦,节日快乐!

今天是第一个正式的1024啦,程序员们节日快乐啦,自己也成功正式入坑 iOS 啦,希望以后能成为大牛(*╹▽╹*)

2019-10-24 00:09:54 227 2

原创 设计模式之单例模式——饿汉与懒汉详解

在这里首先大家应当了解一下设计模式的概念:设计模式设计模式是一套反复使用、多人知晓、经过分类的代码设计经验的总结。如单例模式、工厂模式、观察者模式等等单例模式单例模式是指一个类只能创建一个对象,保证系统中该类只有一个实例,并提供一个可供访问的全局访问点,该实例被所有程序模块共享,其中单例模式又分为了饿汉模式和懒汉模式两种实现方式。应用需要频繁实例化然后销毁的对象。 创建...

2019-05-30 18:19:30 395

原创 Makefile的一些技巧

最近被一个朋友问到Makefile的一点细节问题,一时忘记了没有答出来,挺尴尬......遂对Makefile的一些技巧细节做以总结一个多个文件项目的Makefile文件:# 定义编译器、链接器CC = gcc LD = gcc# 通配符函数表示目录下所有.c文件,相当于:SRCS = main.c a.c b.cSRCS = $(wildcard *.c)# 通配符函数把...

2019-05-22 16:34:57 631

原创 进程间通信方式——共享内存

共享内存 最快的进程间通信方式 为什么? 创建一块共享内存,将这块共享内存映射的自己的虚拟地址空间,接下操作都是直接对这块虚拟地址进行操作,进程间数据传递不再涉及到内核(进程不再通过执行进入内核的系统调用来传递彼此的数据),所以相较于其他的进程间通信少了两步内核态用户态之间的数据拷贝。...

2019-05-21 18:10:30 710

原创 进程间通信方式——消息队列

消息队列(System V)作用从一个进程向另外一个进程发送一个带有类型的数据块本质是存储在内核中的一个消息的队列(链表)特点每个数据块都被认为有一个类型,接受者进程接收的数据块可以有不同的类型值 和管道一样,每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总字节数也是有上限的(MSGMNB),系统上的消息队列总数也是有上限的(MSGMNI) 是一个全双工通...

2019-05-20 21:37:09 3722 2

原创 Linux进程间通信详解

之前我总结了有关进程及进程控制的相关知识,不是很了解的朋友可以看一看:进程:https://blog.csdn.net/Sun_Life_/article/details/88580785进程控制:https://blog.csdn.net/Sun_Life_/article/details/90049461这篇文章主要为大家总结一下进程间通信的几种方式:首先请大家想一个问题,终端...

2019-05-18 02:00:42 1874

原创 Linux下软硬链接和动静态库:别再傻傻分不清楚

在这之前大家很有必要先了解一下Linux的文件结构,相信对大家理解一下内容有很大帮助。传送门:https://blog.csdn.net/Sun_Life_/article/details/90049499软硬链接我们先来看一下Linux下打开一个文件的基本过程:系统通过文件名找到文件的inode索引节点信息,再通过inode来找到数据块打开文件为了解决文件的共享使用问题,Li...

2019-05-16 21:39:39 555

原创 了解Linux文件I/O

文件描述符:在了解基础I/O基础函数之前,我们很有必要先了解一下文件描述符有关知识,其中的不懂之处可以留作疑问再来看这篇文章,参考博客:https://blog.csdn.net/Sun_Life_/article/details/90049499open和openat打开或创建一个文件并返回文件描述符Q:为什么有了open还有openat,两者有什么区别?A:openat...

2019-05-12 18:54:04 533

原创 Linux进程信号详解

1. ⽤用户输⼊入命令,在Shell下启动⼀一个前台进程。2. ⽤用户按下Ctrl-C,这个键盘输⼊入产⽣生⼀一个硬件中断。3. 如果CPU当前正在执⾏行这个进程的代码,则该进程的⽤用户空间代码暂停执⾏行,CPU从⽤用户态 切换到内核态处理硬件中断。4. 终端驱动程序将Ctrl-C解释成⼀一个SIGINT信号,记在该进程的PCB中(也可以说发送了⼀一 个SIGINT信号给该进程)。5....

2019-05-09 22:41:48 388

原创 Linux进程间通信方式——管道

管道什么是管道管道是UNIX系统中最古老的IPC(进程间通信)方式,所有UNIX系统都提供这种通信机制。管道就是从一个进程连接到另一个进程的一个数据流局限性为了可移植性,管道都采用历史沿用的半双工(数据只能单向流动)通信 管道只能在具有公共祖先的两个进程间使用匿名管道pipe创建一个匿名管道由参数返回两个文件描述符:fd[0] 为读端(从管道读)打开,fd[...

2019-05-09 22:40:01 918 1

原创 Linux深入了解文件描述符及文件结构

文件描述符有句经典的话是:Linux下一切皆文件。它最简单的总结了Linux的特点,Linux下文件被分为普通文件、目录文件、链接文件和设备文件。在Linux下显示器、键盘等都会被看成是一个文件、而所有的文件就是通过文件描述符来管理的。举个栗子:一个Linux操作系统就相当于一本很厚很厚的书,书的每一页都是由文件构成的(包括我们的显示器键盘等,就有专门的页码,在那一页上查看就相当于显示器或...

2019-05-09 22:37:39 1459

原创 Linux中的进程控制

进程标识进程创建fork()fork用法:父进程复制自己,使父子进程同时执行不同的代码段------在网络编程中最常见 一个进程要执行另一个不同的程序------shell的实现方式一个现有的进程调用fork创建一个新进程,新进程为子进程。是父进程的一个副本,子进程拷贝父进程的数据段、堆和栈并独立使用,父子进程共享正文段(代码段)、内存映射。但是由于fork之后通常要调...

2019-05-09 22:35:27 565

原创 进程地址空间

在前面我们已经介绍了进程相关的基本概念,错过的童鞋们可以戳这里:https://blog.csdn.net/Sun_Life_/article/details/88580785这篇文章为大家总结一下Linux中进程地址空间相关知识:进程地址空间在这之前大家得先明白一个概念:地址:指向内存区域的一个编号假设我们有4GB的内存空间,我们不可能为每一个进程都分配满满4个GB的内存空间,...

2019-05-09 22:33:27 619

原创 C++11 中的指针空值nullptr和NULL的区别

C++98中的指针空值-----NULL本质是一个宏,存在于C头文件(stddef.h)中 NULL可能被定义为字面常量0(编译器默认),或者被定义为无类型指针(void*)的常量(如果要将其按照指针方式来使用,必 须对其进行强转(void *)0)#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL...

2019-04-16 00:57:29 2020

原创 C++ 11 范围for循环

简介:在C++98中,如果要遍历一个数组采取for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)但对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。因此C++11中引入了基于范围的for循环,十分方便并且不需要担心数组越界等问题。for循环后的括号由冒号“ :”分为两部分:...

2019-04-15 03:01:50 1395

原创 C++ 内联函数 inline

概念:以inline修饰的函数叫内联函数,编译时C++编译器会在调用内联函数的地方展开(相当于编译时编译器会用函数体替换函数的调用)release模式下汇编代码不会产生call函数调用,debug模式下需要手动对编译器进行设置,因为编译器默认不会对代码优化特点:没有函数压栈的开销 以空间换时间,提升程序运行的效率 编译器会自动优化,如内有循环/递归等编译器会忽略掉内联 声明...

2019-04-15 02:33:52 749

原创 C\C++宏的优缺点

什么是宏?#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)声明方式:#define name( parament-list ) stuff其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中,参数列表的左括号必须与name紧邻。如果两者之间有任何空白存在,参数列表就会被...

2019-04-15 02:33:33 1652

原创 C++ 引用 什么是引用?

先举几个栗子:“及时雨”宋江、“卧龙”诸葛亮、“齐天大圣”孙悟空、“怡红公子”贾宝玉。上面几个例子都是引用,不是叫一个新人物“及时雨”、“卧龙”等等,而是给这些任务取了一个别名,本质上他们是一个人。概念:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间格式:类型& 引用变量名(对象名) = 引用实体; int& ra = a; ra为a的引用...

2019-04-15 02:00:36 8365 1

原创 浅谈C++中引用和指针的区别

之前我们介绍了什么是引用,错过的小伙伴们可以戳这里 ↓https://blog.csdn.net/Sun_Life_/article/details/89304920既然引用底层是用指针形式实现的,那么这篇文章就来为大家介绍一下引用和指针的区别:int main(){ int a = 10; int& ra = a; ra = 20; int...

2019-04-15 02:00:13 4750

原创 C++中什么是 extern "C"

有时候在C++工程中可能需要将部分函数按照C的风格来编译,此时就需要用到 extern "C"extern "C":将函数按照C语言风格编译例如:下面函数编译后报错“无法解析的外部符号_Add”,可判断其为C语言风格编译为什么?原因见此篇博文最后:https://blog.csdn.net/Sun_Life_/article/details/89304832extern "C...

2019-04-15 01:23:12 962

原创 C++函数重载

在文章开始我们先来看一句话:放弃美丽的女人真是让人心碎!大家能理解出什么意思吗?1.放弃 美丽的女人 真是让人心碎!2.放弃美丽的 女人 真是让人心碎!那么本文介绍的函数重载也就是这个意思:根据解读方式的不同赋予了一句话不同的意思,即这句话被重载了。概念:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些名字相同功能不同的函数构成了函数重载//...

2019-04-15 01:13:10 694

原创 C++缺省参数

概念:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参void TestFunc(int a = 0){ cout<<a<<endl;}int main(){ TestFunc(); // 没有传参时,使用参数的默认值 TestFunc(10); // 传参时,...

2019-04-15 00:48:02 881

原创 从尾到头打印链表

题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。方法一:使用栈实现(代码复杂,但代码的鲁棒性高)因为单链表只能从头到尾遍历,可输出顺序又是从尾到头,是一个典型的“先进后出”结构,所以我们很容易想到栈来实现这种顺序,经过一个节点时把结点放入一个栈中,遍历完整个链表后再从栈顶逐个输出结点的值。代码:class Solution {public: vector...

2019-04-15 00:28:49 637

原创 4.替换空格

题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.在网络编程中,如果URL参数中有特殊字符如空格、#等,可能会导致服务端无法获得正确的参数,所以我们要将这些特殊符号转换成服务器可以识别的字符。规则:在‘%’后跟上ASCII码的两位十六进制的表示。思路:原来是一个空格字符,替换之...

2019-04-15 00:16:23 936

原创 3.二维数组中的查找

题目:在一个二维数组中,每一行都按照从左到右递归的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该整数。例如:查找7,返回true;查找5,返回false。思路:假如从中间选取一个数字查找,大于或者小于都各有两个数字需要比较,结果就无法判断。所以我们仔细观察后发现,如果选取的数字小于要查找的数字要查找的数字就在当前位...

2019-04-14 23:50:11 641

原创 Linux 进程基本概念 什么是进程

操作系统(Operator System)概念操作系统,简称OS,是一个基本的程序集合,用来维护计算机基本的运行。操作系统主要由内核(进程管理、内存管理、文件管理、驱动管理)和其他程序(如函数库、shell等组成)。OS的目的是为了让计算机与硬件交互,管理所有的软硬件资源来为用户(应用程序)提供一个良好的执行环境。通俗的来讲就是一款“职业”的管理软件,如图:计算机管理硬件的方...

2019-03-15 20:20:04 3332 5

原创 C++命名空间是什么?命名空间的概念及使用!

什么是命名空间?字面意思来理解,命名空间主要有两个点——“名字”和“空间”。通过这两个关键词,我给大家简单描述一下什么是命名空间(看下面↓)举个例子:有一个学校,世界之大无奇不有,恰恰这个学校就比较奇怪。那你可能就会问了,这个学校究竟奇怪在哪里?这个学校奇怪的就是不仅有很多生日相同的学生,还有不少同学重名重姓。然后有一天放学,学校里有人捡到了一个钱包,里面有张三的学生证,这个钱包就被送到了...

2019-03-15 03:58:21 5274 1

原创 C和C++的关键字

ANSI C标准C语言共有32个关键字如下: 关键字 含义 auto 声明自动变量 break 跳出当前循环 case 开关语句分支 char 声明字符型变量或函数返回值类型 const 声明只读变量 continue 结束当前循环,开...

2019-03-15 03:21:28 1267

原创 C++入门/基础知识点

春光正好,最近恰逢自己在重新温习C++,所以整理了一下我在这里为大家奉献出一篇C++的基础博文,请查收!1.什么是C++? C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想...

2019-03-15 02:29:23 1816 1

原创 size_t类型的含义

size_t类型的含义size_t一个基本的无符号整数的C/C++类型,它的全称是size type,就是一种用来记录大小的数据类型,也是sizeof操作符返回的结果类型。size_t是在基于无符号整数memsize类型的C/C++的标准库中定义的。C语言中,此类型位于头文件stddef.h中,而在C++中,则位于cstddef.h中:#ifndef _SIZE_T_DEFINED#i...

2018-11-22 01:13:03 4572

原创 C++基础——命名空间及如何实现输入输出

命名空间:为什么需要命名空间?众所周知,C++作为一种面向对象的语言,当中的变量、函数、类都是大量存在的。假如这些变量、函数、类的名称都存在于全局作用域当中,就可能会导致很多冲突。举个形象的例子,一个学校有三个年级 ,一个年级有三个班,很巧的是这个学校的每个年级的每个班级里都有一个叫小明的学生。这个学校就相当于一个全局作用域,当中的年级和班级就相当各种变量、函数和类。假如这时候校长从广播里...

2018-11-21 01:30:17 2107

原创 删除GitHub中某个文件或文件夹

之前在GitHub上上传文件时由于粗心不小心将两个重名文件先后push了,导致两个文件互相覆盖,所以在这里我顺便记录一下如何删除GitHub中某个文件或文件夹的方法。删除GitHub中某个文件或文件夹在GitHub上无法删除文件夹或文件,只能对仓库进行删除修改等操作,所以我们自然会用到我们的Git Bash  ( •̀ ω •́ )y打开我们的Git Bash命令行界面:首先我...

2018-09-27 00:30:02 2177

原创 GitHub的使用方法以及Git Bash的简单配置

今天突然想到自己在GitHub的使用和Git Bash的配置方面犯过的小错误以及走过的弯路,用不计其数形容可能也不过分,不过问题总要人来解决的(多数情况是真的是要自己慢慢解决,心酸历程只有自己知道,流泪中.......)。所以我做出了重大决定,要把GitHub和Git Bash的使用方法和教训总结给大家!!重点来了:什么是GitHub?GitHub是一个面向开源及私有软件项目的托管平台...

2018-09-26 03:32:09 4108 2

原创 C/C++中#pragma once及#ifndef的使用

在C/C++中,为了避免文件多次编译,使头文件只被编译一次。有两种方式:一种是#pragma once;另一种则是#ifndef,那么这两者之间有什么区别呢?//方式一:#ifndef _SOMEFILE_H_#define _SOMEFILE_H_...// 一些声明语句#endif//方式二:#pragma once... // 一些声明语句#pragma onc...

2018-08-14 16:15:25 1282

原创 用C语言打印100~200之间的素数

这是一道较为基础的题目,那么我们先来复习了解一下素数的概念——素数又称质数,是指一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数;否则称之为合数。那么根据定义我们很容易想到一种方法,就是依次列出100~200间所有的数,用它去除以2  ~( i - 1)的所有数,若均不能整除,则为素数。#define _CRT_SECURE_NO_WARNINGS 1#include &lt;st...

2018-05-14 01:07:02 1827 1

原创 用C语言打印输出9*9/任意行数乘法口诀表

如何用C语言输出一个简单的9*9乘法口诀表?这是一个较为基础的题目,希望这篇文章对大家有一些帮助。 首先我们先进行分析,要打印一个9*9的乘法口诀表,主要就是要正确打印其行和列。有了这一步认识,我们第一时间就会想到for循环。所以我们先使用一个简单的循环来控制乘法口诀表的行数:for (i = 1; i &lt;= 9; i++)接下来,我们再使用一个 for 循环来控制乘法口...

2018-05-11 01:23:01 14700

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除