info

Consul 简介及集群安装

浪子不回头ぞ 提交于 2019-12-06 03:34:55
简介 Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。 Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等特性。 Consul本身只是一个二进制的可执行文件,所以安装和部署都非常简单,只需要从官网下载后,在执行对应的启动脚本即可。 官网下载地址: https://www.consul.io/downloads.html 特性 基础特性 服务注册/发现 数据强一致型保证 多数据中心 健康检查 Key/Value存储 高级特性 HTTP API ACL 工作模式 Consul中包括的3种不同的角色:Client、Server、Server-Leader。 还有一个在图上没有标出来的角色Agent,一共4个角色。 Agent 是一个守护线程 跟随Consul应用启动而启动 负责检查、维护节点同步 Client 转发所有请求给Server 无状态, 不持久化数据 参与LAN Gossip的健康检查 Server 持久化数据 转发请求给Server-Leader 参与Server-Leader选举 通过WAN Gossip(流言算法协议, Cassandra和比特币的底层算法, 符合弱一致性), 与其他数据中心交换数据 Server-Leader 响应RPC请求

图片转化base64格式

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 03:33:47
public function Base64EncodeImage($ImageFile) { // 图片转化base64格式 , 图片需要在本地,有访问权限 , 相对于项目路径 if(file_exists($ImageFile) || is_file($ImageFile)){ $image_info = getimagesize($ImageFile); $image_data = fread(fopen($ImageFile, 'r'), filesize($ImageFile)); $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data)); return $base64_image; } else { return -100; } } 来源: https://www.cnblogs.com/pansidong/p/11960608.html

python-day1.6

余生长醉 提交于 2019-12-06 03:27:54
字符的拼接:+# Author:Rebootname = input("name:")age = input("age:")job = input("job:")salary = input("salary:")info = '''---info of ''' + name + '''---name: '''+name+'''age: '''+age+'''job: '''+job+'''salary: '''+salary+''''''print(info)字符的引用:%S (%String)、占位符匹配变量# Author:Reboot name = input("name:")age = input("age:")job = input("job:")salary = input("salary:")info = '''--- info of %s ---name:%sage:%sjob:%ssalary:%s''' % (name, name, age, job, salary)print(info).format引用、关联 # Author:Rebootname = input("name:")age = input("age:")job = input("job:")salary = input("salary:")info = '''--- info of {a} -

C语言实现Linux之ls

巧了我就是萌 提交于 2019-12-06 02:56:52
ls命令用来显示目标列表。 常用参数: -l :以长格式显示目录下的内容列表。输出信息从左向右依次包括文件名,文件类型,权限模式,硬连接数,所有者、组、文件大小和文件的最后修改时间等; -a :显示所有档案及目录; -r :以文件名反序排列并输出目录内容列表; -t :用文件和目录的更改时间排序; -R :递归处理,将指定目录下的所有文件及子目录一并处理。 常用参数组合: ls –rtl:反向按时间排序,查看一个目录下最近修改的文件。 ls –full-time:在写shell脚本的时候需要获取文件被更新的时间,此命令可以获取时间细微的变化。 获取指定目录下文件名: /* ls_name.c */ #include<stdio.h> #include<sys/types.h> #include<dirent.h> void do_ls(char[]); int main(int argc, char **argv) { if (argc == 1) { do_ls("."); } else { while(--argc) { printf("%s:\n",*++argv); do_ls(*argv); } } return 0; } void do_ls(char dirname[]) { DIR* dir_ptr; struct dirent *direntp; if ((dir

oracle表结构

人盡茶涼 提交于 2019-12-06 02:35:05
表管理 新建表 语法 create table 表名 ( 列名1 类型(长度), 列名2 类型(长度), 列名3 类型(长度) ); create table :关键字,建表 后跟新建表的表名,表名长度有限制,不超过32位,以英文单词或者缩写组成,单词之间用下划线连接 表名必须是数据库中唯一的,重复会报错. 列名:英文单词缩写组成,长度不超过30位,不能以数字,下划线或特殊字符开头.单词之间以下划线连接. 括号后须有分号结束; SQL> create table stu_test 2 ( 3 stu_id number(6), 4 stu_name varchar2(50), 5 stu_age number(3) 6 ); 表已创建。 添加注释 SQL> comment on table stu_test is '学生表'; 注释已创建。 SQL> comment on column stu_test.stu_id is '学生编号'; 注释已创建。 SQL> comment on column stu_test.stu_name is '学生姓名'; 注释已创建。 SQL> comment on column stu_test.stu_age is '学生年龄'; 注释已创建。 comment on table:关键字,即表的注释 comment on column:关键字

五、为api server自签证书

孤街浪徒 提交于 2019-12-06 02:02:08
1、创建CA配置json文件 [root@k8s-master01 k8s]# cat ca-csr.json { "CN": "kubernetes", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "HuBei", "ST": "WuHan", "O": "k8s", "OU": "System" } ] } [root@k8s-master01 k8s]# cat ca-config.json { "signing": { "default": { "expiry": "876000h" }, "profiles": { "kubernetes": { "expiry": "876000h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } } } 2、创建apiserver证书的所需配置文件 [root@k8s-master01 k8s]# cat kube-proxy-csr.json { "CN": "system:kube-proxy", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ {

node-sass 安装失败的各种坑

[亡魂溺海] 提交于 2019-12-06 02:00:58
开始的时候引入别人的一个项目 npm install npm run dev 启动项目 报错 > node build/dev-server.js Listening at http://localhost:8888 webpack: wait until bundle finished: /index.html webpack built 5301489d16ee90d86896 in 3165ms Hash: 5301489d16ee90d86896 Version: webpack 1.15.0 Time: 3165ms Asset Size Chunks Chunk Names app.js 1.96 MB 0 app ERROR in Cannot find module 'node-sass' @ ./src/common/scss/index.scss 4:14-124 13:2-17:4 14:20-130 ERROR in Cannot find module 'node-sass' @ ./~/vue-style-loader!./~/css-loader!./~/vue-loader/lib/style-rewriter.js?id=data-v-e0c3a2e6!./~/sass-loader!./~/vue-loader/lib/selector.js

三、为etcd自签证书

可紊 提交于 2019-12-06 01:59:08
准备工作 需要两套证书,一套k8s通讯使用,一套etcd内部通讯使用 下载证书生成工具 [root@k8s-master01 k8s]# curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl [root@k8s-master01 k8s]# curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson [root@k8s-master01 k8s]# curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo [root@k8s-master01 k8s]# chmod +x /usr/local/bin/cfssl* etcd自签证书 1、为etcd创建自签证书 创建CA配置json文件 1 [root@k8s-master01 etcd]# cat ca-csr.json 2 { 3 "CN": "etcd CA", 4 "key": { 5 "algo": "rsa", 6 "size": 2048 7 }, 8 "names": [ 9 {

08-02 红薯小说网爬取(6层反扒,涉及js加密,js动态渲染,css反扒等等)

孤者浪人 提交于 2019-12-06 01:12:29
08-02 红薯小说网爬取(6层反扒,涉及js加密,js动态渲染,css反扒等等) 红薯小说网加密破解 1.1 目标站点网址 https://www.hongshu.com/content/3052/3317-98805.html 以某篇具体文章为例,咱来破解这个网站的加密,爬取到所有的小说内容 1.2 站点分析 1.2.1 目标资源分析 我们的目的是要小说内容,那么先来看一看直接请求https://www.hongshu.com/content/3052/3317-98805.html得到的响应会不会有我要的数据 你会失望的发现,响应体里面没有文章内容 那就得去思考了,小说内容来自哪里?最大的可能是ajax发起二次请求,拿到json格式的数据再渲染到页面上. 带着这个思路,就去找找json数据憋 诶呀,我**,找到了两个很可疑的响应: 第一个响应里的可疑字段: 'key':动动脑子都能猜到,这东西绝对有用 第二个响应里的可疑字段: content:内容加密,瞅这个英语单词就知道加密内容小说内容有关 other:内容也是加密的,虽然还猜不到它到底有什么用,但八九不离十和小说内容有一腿 我们再来看看,这两个请求如何模拟 都是post请求,form-data也很简单,bid,jid,cid就在url上 https://www.hongshu.com/content/3052/3317

使用Redis实现延时任务(一)

故事扮演 提交于 2019-12-06 01:10:30
使用Redis实现延时任务(一) 前提 最近在生产环境刚好遇到了延时任务的场景,调研了一下目前主流的方案,分析了一下优劣并且敲定了最终的方案。这篇文章记录了调研的过程,以及初步方案的实现。 候选方案对比 下面是想到的几种实现延时任务的方案,总结了一下相应的优势和劣势。 方案 优势 劣势 选用场景 JDK 内置的延迟队列 DelayQueue 实现简单 数据内存态,不可靠 一致性相对低的场景 调度框架和 MySQL 进行短间隔轮询 实现简单,可靠性高 存在明显的性能瓶颈 数据量较少实时性相对低的场景 RabbitMQ 的 DLX 和 TTL ,一般称为 死信队列 方案 异步交互可以削峰 延时的时间长度不可控,如果数据需要持久化则性能会降低 - 调度框架和 Redis 进行短间隔轮询 数据持久化,高性能 实现难度大 常见于支付结果回调方案 时间轮 实时性高 实现难度大,内存消耗大 实时性高的场景 如果应用的数据量不高,实时性要求比较低,选用调度框架和 MySQL 进行短间隔轮询这个方案是最优的方案。但是笔者遇到的场景数据量相对比较大,实时性并不高,采用扫库的方案一定会对 MySQL 实例造成比较大的压力。记得很早之前,看过一个PPT叫《盒子科技聚合支付系统演进》,其中里面有一张图片给予笔者一点启发: 里面刚好用到了调度框架和 Redis 进行短间隔轮询实现延时任务的方案