自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 快速幂

所谓的快速幂,其目的是为了快速求幂,将时间复杂度从朴素算法的O(n)降到O(logn)。假如现在要求 a^b,按照朴素算法,就是将a连乘b次,时间复杂度为O(b),即O(n)级别。是一个将指数不断除以2,底数不断乘方的过程(指数为奇数要变成偶数)。举例:int quick_pow(int a, int b) { int ans = 1, base = a; while (b) { if (b & 1) { ans = ans * base; } base = bas

2020-10-07 16:37:34 267

原创 二叉树最大宽度(C++实现)

文章目录题目一:计算宽度包含null结点题目二:计算宽度不包含null结点题目一:计算宽度包含null结点描述:给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。思路:每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度使用完全二

2020-10-07 09:22:49 2513

原创 【Shell笔记】计算某一天距离今天的天数

这段代码并不一定完全正确,而且这段代码计算的只是今天之前的日期距离今天的天数,这段代码只是作为在编写时解决的一些问题的笔记#!/bin/bash month_days=(0 31 28 31 30 31 30 31 31 30 31 30 31)

2020-09-08 20:06:10 1203

原创 【Shell】while循环处理管道传入数据

完成如下要求:读取/etc目录下的所有普通文件,寻找其中最长的一行,输出其内容和长度(忽略/etc的所有子目录)#!/bin/bashmax_len=0max_str=""ls -l /etc | grep ^- | while read line; do len=${#line} # 获取line变量的长度 if ((len > max_len)); then max_len=$len max_str=$line fidone

2020-09-08 19:49:01 975

原创 【Shell】变量嵌套(eval)的使用

读取若干输入,把第二个位置参数及其以后的各个参数指定的普通文件复制到第一个位置参数指定的目录中,其中若第一个参数指定的目录不存在,则创建它;若存在且为普通文件,则删除该文件,并创建为目录;若存在且为目录,则清空这个目录第二个参数及其以后的参数,若为普通文件则复制到第一个参数指定的目录,否则忽略...

2020-09-08 17:21:13 1102

原创 【Python】将print内容重定向到日志文件

我的方法:打开一个文件,然后把屏幕输出流重定向到文件输出流import sys, timelog_file = open(time.strftime("%Y{0}%m{0}%d{0}%H{0}%M{0}%S".format('_'), time.localtime(time.time())) + '.log', 'w')sys.stdout = log_file ……print(xxx)print(xxx) ……log_file.close()我搜索的看见较多的方式:class L

2020-08-07 11:23:54 1277 1

原创 【Python】实现栈、队列、优先队列

collection中的deque实现栈、队列deque是为了高效实现插入和删除操作的双向列表,deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。import collectionsclass queue: def __init__(self): self._deq = collections.deque() def Push(self, data):

2020-08-05 15:22:58 279

原创 【项目】File_Auto_Backup

非热点压缩模块流程图:服务端监听处理流程:客户端流程:

2020-08-04 23:07:34 211

转载 【Python】多线程是否多线程

直接甩结论:因为Python的线程虽然是真正的线程,但解释器执行代码时,有一个GIL锁:Global Interpreter Lock,任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁,所以,多线程在Python中只能交替执行,即使100个线程跑在100核CPU上,也只能用到1个核。GIL是Python解释器设计的历史遗留问题,通常我们用的解释器是官方实现的CPython,要真

2020-07-29 20:49:36 238

原创 【Python】装饰器及应用——装饰器有点意思

文章目录装饰器定义一个装饰器使用装饰器分析装饰器加参数的装饰器注意问题装饰器应用忽略函数异常装饰器函数重复调用装饰器线程超时装饰器刚学习装饰器的时候,没觉得装饰器有多有用,但是后期学习并应用的时候,发现装饰器这个设计模式好牛!!!装饰器所谓装饰器,“装饰”是装饰什么呢?装饰就是给函数添加装饰,就是想要给一个函数附加一个功能,但是又不想改变原函数的定义,这可咋办呢,于是就可以使用装饰器,来给原来的函数添加新功能。假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改no

2020-07-26 16:26:02 127

原创 【Python】防Windows锁屏

目标Windows如果长时间鼠标键盘不操作,系统就会进行锁屏操作,但是我现在不想让它锁屏,自己通过python脚本来实现不让它息屏。策略如果不让系统锁屏,那么就可以通过在系统设置息屏时间内,来模拟键盘或鼠标操作达到系统不锁屏的目的。那么就要找到操作鼠标键盘的模块,来进行模拟。python中有很多模块可以达到此目的。下面说明几个操作鼠标键盘的方法。实现...

2020-07-23 08:55:26 3631 1

原创 【Python】在Windows下以管理员身份执行cmd命令

目标以及问题我在完成一项任务中,需要杀掉一个弹窗进程,但是Windows下执行taskkill /im Au_.exe /f并没有杀掉进程,而是提示:拒绝访问该进程。经过分析是因为权限不够,无法杀掉这个进程。所以我要想办法来获取更高的权限杀掉这个进程。查看博客找了很久没有找到自己想要的,解决这个问题有两种方案。 一种是更高权限的命令,需要键入用户名和密码,这种程序跑在不同主机,有不同的用户名和密码,不够自动化,所以不是我想要的。还有就是一种在python程序中获取管理员的权限执行。解决问题代码def

2020-07-18 10:59:25 11246 9

原创 Windows cmd命令操作文件

备注:我个人习惯使用白底黑字,所以实例图片都是不是黑黑的框创建文件夹 md <folderName> 或者 mkdir <folderName>删除文件夹使用rd或rmdir命令,完整命令rd /s /q [盘符:\][路径\] 新目录名,因为rd只能删除空的文件夹,而如果其中有子文件或子文件夹的时候就会停下来,这时我们加上/s就可以直接删除,但是删除过程中会提示你是否确定删除,于是使用/q,即quiet,安静模式:所以使用以上命令会完整删除你选中的整个文件夹。创

2020-07-17 15:51:10 1388

原创 【Python】pickle和json序列化及json配置文件常见问题

在程序运行的过程中,变量都是在内存中,比如,定义一个dict:d = dict(name='rose', career='student', age='20')把变量从内存中变成可存储或传输的过程称之为序列化,反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化。picklepickle.dumps()方法把任意对象序列化成一个bytes,然后,就可以把这个bytes写入文件。用另一个方法pickle.dump()直接把对象序列化后写入一个file-like Object:impor

2020-07-04 09:42:49 179

原创 【Python】with语法及上下文的实现与使用

在Python中,读写文件这样的资源要特别注意,必须在使用完毕后正确关闭它们。正确关闭文件资源的一个方法是使用try…finally:try: f = open('/path/to/file', 'r') f.read()finally: if f: f.close()写try…finally非常繁琐。Python的with语句允许我们非常方便地使用资源,而不必担心资源没有关闭,所以上面的代码可以简化为:with open('/path/to/file',

2020-06-18 13:02:30 223

原创 【Python】面向对象整理

文章目录数据封装访问限制访问权限的注意点来了使用__slots__使用@property实例属性和类属性继承&&多态鸭子类型定制类__str__ && __repr____iter__ && __next__因为我有C++/Java面向对象的基础,所以这里的类和对象就不再多做解释。面向对象都会有封装、继承、多态特性、下面一一介绍数据封装因为python是动态语言,所以对变量类型的控制不同于C++/Java等静态语言,以下面代码为例,其中定义了一个Stu

2020-06-18 11:02:59 143

原创 【Python】生成器(generator)

刚开始接触生成器的时候,个人觉得这个东西没有必要,迭代器和函数不就够了吗,但是稍微了解了一些生成器的时候,突然觉得生成器……“真香”,包括到contextlib支持with的使用,异步IO的使用,越来越喜欢生成器了……生成器的作用    首先,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。    所以,如果列

2020-06-17 20:28:59 151

原创 【Python】is关键字和==

Python中所有类型都通过引用存取, 即便是"基本类型"也不例外Python中的对象包含三要素:id、type、value其中:id用来唯一标识一个对象,type标识对象的类型,value是对象的值is 和 ==is判断的是a对象是否就是b对象(两个引用是否指向同一个对象),是通过id来判断的== 判断的是a对象的值是否和b对象的值相等,是通过value来判断的因为str是不可变类型,所以a和b指向了同一个对象,所以a和b无论值还是引用都是相等的。而可变类型,则不同,虽然值是相同的,但

2020-06-14 00:17:46 349

原创 【Python】模块的使用

本文参照廖雪峰的官方网站。模块首先Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。我是在CentOS来练习使用模块的,如下:#!/usr/bin/python3# -*- coding: utf-8 -*-' a test module '__author__ = 'rose'import sysdef test(): args = sys.argv if len(args)==1: print('Hello, w

2020-06-13 17:45:34 141

原创 【Python】函数语法及相关练习题目

文章目录__name__属性定义一个函数参数传递可更改(mutable)与不可更改(immutable)对象参数必须参数关键字参数默认参数不定长参数强制位置参数匿名函数return语句练习题目斐波那契最大公因数判断回文素数设计一个函数返回给定文件名的后缀名计算指定的年月日是这一年的第几天在屏幕上显示跑马灯文字__name__属性一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。定义一

2020-06-09 17:36:59 620

原创 【Python】入门练习题目

题目python的幂运算和除法运算python中可以像数学不等式一样写,不用在中间写and的逻辑语句华氏度摄氏度转换计算圆的周长和面积判断闰年计算三角形的周长和面积判断素数打印图形求最大公因数和最小公倍数遍历list水仙花数正整数翻转猜数字斐波那契数列完美数python的幂运算和除法运算python中的幂运算:a的b次方为a ** bpython中的除法运算:a / b表示两个数值的除法,所得结果是浮点数类型,比如5 / 2 = 2.5python中的整除运算:a // b表示两个数值的除法,所得结

2020-06-08 15:35:44 356

原创 CentOS 7允许远程连接mysql数据库

使3306端口对外开放由于服务器没有对外开放mysql的默认端口3306导致:Can’t connect to MYSQL server on ‘’(10060)CentOS 7以下开启方式iptables -I INPUT -p tcp --dport 3306 -j ACCEPTiptables saveservice iptables restartCnetOS 7开启方式firewall-cmd --permanent --zone=public --add-port=3306/t

2020-05-11 19:01:10 583

原创 【JavaScript】知识点总结

文章目录JavaScriptJavaScript组成javascript和html的结合方式数据类型和声明变量js语句运算符数值运算字符串的相加相减运算boolean类型相加减\==和===js的数组定义方式Array常用属性和方法js的函数定义函数(三种)js的全局变量和局部变量js的全局函数js函数重载js的String对象与html相关的方法与java相似的方法js的Date对象js的BOM对象js的DOM对象document对象Element对象JavaScript是基于对象和事件驱动的脚本语言

2020-05-09 23:07:29 311

原创 【CSS】知识点总结(快速入门)

文章目录CSS:层叠样式表css和html的结合方式css的选择器1. 标签选择器2. class选择器3. id选择器扩展选择器1. 关联选择器CSS:层叠样式表层叠:一层一层的样式表:很多的属性和属性值css使页面显示效果更炫酷css将网页内容显示和样式进行分离,提高了显示功能css和html的结合方式在每个html标签都有一个属性style,把css和html结合在一起...

2020-05-08 09:38:30 171

原创 【C++】模板特化

模板特化的必要性使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,比如:template <class T>bool IsEqual(T& left, T& right) { return left == right;}void Test() { char* p1 = "hello"; char* p2 = "worl...

2020-04-18 22:31:21 909

原创 【C++11】快速了解lambda表达式

学习C++,怎么可以不知道lambda表达式,不要落伍了。lambda表达式的必要性struct Com { bool operator()(int a, int b) { return a < b; }};int main() { vector<int> a = { 10, 1, 3, 9, 2, 0, -1, 30 }; sort(a.begin(), a...

2020-04-14 01:02:26 147

原创 【项目】SpeakOutFreely

项目简介该项目是一个群聊娱乐系统,用户只要注册登录就可以在这个大群中进行畅所欲言,用户可以分享自己的心情,可以提出自己的问题,可以发表自己的观点……项目实现用户想要加入群聊需要登录账号和密码,如果没有账号则需要注册,登录验证使用了tcp协议,客户端向服务端发起注册或者登录请求,服务端接收客户端的注册或者登录信息。如果是注册,检查提交的注册信息回复客户端一个账号;如果是登录,验证登录的账号密码...

2020-04-12 00:19:59 339

原创 vim配置插件Taglist和WinManager

安装taglistTagList插件是一款基于ctags,在vim代码窗口旁以分割窗口形式显示当前的代码结构概览,增加代码浏览的便利程度的vim插件。从该网址下载:http://www.vim.org/scripts/script.php?script_id=273然后将其中的doc包中的文件导入到~/.vim/doc,将proc中的文件导入到~/.vim/plugin然后在~/.vim...

2020-04-07 08:46:51 420

原创 重构二叉树(C++)

题目描述根据一棵树的前序遍历与中序遍历构造二叉树。具体过程根据前序序列第一个结点确定根结点根据根结点在中序序列中的位置分割出左右两个子序列对左子树和右子树分别递归使用同样的方法继续分解TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) { if(pre.size(...

2020-03-29 12:07:46 599

原创 【Linux】浅谈Ext2文件系统

Ext2文件系统在上图中可以看出,ext2文件系统将整个分区划成若干个同样大小的块组(Block Group),从Block Group 0 到Block Group n。启动块(boot block)  文件系统中存储的最小单位是块(Block),而上图中启动块(Boot Block)的大小是确定的,就是1KB,启动块是由PC标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不...

2020-03-27 16:36:58 303

原创 【Linux】将输出重定向到文件或程序

标准输入、标准输出和标准错误一个进程需要从某个位置读取输入并将输出写入到屏幕或文件。从 shell提示符运行的命令通常会从键盘读取其输入,并将输出发送到其终端窗口。进程使用称为文件描述符的编号通道来获取输入并发送输出。所有进程在开始时之前需具有三个文件描述符。标准输入(通道 0)从键盘读取输入。标准输出(通道 1)将正常输出发送到终端。标准错误(通道 2)将错误消息发送到终端。如果程序打开连接...

2020-03-26 23:38:07 3398

原创 IO多路复用机制select、epoll

I/O多路复用的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。但是基于用户态的轮询处理,同一时间处理大量的描述符会不公平,因为它是一个一个处理...

2020-03-26 22:27:58 212

原创 【Linux】Tcp编程常用接口

文章目录Tcp传输过程创建套接字为套接字绑定地址信息服务端监听连接客户端发起连接请求服务端接受连接发送数据接受数据关闭套接字Tcp传输过程创建套接字socket()打开一个网络通讯端口,如果成功的话,返回一个文件描述符对于IPv4,family参数指定为AF_INET对于TCP协议,type参数指定为SOCK_STREAM,表示面向流的传输协议protocol传输层协议类型如...

2020-03-24 22:37:03 177

原创 【Linux】udp编程常用接口

创建套接字在内核中创建struct socket结构体,使进程与网卡之间建立联系#include <sys/socket.h>int socket(int domain, int type, int protocol);domain:地址域         AF_INET——IPv4地址域type:套接字类型    SOCK_STREAM——流式套接字    SOCK...

2020-03-24 21:32:36 251

原创 【C++】虚函数的声明和定义

多态(Polymorphism)是面向对象程序设计最重要的特性之一。C++ 通过结合虚函数和指针(引用)来实现多态。作为 C++ 用户,你当然知道如何将虚函数和指针(引用)结合起来以实现多态。但在这些概念之间,可能还存在些许模糊地细节问题。虚函数的定义根据 C++ 标准,虚成员函数应在类定义中生命,且必须有定义(实现)。注意,在类外定义实现虚成员函数时,不能再加 virtual 关键字。st...

2020-03-19 13:06:48 8831

原创 【STL】map、set简介以及常用接口

map、multimap、set、multiset底层都是红黑树map && multimap参考文档:  map  multimapmap和multimap里面存储的是<key, value>结构的键值对,键值对用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。关于键值对...

2020-03-18 20:00:34 146

原创 【C++】智能指针——值得一看

RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处:不需要显式地释放资源。采用这种方...

2020-03-13 14:33:10 114

原创 【C++】异常

异常

2020-03-13 08:56:05 127

原创 【Linux】线程池(C++实现)

线程池一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。实现一个线程池先封装一个待处理的数据和处理数据的函数 class ...

2020-03-07 18:45:27 243

原创 【数据结构】AVL树干货

@toc

2020-03-02 09:03:29 131

空空如也

空空如也

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

TA关注的人

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