info

Python核心技术与实战——二十|Python的垃圾回收机制

你离开我真会死。 提交于 2019-12-06 08:34:49
今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构。图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器。随着寄存器、异失性存储器(内存)和永久性存储器(硬盘)的出现,也出现了一个矛盾——存储器越来越快,价格也越来越贵。因此,如何利用好每一份告诉存储器的控件,永远是系统设计的一个核心。 回到Python的应用:Python程序在运行的时候,需要在内存中开辟一块空间,用于存放运行时产生的临时变量;计算完成后,再将结果输出到永久性存储器中。如果数据量过大,内存空间管理不善jui很容易出现OOM(out of memory)的现象,程序就会被系统中断 而对于服务器来说,这种设计对于不中断的系统哦过来说,内存管理就显得尤为重要,不然很容易引发内存泄漏的现象。 什么是内存泄漏? 这里的泄漏,并不是说内存出现了信息安全的问题,被恶意程序利用了,而是指程序没有设计好,导致程序未能释放已经不再使用的内存 内存泄漏也不是指内存在物理上消失了,而是意味着代码在分配了某段内存后,因为设计失误,市区了对这块内存的控制,从而导致了内存资源的浪费。 那么,Python优势如何解决这些问题的呢?更明确的问题:对于不会再次用到的内存空间,Python又是通过什么机制来回收的呢? 计数引用 我们在前面不停的强调过,Python中一切皆为对象,因此,我们所有的一切变量

Celery详解(3)

北慕城南 提交于 2019-12-06 08:31:12
1.什么是Celery? Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列, 同时也支持任务调度 2.Celery架构 Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。 消息中间件 Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等 任务执行单元 Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。 任务结果存储 Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等 执行流程: user相当于提交任务的人,提交给broker也就是消息中间件,worker相当于工人,broker里面有了用户也就是程序提交的任务,worker就去取出来执行类似于生产者消费者模型,store说简单点就是worker执行结束后的返回结果 版本支持情况 Celery version 4.0 runs on Python ❨2.7, 3.4, 3.5❩ PyPy ❨5.4, 5.5❩ This is the last version to support

linux 出错 “INFO: task java: xxx blocked for more than 120 seconds.” 的3种解决方案

好久不见. 提交于 2019-12-06 08:28:21
1 问题描述 最近搭建的一个linux最小系统在运行到241秒时在控制台自动打印如下图信息,并且以后每隔120秒打印一次。 仔细阅读打印信息发现关键信息是“ hung_task_timeout_secs ”,第一次遇到这样的问题,首先百度… 通过翻看多个网友的博客,发现这是linux kernel的一个bug。大家对这个问题的解释也都比较一致,摘抄一段: By default Linux uses up to 40% of the available memory for file system caching. After this mark has been reached the file system flushes all outstanding data to disk causing all following IOs going synchronous. For flushing out this data to disk this there is a time limit of 120 seconds by default. In the case here the IO subsystem is not fast enough to flush the data withing 120 seconds. This especially happens on

ELK整合Filebeat监控nginx日志

无人久伴 提交于 2019-12-06 07:57:30
ELK 日志分析 1. 为什么用到 ELK 一般我们需要进行日志分析场景:直接在日志文件中 grep 、 awk 就可以获得自己想要的信息。 但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、 如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中 式日志收集系统,将所有节点上的日志统一收集,管理,访问。 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时, 大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系 统,可以提高定位问题的效率。 一个完整的集中式日志系统,需要包含以下几个主要特点: 收集-能够采集多种来源的日志数据 传输-能够稳定的把日志数据传输到中央系统 存储-如何存储日志数据 分析-可以支持 UI 分析 警告-能够提供错误报告,监控机制 ELK 提供了一整套解决方案,并且都是开源软件,之间互相配 合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。 2.ELK简介 ELK 是三个开源软件的缩写,分别表示: Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了 一个 FileBeat ,它是一个轻量级的日志收集处理工具 (Agent) , Filebeat 占用资源少

23.logging

谁说胖子不能爱 提交于 2019-12-06 06:56:16
转载: https://www.cnblogs.com/yuanchenqi/article/5732581.html 一 (简单应用) import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message') 输出: WARNING:root:warning message ERROR:root:error message CRITICAL:root:critical message 可见,默认情况下 Python 的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。 二 灵活配置日志级别,日志格式,输出位置 import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime

C#处理JSON 数据

