自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yhcuac

记录学习的过程

原创 python socket编程介绍以及遇到的问题

前言 学习python socket编程主要的参考资料为《socket-programming-in-python-cn》, 英文原版地址在这里, 中文版pdf下载在这里。 一.echo客户端和服务器的介绍以及问题: 服务端代码如下: #!/usr/bin/env python3 # -*- co...

2019-07-16 22:22:55 91 0

原创 浅谈C语言中的数的转化与运算

浅谈C语言中的有符号和无符号数的转化(读《深入理解计算机操作系统(第三版)》有感) 通常在计算机系统里,一个字节由8位组成,范围即为 0~255(2^8-1) 在计算机系统里,通常声明的类型的字节数和范围如下: 有符号 无符号 32位 64位 c...

2018-11-30 22:19:58 62 0

转载 makefile学习

makefile学习 我这里是跟着陈皓老师的博客学习的,陈皓老师博客的链接如下: 跟我一起写 Makefile(一) 跟我一起写 Makefile(二) 跟我一起写 Makefile(三) 跟我一起写 Makefile(四) 跟我一起写 Makefile(五) 跟我一起写 Makef...

2018-10-29 12:44:21 110 0

原创 Linux下GDB调试简介

Linux下C/C++调试工具gdb简介 GDB(GNU Debugger)是Linux下的一个调试工具,具体的功能有: - 设置断点,使得代码在制定行暂停执行; - 单步调试程序; - 查看程序中的变量值的变化; - 动态改变程序的执行环境; - 分析崩溃程序产生的core文件; ...

2018-09-17 15:32:47 161 0

原创 计算机网络小结

计算机网络 由于没有系统的学过计算机网络,因此只能总结一些常见的计算机网络的面试题。 一. OSI参考模型 OSI参考模型分为7层: - 物理层:负责0,1比特流,代表电压的高低; - 数据链路层:负责物理层面的互连节点之间的通信传输,数据帧的生成和传输; - 网络层:将数据传输到...

2018-09-17 15:30:55 95 0

原创 图论小结

一.图论的基本概念 有向图(有向边),无向图(无向边),顶点集合,边集合,顶点数(阶),边数; 完全图,有向完全图,稀疏图,稠密图,平凡图(只有一个顶点),零图(没有边); 顶点的度数,奇点,偶点,最小度,最大度; 基本定理:度数之和等于边数的两倍; 度序列,可图(有限序列是度序列); Hav...

2018-09-07 17:18:17 123 0

原创 基本输入输出和复合数据类型

