自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 问答 (1)
  • 收藏
  • 关注

原创 多线程以及python的多线程

1.1 线程和进程进程:系统分配资源最小单位,进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。线程:系统调度最小单位,线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程1.1.1什么是多线程呢?即就是一个程序中有多个线程在同时执行。单线程:多个任务只能依次执行。

2021-10-09 14:09:36 239

原创 mac bookpro 从睡眠状态恢复后没有声音

这是因为Mac OS X 的核心音频守护进程「coreaudiod」出了问题,可以按照以下操作步骤解决。第一步:点击桌面右上角"聚焦"搜索,输入[活动监控器]即可找到。"聚焦"搜索的快捷键在“系统偏好设置”——“键盘”——“快捷键”——“聚焦”中查看第二步:在活动监控器中输入 [audio],就能查看到「coreaudiod」的进程。第三步:双击两下coreaudiod进程,点击弹出的对话框中的退出按钮,此时声音就会恢复过来了。...

2021-09-22 15:41:51 540

原创 Django cache redis 最全介绍

cache.add(key, value, timeout=DEFAULT_TIMEOUT, version=None, client=None):如果键不存在,则在缓存中设置一个值。如果给定Timeout,使用该Timeout作为键;否则使用默认的缓存超时。如果存储了该值则返回True,否则返回False。clear()清除所有键值对client获取客户端cclose()关闭缓存链接decr(self, key, delta=1, version=None)从缓存中的值减去delta。

2021-07-29 17:53:06 870

原创 记录一个使用imgkit库转图片在windows上可能会出现的问题 iis OSError: [WinError 6] 句柄无效

最近项目有需求需要将富文本输入框的内容转成图片给app显示,从前端拿到了html格式str,网上找到了imgkit这个库,真心十分强大,作者也很好(华裔/国人),支持将html文件 str 和url转成图片或者pdf,网上很多例子就不赘述了。我在本地和Django中跑都没有问题,但是放在iis 中就报错 OSError: [WinError 6] 句柄无效,找了一圈也没找到原因,遂去作者的github 写了issues 没想到得到了作者的回复并修复了,https://github.com/jarre

2021-03-18 13:33:01 357

原创 python imgkit wkhtmltopdf OSError: [WinError 6] 句柄无效

今天发现一个问题,按照网上的教程实现html转图片写好demo,在本地可以跑,放到django也可以,但是放到iis 中就报错无效的句柄我在终端手动启动项目 python manage.py runserver 没问题错误日志:File ".\Plugin\imgkit.py", line 25, in generate_img_htmlcfg = imgkit.config(wkhtmltoimage=path_wkimg)File "c:\api\venv\lib\site-packages\

2021-03-11 10:24:29 400

原创 django chache 缓存

安装网上有很多教程自己只 pip 安装了 python-memcachedsetting 中增加cache配置# localhostCACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', }教程https://docs.djangoproject.com/zh-

2021-02-24 13:59:36 179

原创 django request.body、request.POST、request.data

request.POSTdjango中的request.POST只能取到Content-Type(请求头)为application/x-www-form-urlencoded(form表单默认格式)的数据,如果请求头为application/json(json格式),multipart/form-data(文件)等格式无法取到,只有在request.body里面能取到原生的数据。当发送过来的是JSON数据是,request.POST取到的数据是空的,这时只有用request.body取,再反序列化才能使用

2021-02-20 15:46:44 4221 1

原创 Python开启尾递归优化,解决Process finished with exit code -1073741571 (0xC00000FD)

首先,递归调用是函数调用自己本身,在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。但是,Python解释器没有做优化,即使把递归函数修改成尾递归的方式依然无法解决问题

2021-02-19 15:03:22 1847

原创 普通循环,迭代,递归

首先:递归和迭代都是循环的一种。普通循环def demo_0(n): # n>=1 res = 0 for i in range(1, n+1): res += 1 return res迭代迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。迭代则使用计数器结束循环。def demo_1(n): # n>=1 res = 0 f

2021-02-19 11:32:24 623

原创 windows apache部署django卡住,django线程被杀死

最近使用apache 在windows部署django项目的时候,出现了一个奇怪的问题,httpd(apache)服务刚启动时候没有问题,过大概一分钟就卡住没有返回,查看日志C:\Apache24\logs\error.log发现是线程被杀死了,网上找了半天没有发现什么原因。后来不知道在哪里看另外一个问题,把这个问题解决了。django版本问题原来使用的是Django 3.0 更换成Django2.1.3 即可解决。顺便写一下自己遇到的其他坑:1、版本需要对应好apache 和python 和

2020-12-29 15:16:20 898 3

