- 博客(30)
- 收藏
- 关注
原创 Linux不显示用户名,以及新用户创建删除(ubuntu,xshell)
xshell连接Ubuntu登录后不显示用户名只显示"$“符号,回退键会变为”^H",tab键直接空格时,解决办法:1.执行命令 sudo -s2.切换到root帐户下,然后再用命令:vim /etc/passwd3.点击i(进入插入模式)4.找对对应的用户名 一行,将最后的 /bin/sh 修改为/bin/bash5.按esc,键入(:wq),保存退出创建用户adduser + name这里使用的是adduser而不是useradd,因为使用useradd增加用户需要添加相应的格式,
2022-04-11 10:26:31 5013 2
原创 全网最详细C/C++文件读写总结
1.linux系统函数文件读写open函数:int open(const char * pathname, int flags);int open(const char * pathname, int flags, mode_t mode)注:第一个参数pathname 指向欲打开的文件路径字符串第二个参数 flags 指文件打开方式(O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_NONBLOCK|O_TRUNC…)第三个参数mode,只有flags为
2022-03-16 15:17:24 2878 2
原创 pygame安装超详细讲解
1.进入python官网:https://www.python.org/2.点击PyPI3.输入框输入pygame4.根据顺序依次点击5.根据自己python版本号选择对应的文件6.把下载的whl文件放在python的对应目录下7.回到上一句目录,按住shift然后鼠标点击右键,打开windowsPowerShell命令窗口输入pygame_2048-1.9.4-py3-none-any.whl(这个是你下载的对应版本名)安装过程中出现了两个问题:1)You are usin
2021-11-17 15:57:20 10498
原创 移动构造函数及右值左值引用详解
1.移动构造函数:有时候我们会遇到这样一种情况,我们用对象a初始化对象b后对象a我们就不在使用了,但是对象a的空间还在呀(在析构之前),既然拷贝构造函数,实际上就是把a对象的内容复制一份到b中,那么为什么我们不能直接使用a的空间呢?这样就避免了新的空间的分配,大大降低了构造的成本。这就是移动构造函数设计的初衷;拷贝构造函数中,对于指针,我们一定要采用深拷贝,而移动构造函数中,对于指针,我们采用浅拷贝;与拷贝类似,移动也使用一个对象的值设置另一个对象的值。但是,又与拷贝不同的是,移动实现的是对象值真
2021-07-28 15:41:53 347
原创 c++多重继承及优缺点
实际生活中,一些事物往往会拥有两个或两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念,C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承。举个例子:人(Person)可以派生出作者(Author)和程序员(Programmer),然而程序员作者同时拥有作家和程序员的两个属性,即既能编程又能写作,如图9.2所示。使用多重继承的例子程序如下:#include <iostream>2 using namespace std;3 4
2021-07-27 19:08:32 1073
原创 linux网络编程----close()与 shutdown() 函数详解
close()函数:int close(int sockfd); //返回成功为0,出错为-1.close 一个套接字的默认行为是把套接字标记为已关闭,然后立即返回到调用进程,该套接字描述符不能再由调用进程使用,也就是说它不能再作为read或write的第一个参数,然而TCP将尝试发送已排队等待发送到对端的任何数据,发送完毕后发生的是正常的TCP连接终止序列。在多进程并发服务器中,父子进程共享着套接字,套接字描述符引用计数记录着共享着的进程个数,当父进程或某一子进程close掉套接
2021-07-06 16:26:38 225
原创 C++智能指针及循环引用
目录:auto_ptrunique_ptrshared_ptrweak_ptr循环引用问题智能指针的原理:智能指针的原理:智能指针是一个类,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针指向的内存。智能指针本身是栈上的对象,所以当函数(程序)结束时会被自动释放掉。1) auto_ptr:不支持复制和赋值,但复制和赋值时不提示错误,不能放入容器中。2)unique_ptr:独享指针,不支持复制和赋值,但是赋值会编译出错。提供move方法。3)shared_ptr:共享指针
2021-07-03 16:00:53 1703
原创 Linux虚拟内存机制
目录:计算机的存储系统为什么要有虚拟内存进程的虚拟地址空间虚拟内存和物理内存如何建立起来联系的呢?虚拟内存带来的好处1.计算机的存储系统:2.为什么要有虚拟内存:在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。当运行多个程序时,经常会出现以下问题:进程地址空间不隔离,没有权限保护:由于程序都是直接访问物理内存,所以一个进程可以修改其他进程的内存数据,甚至修改内核地址空间中的数据。内存使用效率低:当内存空间不足时,要将其他程序暂时
2021-06-30 17:30:43 484
转载 Linux中的awk
目录 awk awk的用法 awk中字符的含义 print 打印 字符匹配 格式化输出 举例awkawk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,默认以空格为分隔符将每行切片,切开的部分再进行各种分析处理。 awk是行处理器,相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出a
2021-06-28 15:02:38 323
原创 面试常考排序算法超详细总结
算法基本知识铺垫有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助排序。5
2021-06-26 14:21:00 871
原创 topK问题
topK问题常见形式:找第K大(第K小)的数找出最大(最小)的前K个数求前K词频的单词解决Top K问题方法:sort排序最大堆最小堆快速排序使用最大最小堆:求最大的数用最小堆,求最小的数用最大堆;Quick Select算法:使用类似快排的思路,根据pivot划分数组使用排序方法:排序后再寻找top K元素举例:最小的k个数:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例:
2021-06-26 10:26:53 174
转载 c++单例模式
单例模式:单例大约有两种实现方法:懒汉与饿汉。懒汉:故名思义,不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化,饿汉:饿了肯定要饥不择食。所以在单例类定义的时候就进行实例化。(1)饿汉饿汉单例,即在最开始的时候,静态对象就已经创建完成;设计方法是类中包含一个静态成员指针,该指针指向该类的一个对象,提供一个公有的静态成员方法,返回该对象指针;为了使得对象唯一,还需要将构造函数设为私有,代码如下:class Sigletion{ //构造函数为私有; Sigle
2021-06-24 20:40:21 153
转载 c++工厂模式
引出工厂模式的设计问题:◆ 1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题 n 多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如 new ×××;的代码。这里带来两个问题:客户程序员必须知道实际子类的名称(当系统复杂后,命名将是一个很不好处理的问题,为了处理可能的名字冲突,有的命名可能并不是具有很好的可读性和可
2021-06-24 20:27:03 288
原创 Makefile文件编写
1. 概述Makefile,很多windows程序可能都没听说过简单的说,Makefile是Unix/Linux环境下描述了整个工程的编译、连接等规则的文件,其主要包括三点:工程中的哪些源文件需要编译以及如何编译依赖库以及库所在的位置想得到什么:可执行文件?静态库?动态库?项目中,我们会有很多源文件、头文件、依赖库文件、配置文件等等,通过Makefile定义规则来制定编译顺序,编译规则,编译依赖,甚至更复杂的功能,将极大的方便我们的开发,其最大的好处就是”自动化编译“,通过‘make’就可以方
2021-06-13 11:18:44 1482 1
转载 http请求报文和响应报文
http请求报文和响应报文:http协议是一个应用层协议,其报文分为请求报文和响应报文当客户端请求一个网页时,会先通过http协议将请求的内容封装在http请求报文之中,服务器收到该请求报文后根据协议规范进行报文解析,然后向客户端返回响应报文。http报文结构为:起始行 :对报文进行描述头部 :向报文中添加了一些附加信息,是一个名/只的列表,头部和协议配合工作,共同决定了客户端和服务器能做什么事情 ,例如:Content-Length(主体长度),Content-Type(主体类型)等。主体:
2021-06-10 11:40:34 1296
原创 网络编程基础知识 htons(), ntohl(), ntohs(),htons(),inet_add(),inet_ntoa(),大小端法
htons(), ntohl(), ntohs(),htons():在Linux和Windows网络编程时需要用到htons,htonl函数,用来将主机字节顺序转换为网络字节顺序;ntohl(), ntohs()用来将网络字节顺序转换为主机字节顺序;网络字节顺序与本地字节顺序之间互相转换函数:htonl()–“Host to Network Long”ntohl()–“Network to Host Long”htons()–“Host to Network Short”ntohs()–“Ne
2021-06-09 16:39:43 609 3
原创 MySQL基础知识总结
数据库的好处1.持久化数据到本地2.可以实现结构化查询,方便管理数据库相关概念1、DB:数据库,保存一组有组织的数据的容器2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据3、SQL:结构化查询语言,用于和DBMS通信的语言数据库存储数据的特点1、将数据放到表中,表再放到库中2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。4、表由列组成,我
2021-06-08 17:38:13 75
原创 原码 反码 补码三者之间的关系
一.概念:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以用补码统一处理。原码:使用二进制表示,二进制首位是符号位,0为正,1为负反码:正数,反码和原码一样; 负数,符号位不变,其他各位取反补码:正数,补码和原码一样;负数,反码末位加1,有进位则进位,但不改变符号位二.两数相加:1.两者补码想加2.然后转成反码3.再转成原码4.在把这个二进制转成十进制三.举例:正数: 1原码:0000 0001反码
2021-06-02 15:00:16 7777 6
转载 十大排序算法总结
1.排序算法基础知识1.1排序算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。1.2 算法复杂度1.3 知识点稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后
2021-04-02 22:25:27 101
原创 C++ 标准库排序函数总结
C++ STL排序函数排序函数功能sort()对指定范围内所有的数据进行排序,排序后各个元素的相对位置很可能发生改变。stable_sort()对指定范围内所有的数据进行排序,并确保排序后各个元素的相对位置不发生改变。partial_sort()对指定范围内最大或最小的 n 个元素进行排序。nth_element()调整指定范围内元素的存储位置,实现位于位置 n 的元素正好是全排序情况下的第 n 个元素,并且按照 全排序规则排在位置 n 之前的元素都在该位置
2021-03-30 16:16:36 651
转载 static关键字
概述static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。但是对于c语言初学者,static由于使用灵活,并不容易掌握。本文就static在c语言中的应用进行总结,供参考使用。错漏之处,请不吝指正。最后一节加入了c++面向对象中static的使用特性,当作拓展阅读。在程序中使用static变量1. 局部变量普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译器一般不对普通局部变量进行初始化,也就是
2021-03-18 10:56:18 64
原创 Doxygen生成文档时报”sh: dot: not found”
Doxygen生成文档时报”sh: dot: not found”:最后一行:./build.sh : 20: doxygen:not found解决办法:sudo apt-get install graphviz
2021-03-15 21:26:35 1980
原创 代码风格及规范
代码风格代码规范:一、变量命名权威的C++规范以Google为主,下载链接链接:https://pan.baidu.com/s/1_1CN6O2HmgJ_tvfi5soorA提取码:b4NL主流有如下三种变量规则:小驼峰、大驼峰命名法下划线命名法匈牙利命名法*# 二、各命名规范小驼峰:第一个单词首字母小写,后面其他单词首字母大写;int serviceInfo大驼峰:第一个单词首字母大写,后面其他单词首字母大写;int ServiceInfo下划线命名法:下划线命名
2021-03-15 19:29:47 222 3
原创 muduo库学习下载链接
muduo库学习下载链接github地址:https://github.com/chenshuo/muduo使用muduo库帮助地址:https://github.com/chenshuo/muduo-tutorialmuduo源码压缩包:https://pan.baidu.com/s/1miQNh1n2gNZNyd95p3dMUw提取码:jmor
2021-03-08 22:09:44 806
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人