每个人都有自己的想法,你不能否认底层的工人没有自己的想法,只是他们没有上升到下达指令位置的条件,不管是软的还是硬的 工作让你原来越小白的时候,那就只能接着从小白做起 1、修改远程仓库的地址 git remote set-url origin https://github.com/jma/test.git 2、重命名远程仓库 git remote rename origin master 3、删除本 […]
分类:ECW
to record the skills, experience and some other interesting things about the Computer World
kazoo操作zookeeper基本功能的记录
任何数字化的信息在若干年后都会变成废品
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# coding: utf-8 from kazoo.client import KazooClient, NoNodeError zk = KazooClient(hosts="192.168.1.1:2181") zk.start() node_path_tpl = "/test1/resources/rsip@{ip}/rsport@{port}" # 从文件读取信息 # ip:port # with open("ip.list", "r") as f: # node_list = f.readlines() # 直接从zk获取信息 node_list = [] rsip_list = zk.get_children("/test1/resources") for rsip in rsip_list: _, host = rsip.split("@") rsport_list = zk.get_children("/test1/resources" + "/" + rsip) for rsport in rsport_list: _, port = rsport.split("@") node_list.append("{}:{}".format(host, port)) for item in node_list: sub_node_list = [] ip, port = item.replace("\n", "").split(":") node_path = node_path_tpl.format(ip=ip, port=port) print(node_path) # 获取所有子节点 # 方法1: 直接返回异常 # try: # if zk.exists(node_path): # sub_node_list = zk.get_children(node_path) # else: # print("(ne){}".format(node_path)) # except NoNodeError: # continue # 方法2: 通过zstat获取 if zk.exists(node_path): _, state = zk.get(node_path) if state.numChildren != 0: sub_node_list = zk.get_children(node_path) else: zk.ensure_path(node_path) # 子节点不为空,删除所有子节点 for sub_item in sub_node_list: sub_node_path = node_path + "/" + sub_item print("\t" + sub_node_path) # zk.delete(sub_node_path, recursive=True) zk.stop() zk.close() |
python的dict对象update操作的一些收集
默认的dict.update()在处理dict中包含list/dict对象时候会直接进行替换,不能取并集,在某些场景下不满足需求。针对这一问题,网上有很多讨论的内容,stackoverflow这个帖子比较经典,可以参考 https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying […]
python的map和zip
1 2 3 4 5 6 |
def map(func: Callable[[_T1], _S], iter1: Iterable[_T1]) map(func, *iterables) --> map object Make an iterator that computes the function using arguments from each of the iterables. Stops when the shortest iterable is exhausted. |
在使用map的时候,如果func只有一个参数,那么iterables直接传递一个list是可行的,但是如果func默认不止一个参数,那么这里传给map的参数需要额外关注,不能直接使用list或者tuple的组合,我们先通过一张图,来直观的看一下map参数的格式: 假设func1是我们定义的参数,有4个固定参数。正常调用func1直接 […]
sysbench测试ext4、xfs、btrfs的读写性能
测试环境信息: CPU:48核, Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz MEMORY:502G DISK: product: MR9361-8i, vendor: LSI(只能看到这些) (接近空载) 测试数据: 数据总大小:16G 文件个数:1、128 测试范围,分别对fileio的两个参数filo_io_mode和file_extra_flags进 […]
junit命令行执行方式
举例一个空的测试用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import org.junit.Assert; import org.junit.Test; import java.util.HashMap; import java.util.Map; public class MyTest { Map dict_para = new HashMap(); @Test // 测试1 public void testMy1() { dict_para.clear(); dict_para.put("useSSL", "unknow"); MyDemo m1 = new MyDemo(dict_para); boolean ret = m1.do1(); Assert.assertEquals(false, ret); } } |
编译: javac -cp ".:/opt/jdk-17/lib/junit-4.13.2.jar" MyTest.java 运行: java -cp ".:/opt/jdk-17/lib/junit-4.13.2.jar:/opt/jdk-17/lib/hamcrest-core-1.3.ja […]
benchmarkSQL
BenchmarkSQL使用方法 以pingcap的分支作为演示:https://github.com/pingcap/benchmarksql 1、编译源码 # git clone https://github.com/pingcap/benchmarksql.git # cd benchmarksql # ant 2、运行 1)、创建数据库的用户 2)、创建数据库(以mysql系列为例) 此处 […]
mysql各系列版本源码安装备忘
简单,一是看到事物表面而觉得简单,另一是透彻事物本质而观着简单 #安装mysql5.7.32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
cmake .. -DCMAKE_INSTALL_PREFIX=/data/application/mysql5.7.32 \ -DMYSQL_DATADIR=/data/application/mysql5.7.32/data \ -DSYSCONFDIR=/data/application/mysql5.7.32/etc \ -DMYSQL_UNIX_ADDR=/data/application/mysql5.7.32/mysql.sock \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_SSL=/data/application/openssl1.1.1j \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLED_PROFILING=0 \ -DWITH_BOOST=/data/software/mysql-5.7.32/boost ./bin/mysqld --initialize-insecure --datadir=/data/application/mysql5.7.32/data ./bin/mysqld_safe --defaults-file=/data/application/mysql5.7.32/etc/my.cnf --user=mysql & |
#安装percona5.7.32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
cmake .. -DCMAKE_INSTALL_PREFIX=/data/application/percona5.7.32 \ -DMYSQL_DATADIR=/data/application/percona5.7.32/data \ -DSYSCONFDIR=/data/application/percona5.7.32/etc \ -DMYSQL_UNIX_ADDR=/data/application/percona5.7.32/mysql.sock \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_SSL=/data/application/openssl1.1.1j \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLED_PROFILING=0 \ -DWITH_BOOST=/data/software/mysql-5.7.32/boost ./bin/mysqld --initialize-insecure --datadir=/data/application/percona5.7.32/data ./bin/mysqld_safe --defaults-file=/data/application/percona5.7.32/etc/my.cnf --user=mysql & ./bin/mysqld --defaults-file=/data/application/percona5.7.32/etc/my.cnf --user=mysql & |
#安装mariadb10.5.8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
cmake3 .. -DCMAKE_INSTALL_PREFIX=/data/application/mariadb10.5.8 \ -DMYSQL_DATADIR=/data/application/mariadb10.5.8/data \ -DMYSQL_UNIX_ADDR=/data/application/mariadb10.5.8/mysql.sock \ -DSYSCONFDIR=/data/application/mariadb10.5.8/etc \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_ARIA_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_CONNECT_STORAGE_ENGINE=1 \ -DWITH_CSV_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_SEQUENCE_STORAGE_ENGINE=1 \ -DWITH_SPHINX_STORAGE_ENGINE=1 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DEXTRA_CHARSETS=all \ -DENABLE_PROFILING=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_DEBUG=0 \ -DWITH_LIBWRAP=0 \ -DWITH_READLINE=1 \ -DWITH_SSL=/data/application/openssl1.1.1j ./scripts/mysql_install_db --basedir="/data/application/mariadb10.5.8" --defaults-file="/data/application/mariadb10.5.8/etc/my.cnf" #./bin/mysqld_safe --defaults-file=/data/application/mariadb10.5.8/etc/my.cnf --skip-grant-tables --skip-networking --user=mysql & ./bin/mysqld_safe --defaults-file=/data/application/mariadb10.5.8/etc/my.cnf --user=mysql & mysql -S mysql.sock --ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('root'); UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost'; |
[…]