自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 python报错:TypeError: descriptor ‘__init__‘ requires a ‘super‘ object but received a ‘str‘

今天在使用python练习时遇到了一个问题,几经周折才搞明白错误原因,所以在这里总结一下我使用版本的是python2.7talk is cheap, show me the codeclass Person(): """一个人类,作为父类""" def __init__(self, name, age, sex): """父类初始化方法""" self.name = name self.age = age self.se

2020-12-21 10:39:58 1456

原创 Windows上MySQL数据库忘记密码总结

之前在学习MySQL的时候,设置了root的密码。最近有用到MySQL时,发现忘记了密码,在网上找了一些方法,虽然最终解决了,但是常见的方法没有解决我的问题,所以我就将这个问题总结一下。MySQL数据库忘记密码的解决方法有三种: 我是使用第三种方法重置了MySQL数据库的root密码方法一:常见的解决方法(可以解决大部分人的问题)先停止MySQL服务可使用指令net stop mysql 关闭或者打开"服务"找到"MySQL"后右键停止MySQL服务;使用管理员权限打开CMD命令提示符,

2020-12-16 15:30:48 734

原创 【C++】虚表与虚表指针,虚基类表与虚基类表指针

虚函数表指针和虚基表指针对比

2020-03-05 15:14:57 2933

原创 算法:根据Rand5()函数构造生成Rand7()

根据Rand5()函数构造生成Rand7()解法:1.利用预置数组;2.构造大的整数区间,限制整数区间,最后映射整数区间.

2020-02-23 13:50:31 1520

原创 LeetCode: 109有序链表转换二叉搜索树

将有序链表转成二叉搜索树解法一:转成数组+递归;解法二:快慢指针+递归;解法三:中序遍历模拟;

2020-02-17 21:46:56 171

原创 合并K个有序数组

合并K个有序数组解法一:使用sort()函数;解法二:使用merge()函数,两两归并排序;解法三:构造小根堆;

2020-02-05 20:21:42 4833 3

原创 LeetCode: 22括号生成

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。解决方法: 回溯法 和 暴力求解法

2020-02-01 17:04:03 152

原创 LeetCode: 78子集

问题:求出一个数组的所有子集解法:二进制法 和 遍历法

2020-01-29 17:01:14 124

原创 LeetCode: 46全排列

问题:求出一个数组的全排列解法:回溯法 和 库函数法

2020-01-29 16:00:55 156

原创 CGI机制,CGI程序以及FastCGI

博主在完成一个Web服务器的项目时,遇到了一问题:当浏览器请求服务器上的资源不是静态页面,而是可执行程序时,服务器该如何处理呢?之后,博主在网上查阅了一些资料得知,当浏览器请求的资源不是静态网页,而是一些php,asp或者可执行程序的时候,就需要CGI程序来处理了。本篇博客,就是来解释什么是CGI?什么是CGI程序?CGICG(common Gateway Interface)即通用网关接口...

2019-12-07 22:40:54 390

原创 C++:四种类型转换符

C语言中的类型转换只需要在变量名前加上想要转化成的变量类型即可;如://c风格的类型转换int a = 1;double b = 1.1a = (double)b;b = (int) a;但是这种简单的转换方式有一些缺陷:转换过于随意;C风格的类型转换在时,没有任何的限制,容易引起一些未知的问题;C风格的类型转换没有统一的关键字和提示符。在代码较多的情况下,排查时容易忽略;...

2019-12-07 17:43:54 231

原创 【python】错误SyntaxError: invalid syntax的解决方法总结

今天学习了python,然而刚开始就出了一个难题,明明代码没有一点问题,可是每次运行都会显示 “SyntaxError: invalid syntax”。“SyntaxError: invalid syntax” 的意思就是 语法错误;经过查询解决了这个问题,所以总结一个这个问题的解决方法:版本问题:因为python2和python3是不兼容的;可以尝试更换版本;粗心问题:忘...

2019-10-29 16:59:50 1913747 143

原创 shared_ptr智能指针缺陷的解决方法

在上一篇博客C++:智能指针中详细介绍了C++中的一些智能指针,其中,shared_ptr智能指针有三个缺陷:线程不安全;不能管理malloc出来的资源,不能管理文件指针;可能会产生循环引用的问题;第三个缺陷(循环引用)的解决方法在C++:智能指针这篇博客中已经解决了;本篇博客主要介绍第一和第二中缺陷的解决方法;目录:      1...

