![](https://img-blog.csdnimg.cn/20200104105949249.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
研究生
文章平均质量分 90
研究生学习过程
Linux猿
CSDN博客专家,华为云享专家,HDZ核心组成员,Linux中国翻译组成员,ACM退役选手,分享 Linux、C/C 、Go、算法编程和面试经验,与大家一起成长,把握青春、不负韶华!
展开
-
Hash
Hash: hash算法解决冲突的方法常用的有开放定址法、再哈希法、链地址法、 建立公共溢出区。哈希表: 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。1.开放定址法 开放定址...原创 2018-08-04 15:08:36 · 2229 阅读 · 1 评论 -
Sizeof的用法
转自:https://www.cnblogs.com/huolong-blog/p/7587711.html#include <iostream>using namespace std;/* * sizeof用法 * 定义:sizeof是一个操作符(operator),其作用是返回一个对象或类型所占的内存字节数。 **/class My_Empty{};...转载 2018-08-02 10:09:35 · 2306 阅读 · 1 评论 -
对 fork 函数的理解
这里先说一下为什么用fork:例如:Web服务器,当许多浏览器来访问的时候,如果服务器等一个处理完再处理另一个,那这样就太慢了,服务器可以为每一个请求开一个进程,这样就实现了多进程,提高处理速度。例如:有一个大工程,可以分为许多个模块,就可以为每一个模块创建一个线程,当然有的模块之间有先后顺序,这可以进行特殊处理。1. 概念: fork是在Linux中使用的一个分叉函数。若成功调用一次则返回...原创 2018-07-11 21:52:58 · 2721 阅读 · 1 评论 -
各种C语言处理函数 strcat,strcpy,strncpy,memset,memcpy 总结
1. strcat2. strcpy用法:strcpy是C语言标准库函数,函数原型如下:char *strcpy(char *dst, const char *src);函数把参数src字符串复制到dst参数,dst字符串的结束符也会复制,如果参数src和dst在内存中出现叠,其结果是未定义的。由于dst参数将进行修改,所以它必须是个字符串数组或者是一个指向动态内存分配的数组指针,不能使用字符串常...原创 2018-07-10 14:54:35 · 4908 阅读 · 2 评论 -
C++ 继承
1. 概念 类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。2. 继承方式 继承方式规定了如何访问基类继承的成员。继承方式有public, protected, private。继承方式不影响派生类内原有数据成员的访问权限,影响了从基类继承来的成员的访问权限,包括派生类内的访问权限和派生...原创 2018-07-10 15:14:00 · 2093 阅读 · 0 评论 -
C++ 友元
1. 概念 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该类的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型和安全性检查及调用的时间开销),但...原创 2018-07-09 20:24:30 · 2021 阅读 · 0 评论 -
超文本传输协议HTTP,详解+实例!
1. 概念 HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式和规则,它是万维网上能够可靠交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。2. HTTP的操作过程 从...原创 2018-07-09 11:16:09 · 19842 阅读 · 0 评论 -
设计模式_策略模式
这里以一个栗子来解释策略模式,当周末来临,作为程序猿的你是打算出去浪呢,还是继续睡觉,还是去加班呢(当然是……)。下面用代码来展示:#include <iostream>using namespace std;class Strategy{ //策略基类 public: Strategy(){} virtual ~Strate...原创 2018-07-07 20:25:06 · 1978 阅读 · 0 评论 -
设计模式_工厂模式
工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式。1 简单工厂模式:优点:客户端只需要知道传入工厂类的参数的含义,对如何创建工厂对象不需要关心。只需要创建一个工厂 举个栗子来加深理解:假如有一个工厂生产两中型号的产品,分别为产品A和产品B。那么很容易我们就可以写出如下代码:#include<iostream>using namespace std;class Product...原创 2018-07-07 11:45:41 · 1983 阅读 · 1 评论 -
STL 之 vector
vector的基本用法:#include <iostream>#include <vector>#include <algorithm>using namespace std;//转自:https://www.cnblogs.com/zhonghuasong/p/5975979.htmlint main(int argc, char *argv...原创 2018-07-12 15:24:02 · 2081 阅读 · 0 评论 -
二叉树遍历
这篇文章对二叉树的遍历进行总结,主要是前序遍历、中序遍历、后序遍历的递归和非递归写法。 遍历即将树的所有结点访问且仅访问一次。按照根节点位置的不同主要分为前序遍历,中序遍历,后序遍历。1. 前序遍历 步骤:访问根节点;前序遍历左子树;前序遍历右子树;递归代码:/*struct Node{ int data; struct Node *left; struct...原创 2018-07-05 20:11:15 · 2045 阅读 · 1 评论 -
二分查找
这篇文章对二分查找进行总结,本文并不对二分查找的具体过程进行分析,主要对普通二分查找,二分查找上界和下界进行总结。二分查找:使用二分查找算法一般是在排序或部分有序的情况下。每次进行折半查找,查找的复杂度是O(logn)。1. 普通二分查找/* A[]: 有序数组,假设要排序的元素为n个 lt : 排序数组的左边的值,这里为 0 rt : 排序数组的右边的值,这里为 ...原创 2018-07-05 17:29:35 · 2156 阅读 · 1 评论 -
C++ new operator、operator new 和 placement new
1. new operator概念:new是C++中动态内存分配的运算符,同时也是一个关键字,在C语言中分配内存一般使用malloc函数。规则:不可以被重载;当new分配内存失败,会调用分配内存失败处理程序new_handler;执行过程:调用operator new 分配内存;调用构造函数生成类对象;返回相应指针;使用举例:#include <iostream>using name...原创 2018-07-05 15:12:38 · 2163 阅读 · 0 评论 -
设计模式_单例模式
单例模式概念:有时候,在写程序的时候,希望程序在运行期间有且只有一个实例(具体见应用场景),所以就引出了单例模式,它是指一个类在程序的生命周期中只有一个实例化的对象,并且提供该实例的全局访问方法。应用场景:单利模式可以分为懒汉式和饿汉式:懒汉式:第一次用到类的实例的时候采取实例化;饿汉式:在单例类定义的时候实例化;懒汉式:饿汉式:...原创 2018-07-02 11:01:46 · 2027 阅读 · 0 评论 -
C++ 常见关键字
virtual, inline, decltype,volatile原创 2018-06-30 20:18:10 · 4972 阅读 · 1 评论 -
C++ 类型转换
1.静态类型转换—static_cast1.1 格式:static_cast<type-id>(expression)static_cast主要用于基本类型之间、基本类型指针和空指针间的转换(不能用于基本类型指针之间的转换),该运算符把expression转换为type-id类型,但是没有运行时类型检查来保证转换的安全性。1.2 规则:用于类层次结构中基类和子类之间指针或引用的转换,可...原创 2018-06-28 10:15:15 · 2188 阅读 · 0 评论 -
【C/C++面试必备 | 基础概念】union的用法
这一篇文章来总结一下union的用法。定义:union是一种“类似”与struct的联合体,联合的所有成员引用的是内存中的相同位置,以最大的成员的内存长度作为union的内存大小。union主要用来节省空间,默认的访问权限是公有的。注意点: (1)同一个内存段可以用来存放几种不同类型的成员,但在每一个时刻只能存在其中一种,而不能同时存放几种,即每一瞬间只有一个成员起作用,其它的成...原创 2018-06-25 15:20:40 · 69428 阅读 · 14 评论 -
各种排序总结
本文对各种排序做一个总结(这里不简述具体的过程),包括冒泡排序、选择排序、快速排序、归并排序、堆排序。分别从时间复杂度、空间复杂度、算法的最坏情况以及稳定性方面分析,递归的尽量会附带非递归实现。1. 冒泡排序 冒泡排序是一种很简单的排序算法,这里直接上代码(从小到大排序):bool flag = true;//如果在某一趟排序中数列已经有序,则结束排序过程for(in...原创 2018-05-22 18:59:52 · 4463 阅读 · 5 评论 -
C++隐式类型转换构造函数和关键字explicit
隐式类型转换构造函数:转载 2018-05-23 11:33:07 · 3206 阅读 · 0 评论 -
C++ const修饰符
const修饰符可以修饰指针、数据成员、成员函数和类对象。接下来分别进行解释:1.修饰指针 const 对象一旦创建就不能改变,所以const对象必须初始化。可以是任意的表达式; const int i = get_size(); //true const int j = 42; //true const int k; ...原创 2018-05-10 22:39:38 · 2318 阅读 · 1 评论 -
extern 和 extern “C” 作用
使用extern "C"的目的:首先,你需要明白一点,C++在编译函数和变量的时候会进行倾轧(就是支持重载,将函数重载成一个特定的名字,而C语言不支持重载),而当C++调用的C语言函数库是已经编译好的,是用C的方法编译的,所以如果你还是按照正常思路调用C库函数的话(如果不在头文件中加extern "C"),就会出现在头文件中的函数被倾轧,而库函数不倾轧,会链接出错,所以C++就在调用C语言...原创 2018-05-09 15:44:25 · 3792 阅读 · 0 评论 -
C++ static
先说一下C语言中的静态变量,然后接着说C++中的静态变量。C语言中的static作用:C语言中的static可以修饰变量或函数。1.修饰变量:会是变量成为静态局部变量,会延长它的生存周期,但是不会改变其作用域,static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以,他们都是程序运行结束后才释放。2.修饰函数:加在函数定义或声明的前面...原创 2018-05-08 21:51:44 · 2147 阅读 · 2 评论 -
剑指Offer编程题
1.题目:二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法:从二维数组的左下角开始比较,令 i = n - 1 , j = 0;(假设数组为a,i为要比较的行号,j为列号),当目标值与a[i][j],比较的时候,如果等于目标值则结束,如果目标值小于a[...原创 2018-04-08 19:37:00 · 2337 阅读 · 0 评论 -
C++ 小知识
C/C++原创 2015-01-25 11:11:41 · 2724 阅读 · 0 评论 -
俄罗斯方块游戏 (C++)
用了几天的时间终于把俄罗斯方块写完了,本想把黑框换掉然后弄一个好的界面的,但是感觉不好弄就先这样吧。。#include#include#include#include#includeusing namespace std ;const int LF_up_x = 13 ;bool vis[100][100] ; // 用于标记坐标int Co[100][100] ; // 坐标原创 2015-01-20 19:54:45 · 8776 阅读 · 13 评论 -
安全多方计算总结
定义: 安全多方计算(SMC)是解决一组互不信任的参与方之间保护隐私的协同计算问题,SMC要确保输入的独立性,计算的正确性,同时不泄露各输入值给参与计算的其他成员。主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题,安全多方计算在电子选举、电子投票、电子拍卖、秘密共享、门限签名等场景中有着重要的作用。 例1:百万富翁问题两个百万富翁Alice和Bob,想...原创 2018-03-19 10:35:03 · 18715 阅读 · 0 评论 -
LeetCode 题目
尽量一天更新一道题。PS:代码是自己做完后经过查看优代码修改后的代码。1. 题目 :Two Sum题意:给你一个n个数的数组A[ ] 和一个数值target,在数组中找到两个加起来等于target的元素的位置。注意:位置下标从1开始的。解题思路:vector + map/hash_map(hash_map可能更好点,但是有的编译器不支持),复杂度: O(nlogn); 先对数...原创 2017-08-05 11:18:34 · 2329 阅读 · 0 评论 -
C++容器---Pair
Pair1.头文件: #include using namespace std;2.定义: pair名称; 两个类型可以不同,pair里有两个值,分别用first和second访问。例如: pairp(1 ,1.1) ; p.first = 2 ; p.second = 2.2 ;原创 2017-08-09 15:10:19 · 2217 阅读 · 0 评论