Python如何替换掉字符串里面的单引号和双引号

编程艺术 空心菜 回复了问题 2 人关注 1 个回复 726 次浏览 2020-09-24 19:02 来自相关话题

Kafka Topic创建三步曲

大数据 空心菜 发表了文章 0 个评论 165 次浏览 2020-09-19 15:22 来自相关话题

Kafka Topic Consumer

通常在生产环境新增业务主题,我们都需要提前预测到,然后做好充分的准备,本文将介绍在生产环境中创建Topic时需要考虑的所有参数。


首先创建新Topic的时候,我们需要设置合理的分区数和副本数,不合理的设置将会给系统的性能和可靠性带来影响。


创建一个Topic

kafka/bin/kafka-topics.sh --create \
--zookeeper localhost:2181 \
--replication-factor 2 \
--partitions 3 \
--topic unique-topic-name

分区(Partitions)

Kafka主题分为多个分区,其中包含以不变顺序排列的消息。分区中的每个消息均通过其唯一偏移量进行分配和标识。


分区使我们可以在多个Broker之间分配主题数据,从而平衡Broker之间的负载。每个分区只能由一个Consumer Group使用,因此,服务的并行性受Topic拥有的分区数约束。


分区数受两个主要因素的影响,即消息数和每条消息的平均大小。如果交易量很大,您将需要使用代理数量作为乘法倍数,以允许在所有使用者上共享负载,并避免创建热分区,该分区会对特定代理造成高负载。我们的目标是使分区吞吐量达到1MB/s。


设置分区数:


--partitions [number]

副本(Replicas)

Kafka Topic Producer writes

如果leader分区发生故障并且需要跟随者(follower)副本替换它并成为领导者(leader),则Kafka可以选择复制Topic分区。在配置Topic时,请记住,分区是为实现快速读写速度,可伸缩性和分发大量数据而设计的。


另一方面,复制因子(RF)旨在确保指定的容错目标。副本不会直接影响性能,因为在任何给定时间,只有一个(leader)领导者分区负责通过Broker服务器处理生产者和使用者请求。


在决定复制因子时的另一个考虑因素是,为了满足生产容量会话,需要考虑服务需要的消费者数量。


设置复制因子(RF):
如果你的Topic承载的是关键业务,推荐你设置复制因子为3,其他的设置为2就够了。

--replication-factor [number]

Tips:  但这里需要注意一点的是, RF <= Broker Number



保留(Retention)

将消息保留在Topic中的时间或最大Topic大小。根据你的用例确定。默认情况下,保留期限为7天,但这是可配置的。


设置Retention:


--config retention.ms=[number]

压缩(Compaction)

为了释放空间并清理不需要的记录,Kafka压缩可以根据记录的日期和大小删除记录。它还可以删除具有相同键的每个记录,同时保留该记录的最新版本。基于键的压缩对于控制Topic的大小非常有用,其中只有最新的记录版本才是重要的。


启用压缩:


log.cleanup.policy=compact

分享阅读原文: http://suo.im/5W8p1p

Python下判断文件是否为二进制文件的三种方法

编程艺术 OpenSkill 发表了文章 0 个评论 213 次浏览 2020-09-18 18:27 来自相关话题

常用的有两种方法判断文件是否为二进制文件,最准确的就是把这两种方法结合起来更加准确点. 方法1利用codecs模块 ...查看全部

常用的有两种方法判断文件是否为二进制文件,最准确的就是把这两种方法结合起来更加准确点.


方法1利用codecs模块

它首先检查文件是否以BOM开始,如果不在初始8192字节内查找零字节:


import codecs

file_path = "/home/ubuntu/zgd/ztest/_gs418_510txp_v6.6.2.7.stk.extracted/test"

#: BOMs to indicate that a file is a text file even if it contains zero bytes.
_TEXT_BOMS = (
codecs.BOM_UTF16_BE,
codecs.BOM_UTF16_LE,
codecs.BOM_UTF32_BE,
codecs.BOM_UTF32_LE,
codecs.BOM_UTF8,
)


def is_binary_file(file_path):
with open(file_path, 'rb') as file:
initial_bytes = file.read(8192)
file.close()
return not any(initial_bytes.startswith(bom) for bom in _TEXT_BOMS) and b'\0' in initial_bytes

if __name__ == "__main__":
print is_binary_file(file_path)

上面is_binary_file()函数也可以改成下面的方式:


def is_binary_file(file_path):
with open(file_path, 'rb') as file:
initial_bytes = file.read(8192)
file.close()
for bom in _TEXT_BOMS:
if initial_bytes.startswith(bom):
continue
else:
if b'\0' in initial_bytes:
return True
return False


方法2利用magic模块

安装模块: pip install python-magic