基本输入输出 头文件包含:stdio.h 1.格式化输入输出 输出: printf("格式化控制字符串", 输出项); “格式化控制字符串”的形式为: 格式化输出函数printf: %[输...

2018-08-30 16:02:10 122 0

原创 编译器对源代码的编译过程

编译器对源代码的编译过程 对于C/C++源代码的编译,可以使用gcc(GNU Compiler Collection,GNU编译器集合)/g++进行编译。 gcc/g++分别是GNU的C/C++编译器,GNU是“GNU is Not Unix”的首字母缩写,GNU项目Richard Stall...

2018-08-07 14:02:39 2280 0

原创 二叉树的常见算法

一.二叉树的遍历算法 二叉树的遍历可分为三种:先序遍历,中序遍历和后序遍历。 按照惯例,左孩子优先于右孩子,那么: - 先序遍历指的就是先访问本节点,再访问该节点的左孩子和右孩子; - 中序遍历指的就是:先访问左孩子,再访问本节点,最后访问右孩子; - 后序遍历指的就是:先访...

2018-08-05 16:28:21 26468 5

原创 并查集算法:Union-Find

并查集算法:Union-Find 一.算法简介 并查集算法是为了解决一类连通性的问题,连通是一种等价关系,满足自反性,对称性和传递性。 - 自反性:p和p是连通的 - 对称性:假设p和q是连通的,那么q和p也是连通的 - 传递性:假设p和q是连通的,q和r也是连通的,那么可以推出p和...

2018-08-03 10:34:36 135 0

原创 常见位运算总结

常见位运算总结 常见的位运算有六种: and运算,按位与:&有零为零 or运算,按位或:|有一位一 xor运算,按位异或:^相同为零,不同为一 not运算,按位取反:~ shl运算,左移:<< shr运算,右移:&a...

2018-07-29 12:34:00 96 0

原创 git学习总结

git学习总结 很早之前在廖雪峰老师的网站上学习的git,参见链接Git教程。总结一下常见的git操作。 git的四个分区 workspace(工作区):我们平时写代码,对代码的直接修改就是在这个工作区中。 index/stage(暂存区):修改代码之后,需要对代码进行保存,就保存...

2018-07-27 23:26:03 95 0

原创 STL迭代器简介

STL迭代器简介 STL将容器(Containers)和算法(Algorithms)分隔开,两者之间的纽带就在于迭代器(Iterators)。 迭代器也是一种智能指针,重载了例如常见的operator*以及operator->。 迭代器有常见的五种相应型别: iter...

2018-07-23 22:12:48 338 0

原创 C++从内存分区到动态内存分配

C++从内存分区到动态内存分配 一.C++内存分区 C++内存分区分为五个部分: 堆,栈,自由存储区,常量存储区,静态/全局存取区。 - 堆:new分配的内存块,程序员使用完必须自己delete,如果忘记,操作系统会在程序结束后释放该内存。 - 栈:编译器需要时自动分配内存,常见的比...

2018-07-19 20:25:37 175 0

原创 设计模式之建造者模式

设计模式之建造者模式 建造者模式解决的问题: 当创建的对象很复杂(通常是由其它对象组合而成)时,我们将创建的过程分离开,一步一步进行对象的创建,在每一步中可以引入参数,使得可以经过相同的步骤得到不同的对象。 结构图如下: 具体代码如下: //Product.h #ifndef P...

2018-07-16 23:16:31 38 0

原创 设计模式之单例模式

设计模式之单例模式 Singleton(单例)模式是最常见的,最容易实现,最应该掌握的设计模式。 单例模式解决的问题非常常见:如何去创建唯一的一个类对象(变量)?在C++语言中,通常维护一个静态成员变量来记录这一个唯一的对象,再通过一个静态接口instance来获取这一个实例。 结构图如下:...

2018-07-15 22:21:30 81 0

原创 《Linux命令行大全》读书笔记三:编写shell脚本

第二十四章:编写第一个shell脚本 shell脚本是一个包含一系列的命令的文件,shell读取这个文件,然后执行这些命令。三个步骤: - 编写脚本 - 使脚本可执行 - 将脚本放置于shell能够发现的地方 脚本的格式,最简单的一个脚本: #!/bin/bash # This i...

2018-07-11 23:00:05 95 0

原创 《Google C++编码规范》读书笔记第八章:格式

《Google C++编码规范》读书笔记第八章:格式 一.行长度(Line Length) 每一行的字符数不超过80。 优点:。。。 缺点:反对该原则的人则认为更宽的代码更易阅读,80字符的限制是上世纪60年代的缺陷,现在拥有更大的显示屏,很轻松地显示更多地代码。 结论:有这些例外 ...

2018-07-10 23:20:50 73 0

原创 《Linux命令行大全》读书笔记二

第十章:进程 ps:查看进程信息。 直接输入ps,会得到两个进程的信息:bash和ps。 选项: r //运行状态 s //睡眠状态 d //不可中断的睡眠状态 t //暂停状态 Z ...

2018-07-09 22:40:47 63 0

原创 常见的排序算法

常见的排序算法包括: 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序。 排序算法 最好时间 最差时间 平均时间 空间 是否稳定 冒泡排序 O(n) O(n^2) O(n^2) O(1) 稳定 选择排序 ...

2018-07-08 23:10:20 60 0

原创 《Google C++编码规范》读书笔记第五章:其它C++特性

《Google C++编码规范》读书笔记第五章:其它C++特性 一.引用参数(Reference Arguments) 定义:如果需要改变参数的值,在C语言中可以使用指针形参,在C++中还可以使用引用形参。 优点:使用引用形参更优雅一点,例如拷贝构造函数,而且不必像指针那样接受空指针NU...

2018-07-08 09:19:30 62 0

原创 《Linux命令行大全》读书笔记一

第一章:shell是什么 shell接受键盘书输入的命令,传递给操作系统来执行,几乎所有的Linux都提供shell程序。 在终端仿真器中(Terminal Emulator)写shell命令。 在终端不要尝试ctrl-c或者ctrl-v,对于shell而言,鼠标中键是粘贴键。 简单的sh...

2018-07-04 23:19:47 558 1

原创 《Google C++编码规范》读书笔记第七章:注释

《Google C++编码规范》读书笔记第七章:注释 注释对于代码的可读性是非常重要的 一.注释风格(Comment Style) 使用//或者/* */都可以,只要统一就好 二.文件注释(File Comments) 在每一个文件里加入版权公告,然后是文件内容描述。依次:...

2018-07-03 22:43:23 117 0

原创 设计模式之工厂模式

设计模式之工厂模式 一.普通工厂模式 为了提高内聚和松聚合,抽象出一些类的公共接口以形成抽象基类,然后声明基类指针指向派生类对象,以达到多态的目的。当有很多派生类继承自该抽象基类时,需要写很多new,而且客户必须知道派生类的名称才能生成该对象,如果不知道要实例化哪一个具体的派生类,也就无法...

2018-07-03 20:33:30 75 0

原创 C++字符串与C语言中的字符串处理函数

C++字符串与C语言中的字符串处理函数 一.C++中的字符串类 下面是简单的一种实现: #ifndef STRING_H_INCLUDED #define STRING_H_INCLUDED class String { public: String (const char...

2018-07-02 22:55:56 505 0

原创 《Google C++编码规范》读书笔记第六章:命名约定

《Google C++编码规范》第六章:命名约定 一.通用命名约定(General Naming Rules) 函数命名,变量命名,文件命名应该就有描述性,不要过度缩写,类型和变量应该是名词,函数可以用“命令性”动词。 对于缩写,只有当放到项目外仍然非常明确,否则不要使用缩写: i...

2018-07-02 22:40:02 75 0

原创 C++11一些新特性

C++11一些新特性 一.可变参数模板(Variadic Templates) 新特性允许模板定义中含有任意多个的模板参数,这种新特性的写法与普通模板是差不多的,只是加上了省略号...。 省略号的作用: 1. 声明一个参数包,这个参数包可以包含一个或者任意个模板参数。 2. 在模板定...

2018-07-01 22:21:15 97 0

原创 《Google C++编码规范》读书笔记第三章:类

《Google C++编码规范》第二章:类 类是C++中的基本单元。 一.构造函数的职责(constructor) 在构造函数执行那些trivial的初始化,可能的话,使用Init()函数执行那些non-trivial的初始化。 定义:执行初始化操作。 优点:排版方便,无需担心类是否...

2018-06-29 20:33:48 91 0

原创 《Google C++编码规范》读书笔记第二章:作用域

《Google C++编码规范》第二章:作用域 一.命名空间(namespace) 定义:命名空间将全局作用域分成不同的、具名的作用域。 优点:命名空间可有效防止全局作用的命名冲突,例如两个命名空间pro1::Foo和pro2::Foo就不会冲突。 缺点:命名空间具有迷惑性,在头文件中...

2018-06-28 21:33:28 125 0

原创 C++资源管理之智能指针

C++资源管理之智能指针 在《Effective C++》一书中,大师Scott Meyers用了一章的篇幅来说明C++资源管理的一些内容,本文以此为基础。   1.RAII RAII:Resourse Acquisition Is Initialization(资源获取即初始化),将资源放...

2018-06-27 22:09:49 59 0

原创 《Google C++编码规范》读书笔记第一章:头文件

《Google C++编码规范》:第一章.头文件 c++源文件在windows系统.cpp,在Linux/Unix下则为.cc,通常一个源文件对应一个.h头文件。正确使用头文件令代码在可读性,性能上都有很大的改观 1.#define的保护 #define是一种防御式声明,防止头文件被多重...

2018-06-27 20:25:50 121 3

原创 《More Effective C++》读书笔记第二章:操作符

第二章:操作符 条款五.对定制的类型转换函数保持警觉 一个类中的隐式类型转换符的形式是: operator type(); 这是一个有点奇怪的函数:关键词operator加上一个类型名称再加上一个括号。例如有理数类: class Rational { public: ...

2018-06-13 22:24:09 64 0

原创 《More Effective C++》读书笔记第一章:基础议题

第一章:基础议题 条款一.仔细区分pointers和references 首先,没有NULL reference(空引用),但是可以有NULL pointer(空指针)。考虑这样的情况: char *pc = 0; char& rc = *pc; 这...

2018-06-12 22:10:35 87 0

原创 《Effective C++》读书笔记第二章:构造析构赋值运算

Constructor, Destructors and Assignment Operator 条款5.了解C++默默编写并调用了那些函数 如果声明一个空类,编译器会为这个空类声明拷贝构造函数,拷贝赋值运算符,默认构造函数以及析构函数,并且这些都是public且是inline,还是trivi...

2018-06-10 22:20:06 71 0

原创 《深度探索C++对象模型》读书笔记第六章:执行期语意学

《深度探索C++对象模型》读书笔记第六章:执行期语意学 C++在执行期的一些变化,例如临时对象的产生,临时对象的构造和析构成本是我们需要考虑的,我们将在第三节具体讲解。 一.对象的构造和析构 一般而言,我们将object尽可能放置在使用它的那个程序区段附近,这样可以节省非必要的对象的构造...

2018-05-29 17:24:57 240 0

原创 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学

《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constructor中或者在其他member functions中指定初值。 纯虚函数的存在 纯虚函数,虚函数...

2018-05-25 14:45:09 496 2

原创 《深度探索C++对象模型》读书笔记第三章:Data语意学

《深度探索C++对象模型》读书笔记之 Data语意学 类的大小(sizeof) 一个空类的大小通常为1,是因为编译器为其安插了一个char,以便这个类的任意两个object能够在内存中配置独一无二的地址。 一个类的大小通常与机器和编译期有关,受以下三个因素的影响: 1. 语言本身的额外...

2018-05-24 13:11:50 488 2

原创 约瑟夫环问题

约瑟夫环问题 约瑟夫环问题: 首先,让n个小朋友们围成一个大圈。然后,随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这样下去….直到剩下最后一个小朋友,可以...

2018-05-23 19:37:56 51 0

原创 《深度探索C++对象模型》读书笔记第二章:构造函数语义学

《深度探索C++对象模型》读书笔记之 构造函数语义学 编译器背着程序员做了很多事,explicit关键字的导入,是为了制止“单一参数的constructor”被当作一个conversion运算符。这一章中,挖掘了编译器对于“对象构造过程”的干涉,以及对于“程序形式”和“程序效率”的冲击。 ...

2018-05-23 17:05:43 368 2

原创 斐波那契数列及其对数时间算法

斐波那契数列及其对数时间算法 前些天做IEEE校内算法赛的时候,遇到了一道关于斐波那契数列的题,要求是对数时间;今天在牛课网上刷leetcode,看到爬楼梯问题,于是在网上搜索了一下,自己参考并总结了下斐波那契数列及其算法。主要参考了知乎这个问题下的回答最高赞回答。 斐波那契数列大家应该都很熟...

2018-05-22 16:55:32 645 0

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