原创 iis7无法写入配置文件,更换进入方式解决

如图,公司的服务器iis服务器什么操作都会报这个错误,虽然可以正常的启动和重启,但是无法修改配置文件,困扰了很长一点时间,按照网上的各种方法试了个遍都没有解决,后来终于找到原因了。首先介绍一下网上的一些方法:1、文件applicationHost.config被某个进程临时占用,关闭整个iis服务(单独关闭某个网站也无用)依然无法解决2、分区是fat32导致的,云服务器基本上都应该是NTFS3、config文件权限的问题,修改了权限还是无法操作4、直接将配置文件替换文件夹下的(配置文件太大,还要.

2020-12-29 15:05:37 2830 1

原创 复习:OSI七层和TCP/IP五层网络协议

OSI七层模型1、OSI的来源  OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。  ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。2、OSI七层模型的划分  OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。如

2020-11-16 16:11:48 438

转载 crudini命令 – 操纵ini文件

crudini 是 Pádraig Brady 用 Python 开发的、用来对配置文件(即ini文件)进行编辑的工具。crud是4个单词的首字母简写,即create、read、update和delete,中文译为“增删改查”。这个是数据的最常见的4类操作方法。有些软件的配置文件采用的是ini格式,如php.ini。这样的配置文件往往会成若干个段落。段落以[default]之类的格式标识。具体的配置条目则为“datadir=/var/lib/data”形式。语法格式: crudini [参数] [文件]

2020-10-13 17:33:38 990

原创 oslo_config 重载

日常场景中,总会出现需要修改配置文件的情况,为了实现修改配置文件可以动态生效,oslo_config 提供了reload的功能。oslo_config 中cfg.py的源码@__clear_cache@__clear_drivers_cachedef reload_config_files(self): """Reload configure files and parse all options :return: False if reload configure files f

2020-09-29 14:24:49 1181

原创 python .so 和.py文件执行顺序

先说答案,当本地路径下同时存在.so和.py文件的情况下,优先调用的是.so环境centos7.6应用场景  Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效。  python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要.准备工作  环境是可为linux/centos,我Windows10本地是Bash o

2020-09-23 15:11:06 2267

原创 dpkg命令

dpkg命令是Debian Linux系统用来安装、创建和管理软件包的实用工具。语法dpkg(选项)(参数)选项-i:安装软件包;-r:删除软件包;-P:删除软件包的同时删除其配置文件;-L:显示于软件包关联的文件;-l:显示已安装软件包列表;–unpack:解开软件包;-c:显示软件包内文件列表;–confiugre:配置软件包。参数Deb软件包:指定要操作的.deb软件包。实例dpkg -i package.deb #安装包dpkg -r package

2020-09-22 14:24:20 3989

原创 mac navicat 提示错误Connection is being used.

如上图,编辑链接保存提示Connection is being used.,明明已经断开链接了为什么还显示链接已被使用。**原因是:**之前的链接还在重连,多等一会,或者把软件重开即可编辑。

2020-09-16 09:38:33 7473

原创 ssh登录时报错异常WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eaves

2020-09-15 10:50:05 1436

原创 杂谈:记一次因git 未add直接git reset --hard的惨案

前情提要:由于公司只有一个master分支,而且每个月都要出版本。事情是这样的,现在的这家公司没有什么分支管理,所有项目只有一个master分支,每个月低都要出新版本,不管大小改动都是(这次改动较大9116干了两个多星期了),版本出了后可能会有新的问题,还要回头去改。别说为什么不拉新分支,打tag,别问,问就是你懂个屁。由于已经是九月的第一个星期了,已经开始这月的新功能开发了,但是由于八月底的版本新测出bug,要修复,又很急,菜鸟本人就在本地git branch 了一个新分支,将未add commit的m

2020-09-05 11:55:31 1601

原创 Django事务 django.db.transaction

Django 中可以通过django.db.transaction 模块提供的atomic来定义一个事务**atomic提供两种方案实现事务**1、装饰器用法:from django.db import [email protected] viewfunc(request): pass装饰器用法:整个视图中所有 MySQL 数据库的操作都看做一个事务,范围太大,不够灵活。而且无法直接作用于类视图2、with 语句用法:from django.db

2020-09-05 11:31:49 1485

原创 Python3 文件f.seek() 方法

seek() 方法用于移动文件读取指针到指定位置。语法:fileObject.seek(offset[, whence])参数解析:offset – 开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。返回值:成功,返回新的文件位置,失败,则函数返回 -1。例子:f = open('test

2020-09-05 11:16:21 13660

原创 django 修改request.data AttributeError: can‘t set attribute

直接代码request_data = request.data.copy()request_data["a"] ="brequest.data.update(request_data)

2020-08-28 16:51:21 1383

转载 restful patch 和 put 请求的区别

laravel 使用 Route::resource 生成 restful 架构的路由, 里面的更新用的是 patch 请求, 而有的地方说是用 put, 就查了一下, 这篇说得很明白, 就复制过来了put 更新全部资源patch 方法用来更新局部资源假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么做?人们通常(为徒省事)把一个包含了修改后userName的

2020-08-12 10:28:34 2863

原创 Linux查询端口是否被占用的四种方法

1.netstat或ss命令netstat -anlp | grep 802.lsof命令这个命令是查看进程占用哪些文件的lsof -i:803.fuser命令fuser命令和lsof正好相反,是查看某个文件被哪个进程占用的。Linux中,万物皆文件,所以可以查看普通文件、套接字文件、文件系统。而套接字文件就包含了端口号。比如查看22端口。fuser 22/tcp -v USER PID ACCESS COMMAND22/tcp:

2020-08-09 15:21:01 1437

转载 网络扫描工具nmap

nmap一般就用来扫描主机是否在线(特别是扫描局域网内存活的机器)、开放了哪些端口。其他的功能用的比较少,做渗透的人可能要了解的多些。1.1 选项说明nmap需要自行安装。shell> yum -y install nmap使用nmap -h可以查看选项和用法。选项非常多,这是功能强大的工具带来的必然结果,但简单使用并用不到几个选项。Usage: nmap [Scan Type(s)] [Options] {target specification}TARGET SPECIFICATION

2020-08-09 15:18:56 3391

原创 mac下shell工具 finalshell 千 万 别用! 别用! 别用!

本人20款16存mac book pro2.6 GHz 六核Intel Core i7 的cpu用了finalshell cpu 直接升到了60%-70%,不开用本地终端的ssh cpu基本维持在5% ,极少情况会超过10%,网上看了一些文章,又说这个软件内置了挖矿程序,还是国人程序,吓到我赶紧卸载了,乖乖的用iterm2 吧,同时这里也吐槽一下chrome 真的蛮吃内存的,十几个窗口吃了好几个g,比我虚拟机吃的都多...

2020-08-07 09:12:10 9947 19

原创 Python argparse.ArgumentParser()

1、介绍该argparse模块使编写用户友好的命令行界面变得容易,该程序定义所需的参数,argparese可以找出并介意出这些参数,当用户提供无效参数时,该模块还会自动生成帮助和使用情况并发出错误。[官方文档]:https://docs.python.org/3/library/argparse.html2、一个简单的例子import argparseparser = argparse.ArgumentParser()parser.add_argument("integers") pars

2020-07-30 10:22:44 2096

转载 加密、签名和SSL握手机制细节

openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html1.1 背景知识对称加密 :加密解密使用同一密钥,加解密速度快。随着人数增多,密钥数量急增n(n-1)/2。非对称加密 :使用公私钥配对加解密,速度慢。公钥是从私钥中提取出来的,一般拿对方公钥加密来保证数据安全性,拿自己的私钥加密来证明数据来源的身份。单向加密 :不算是加密,也常称为散列运算,用于生成独一无二的校验码(或称为指纹、特征码)来保证数据的完整性和一致性,如MD

2020-07-29 21:46:11 1149

原创 GET,POST,PUT,DELETE请求后端接受都变成GET

今天遇到一个诡异的问题,增加了nginx监听的端口,导致了所有请求传到后端都变成了get,修改监听端口解决问题

2020-07-24 17:29:55 1913

原创 libvirt xml 模板

node-br0 //虚拟机名称 2 //最大内存,单位M 2 //可用内存,单位M 2 //虚拟cpu个数 hvm //ISO文件启动 destroy restart destroy /usr/bin/qemu-system-x86_64 //KVM启动程序,ubuntu版本 ...

2020-07-12 15:45:58 1498

原创 虚拟机虚拟网络的设置,NAT模式、Bridge模式、Internal模式

1.NAT模式也有人称此种模式为host模式。在这种模式下虚拟机可以理解成没有自己的独立网卡。所有访问虚拟机的请求其实是直接发送给宿主机,然后通过访问宿主机转发到虚拟机上的。相应的虚拟机访问其他网络,也是先转发到宿主机然后在转发出去。对于宿主机之外的网络,是不知道该虚拟机存在的。如果主机的网卡崩溃,那么虚拟机是不能对外通信的。2.Bridge模式桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接

2020-07-12 15:39:00 1275

原创 flask框架中四种session

①状态保持session 这个session与所有的框架和语言都无关, 就是用来实现状态保持的cookie和session都是基础键值对的字符串信息, session是基于cookie实现的②flask上下文的session session是请求上下文的一种,封装了用户信息,可以对数据库中缓存的用户信息进行读写操作.③flask扩展包Session 可以通过flask-session中的Session类对②中的session信息进行一系列操作,例如储存到哪个数据库中redis/m

2020-07-12 15:35:26 1175

原创 浅入浅出 kvm qemu libvirt

KVMKVM是linux内核的模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关如Intel的EPT和AMD的RVI技术,Guest OS的CPU指令不用再经过Qemu转译,直接运行,大大提高了速度,KVM通过/dev/kvm暴露接口,用户态程序可以通过ioctl函数来访问这个接口。见如下伪代码open("/dev/kvm")ioctl(KVM_CREATE_VM)ioctl(KVM_CREATE_VCPU)for (;;) { ioctl(KVM_

2020-07-12 15:28:36 1178

原创 总结一下centos7 安装qemu遇到的问题

本机基本信息:CentOS Linux release 7.8.2003 (Core)make -j4 指的是几个cpu查看版本:kvm -versionqemu-img -V如果用的xteram 要退出root用户使用普通用户才能正常创建虚拟机1、直接使用yum install qemu —失败2、从QEMU官网上下载QEMU源码的tar包wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2tar xjvf qemu-2

2020-07-12 15:22:36 6304

原创 libvirt详解

**提要:**虚拟云实现的三部曲:虚拟化技术实现–>虚拟机管理–>集群资源管理(云管理)。libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。1、什么是libvirtLibvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。位于虚拟机和云管理中间的一个抽象管理层。它包括一个API库,一个守护程序(libv

2020-07-12 15:09:54 17246

转载 GPU虚拟化技术 GVT-g GVT-s GVT-d AMD NVIDIA

GPU虚拟化的状况虚拟化技术发展到现在,已经比较成熟了。CPU、内存、存储、IO设备等都已经可以虚拟化,可以实现多个虚拟机实例共享同一硬件资源。而GPU(图形处理器单元)作为计算机的一个很重要的组成部分,其浮点运算和并行运算速度可以比CUP都强。但是在虚拟的技术中,QEMU对GPU虚拟的支持,很长时间都是纯粹的软件模拟,并没有充分利用硬件GPU的资源,性能大大折扣/GPU密集型工作性负载,对高性能GPU虚拟化的需求越来越强烈。如:3D/2D 图形加速游戏VDIMedia Transcodin

2020-07-12 10:46:31 7760

转载 Python中实例对象__class__ 如何进行属性和方法调用原因分析 以及实例方法类方法静态方法的真正调用

在正式开始之前,我们先看一段代码:下面我们来分析这段代码,上图的左边是实际的代码过程,右边为执行后的结果。**Python中一切皆对象。**绝对不是一句空话,在Python的解释器里,不仅有自己定义是对象,使我们传统意义上认为一切东西都是对象,对于执行的代码、函数、以及数据类型,你都可以在Python的源代码中找到相应的类对象,因此他们也都是实例对象。在Python3中,一切对象皆有父类对象。所有对象都有继承父类对象,要么继承于 自定义的对象,要么继承自内置的父类对象即object 。因此只要是有自

2020-06-08 10:54:16 2097

转载 python sort 与 sorted 区别

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内置函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。sort() 函数用于对原列表进行排序。list.sort( key=None, reverse=False)key – 用来进行比较的元素,指定可迭代对象中的一个元素来进行排序。reverse – 排序规则,reverse = True 降序, r

2020-05-18 10:32:47 1774

原创 记一次 raise ValueError("Cannot convert {0!r} to Excel".format(value)) openpyxl 中ws.append()异常

不废话直接上截图:网上搜了很多,没找到原因,猜测append中某个变量属性不对,2.6.4版本的openpyxl貌似只支持str的对象,所以每次append就把每个变量的属性打印出来,看到是某些变量属性为dict,对相关变量做一次str()即可解决。ws2.append([str(demo.item)])...

2020-05-12 16:38:54 7854 3

原创 sqlalchemy order_by降序/升序

sqlalchemy中的query默认是按id升序进行排序的,当遇到复杂情况时就需要时用order_by。下面介绍几种order_by 的几种使用方法session.query(User).order_by(User.create_time.desc()).all()from sqlalchemy import descquery.order_by(desc(Usser_ID)).all()order_by多种条件自定义排序需要根据status来排序,status的值为(1,2,3),排序的

2020-05-12 16:29:17 16502

空空如也

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

TA关注的人

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