def getFileType(ff):
mime_kw = 'x-executable|x-sharedlib|octet-stream|x-object' ###可执行文件、链接库、动态流、对象
try:
magic_mime = magic.from_file(ff, mime=True)
magic_hit = re.search(mime_kw, magic_mime, re.I)
if magic_hit:
return True
else:
return False
except Exception, e:
print e.message

最好的方法是对两种类型同时进行处理:


# -*- coding:utf-8 -*-
# @Author:zgd
# @time:2019/6/21
# @File:operateSystem.py

import magic
import re
import codecs

def is_binary_file_1(ff):
'''
根据text文件数据类型判断是否是二进制文件
:param ff: 文件名(含路径)
:return: True或False,返回是否是二进制文件
'''

TEXT_BOMS = (
codecs.BOM_UTF16_BE,
codecs.BOM_UTF16_LE,
codecs.BOM_UTF32_BE,
codecs.BOM_UTF32_LE,
codecs.BOM_UTF8,
)
with open(file_path, 'rb') as file:
CHUNKSIZE = 8192
initial_bytes = file.read(CHUNKSIZE)
file.close()
#: BOMs to indicate that a file is a text file even if it contains zero bytes.
return not any(initial_bytes.startswith(bom) for bom in TEXT_BOMS) and b'\0' in initial_bytes


def is_binwary_file_2(ff):
'''
根据magic文件的魔术判断是否是二进制文件
:param ff: 文件名(含路径)
:return: True或False,返回是否是二进制文件
'''

mime_kw = 'x-executable|x-sharedlib|octet-stream|x-object' ###可执行文件、链接库、动态流、对象
try:
magic_mime = magic.from_file(ff, mime=True)
magic_hit = re.search(mime_kw, magic_mime, re.I)
if magic_hit:
return True
else:
return False
except Exception, e:
return False


if __name__ == "__main__":
file_path = "/home/ubuntu/zgd/ztest/_gs418_510txp_v6.6.2.7.stk.extracted/D0"
print is_binary_file_1(file_path)
print is_binwary_file_2(file_path)
print any((is_binary_file_1(file_path), is_binwary_file_2(file_path)))


方法3判断是否有ELF头

根据文件中是否有ELF头进行判断文件是否为二进制文件


# 判断文件是否是elf文件
def is_ELFfile(filepath):
if not os.path.exists(filepath):
logger.info('file path {} doesnot exits'.format(filepath))
return False
# 文件可能被损坏,捕捉异常
try:
FileStates = os.stat(filepath)
FileMode = FileStates[stat.ST_MODE]
if not stat.S_ISREG(FileMode) or stat.S_ISLNK(FileMode): # 如果文件既不是普通文件也不是链接文件
return False
with open(filepath, 'rb') as f:
header = (bytearray(f.read(4))[1:4]).decode(encoding="utf-8")
# logger.info("header is {}".format(header))
if header in ["ELF"]:
# print header
return True
except UnicodeDecodeError as e:
# logger.info("is_ELFfile UnicodeDecodeError {}".format(filepath))
# logger.info(str(e))
pass

return False

Python下如何将字符串类型的列表转换为列表对象?

编程艺术 OS小编 回复了问题 3 人关注 1 个回复 281 次浏览 2020-09-18 01:18 来自相关话题

elasticsearch创建索引失败

回复

大数据 Something 回复了问题 2 人关注 1 个回复 165 次浏览 2020-09-03 15:23 来自相关话题

使用vscode的扩展pylance写的Python代码引入自定义的包找不到

编程艺术 OS小编 回复了问题 3 人关注 1 个回复 1519 次浏览 2020-08-29 21:41 来自相关话题

Hadoop高可用ZKFC节点异常退出

智慧运维 空心菜 回复了问题 1 人关注 1 个回复 185 次浏览 2020-09-18 13:03 来自相关话题

Python清空文件,读取替换回写失败

编程艺术 空心菜 回复了问题 1 人关注 1 个回复 222 次浏览 2020-09-18 13:05 来自相关话题

Linux下如何获取软链接文件的真实文件路径呢?

智慧运维 空心菜 回复了问题 1 人关注 1 个回复 650 次浏览 2020-09-18 13:08 来自相关话题

sed常用替换小技巧记录

智慧运维 Something 发表了文章 0 个评论 149 次浏览 2020-08-20 14:48 来自相关话题

1. 去掉行首空格 sed 's/^[ \t]*//g'2. 去掉行末空格 sed 's/[ \t]*$//g'3. 去掉所有空格 sed s/[[:space:]]//g4. 替换符号 sed "s/^\(.* ...查看全部
1. 去掉行首空格
sed 's/^[ \t]*//g'
2. 去掉行末空格
sed 's/[ \t]*$//g'
3. 去掉所有空格
sed s/[[:space:]]//g
4. 替换符号
sed "s/^\(.*\)$/'\1'/" 
sed "s/^\(.*\)$/aa =>\1/"