2019-10-18 18:32:59 2429

原创 C++:智能指针

RAII是什么?RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。智能指针(std::shared_ptr和std::unique_ptr)即RAII最具代表的实现,使用智能指针,可以实现自动的内存管理,再也不需要担心忘记delete造成的内存泄漏。毫不夸张的来讲,有...

2019-10-09 23:25:50 748 1

原创 【剑指offer】面试题3:数组中重复的数字

第一类:题目描述:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了。也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:输入长度为7的数组{2,3,1,0,2,5,3},对应的输出为数字2或3。方法一:int Find1(int* arr, int size){ sort(arr, arr + size);...

2019-09-22 22:04:40 161

原创 【剑指offer】面试题65:不用加减乘除做加法

题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用 “+”,“-”,“*”,“/”四则运算符号。解题思路: 三步走: 1. 将两个数按位相加,不考虑进位(即做异或操作);2. 处理第一步没有考虑的进位,将两个数按位相与,将结果左移一位;3. 将第一步和第二步的结果相加,如果产生进位,继续重复前两步,直到不产生进位为止;这个思路就是将十进制运算转换成二进制运算:两个二进...

2019-09-19 18:38:35 114

原创 模拟实现一个简易的Shell

在实现这个简单的shell时,需要了解进程创建,进程调度,进程等待,进程替换的概念。这在我之前的博客中有比较细致的解析;

2019-08-05 19:18:05 1028

原创 Linux:利用wait()函数得出子进程的退出状态

在上一篇博客中提到进程等待时,用到了两个函数wait()函数和waitpid()函数;在这两个函数中都有这样一个整型参数status,这个参数的作用就是:获取子进程退出状态;那么如何利用这个参数来得出子进程的退出状态?首先,先来了解一下这个参数的结构...

2019-08-01 19:29:36 1194

原创 Linux:进程控制之进程等待,进程替换

进程等待进程替换

2019-08-01 17:45:43 220

原创 Linux:进程控制之进程创建,进程终止

进程创建进程调度

2019-07-28 18:11:53 198

原创 Linux:僵尸进程和孤儿进程

Linux下新进程可以由fork()函数来创建,父进程会根据fork()函数的返回值(-1,0,大于0)来做出判断。通常情况下,父进程在子进程退出后,做一些“善后”工作(即进行一些资源清理的工作),子进程退出时,只会把打开的文件句柄,内存占用,打开的资源进行释放,但是不会清理进程控制块PCB信息,接下来就是父进程的工作了。那么如果父进程没有完成好“善后”,会出现什么问题呢?- 僵尸进程1. ...

2019-07-24 22:45:27 148

原创 C++特性之多态

什么是多态?

2019-07-24 00:21:31 116

原创 C++:动态绑定和静态绑定

静态类型和动态类型静态类型和动态类型是针对于对象来说的:对象的静态类型:就是它在程序中被声明时所采用的类型(或理解为类型指针或引用的字面类型),在编译期确定;对象的动态类型:是指类型指针或引用的实际类型,在运行期确定;静态绑定和动态绑定静态绑定又称为前期绑定(早绑定),在程序编译期间确定了程序的行为,也称为静态多态,比如:函数重载;动态绑定又称后期绑定(晚绑定),是在程序运行期间...

2019-07-23 19:44:35 202

原创 Linux:如何用指令安装gcc/g++, gdb, vim

查看配置

2019-05-20 14:49:38 685

原创 Linux:目录,权限和基本命令

几种基本指令:Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp权限:

2019-05-19 20:07:34 278

原创 C++特性之继承

1.继承的概念及定义2.基类和派生类对象赋值转换4.继承中的作用域5.派生类的默认成员函数6.继承与友元7.继承与静态成员8.复杂的菱形继承及菱形虚拟继承9.继承的总结和反思...

2019-05-16 22:06:45 165

原创 Linux:开发工具(常见编辑器)

Linux下常见的几种编辑器:VimVim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。它具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛的被使用。Vim和Emacs并列成为Linux系统用户最喜欢的编辑器BracketsBrackets是由Adobe Systems为Linux开发者设计开发并在GitHub上发布的开源前端开...

2019-05-12 20:27:10 1953

原创 C++:动态内存管理方式

占位

2019-05-10 23:00:45 199

原创 new和delete的底层实现原理

- new/new[]和delete/delete[]是什么?new/new[]和delete/delete[]是操作符;是C++用来实现动态内存管理的操作符;new/new[] 操作符是用来申请空间的;delete/delete[]操作数是用来释放动态申请出来的空间;- new/delete的实现原理new和delete是用户进行动态内存申请和释放的操作符,operator new...

2019-05-10 22:57:42 5858

原创 利用Linux简单实现彩色进度条

#include<stdio.h>#include<Windows.h>int main(){ char bar[102]; char laber[] = "|/-\\"; memset(bar,0,sizeof(bar)); for (int i = 0; i < 101; i++) { printf("[%-100s][%2d%%][%c]\...

2019-05-03 20:24:33 200

原创 C语言:动态内存管理方式(malloc,calloc,realloc,free)

为什么要进行动态内存管理?进行动态内存管理的几个函数开辟空间的函数1.malloc()2.calloc()3.relloc()释放内存空间的函数4.free()

2019-05-02 16:44:02 366

原创 C++:浅拷贝的解决方法(深拷贝(传统写法,现代写法),写时拷贝)

什么是浅拷贝?第一种方法:深拷贝(传统方法)第二种方法:深拷贝(现代简洁方法)第三中方法:写时拷贝

2019-04-20 23:06:38 830

转载 C++:空类和空结构体的大小为1的原因

对于空结构体和空类大小是1这个问题,首先这是一个C++问题,在C语言下空结构体大小为0(当然这是编译器相关的)。这里的空类和空结构体是指类或结构体中没有任何成员。在C++下,空类和空结构体的大小是1(编译器相关),这是为什么呢?为什么不是0?这是因为,C++标准中规定:“no object shall have the same address in memory as any ot...

2019-04-17 23:34:43 380

原创 C语言:检测机器是大端还是小端的方法

多种方法1.int a = 1;((char*)(&a))2.共用体union{int a ;char i ;}union u;u.a = 1;u.i = ?

2019-04-10 16:58:40 2250

原创 数据结构:有关结构体的几个小问题(#pragma pack(), offsetof宏 )

#pragma pack()用法;offsetof宏的用法;

2019-04-07 17:26:13 276

原创 数据结构:排序(插入,选择,交换,归并)及其特性

常见排序算法1.插入排序(直接插入排序,希尔排序)直接插入排序//直接插入排序void InsertSort(int* array, int size){ int i = 0,j = 0,k = 0; for (i = 1; i < size; i++) { for (j = i - 1; j >= 0; j--) { if (array[j] < ...

2019-04-07 11:38:29 1193

转载 计算时间复杂度和空间复杂度的方法

转载一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。文章最后,举例使用二分查找和斐波那契的递归和迭代方法,分别说明时间和空间复杂度。时间复杂度:首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。 当我们面前有多个算法时,我们可以通过计算时间复杂度,判断出哪一个算法在具体执行时花费时间最多和最少。常见的时间复杂度有:常数阶O(1),...

2019-03-29 14:29:50 434

原创 结构体和结构体的大小(内存对齐规则)

结构体定义:结构体的功能:举例(代码):重点——结构体的大小类定义:类的功能:举例:重点——类的大小链接(内存对齐——规则及原因)结构体与类的联系...

2019-03-29 14:12:28 5451 3

原创 C++:C++入门知识总结

C++C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++有四大特性:抽象,封装,继承,多态。 这些特性将会在后面的博客中详细解释。在这篇博客中主要总结一下C++入门的基础知识;1.C++文件的命名方式创建C++工程的文件的命名方式与C语言不同,C文件的后缀为:.c ,而C+...

2019-03-21 18:03:07 239

原创 浅析时间复杂度和空间复杂度

一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。即用空间复杂度和时间复杂度来衡量。下面,就是博主对空间复杂度和时间复杂度的浅析。空间复杂度(Space Complexity)什么是空间复杂度?空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。注意: 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空...

2019-03-20 18:46:55 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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