≡放荡痞女 提交于 2019-12-06 06:47:16
https://blog.csdn.net/qq_34897745/article/details/80562518 网络中数据传输经常是xml或者json 在一般的开发过程中会经常遇到这样的问题,在别的地方获取的数据接口自己箱拿过来用,会遇见一下几个问题,跨域,拿过来的数据个数不是自己想要的, 1.跨域: 1-1:跨域的解决办法又很多种,前端的js处理 1-2:后台进行处理,一般建议后台处理最好这样的话可以吧相关的数据格式进行处理 一、C#处理简单json数据 json数据: {"result":"0","res_info":"ok","queryorder_info":"info"} 我这里是以jsonmy1.txt文件的形式保存在d盘json文件夹下。 构造对象: public struct ToJsonMy { public string result { get; set; } //属性的名字,必须与json格式字符串中的"key"值一样。 public string res_info { get; set; } public string queryorder_info { get; set; } } public static void JsonMy() { string json = Jsonstr("D:\\json\\jsonmy1.txt");/

C#处理不同的JSON数据

谁说我不能喝 提交于 2019-12-06 06:46:58
https://blog.csdn.net/dayu9216/article/details/78465681 网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋友。 一、C#处理简单json数据 json数据: 复制代码 代码如下: {"result":"0","res_info":"ok","queryorder_info":"info"} 我这里是以jsonmy1.txt文件的形式保存在d盘json文件夹下。 构造对象: 复制代码 代码如下: public struct ToJsonMy { public string result { get; set; } //属性的名字,必须与json格式字符串中的"key"值一样。 public string res_info { get; set; } public string queryorder_info { get; set; } } 转换过程: 复制代码 代码如下: public static void JsonMy() { string json = Jsonstr("D:\\json\\jsonmy1.txt");//Jsonstr函数读取json数据的文本txt    

博客搭建

只谈情不闲聊 提交于 2019-12-06 06:36:17
此博文转自:https://juejin.im/entry/5a574864f265da3e3c6c1217 侵权请告知。 安装Node.js 在 Windows 环境下安装 Node.js 非常简单,仅须到 官网下载 安装文件并执行即可完成安装。 安装Git 去 Git官网 根据你的电脑参数,下载对应版本。 下载完成,通过在命令行输入 git version 查看是否安装成功,有输出版本号说明安装成功。 鼠标邮件菜单里就多了 Git GUI Here 和 Git Bash Here 两个按钮,一个是图形界面的Git操作,一个是命令行,我们选择 Git Bash Here 。 Hexo Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 一、Hexo安装 桌面右键鼠标,点击Git Bash Here,输入npm命令即可安装 npm install hexo-cli -g npm install hexo-deployer-git --save 第一句是安装hexo,第二句是安装hexo部署到git page的deployer,两个都需要安装。 如下图即安装完成。 二、Hexo初始化配置 创建Hexo文件夹 安装完成后,根据自己喜好建立目录(如F:\Blog\Hexo),直接进入F:

Sqlmap学习笔记(一)

↘锁芯ラ 提交于 2019-12-06 05:56:46
Sqlmap安装 进入 sqlmap官网 ,下载,运行sqlmap.py文件即可 python sqlmap.py 通过pip安装 pip install sqlmap 直接在命令行运行sqlmap即可 Sqlmap直连数据库 sqlmap -d mysql://root:root@localhost:3306/test -f --banner ​ 如果报错需要下载pymysql模块 pip install pymsql ​ -d:直连数据库,后面跟着连接信息 -> mysql://用户名:密码@主机名:端口/数据库 ​ -f:打印DBMS信息 ​ --banner:打印banner信息,准确的版本号 ​ 成功访问,获取mysql信息 [23:47:45] [INFO] connection to MySQL server 'localhost:3306' established [23:47:45] [INFO] testing MySQL [23:47:45] [INFO] resumed: [['1']]... [23:47:45] [INFO] confirming MySQL [23:47:45] [INFO] resumed: [['1']]... [23:47:45] [INFO] the back-end DBMS is MySQL [23:47:45] [INFO

小知识点记录

自闭症网瘾萝莉.ら 提交于 2019-12-06 05:39:44
JsonP // 利用script的src属性绕过浏览器的同源策略,但是只能发GET请求 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <p> <input type="button" onclick="Jsonp1();" value='提交'/> </p> <p> <input type="button" onclick="Jsonp2();" value='提交'/> </p> <script type="text/javascript" src="jquery-1.12.4.js"></script> <script> function Jsonp1(){ var tag = document.createElement('script'); tag.src = "http://c2.com:8000/test/"; document.head.appendChild(tag); document.head.removeChild(tag); }      function list(data){          console.log(data)      } function Jsonp2(){ $.ajax({ url: