自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 资源 (1)
  • 收藏
  • 关注

原创 [python] utf8 bom编码处理

utf8 bom编码处理decode字符传乱码: 原因是从Facebook下载的csv文件是utf8 bom编码的, 直接decode(‘utf-8’)会出现’\ufeff’; 应该decode(‘utf-8-sig’)原本以为是文件内容导致的问题,debug之后,发现文件开头有’\ufeff’; 不知道这个是什么东西,墨迹了一会儿之后,尝试Google了才有答案;豁然开朗了data_str = file.read().decode('utf-8-sig')datas = data_str

2021-05-18 17:12:30 550

原创 [python] python3 flask解析多选框的值

python3 flask解析多选框的值结论ImmutableMultiDict 使用getlist 取多个相同key的值from werkzeug.datastructures import ImmutableMultiDictd = ImmutableMultiDict([('comment', 'test'), ('wp_ids', '2233'), ('wp_ids', '2341')])print(d['wp_ids'])print(d.get('wp_ids'))print(

2021-05-18 17:11:59 687

原创 [nginx] too many open files

错误log2020/12/24 06:39:09 [alert] 8315#0: *4128715829 socket() failed (24: Too many open files) while connecting to upstream, client: xxxx, server: xxxx, request: "GET /client/v3/wallpaper_4k/wallpaperList.json?sign=9939e1fa528ec5b4b1145e2045483929&pac

2021-05-18 17:08:19 346

原创 [mysql] OOM资源问题,被系统重启

mysql OOM资源问题,被系统重启表象MySQL log 显示 OOM被重启解决问题log显示了OOM,就以为是MySQL占用内存过多导致系统内存紧张,被重启;思路方向一直是MySQL 内存分析、优化check内存相关参数配置,没有发现问题分析MySQL内存的使用, 并没有发现明显的问题脑海中各种问号,明明内存消耗没那么大,但是怎么就OOM被kill了呢分析syslog分析MySQL被重启前后的系统log,发现系统log记录了MySQL被重启时的系统状况:有pytho

2021-05-18 16:59:02 270

原创 MongoDB索引优化

MongoDB 索引优化1. 一图看懂索引原理2. 查看执行计划3. 如何建索引3. 索引的优化4. 索引的选择机制5. 优化实践country_themes 优化wallpapers mongo 优化themes mongo 优化1. 一图看懂索引原理# 初始化数据> db.comment.insertMany(... [... {'timestamp': 3, 'anonymous': true, 'rating': 1},... {'timestamp': 2, 'anonym

2021-05-18 16:54:09 403

原创 [Superset] 二次开发 根据APP控制权限

Superset 二次开发 根据APP控制权限一、背景数据是区分应用维度的,想要控制用户对应用数据的访问权限综上,需要二次开发,实现基于数据内容的权限控制二、Version系统:Ubuntupython版本:3.6superset版本: apache-superset==0.36.0conda 虚拟环境三、实现1. 思路实现该功能的最终目的就是只返回用户有权限的应用的数据,没有权限的不返回Google之后没有发现superset支持类似的功能,或者说在superset的设计

2021-05-18 16:45:05 767 1

原创 [Superset]修改FilterBox源码,实现下拉框别名

[Superset]修改FilterBox源码,实现下拉框别名name一、背景superset提高的filterbox 下拉框选择,不支持别名的形式;即value和name都是一个值,在配置filterbox的时候选择; 并没有提高别名的功能;要实现别名,只能自己二次开发了;二、开发测试环境conda 安装环境,因为之前已经有装好的环境;此处直接导出环境配置文件,然后安装;开发# 环境源机器conda activate supersetconda env export > envir

2021-05-18 16:41:07 1323 1

原创 [Superset]自定义视图,实现写的操作

Superset 自定义视图,实现写一、背景superset数据展现很友好,所以最初选择了这个框架后期需要实现内容配置,即控制台实现写库的操作综上,需要自定义视图,集成superset实现写的操作二、Version系统:Ubuntupython版本:3.6superset版本: apache-superset==0.36.0conda 虚拟环境三、Installationconda 安装# 安装minicondawget https://repo.anaconda.

2021-05-18 16:27:47 671 2

原创 [python语法] 高级特性

[python语法] python高级特性文章目录[python语法] python高级特性一、切片二、迭代三、列表生成式四、生成器五、迭代器一、切片切片的正常用法不再赘述,除了正常的切片功能,还可以在切片的基础上每个N个元素取一个;以下是每隔2个元素取一个l = range(10)for i in l[::2]: print(i) 02468二、迭代用for遍历list、tuple等可遍历对象,这种遍历就叫做迭代在Python中,迭代是通过for

2020-09-25 10:21:36 134

原创 [python语法] 内存分配、id函数使用

python内存分配、id()函数的使用文章目录python内存分配、id()函数的使用1. id函数的使用2. 为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,字符串对象等,python采取重用对象内存的办法3. list类型浅拷贝时,内存地址一样;深拷贝时,内存地址发生了变化4. 内存的分配1. id函数的使用id()函数可返回对象的内存地址python中会为每个对象分配内存,哪怕他们的值完全相等。id(object)函数是返回对象object在其生命周期内位于内存中的地

2020-09-22 15:19:34 730

原创 [Python语法] 装饰器

Python装饰器文章目录Python装饰器一、不接受参数的装饰器装饰器的例子:讨论二、接受参数的装饰器装饰器的例子:讨论结语一、不接受参数的装饰器装饰器的例子:import timefrom functools import wrapsdef timethis(func): ''' Decorator that reports the execution time. ''' @wraps(func) def wrapper(*args, **kwarg

2020-09-22 12:19:40 105

原创 [Python语法] args kwargs使用

*args **kwargs使用文章目录*args **kwargs使用写法用途标准参数与`*args、**kwargs`在使用时的顺序写法其实并不是必须写成*args 和**kwargs。 只有变量前面的 *(星号)才是必须的. 你也可以写成*var 和**vars. 而写成*args 和**kwargs只是一个通俗的命名约定用途主要将不定量的参数传递给函数,即当不确定函数有多少个参数的时候使用*args 是用来发送一个非键值对的可变数量的参数列表给一个函数.**kwargs 允许

2020-09-22 12:15:51 80

原创 [python异步 第五篇 ] python3 异步框架选择

备选: sanic、tornado、flaskflask暂时不支持异步,被淘汰sanic 、tornado对比tornadosanic支持的python版本3.X3.6+异步的底层实现asyncio(可以使用uvloop)uvlooprps较差较优文档完善较少更新差不多差不多uwsgi支持不支持综上,基于sanic目前还太新、文档还不完善且tornado可以使用uvloop事件循环,决定采用tornado6

2020-06-30 10:05:38 276

原创 [python异步 第四篇 ] python3 异步库

python异步库asyncio、uvloopasyncio 是Python 标准库里的一个异步 I/O 框架。uvloop : 是 asyncio 默认事件循环的一个代替品,实现的功能完整,且即插即用。uvloop 是用 Cython 写的,建于 libuv 之上。uvloop 可以使 asyncio 更快。事实上,它至少比 nodejs、gevent 和其他 Python 异步框架要快 两倍 。基于 uvloop 的 asyncio 的速度几乎接近了 Go 程序的速度。在你的 asyncio 代

2020-06-30 10:04:14 589

原创 [python异步 第三篇 ] python事件循环库的发展历史

Python的异步IO异步IO的优势显而易见,各种语言都通过实现这个机制来提高自身的效率,Python也不例外。一、Python 2的异步IO库Python 2 时代官方并没有异步IO的支持,但是有几个第三方库通过事件或事件循环(Event Loop)实现了异步IO,它们是:twisted: 是事件驱动的网络库gevent: greenlet + libevent(后来是libev或libuv)。通过协程(greenlet)和事件循环库(libev,libuv)实现的gevent使用很广泛。to

2020-06-30 10:00:44 302

原创 [python异步 第二篇 ] Linux 异步网络库libevent、libev、libuv对比

[python异步] Linux 异步网络库libevent、libev、libuv对比一、概念:事件、事件循环二、对比三个库:三、在github上的影响力:四、事件种类五、可移植性六、异步架构程序设计原则一、概念:事件、事件循环Libevent、libev、libuv三个网络库,都是c语言实现的异步事件库Asynchronousevent library。异步事件库本质上是提供异步事件通知(Asynchronous Event Notification,AEN)的。异步事件通知机制就是根据发生的事件

2020-06-30 09:56:09 1477

原创 [python异步 第一篇 ] Linux 多路复用IO模型 Select,Poll,Epoll 对比

文章目录一、细谈 io 多路复用技术 select 和pollSelect介绍Poll介绍Select、Poll 的缺点Select、Poll 的轮询过程二、细谈事件驱动--EpollEpoll提供了三个函数:Epoll解决的问题:总结操作系统在处理io的时候,主要有两个阶段:等待数据传到io设备io设备将数据复制到user space我们一般将上述过程简化理解为:等到数据传到kernel内核spacekernel内核区域将数据复制到user space(理解为进程或者线程的缓冲区)而

2020-06-30 09:44:02 318

原创 git commit 冲突解决

git 使用总结 git log filename 显示某个文件的修改历史 git show commit_id filename 显示某次提交对某个文件的修改 git log --name-status commit_id 显示某次提交修改的文件列表 commit冲突的解决 本地commit ahead远程的时候,push 会报错; 所以p...

2020-04-02 21:00:10 3697

原创 python3 fabric兼容Windows和Ubuntu

python3 的fabric需要按着fabric3才能正常运行; tar 在Windows下无法识别带路径的文件名,只能在当前目录下生成不带路径的文件名; fab 部署的时候,为了能同时兼容从Windows和Linux系统部署到远程机器需要注意路径分隔符的使用: 本地分隔符使用os.path.join 远程要使用'/',Linux下的分隔符,因为远程的机器...

2020-04-02 20:02:53 508

原创 Git commit message规范

简单的commit message 可以使用[type]作为前缀用于说明 commit 的类别,只允许使用下面7个标识。feat:新功能(feature) fix:修补bug docs:文档(documentation) style: 格式(不影响代码运行的变动) refactor:重构(即不是新增功能,也不是修改bug的代码变动) test:增加测试 chore:构建过程或...

2020-04-02 19:57:28 221

原创 CRLF LF的区别、git core.autocrlf的使用

1. 什么是CRLF和LF由于历史的原因,各种不同的操作系统在处理行尾结束符采取了不同的处理方法。CRLF 是carriagereturnlinefeed的缩写。中文意思是回车换行。LF是line feed的缩写,中文意思是换行。CRLF->Windows-styleLF->Unix StyleCR->Mac StyleCRLF表示句尾使用回车换行两个字...

2020-04-02 12:40:52 809

转载 倒排索引原理和实现

1. 关于倒排索引搜索引擎通常检索的场景是:给定几个关键词,找出包含关键词的文档。怎么快速找到包含某个关键词的文档就成为搜索的关键。这里我们借助单词——文档矩阵模型,通过这个模型我们可以很方便知道某篇文档包含哪些关键词,某个关键词被哪些文档所包含。单词-文档矩阵的具体数据结构可以是倒排索引、签名文件、后缀树等。倒排索引源于实际应用中需要根据属性的值来查找记录,lucene是基于倒排索引实...

2020-03-27 16:06:49 293

原创 Python3中的bytes和str

Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。unicode、str、bytes的关系硬盘中一般编码都是uft-8,而在内存中采用unicode编码方式。python中的str其实显示的就是...

2020-03-17 11:22:37 232 1

原创 Nginx Location 路径匹配优先级

location表达式类型~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配。优先使用前缀匹配。如果匹配成功,则不再匹配其他location。= 进行普通字符精确匹配。也就是完全匹配。@ “@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_fileslocation优先级说明在nginx的l...

2020-03-16 11:20:30 5013 1

转载 在flask中使用jsonify和json.dumps的区别

flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢?想必开始很多人和我一样搞不清楚,只知道既然框架提供了方法就用,肯定不会错。但作为开发人员,我们需要弄清楚开发过程中各种实现方式的特点和区别,这样在我们面对不同的需求时才能做出相对合理的选择,而...

2020-03-09 16:40:55 821

原创 网络安全:URL签名验证的实现API防篡改

我们在做APP开发的时候,APP的网络安全是极其重要,我们有必要对请求的API进行加密和防篡改。HTTPS是一个很好的传输加密的方式。如果APP的请求API地址和参数被泄露,我们还是可能会被恶意请求。所以我们有必要实现 URL签名,对请求的参数进行校验,在客户端生成URL签名,在服务端对签名进行校验,如果客户端的URL签名算法保密做得好,就可以避免非法请求,签名算法的加密需要使用 C++编写,这...

2020-02-20 17:45:59 1039

原创 [python] python 编码ASCII、Unicode、utf-8

python 编码ASCII、Unicode、utf-81. python2中我们看到的字符串#当前系统的默认编码为utf-8In [39]: locale.getdefaultlocale()Out[39]: ('en_US', 'UTF-8') In [25]: teststr = '联通'#在内存中是以utf-8编码存在的In [26]: teststrOut[2...

2019-12-27 19:19:32 656

原创 [python 2] 永久地将默认编码设置为utf-8

python2.7 永久地将默认编码设置为utf-8网上推荐了两种方法第一个方法<不推荐>: 编辑site.py, 修改setencoding()函数, 强制设置为 utf-8第二个方法<推荐>: 增加一个名为 sitecustomize.py, 推荐存放的路径为 site-packages 目录下sitecustomize.py 是在 site.py 被impo...

2019-12-27 19:16:03 1067

原创 MongoDB aggregate 使用

MongoDB aggregate 使用mod 整除的使用https://docs.mongodb.com/manual/reference/operator/aggregation/mod/limit 使用https://docs.mongodb.com/manual/reference/operator/aggregation/limit/skip 使用https://docs...

2019-12-16 16:10:10 210

原创 MongoDB执行计划字段解释

MongoDB 执行计划字段解释1. 阶段操作描述2. queryPlanner3. executionStats1. 阶段操作描述COLLSCAN 集合扫描IXSCAN 索引扫描FETCH 检出文档SHARD_MERGE 合并分片中结果SHARDING_FILTER 分片中过滤掉孤立文档LIMIT 使用limit 限制返回数PROJECTION 使用 skip 进行跳过IDH...

2019-12-16 16:03:03 361

原创 MongoDB索引优化

MongoDB 索引优化1. 一图看懂索引原理2. 查看执行计划3. 如何建索引3. 索引的优化4. 索引的选择机制5. 优化实践country_themes 优化wallpapers mongo 优化themes mongo 优化1. 一图看懂索引原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmNoONVY-1576482903566)(file:/...

2019-12-16 16:01:08 482

原创 [python环境安装] Anaconda克隆安装

Anaconda克隆安装已安装好的环境mkdir /etc/condacd /etc/conda/# 安装minicondawget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh # source 环境变量sour...

2019-12-10 17:13:04 210

原创 [python环境安装] Anaconda安装

Ubuntu Anaconda安装一、什么是Anaconda?二、Anaconda的适用平台及安装条件三、Anaconda 安装及使用1. 下载安装2. 查看conda 版本3. 更新conda4. 查看conda帮助5. 新建虚拟环境6. 切换conda环境7. 退出虚拟环境8. 显示安装过的所有虚拟环境9. 复制环境10. 删除环境11. 包管理12. 如果conda安装不上的包,或者没有的包...

2019-12-10 17:11:15 209

原创 贵州之旅--黄果树瀑布

贵州之旅黄果树瀑布门票开放时间住宿吃饭安顺闲逛注意事项黄果树瀑布门票门票是两日内有效,如果一天不能游完可以第二天继续,不过每个景区只能去一次。黄果树景区分为淡季和旺季:旺季时门票是180元,观光车费50元;淡季时门票160元,含观光车50元。除了坐观光车,在黄果树还可以坐出租车,价格也是50元/人。如果是几个好朋友一起去,可以坐出租车,不拥挤,人满即走。天星桥景区的后半部分...

2019-09-30 18:12:45 373

原创 手足口病的症状、传播、预防、治疗

手足口病的症状、传播、预防、治疗1. 症状2. 传播3. 预防4. 治疗方法手足口病是一种儿童传染病,又名发疹性水疱性口腔炎。多发生于5岁以下儿童,可引起手、足、口腔等部位的疱疹,少数患儿可引起心肌炎、肺水肿、无菌性脑膜脑炎等并发症1. 症状受到感染的患者,通常会伴随发烧症状与全身倦怠不适。一两天过后,在手、脚、口腔、舌头、牙龈都有可能出现细小的红点、溃疡或水痘,甚至有少数会出现在鼠蹊部或臀...

2019-09-27 10:14:44 256

原创 python将常量集中在一个文件中、常量类的实现、sys.modules的使用

将常量集中在一个文件里、常量类的实现、sys.modules的使用常量类实现sys.modules的使用通过命名风格来提醒使用者该变量代表的意义为常量,如常量名所有字母大写,用下划线连接各个单词常量类实现通过自定义的类实现常量功能。在类中限制”命名全部为大写“和”值一旦绑定便不可再修改“这两个条件。下面是一种较为常见的解决办法,它通过对常量对应的值进行修改时或者命名不符合规范时抛出异常来满足...

2019-08-23 17:16:45 2729

原创 浏览器并发请求资源限制

浏览器并发请求资源限制一. 结论二. 页面加载三. 优化方案一. 结论1、浏览器的网络请求资源数是针对单一域名的。2、不同浏览器,不同http协议版本允许的网络请求资源数是不一样的(具体自行百度),不过总的来说在2-8个之间。二. 页面加载假如一个页面有120个静态资源(css、js、img),并且所有资源都在一个域名下,使用的浏览器最大网络并行请求资源数是6,假设理想一些:所有请求时间...

2019-08-21 17:24:32 859

原创 Linux 软链、硬链

linux 软件、硬链1. 命令语法2. 软链、硬链1. 命令语法 ln -s 源文件 目标文件 -s 表示软链, 默认是硬链链接: 会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化2. 软链、硬链软链接:ln –s ** ,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间​ 删除软链目标文件时,源文件不受影响;删除源文件时,ca...

2019-08-20 18:58:53 573

原创 Ubuntu 安装包的两种形式

Ubuntu 安装包的两种形式:1. 源码安装2. apt-get安装3. apt命令的使用1. 源码安装./configure 生成Makefilemakemake install不能用service启动,当然如果把执行文件拷贝到/etc/init…下是可以的本地编译文件,安装实际上是将编译好的文件复制到指定的安装目录2. apt-get安装安装到默认的目录,可以用ser...

2019-08-20 17:06:02 246

原创 linux 同时安装python2 python3, 及pip 的安装使用

linux 同时安装python2 python3, 及pip 的安装使用1. python 的安装:2. pip 的安装:3. python包安装:1. python 的安装:由于ubuntu系统自带python2.7(默认)和python3.4,所以不需要自己安装python。可以使用python -V和python3 -V查看已安装python版本。2. pip 的安装:在...

2019-08-20 16:56:48 1826 1

正则表达式

此文旨在说明正则表达式的使用,包括基本原理、正则的字符、正则的各种语法及如何写高效的正则

2019-01-11

空空如也

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

TA关注的人

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