def

Mysql临时表突增问题定位与分析

蹲街弑〆低调 提交于 2021-01-02 16:39:38
一、问题现象 数据展示系统出现异常,首页刷不出数据,查看日志后发现模块无法连接数据库(从库,以下数据库都表示从库),紧接着数据分析模块出现报警,服务器出现磁盘空间不足报警。 查看AWS RDS监控发现,在时间段 ‘08.31 19:15:00 - 09.01 01:19:00’ 内,数据库实例存储空间急剧下降 监控显示,数据库连接数量没有明显增加,但在该时间段内磁盘IO明显增大 磁盘IO 数据库连接数量 通过查看实例上磁盘的占用情况,发现磁盘临时表占用了大量空间(420G/500G),于是我们开始定位为何会有大量的临时表被持久化到磁盘上 二、问题分析与复现 2.1 临时表 MySQL中有两种临时表:外部临时表和内部临时表。其中外部临时表可有用户查询时手动创建保存一些中间数据,提升查询效率等; 内部临时表会在查询过程中由Mysql自动创建并存储某些中间操作的结果,这种操作可能出现在优化阶段或者执行阶段,所以这种临时表对用户不可见,一般通过EXPLAIN可以查看查询语句是否用到了内部临时表。 而内部临时表又可以被分为磁盘临时表和内存临时表,Mysql在使用内部临时表时会优先使用内存临时表,即将临时表存放在内存里,当临时表过大或内存不够用时,就会转化成磁盘临时表,存放在ibtmp1文件中。 在Mysql5.7中,内存临时表在查询结束后会被释放,而文件ibtmp1占用的空间不会被自动释放

第三节,CNN案例-mnist手写数字识别

