自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ES只读用户创建

只读角色创建创建对指定索引集合的只读角色POST /_security/role/read_only{ "indices": [ { "names": [ "test-index", ], "privileges": [ "read" ] } ]}用户创建创建用户并指定为只读角色POST /_security/user/anonymous{ "password" : "ano..

2021-12-30 10:30:42 2444

原创 山特UPS电量信息采集环境配置

山特UPS电量信息采集环境配置硬件需求支持智能卡插口的山特UPS山特NMC网络管理卡安装与配置NMC卡NMC 是一种介于UPS和网络的设备,它可以从UPS获得状态信息并且发出指令。NMC支持两种协议-简易网络管理协议(SNMP)和超文件传输协议(HTTP)以供使用者进入。通过SNMP的网络管理站(NMS)和网页浏览器,用户可以获得UPS的状态信息、发出指令至UPS并且通过网络设定NMC。下图为NMC卡:安装配置参考官方文档:NMC卡使用手册其中,主要是配置好NMC卡的网络(将NMC卡加

2021-10-19 15:58:43 1922

转载 Facebook图片存储系统Haystack

Facebook图片存储系统Haystack一篇14页的论文Facebook-Haystack, 看完之后我的印象里就四句话:因为【传统文件系统的弊端】因为【缓存无法解决长尾问题】所以【多个图片信息(Needle)存在同一个文件(SuperBlock)中】所以【显著提高性能】传统文件系统的弊端传统的 POSIX 文件系统不适合高性能的图片存储, 主要原因是基于该文件系统来存储的话,是讲每个图片存储成某目录下的一个文件, 每次读取文件的时候需要有N次磁盘IO,当目录下文件数是K级别是, 读取

2021-10-14 20:15:35 400

原创 Minio纠删码与存储级别

Minio纠删码与存储级别纠删码(erasure code)概念简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。举个最简单例子就是有两个数据(d1, d2),用一个校验和y(d1 + d2 = y)即可保证即使丢失其中一个,依然可以还原数据。如丢失 d1 ,则使用 y - d2 = d1 还原,同理,d2 丢失或者y丢失,均可通过计算得出。EC 的

2021-10-09 11:35:57 4928

原创 ES索引的生命周期管理

ES索引的生命周期管理介绍​ ES可用于索引日志类数据,在此场景下,数据是源源不断地被写入到索引中。为了使索引的文档不会过多,查询的性能更好,我们希望索引可以根据大小、文档数量或索引已创建时长等指标进行自动回滚,可以自定义将超过一定时间的数据进行自动删除。ES为我们提供了索引的生命周期管理来帮助处理此场景下的问题。​ 索引的生命周期分为四个阶段:HOT->WARM->COLD->DELETE。​ HOT为必须的阶段外,其他为非必须阶段,可以任意选择配置。在日志类场景下不需要W

2021-09-24 17:24:32 3951

原创 es快照备份至minio

es快照备份至minio一、概述MinioMinio 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。ElasticsearchElasticsearch是一个基于Lucene的分布式全文搜索引擎。ES支持快照功能,用于实现数据的备份与恢复。我们可以生成单个索引或整个集群的快照,并将其存储在

2021-09-23 18:53:52 1365

原创 Centos磁盘挂载

Centos磁盘挂载1、 列出所有磁盘fdisk -l2、格式化磁盘fdisk /dev/sdb[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0sacYOkg-1632394041433)(C:\Users\yq\AppData\Roaming\Typora\typora-user-images\image-20210917161855511.png)]3、 创建分区mkfs.xfs /dev/sdb14、挂载分区mount /dev/sdb1 /

2021-09-23 18:51:16 142

原创 python常用时间的获取

当前当前时间def current_time(): return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))当前小时def current_hour(): return datetime.now().strftime('%Y-%m-%d %H:00:00')当前日def current_day(): return datetime.now().strftime('%Y-%m

2021-04-13 15:59:43 95

原创 Innodb事务4大特性(ACID)的实现原理

原子性:单个事务的执行要么整体成功,要么整体失败。主要通过undo log实现,undo log中记录了修改前的数据版本,在事务执行失败时,通过undo log回滚。持久性:事务在提交后,对数据的修改是持久化的。主要通过redo log实现。innno db通过内存缓存来提高性能,在执行查询(select)时,先查内存缓存,没有再查磁盘,并将数据缓存到内存;在执行修改(update,insert,delete)时,先更新缓存,再延期统一刷入磁盘,以减少磁盘io次数,但由于内存缓存在服务器宕机时会丢失,所.

2021-04-13 15:43:40 299

转载 mysql innodb默认事务隔离级别-repeatable read在事务中是否能导致幻读的实验

测试准备:  1. show variables like ‘%unsafe%’;确保 innodb_locks_unsafe_for_binlog值为 OFF(或者0);  2. show variables like ‘%tx%’; 确保 tx_isolation 的值为 REPEATABLE-READ。  3. 新建表t_test :CREATE TABLE t_test ( id INT(32) NOT NULL, val CHAR(1) D

2021-04-08 17:50:03 93

转载 mysql数据库服务器与RAID存储架构

数据库服务器使用的RAID存储架构mysql数据库就是一个软件,底层就是磁盘来存储数据,基于内存来提升数据读写性能。mysql运行过程中,他需要使用CPU,内存,磁盘和网卡这些硬件,但是不能直接使用,都是通过调用操作系统提供的接口,依托于操作系统来使用和运行的,然后linux操作系统负责操作底层的硬件。一般来说,很多数据库部署在机器上的时候,存储都是搭建的RAID存储架构;在存储层面往往回在机器上搞多块磁盘,然后引入RAID这个技术,RAID:管理机器里的多块磁盘的一种磁盘阵列技术。

2021-03-25 17:39:01 519 1

原创 数据结构可视化网站

网站地址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

2021-03-23 19:37:32 116

原创 mysql读写分离与分库分表

读写分离mysql读写分离实际利用的是主从复制架构,主数据库主要处理写操作,读请求被路由到从数据库来减少数据库压力。存在的问题从数据库的数据相较于主数据库有延迟,造成读不到新数据,且并发量越高,延迟问题越严重不能减轻写压力如何解决问题1,在对数据有强正确性要求时,采用强制路由的方式使读操作落地主库问题2,使用分库分表实现proxy代理层(shardingproxy、mysqlproxy、mycat、atlas等)应用层(java:sharding-jdbc、TDDL等)分库

2021-03-22 17:37:49 368

转载 python中文字符判断

判断字符串为全中文def is_all_chinese(s):"""检验是否全是中文字符""" for _char in s: if not '\u4e00' <= _char <= '\u9fa5': return False return True判断字符串是否包含中文def is_contains_chinese(s):"""检验是否含有中文字符""" for _char in s: if ..

2021-03-22 14:50:02 1555

原创 从线程锁到redis分布式锁

本文将利用减库存这一常见业务的递进实现,来介绍为何需要分布式锁,以及基于redis的分布式锁是如何一步一步完善的。首先,现做一下设定:假定我们将商品A(product_id=‘A’)的库存保存在redis中,并对外提供减库存接口。(限制redis中的库存不能执行原子减操作)将商品A的初始库存设置为200原始版本from flask import Flaskfrom flask_redis import FlaskRedisapp = Flask(__name__)app.config[

2021-03-20 16:23:00 330 1

原创 python中实现定时任务的一种简单方法

此方法利用了子线程和回调实现了定时任务,代码如下:import timeimport threadingdef task(): print(time.time())def cron(func, interval_time=10, *args, **kwargs): threading.Thread(target=func, args=args, kwargs=kwargs).start() time.sleep(interval_time) cron(func

2021-03-19 10:47:09 98

原创 Tornado实现简单的Socket TCP服务器

python3服务端from collections import namedtuplefrom tornado.tcpserver import TCPServerfrom tornado.iostream import StreamClosedErrorfrom tornado.ioloop import IOLoopClient = namedtuple('Client', ['stream', 'address'])class ChatServer(TCPServer):

2021-03-18 19:16:15 431 4

原创 python中两种方式实现“模块补丁”的方式

python中sleep的单位是秒,而在java中sleep的单位是毫秒,现在我们自定义sleep函数,实现毫秒单位的等待。########################################### my_time.py模块##########################################import timedef sleep(n): time.sleep(n/1000)########################################

2021-03-17 20:36:10 224

原创 python time模块下的clock、perf_counter、process_time函数

time.perf_counter(),返回性能计数器的值,包括睡眠期间(即cpu空闲)经过的时间(可用于计算程序运行时长,cpu级别,比time.time()精度更高)time.process_time(),返回当前进程的系统和用户CPU时间总和的值,不包括睡眠期间(即cpu空闲)经过的时间(可用于计算程序cpu使用时长)time.clock(),在windows下相当于perf_counter,在linux下相当于process_time(python3.3后废弃)...

2021-03-12 10:37:04 1229

原创 MySQL的utf8编码和utf8mb4

mysql的utf8编码最多支持3个字节,utf8mb4编码可以支持4个字节,utf8编码能够支持的字符集是utf8mb4编码的子集(例如:utf8mb4编码可以支持emoji表情,而utf8不支持)若当前的数据库、表和字段已经设置为了utf8编码,那么当需要处理生僻字符(4字节)时,需要将编码更新为utf8mb4,经过验证一下过程可以实现:修改数据库编码及字符集ALTER DATABASE db_name(你的数据库) CHARACTER SET = utf8mb4 COLLATE = utf8

2021-03-03 16:56:29 358 1

原创 Elasticsearch中某个新索引的文档在首次refresh前后的可见性

refresh前(获取可见,搜索不可见)get(exists):可见mget:可见search:不可见msearch:不可见refresh后(获取可见,搜索可见)get(exists):可见mget:可见search:可见msearch:可见python程序验证refresh前import jsonfrom elasticsearch import Elasticsearches = Elasticsearch('http://127.0.0.1:9200')i

2021-03-02 16:35:06 242

原创 python多线程与多进程

多线程3种实现方式直接使用Thread类创建继承Thread类使用concurrent.futures模块下的线程池–ThreadPoolExecutor线程通信共享全局变量使用queue模块下的线程队列–Queue、PriorityQueue线程同步Lock、RLockEventCondition–wait、notifySemaphore、BoundedSemaphore–acquire(计数器+1)、release(计数器-1),通过计数器控制线程数量多进程4种实

2021-03-02 11:02:19 83

原创 python requests中以“multipart/form-data”方式上传文件的坑

python标准库urllib3在实现multipart/form-data方式上传时,实现了RFC2231,然而某些web服务可能并没有实现RFC2231,而导致服务端无法正常解析python客户端上传的文件。import requestsrep = requests.post('http://127.0.0.1:5000/upload_file', files={'file': ('test.txt', open('test.txt',rb))})rep1 = requests.post('ht

2021-01-15 15:26:18 1150 1

原创 flask的url处理器(url_defaults和url_value_preprocessor)

Flask从0.7引入了URL处理器,其作用是为你处理大量包含相同部分的URL。例如你有许多URL都包含语言代码,但是又不想在每个函数中都重复处理这个语言代码,那么就可以使用URL处理器。在应用中使用URL处理器假设有应用如下:from flask import Flask, gapp = Flask(__name__)@app.route('/<lang_code>/')def index(lang_code): g.lang_code = lang_code

2020-12-23 16:28:55 340

原创 python文件遍历方式

python3.5版本之前:os.listdir、os.walkpython3.5及3.5版本之后:os.listdir、os.walk、os.scandirpython3.5开始新增的os.scandir函数,返回目录下全部文件对象(DirEntry)的迭代器,使得目录的遍历性能大大提高,尤其在单层目录下有大量文件的情况下。...

2020-12-08 20:40:09 90

原创 flask的signals模块

flask的signals模块中基于blinker信号量库,创建了request_started、request_finished、got_request_exception等Signal对象。flask在相关事件发生时,就调用对应Signal对象发布信号。下面以got_request_exception举例:class Flask(_PackageBoundObject): ... def handle_exception(self, e): """Default exception han

2020-12-07 16:57:16 257

原创 Flask源码学习--locked_cached_property

# sentinel_missing = object()class locked_cached_property(object): """A decorator that converts a function into a lazy property. The function wrapped is called the first time to retrieve the result and then that calculated result is used th

2020-11-20 17:46:49 252

原创 Flask源码学习--Context(上下文)

应用上下文:AppContext,封装了Flask核心对象请求上下文:RequestContext,封装了Request对象

2020-11-20 17:19:44 72

原创 python中的类实例的属性查找过程

getattr、__getattribute__对属性查找的影响没有__getxxx__的一个例子class Book: press = "人民邮电出版社"class LanguageBook(Book): name = "" price = 100 def __init__(self): self.name = "python"book = LanguageBook()print(book.name)print(book.price

2020-11-19 20:30:39 1471 2

原创 Python模块导入之sys.modules

python中的sys.modules是一个全局字典,从python程序启动就加载到了内存,用于保存当前已导入(加载)的所有模块名和模块的绝对路径。在python的模块查找中,sys.modules起到缓存作用,避免了模块的重复加载。程序在导入某个模块时,会首先查找sys.modules中是否包含此模块名,若存在,则只需将模块的名字加入到当前模块的Local名字空间中;若不存在,则需要从sys.path目录中按照模块名称查找模块文件,模块文件可以是py、pyc、pyd,找到后将模块加载到内存,并加入到sy

2020-11-19 16:16:54 7279

原创 Http长连接配置

nginx客户端与nginx的长连接keepalive_timeout:客户端与nginx之间的长连接超时设置,当一个连接的最后一次数据传输至今超过了这个时间,那么当前连接就会被服务端主动关闭。 默认值60s,因此客户端与Nginx默认是长连接的。keepalive_requests :也是客户端与Nginx的长连接设置,如果当前客户端与nginx之间的长连接上处理的请求数量超过设置值,那么当前长连接将会被关闭,qps不高的情况下使用默认值就行了,如果qps高达10000级别,最好把这个值调高一.

2020-11-17 20:31:22 1215

原创 Flask源码学习--werkzeug的local模块

flask的上下文应用上下文:AppContext,封装了Flask核心对象请求上下文:RequestContext,封装了Request对象werkzeug的local模块Local类# 在有greenlet的情况下,get_indent实际获取的是greenlet的id,而没有greenlet的情况下获取的是thread idtry: from greenlet import getcurrent as get_identexcept ImportError:

2020-11-17 20:21:29 187 1

原创 es7.2版本相较于6.8的使用差异记录

es7.2版本相较于6.8的变化查询返回的结果发生变化6.8版本返回的命中文档的数量是精确的,7.2版本不一定是精确的6.8版本hits.total – 命中总数(精确值){ "took" : 0, "timed_out" : false, "_shards" : { "total" : 3, "successful" : 3, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 10001, "max_sco

2020-11-17 20:14:00 984

转载 python2和python3的Unicode区别

python2在编译安装时,可以通过参数 --enable-unicode=ucs2 或 --enable-unicode=ucs4分别用于指定使用2个字节、4个字节表示unicode字符;python3无法进行选择,默认使用ucs4。ucs4的低2个字节表示的字符和ucs2相同查看当前python中表示unicode字符时占用的空间:import sysprint(sys.maxunicode)# 如果值是 65535,则表示使用uns2标准,即:2个字节表示# 如果值是 1114111,则表

2020-11-17 19:39:37 301

原创 Redis数据持久化

作为内存数据库,redis提供了两种数据持久化的方式:RDB、AOF。通过RDB和AOF,可以将存在内存中的数据持久化到磁盘上,以防止redis实例挂断后,数据全部丢失。RDB持久化原理 RDB持久化就是把当前redis实例进程的数据生成快照,写入到磁盘中。触发RDB持久化的方式可以是手动触发和自动触发,都通过调用bgsave命令。(生产环境一般不手动触发)RDB持久化过程 1. 主进程接收到bgsave命令后,先判断当前是否已有子进程在执行RDB/AOF持久化,若存在,则直接返回; 2.

2020-11-13 17:27:40 87

原创 Redis内存管理

回收策略定时删除:默认每100ms随机选取一些设置了过期时间的key,检测是否过期,若过期就删除。(考虑性能问题,每次不会判断全部key,这就引起过期key删除不及时的问题)惰性删除:在获取key时,redis会检测key是否设置了过期时间,如果设置了,会继续判断是否过期,若过期,会删除key,并返回key不存在(解决了定时删除不及时的问题)淘汰策略noeviction(默认策略):不删除任何数据,拒绝写入,所有引起申请内存的命令会报错volatile-lru:根据LRU算法,删除设..

2020-11-13 15:31:00 62

原创 python中的__new__方法

python中的__new__方法python中__new__方法是对象的构造方法:在元类中,__new__方法控制类(元类的实例,本质是对象)的创建;在普通类中,__new__方法控制类对象的创建;试验代码class MetaClass(type): def __new__(cls, name, bases, *attrs): print('在元类中,__new__方法控制类(元类的实例,本质是对象)的创建') return super().__new

2020-11-02 15:58:10 318

flay bird C++实现

flay bird 按 小写的 j 键飞行

2014-03-23

空空如也

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

TA关注的人

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