- 博客(70)
- 收藏
- 关注
原创 C语言中的main返回值
C语言几乎是所有人的第一个编程语言,而main函数则又是我们接触到的第一个函数。我们的所有程序都需要main函数,对于下面的代码,相信大家再熟悉不过了。 [cpp] view plain copyprint?#include <stdio.h> void main() { printf("I am main function./n");...
2018-10-07 20:16:13
825
原创 C++复习
能过说出面向对象编程的六大特点,其中最重要的是继承,多态;(1)封装性.①将有关的代码和数据封装在一个对象中,各对象间相对独立,互不干扰.②将对象中的某些部分对外隐蔽,隐蔽内部细节,只留下少量接口. 对象的内部实现和外部行为分隔开来,人们在外部进行控制,具体的操作细节在内部实现,这样大大降低了人们操作对象的复杂程度.(2)抽象性. 类是对象的抽象, 对象是类的具体表现形式....
2018-09-09 16:41:40
422
原创 隐式类型转换
表达式会包含隐式类型转换,它由编译器自动执行,不需程序员介入。何时发生隐式类型转换1. 在混合类型的表达式中,操作数会被转换为相同类型int ival; double dval;ival >= dval; // ival converted to double2. 条件表达式会被转换为bool类型。int ival; if (ival) // ival conver...
2018-09-01 10:48:01
571
原创 第一次面试总结
我参加面试时,共有三位面试官,其中两个是人事相关的,一个是他们的项目经理(之后的面试主要是和项目经理的交流)。可能是,之前笔试完成后我已经交过个人简历了,所以他们对我大概的情况有了一个基本的了解,并没有让我做自我介绍而是直接进入提问环节。由于,我的简历上有较多的比赛经历,所以第一个问题是问我,对哪一个比赛映象较深然后让我对比赛过程做一个简单讲述,在这里我讲了蓝桥杯的比赛经历,但是可能是紧张的原...
2018-08-22 16:12:10
506
转载 C++继承模型的内存布局
对于多继承情况考虑示例代码 1 2 3 struct Base1 {...}; struct Base2 {...}; struct Derived : Base1, Base2 {...}; 有如下内存布局首先出现的是派生类Derived类的虚表指针vptr(这里插入一个提醒:一直以来vptr都被国人...
2018-08-18 10:05:54
408
原创 Makefile学习笔记(五)
3.3 在规则中使用通配符 如果我们想定义一系列比较类似的文件,我们很自然地就想起使用通配符。make支持三各通配符:“*”,“?”和“[...]”。这是和Unix的B-Shell是相同的。"~"波浪号(“~”)字符在文件名中也有比较特殊的用途。如果是“~/test”,这就表示当前用户的$HOME目录下的test目录。而“~hchen/test”则表示用户hchen的宿主目录下的t...
2018-08-14 20:46:43
237
原创 C总结归纳
对于基本数据类型,要掌握:各种数据类型的长度(任何数据类型的指针都是4字节长度,包括对象指针);C语言中的六种基本的数据类型:short,int,long,char,float,double; 记住<char,unsigned char,unsigned int>这些数据类型的取值范围,如果越界,会是什么情况?比如unsigned char 的取值范围是0-255,定...
2018-08-13 19:39:04
1213
原创 在C++中为什么构造函数不能是虚函数,而析构函数可以
、为什么构造函数不可以是虚函数①从存储空间角度 虚函数对应一个vtable(虚函数表),这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。②从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数...
2018-08-12 10:01:26
7323
2
原创 Linux项目知识点整理(四)
十五、如何实现文件传输,如果文件较大如何解决 服务器端 把大文件分包 每一个包大小建立一个socket(对应一个线程)进行传输 客户端 对每一个包对应一个线程(同时对应一个socket)进行接收 在发送每一个包时 包前要发送这个包的大小 和对应的偏移量 在32位系统中要开启大文件的宏开关 利用pread pwrite 可以保证原子操作十六、解决Linux文件传输中占用大量资源...
2018-08-08 16:17:41
345
原创 记一道错题——C++中delete和delete[]的区别
今天刷到一道题目结果出乎意料的ggl所以记录一下以下涉及到内存管理的代码段中,有错误的是:int *a=new int(12);//..... free(a);int *ip=static_cast<int*>(malloc(sizeof(int)));*ip=10;//.....delete ip;double *a=new double[1];//.....
2018-08-07 10:08:46
2551
原创 笔试题练习1
1、C++打印出当前源文件的文件名以及源文件的当前行号ANSI C标准预定义宏:1)__LINE__:在源文件中插入当前源代码行号;2)__FILE__:在源文件中插入当前源文件名;3)__DATE__:在源文件中插入当前的编译日期;4)__TIME__:在源文件中插入当前编译时间;5)__STDC__:当要求程序严格遵循ANSI C标准时该标识符被赋值为1,表明是标准C程...
2018-08-04 15:53:10
301
原创 Linux聊天室项目知识点整理(三)
十一.谈谈你对进程的理解,内核是如何管理进程的?进程是计算机中处于运行中的程序的实体 线程是最小的运行单位,而进程是线程的容器 程序本身只是指令、数据及其组织形式的描述,进程才是程序(指令和数据)的真正运行实例1.内核将程序读入内存,为程序分配内存空间 //为程序分配2.内核为该进程分配进程标识符PID和其他所需资源 //为进程分配...
2018-08-02 19:40:43
486
原创 Linux聊天室项目知识点整理(二)
七、多进程与多线程的区别? 对比维度 多进程 多线程 总结 数据共享、同步 数据共享复杂,需要用IPC;数据是分开的,同步简单 因为共享进程数据,数据共享简单,但也是因为这个原因导致同步复杂 各有优势 内存、CPU ...
2018-08-02 11:12:41
499
转载 Linux聊天室项目知识整理(一)
1、makefile的作用是什么?makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是--“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。makefil...
2018-07-31 20:54:14
1555
原创 单片机中断(二)
简易电子钟#include <reg51.h>#include <display.h>void T0_ISR_Init(void);//初始化计数器1void T1_ISR_Init(void);//初始化计数器2void Timering();unsigned char Key_Press_1(void);unsigned char Key_Pres...
2018-07-31 20:49:22
795
转载 C++复习——类和对象的基础知识
C++类和对象类类构成了实现C++面向对象程序设计的基础。 类是C++封装的基本单元,它把数据和函数封装在一起。一个类描述一类事物,描述这些事物所应具有的属性。 定义成员函数 类定义是提供给更多不同用途的程序共享的,并不受单个程序应用的影响而“优化”。 在类中定义的成员函数一般规模都比较小,且特别的switch语句不允许使用。 类中的函数一般为内联函数,即使没有...
2018-07-29 14:36:47
393
原创 Linux常用命令总结
一、常用目录/文件操作命令1.展示目录列表命令ls(list) ls 展示当前目录下的可见文件 ls -a 展示当前目录下所有的文件(包括隐藏的文件) ls -l(ll) 展示当前目录下文件的详细信息 ll -a 展示当前目录下所有文件的详细信息 ll -h 友好的显示当前目录下文件的详...
2018-07-26 09:26:29
398
原创 单片机中断(1)
中断是指cpu在执行某一过程中由于外界原因必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。中断的优点:1.分时操作。2.实时响应3.可靠性高中断系统结构图:中断中用到的寄存器:IE寄存器:1.单路开关:EX0 ET0 EX1 ET1 ESEX0:外部中断0允许位ET0:定时/计数器T0中断允许位EX1:外部中断1允许位ET...
2018-07-24 22:25:25
2942
原创 linux进程间通信——信号(二)
信号的相关函数:1)signal函数:#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum,sighandler_t handler);signal 的第1个参数signum表示要捕捉的信号,第2个参数是个函数指针,表示要对该信号进行捕捉的函数,该参数也...
2018-07-21 21:11:19
324
原创 线程安全与线程不安全
上一篇博客讲解使用readdir函数时遇到bug,其实就是由线程不安全产生的,所以想通过这篇博客来简单说明一下线程安全和线程不安全的问题。线程安全 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一...
2018-07-21 20:50:02
503
原创 readdir函数使用中遇到的问题
在使用readdir函数开线程是遇到一个问题:readdir返回的结构体的内存空间被覆盖了! 44 mList = createList(); 45 Read_DIR_mp3(PATH,mList); 46 47 printf("you can use <H>or<h> to get help\n"); 48 49 ...
2018-07-17 17:49:29
2368
原创 opendir()和readdir()函数
1. opendir()头文件 #include<sys/types.h> #include<dirent.h>函数原型 DIR* opendir (const char * path ); (获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)功能 打开一个目录,在失败的时候返回一个空的指针。 错误代码: ...
2018-07-10 17:08:14
17605
原创 环境变量
要解释环境变量,得先明白变量是什么,准确的说应该是 Shell 变量,所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。通常变量与值是一对一的关系,可以通过表达式读取它的值并赋值给其它变量,也可以直接指定数值赋值给任意变量。为了便于运算和处理,大部分的编程语言会区分变量的类型,用于分别记录数值、字符或者字符串等等数据类型。Shell ...
2018-06-30 16:10:38
277
原创 Makefile学习笔记(四
make的工作方式:GNU的make工作时的执行步骤入下:1. 读入所有的Makefile。2. 读入被include的其它Makefile。3. 初始化文件中的变量。4. 推导隐晦规则,并分析所有规则。5. 为所有的目标文件创建依赖关系链。6. 根据依赖关系,决定哪些目标要重新生成。7. 执行生成...
2018-06-29 17:08:57
252
原创 linux进程间通信——信号(一)
1 信号及信号来源1.1 信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知...
2018-06-27 20:58:35
223
原创 MYSQL数据库(二)——简单应用
#include <stdio.h>#include "mysql.h"#include <stdlib.h>MYSQL *init(){ MYSQL *mysql, *con; mysql = mysql_init(NULL); //初始化mysql对象 if (NULL == mysql) { printf("mysql_init : ...
2018-06-24 20:30:24
378
原创 Makefile学习笔记(三)
Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。变量的定义。在Makefile中我们要定义一系...
2018-06-22 19:37:56
416
原创 MakeFile学习笔记(二)
上一次我们学到如何在Makefile中使用变量,接下来让我们了解一下Makefile的自动推导等知识。GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。 只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个whatever....
2018-05-31 16:29:10
279
转载 mysql 5.7.22 自带的四个数据库 介绍
https://blog.csdn.net/dj673344908/article/details/804828441.终端登录mysql数据库,显示全部数据库(或者直接用客户端工具展示),如下:show databases; 1 四个系统自带库为:information_schema、mysql、performance_schema、sys; 5.6版本自带的库为:information_sch...
2018-05-29 21:36:39
19269
原创 MySQL数据库(一)
MySQL数据库具有体积小、速度快、总体拥有成本低,开放源码等特点。MySQL是一个多用户、多线程的关系型数据库管理系统。 工作模式是基于客户机/服务器结构。目前它可以支持几乎所有的操作系统,同时也可以和php完美结合。简单的来说 ,MySql是一个开放的、快速的、多线程的、多用户的SQL数据库服务器。常用命令: 连接Mysql:1)连接到本机MySQL:mysql -u用户名 -p用户密码2)连...
2018-05-29 21:29:50
1716
原创 fopen用法
最近在做聊天室时写到文件传输功能,使用到了fopen函数。发现相比于open函数在参数上要简单很多。表头文件 #include 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态字符串: r 打...
2018-05-27 23:06:40
16302
原创 MakeFile学习笔记(一)
相关知识来自于:http://blog.csdn.net/haoel/article/details/2886makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成...
2018-05-24 09:55:36
308
原创 ‘\n’的作用
‘\n’是换行使光标下移一格,通常和‘\r’组合起来表示Enter。 Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回 车>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打 开的话,所有文字会变成一行;而Windows里的文...
2018-05-24 09:41:34
14092
原创 pthread_create函数
函数原型:int pthread_create(pthread_t *tid, const pthread_attr_t *tattr, void*(*start_routine)(void *), void *arg);功能:创建一个新的线程,并将线程加入当前进程头文件:#include <pthread.h>pthread非linux系统的默认库,需手动链接-线程库 -lpthre...
2018-05-19 19:38:11
3749
原创 后缀表达式计算(代码)
#include <iostream>#include <stack>using namespace std;int Priority(char ch){ switch(ch) { case '(': return 3; case '*': case '/': return 2; case '+': case '-': ...
2018-05-05 20:44:08
3494
1
原创 C++标准模板库(一)
之前学习自定义模板时觉得自定义模板比较抽象,使用起来较为繁琐。作为C++标准库相当重要的一部分,STL库提供一系列组件操作。为我们解决了这个问题。标准模板库STL包括容器、迭代器、算法;容器指包含数据的数据结构,容器中包含的对象是元素;迭代器指用来访问容器中的元素对象,相当于元素对象的指针;算法指一些能在各种容器中通用的标准算法,如排序、插入等;算法使用迭代器在容器上进行操作。STL常见容器:序列...
2018-05-05 20:42:19
294
原创 C++模板的使用
假设想要编写函数返回两个数之和,我们往往会定义几个重载函数来实现不同类型的变量相加:int add(int a,int b){return (a + b);}double add(double a,double b){return (a + b);}这些函数几乎相同,它们之间唯一的区别是形参的类型,每个函数的函数体是相同的。每个要比较的类型都需要重复函数的函数体,不仅麻烦而且容易出...
2018-04-30 20:42:36
231
转载 CNN介绍
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。本文首发 : http://www.liuhe.website/index.php?/Articles/single/37概揽卷积神经网络(Convolutional Neural Networks / CNNs / C...
2018-04-24 19:25:38
8175
原创 C++多态
C++多态表现形式主要有函数重载、运算符重载和虚函数等,其中函数重载、运算符重载是静态多态,虚函数是动态多态。也就是说,C++中运行时的多态性主要是通过虚函数重载来实现的。1.静态多态静态链编或早绑定:编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用哪个函数,如果有对应的函数就调用该函数,否则出现编译错误。2.动态多态动态链编或晚绑定:在程序执行期间(非编...
2018-04-15 22:15:40
1110
原创 C++继承
C++提供继承的目的是为了在不同的类型之间提取共性,提高代码的重用率,并且可以灵活地对基类根据实际的使用场景进行改造设计通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。注:类的继承默认是私有继承在C++语言中,一个派生类可以从一...
2018-04-11 15:51:59
245
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人