落爺英雄遲暮 提交于 2021-01-02 14:04:43
卷积:神经网络不再是对每个像素做处理,而是对一小块区域的处理,这种做法加强了图像信息的连续性,使得神经网络看到的是一个图像,而非一个点,同时也加深了神经网络对图像的理解,卷积神经网络有一个批量过滤器,通过重复的收集图像的信息,每次收集的信息都是小块像素区域的信息,将信息整理,先得到边缘信息,再用边缘信息总结从更高层的信息结构,得到部分轮廓信息,最后得到完整的图像信息特征,最后将特征输入全连接层进行分类,得到分类结果。 卷积: 经过卷积以后,变为高度更高,长和宽更小的图像,进行多次卷积,就会获得深层特征。 1)256*256的输入(RGB为图像深度) 2)不断的利用卷积提取特征,压缩长和宽,增大深度,也就是深层信息越多。 3)分类 池化: 提高鲁棒性。 搭建简单的卷积神经网络进行mnist手写数字识别 网络模型: 两个卷积层,两个全连接层 输入[sample*28*28*1](灰度图) [ 28 * 28 *1 ] --> (32个卷积核,每个大小5*5*1,sample方式卷积) --> [ 28 * 28 * 32] --> (池化 2*2 ,步长2)--> [14 *14 *32] [ 14 * 14 *32] --> (64个卷积核,每个大小 5 * 5 * 32,sample方式卷积) --> [14 * 14 *64] --> (池化 2*2 ,步长2)--> [7 *

Python的垃圾回收机制

只谈情不闲聊 提交于 2021-01-02 14:04:30
一、垃圾回收机制 Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。 Python语言默认采用的垃圾收集机制是『引用计数法 Reference Counting 』,该算法最早George E. Collins在1960的时候首次提出,50年后的今天,该算法依然被很多编程语言使用。 『引用计数法』的原理是:每个对象维护一个 ob_ref 字段,用来记录该对象当前被引用的次数,每当新的引用指向该对象时,它的引用计数 ob_ref 加 1 ,每当该对象的引用失效时计数 ob_ref 减 1 ,一旦对象的引用计数为 0 ,该对象立即被回收,对象占用的内存空间将被释放。 它的缺点是需要额外的空间维护引用计数,这个问题是其次的,不过最主要的问题是它不能解决对象的“循环引用”,因此,也有很多语言比如Java并没有采用该算法做来垃圾的收集机制。 在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存。 引用计数案例(1) class ClassA(): def __init__ (self): print ( ' object born,id:%s ' % str(hex(id(self)))) ​ def __del__ (self): print ( ' object del,id:%s ' % str(hex(id

用Python进行Web开发,零基础学习Python编程路线

▼魔方 西西 提交于 2021-01-02 13:14:29
Web开发这样一个大概念,对小白来说,想学也不知道从哪下手,当今Web开发的一大热门语言是Python,从Python入手,学习Web后端开发,也许要容易些。 1 WSGI, 即Web Server Gateway Interface Web开发有两大基础: HTTP协议 HTML语言 HTTP协议在Web领域的重要性不必赘述,这样一个重要的概念,如果交给开发者去实现,且不谈编程,单是看懂庞大的协议,就会花掉大量的时间。好在我们意识到,实现协议的工作,显然是可重复利用的。可重复利用的HTTP协议实现,被封装在Python库里,就有了Python进行Web开发最基本的一个库:WSGI(Web Server Gateway Interface)。WSGI为开发者封装了HTTP协议的实现,将网络通信抽象为接收数据报和发送数据报的简单函数。对HTTP协议有基本了解的读者可以看一看下面的例子。 def application (environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return '<h1>Hello World!</h1>' 上面的这个函数就是WSGI规定的函数形式,接收两个参数environ, start_response,返回header和body

Python3选择排序

落爺英雄遲暮 提交于 2021-01-02 08:53:01
点击上方蓝字“ 开源优测 ”一起玩耍 声明 本公众号所有内容,均属微信公众号: 开源优测 所有,任何媒体、网站或个人未经授权不得转载、链接、转贴或以其他方式复制发布/发表。已经本公众号协议授权的媒体、网站,在使用时必须注明"稿件来源微信公众号:开源优测",违者本公众号将依法追究责任。 选择排序 概述 选择排序(Selection sort)是一种简单直观的排序算法。 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 基本过程 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 以此类推,直到所有元素均排序完毕。 代码 # -*- coding:utf-8 -*- __author__ = "苦叶子" import random ''' 公众号:开源优测 ''' # 随机生成1-10之间无序序列整数数据 def generator ( ) : random_data = [ ] for i in range ( 0 , 10 ) : random_data . append ( random . randint ( 1 , 1000 ) ) return

django

孤街醉人 提交于 2021-01-02 07:06:30
{{ form.as_table }} 以表格的形式将它们渲染在<tr> 标签中 {{ form.as_p }} 将它们渲染在 <p> 标签中 {{ form.as_ul }} 将它们渲染在 <li> 标签中 1 < form action ="" method ="post" novalidate > 2 {% csrf_token %} 3 < p > {{ form.name.label }} 4 {{ form.name }} 5 < span class ="pull-right error" > {{ form.name.errors.0 }} </ span > 6 </ p > 7 < p > {{ form.pwd.label }} 8 {{ form.pwd }} 9 < span class ="pull-right error" > {{ form.pwd.errors.0 }} </ span > 10 </ p > 11 < p > 确认密码 12 {{ form.r_pwd }} 13 < span class ="pull-right error" > {{ form.r_pwd.errors.0 }} </ span > 14 < span class ="pull-right error" > {{ errors.0 }} </ span >

Gevent简明教程

廉价感情. 提交于 2021-01-02 07:05:46
Gevent简明教程 发表于 2015-11-28 | 分类于 技术 | | 阅读次数 5159 前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在python中有类似C的os.fork,更高层封装的有multiprocessing标准库 多线程编程python中有Thread和threading 异步编程在linux下主+要有三种实现select,poll,epoll 协程在python中通常会说到yield,关于协程的库主要有greenlet,stackless,gevent,eventlet等实现。 进程 不共享任何状态 调度由操作系统完成 有独立的内存空间(上下文切换的时候需要保存栈、cpu寄存器、虚拟内存、以及打开的相关句柄等信息,开销大) 通讯主要通过信号传递的方式来实现(实现方式有多种,信号量、管道、事件等,通讯都需要过内核,效率低) 线程 共享变量(解决了通讯麻烦的问题,但是对于变量的访问需要加锁) 调度由操作系统完成(由于共享内存,上下文切换变得高效) 一个进程可以有多个线程,每个线程会共享父进程的资源(创建线程开销占用比进程小很多,可创建的数量也会很多) 通讯除了可使用进程间通讯的方式,还可以通过共享内存的方式进行通信(通过共享内存通信比通过内核要快很多) 协程 调度完全由用户控制 一个线程(进程

IDEA 注解

情到浓时终转凉″ 提交于 2021-01-02 06:24:14
一、mac 设置栏 点击 intelliJ IDEA---->点击 preferences 搜索:Preferences --> Editor --> File and Code Templates class类注解供参考 /** * description: * * @author: dawn.he * QQ: 905845006 * @email: dawn.he@cloudwise.com * @email: 905845006@qq.com * @date: ${DATE} ${TIME} */ 设置方法注解 搜索:Preferences --> Editor --> Live Templates 第一步 第二步 第三步 method template ** * description: * @date $date$ $time$ $params$ * @return $returns$ **/ script groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ((i <

flask之--钩子,异常,上下文,flask-script,模板,过滤器,csrf_token

风格不统一 提交于 2021-01-02 05:58:56
一.请求钩子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: - 在请求开始时,建立数据库连接; - 在请求开始时,根据需求进行权限校验; - 在请求结束时,指定数据的交互格式; 为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。 请求钩子是通过装饰器的形式实现,Flask支持 如下四种请求钩子 : - before_first_request - 在处理 第一个请求 前执行(初始化的时候) - before_request - 在 每次 请求前执行 - 如果在某修饰的函数中返回了一个响应,视图函数将不再被调用 - after_request - 前提是视图函数没有抛出错误,在每次请求视图函数处理之后执行 - 接受一个参数:视图函数作出的响应 - 在此函数中可以对响应值在返回之前做最后一步修改处理 - 需要将参数中的响应在此参数中进行返回 - teardown_request: - 在每次 请求后 执行, 无论视图函数是否正常工作 - 接受一个参数:错误信息, 如果有相关错误抛出   工作模式为非调试模式,即Debug=False   代码: # !/usr/bin/env python # -*- coding: utf-8 -*- # author tom from flask import Flask from

Kafka日志处理器 Python3版本实现

那年仲夏 提交于 2021-01-01 22:16:53
Kafka 日志处理器 import json import logging from kafka import KafkaProducer class KafkaHandler(logging.Handler): def __init__(self, host_list, topic='corp_it_testing', tls=None): """ :param host_list: kafka 主机集群地址(ip:port) :param topic: kafka 主题设置 :param tls: """ logging.Handler.__init__(self) self.producer = KafkaProducer(bootstrap_servers=host_list, value_serialers=lambda v: json.dumps(v).encode('utf-8'), linger_ms=10) self.topic = topic def emit(self, record): # 屏蔽 kafka自身日志 if 'kafka' in record.name: return try: msg = self.format(record) self.producer.send(self.topic, {'message': msg}) self