如果你不知道远端服务器的密码,或者说根本就没有密码,如果在配置过程当中出现需要输入密码的情况一定有问题,在踩了无数坑后写下本文,按照本文进行操作绝不会错。1.创建公钥1.在本地Mac终端下创建公钥ssh-keygen备注:在这个过程中会有创建文件保存的公钥的提示(Enterfileinwhichtosavethekey(/home/andron/.ssh/id_rsa):)直接回车即可(若已经创建
字符串切割在日常开发中是会经常频繁使用的一种方法,在刷题的过程中也经常会遇到需要将输入用例按照“”切割后才能实现具体逻辑的情况,但遗憾的是C++STL中string类并没有为我们提供现成的切割函数,所以在在线OJ的过程中就需要自己来实现一个简单的字符串切割函数。由于是为了在在线OJ中为我们的程序提供方便,所以代码逻辑以及代码量越简单越好,实现这样需求的方法不止一种,比如可以使用C语言提供strto
在线OJ项目功能:类似于LeetCode及牛客网的在线答题系统,浏览器请求服务器可以获得所有试题信息,包括题目编号、题目名称、题目难度,用户可以选择某一道题进行作答,服务器返回题目描述信息以及预定义好的代码模板,用户编写完代码后浏览器将用户提交的代码返回给服务器,服务器将用户提交的代码与预定义好的题目测试用例结合编译运行,并将结果返回给浏览器告知用户通过率。上述的功能依赖于几个模块相互配合实现,如
文件压缩:日常生活中有很多压缩的例子,比如给很长的名字取一个缩写——西安交通大学简称西交大,这样就给我们的生活提供了很大的便捷,那么什么又是文件压缩呢?文件压缩就是将文件通过一些方法变得更小,解压缩就是将文件还原,文件压缩将文件变得更小节省了内存,并且在网络上传输起来也变得很快,还具有一定的保密性,所以这个项目就是为了实现这个目的。基于哈夫曼树的文件压缩一、思想:众所周知在32位平台下一个字节占八
网络网络其实就是跨主机的“进程间”通信协议分层分层的意义:网络协议比较复杂,如果不拆分就会很复杂分层的好处:拆分成多个模块相当于降低了整个系统的耦合程度,根据实际需要,随时可以替换其中的某一层协议OSI七层模型:TCP/IP五层(或四层)模型由图可见网络层和传输层都是由操作系统内核来实现的,我们所开发的程序就是调用这些内核提供的传输层系统调用(socketapi)来完成应用层的程序。每一层都包含了
线程是为了让程序更好的利用cpu资源,在并行/并发处理下比进程切换cpu使用所要的花销要小。在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化(Linux中可以称为轻量级进程(LWP))。透过进程
计算机系统中最著名的冯诺依曼体系包括输入输出设备、cpu、存储器。1.cpu:cpu作为计算机的运算中心主要工作就是完成一些运算,在我们现在的生活中一台设备中会包含不止一个cpu,与此同时cpu也具有一定的存储功能,但是存储量很小,cpu中的寄存器就发挥着这样的作用,他们的特点是空间小、访问快。2.存储器①内存:存储大小相对外存小,cpu可以直接访问、速度快、断电后数据不会被保存②外存:存储空间相
Linux是一个开源的操作系统。在Linux中一切皆文件。Linux在服务器领域和嵌入式领域有着极大的优势,如:使用及维修总成本、硬件支持、灵活性、安全性、稳定性和可靠性、经济实惠。Linux中的基本指令有很多,随着时间的进行慢慢进行学习,这里便不再一一赘述,只谈谈一部分内容。1.rm指令:rm是删除指令,但是在删除文件夹的时候要加-r(递归删除)选项,-f表示的是强制删除,要慎用。2.cp和mv
异常的概念程序遇到了问题非主动退出的情况下我们称之为发生了异常,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。c++中异常的处理方式:#include<iostream>usingnamespacestd;voidtest1(){FILE*fp=fopen("2222.txt","rb");if(fp==nullptr){throw1;}}i
为什么要有智能指针?原生态指针的缺陷?使用原生态指针时我们需要时刻注意空间的申请和释放,尤其在处理异常时,我们必须在抛出异常前把程序中动态开辟的内存空间释放掉,有时会使代码显得臃肿,所以我们引入智能指针的概念,就是RAII,是一种用对象的生命周期控制程序资源的方式在对象构造期间(构造函数)获取资源,在对象销毁时(析构函数)释放资源,这样我们就不用显示的释放资源,并且对象所需的资源在对象的生命周期内
什么是多态?简单说就是完成某个动作时不同对象会产生不同的状态。见人说人话,见鬼说鬼话。多态是建立在继承基础上的实现多态的两个条件:1.在基类中定义虚函数(virtaul),并在派生类对其重写。2.用基类对象的指针或引用调用虚函数。满足这两个条件时,通过传递不同类型的对象就会调用对应的虚函数,也就完成了多态的形式。以下是对上面多态两个条件的解释:1.虚函数即用virtaul关键字修饰的成员函数,这里
最小公倍数即两数之积除以最大公约数,所以我们gcd函数实现最大公约数的求法并返回。intgcd(inta,intb){intr;while(r=a%b){a=b;b=r;}returnb;}intmain(){inta=0;intb=0;while(cin>>a>>b){cout<<a*b/(gcd(a,b));}system("pause");return0;
题目描述:考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法:1.根据字符串的字典序排序。例如:"car"<"carriage"<"cats"<"doggies<"koala"2.根据字符串的长度排序。例如:"car"<
c++
以智能指针为例说明,具体看注释:template<classT>classDFDef{public:voidoperator()(T*&p)//()的重载,只需要接受一个T类型对象的指针{if(p){deletep;p=nullptr;}}};template<classT>classFree{public:voidoperator()(T*&p){if(p
题目描述:一个数组有N个元素,求连续子数组的最大和。例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3。分析:从头到尾遍历数组,如果加和小于0,说明之前的累加和并不能够构成最大和数组,所以我们从数组的下一个元素开始累加,但累加的过程中有可能已经遇到了最大和,所以当当前的和比之前的大时记录下来。踩坑点:当加和小于0时只需要从下个位置作为数组头开始累加即可,因为之前已构不成最大数组,所以
异常的概念:程序遇到了问题非主动退出的情况下我们称之为发生了异常,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。c++中异常的处理方式:#include<iostream>usingnamespacestd;voidtest1(){FILE*fp=fopen("2222.txt","rb");if(fp==nullptr){throw1;}}
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解法一:若条件满足则这个数字在排序后的数组中必在最中间,所以把这个数字统计次数后和数字的一半长度比较后,若大于则满足条件,否则不满足。因涉及到快排,故时间复杂度时O(nlgn)cl
#define_CRT_SECURE_NO_WARNINGS1#include<iostream>usingnamespacestd;#include<string>intmain(){strings1;while(getline(cin,s1)){intnewlen=0;//统计数字字符的长度intmax=0;//数字字符的最大长度autostart=s1.begin()
#define_CRT_SECURE_NO_WARNINGS1#include<iostream>#include<algorithm>#include<string>usingnamespacestd;#if1intmain(){strings;while(getline(cin,s)){intleft=0;intright=0;intnum=0;autofi
string中存放的数字是按照ASCII码表进行存储的“字符数字”,也就是说它是一个字符而非数字,如何转成int类型的数字呢?我们首先看一下ASICC码表:字符1的ASICC码值是49,十进制数1对应的ASICC值是1,所以对字符数字减去48就可以得到其十进制表达。atoi函数的实参类型是constchar*,所以使用时不能将单个字符传入。也要注意A的ASICC码值是65,a的ASICC值是97。
1.什么是继承继承就是在原有类的基础上进行拓展,增加功能,实现了代码复用,体现了面向对象语言的层次结构。2.继承的定义继承即通过派生权限(方式)由基类派生一个类,子类中丰富了基类中的功能-------------------------如这张图所示,这就是定义一个派生类的方式。访问权限有三种,分别是public(类内类外都可以访问)、protect(类内可以访问、子类中可以访问、类外不能访问)、p
oct------>八进制dec------->十进制hex------>十六进制控制输入和输出的格式:intmain(){inta=0;cin>>hex>>a;cout<<dec<<a;system("pause");return0;}以十六进制输入,以十进制输出。
#define_CRT_SECURE_NO_WARNINGS1#include<iostream>usingnamespacestd;#include<string>voidfun(string&s,string&s3){intsize1=s.size();while(size1>8)//当大于八个时不需要添加0{s3.insert(s3.size()
题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。输出描述:输出输入字符串中含有该字符的个数。#include<string>#include<iostream>usingnamespacestd;intmain(){strin
在第一次使用在线OJ时,题目是这样的:输入一个字符串,求出该字符串包含的字符集合输入描述:每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。输出描述:每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。这是第一次提交的代码:#define_CRT_SECURE_NO_WARNINGS1#include<iostream>
dequedeque中的修改类接口由于deque是双端队列,所以有头插头删和尾插尾删操作。下面的栈和队列的底层都是通过的deque实现的。为什么要用deque作为其底层数据结构呢?主要是因为:栈和队列都只需在一头进行操作,故不需要迭代器,只要具有pushback和popback的功能即可,在元素增长时deque比vector效率更高、内存使用率高,所以用deque作为底层数据结构更合适。stack
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号