RPA_Frame
自动化框架
测试框架 =========》 自动化生产
Web自动化框架 – Selenium用法详解从入门到实战
PC端自动化框架 – PyWinAuto
集成微信机器人 – python-office
移动端&PC端自动化框架 – Appium
Selenium
环境准备1.包#下载包pip install -i https://pypi.douban.com/simple selenium
2.驱动Chrome for Testing availability
Chrome测试版(防自动更新)
ChormeDriver
元素定位
id 定位
find_element_by_id
# 标签<input id="toolbar-search-input" autocomplete="off" type="text" value="& ...
Canal
CDCCDC(Change Data Capture):捕获数据变更的技术,CDC技术主要面向数据库的变更,一种用于捕获数据库中数据变更的技术。
基于查询(批)
优点:
实现相对简单
无需特别的配置和权限
缺点:
实时性基于调度频率
对DB压力较大
无法保证数据一致性
Canal
Github:alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件
工作原理类似:MySQL主从复制过程 —- 就是把自己伪装成Slave,假装从Master复制数据。
1)Master主库将改变记录,写到二进制日志(Binary Log)中;
2)Slave从库向MySQL Master发送dump协议,将Master主库的binary log events拷贝到它的中继日志(relay log):
3)Save从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。
MySQL配置
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5. ...
Java备忘录
Java一、HashMap和HashTable的区别
线程安全性:
HashMap是非线程安全的,不适合多线程环境。
HashTable是线程安全的,但可能在高并发情况下性能受限。
null键值:
HashMap允许有一个null键和多个null值。
HashTable不允许null键或null值。
继承关系:
HashMap继承自AbstractMap,实现了Map接口。
HashTable继承自Dictionary,不是一个接口,而是一个类。
迭代器:
HashMap的迭代器是fail-fast的。
HashTable的迭代器不是fail-fast的。
二、HashMap
利用键计算哈希值决定存储索引
null则添加,key一样则覆盖,key不一样,出现哈希碰撞的话,
JDK8 之前:
新数据添加到数组中,而旧数据挂载在新数据下面,形成链表
在JDK 1.7中,HashMap的扩容机制是在扩容时将桶的数量翻倍
JDK8
新数据挂载在旧数据下面,形成链表,当链表长度超过 8 && 数组长度>64的时候,链表自动转为红黑树
...
CC防御
一、连接服务器,使用iftop;
sudo apt update #更新sudo apt install iftop #安装iftop #实时监控网络带宽
二、iftop查看异常流量的IP,然后使用防火墙禁止;
使用安全组规则将异常流量直接隔离,有些厂商不能设置拒绝的策略,那么只能等待流量到达服务器中,然后在处理;
具体方法:
iptables -I INPUT -s IP -j DROPiptables -save
或者直接禁止这个IP段访问
iptables -I INPUT -s 121.1.1.0/24 -j DROPiptables -I INPUT -s 121.1.0.0/16 -j DROPiptables -I INPUT -s 121.0.0.0/8 -j DROP
iptables命令
查看规则:
iptables -L: 列出当前防火墙规则。默认会列出filter表的规则。
iptables -t <table> -L: 列出特定表的规则,其中<table>可以是filter、nat、或mang ...
xxl-job
分布式任务调度
源码仓库地址
Release Download
https://github.com/xuxueli/xxl-job
Download
http://gitee.com/xuxueli0323/xxl-job
Download
调度中心拉取
1.源码中找到数据库脚本导入数据库
2.拉取镜像
docker pull xuxueli/xxl-job-admin:2.3.0
3.创建容器
docker run \ -e PARAMS="--spring.datasource.url=jdbc:mysql:// URL /xxl_job?Unicode=true&characterEncoding=UTF-8 \ --spring.datasource.username=数据库名称 \ --spring.datasource.password=数据库密码" \ -p 8888:8080 \ -v /tmp:/data/applogs \ --name jobAdmin \ --restart= ...
Elasticsearch
Elasticsearch(ES)
入门正向、倒排索引
文档
索引(Index)
类似表,根据结果进行分类
与MySQL对比
架构
安装1、elasticsearch
先创建一个网络:
docker network create es-net
官网pull
docker pull elasticsearch:8.9.0
部署单点
docker run -d \ --name es \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -e "xpack.security.enabled=true" \ -v es-data:/usr/share/elasticsearch/data \ - ...
RabbitMQ
RabbitMQ
RabbitMQ官网
访问:(port:15672)
#导入镜像docker pull rabbitmq
#运行MQ容器docker run \ -e RABBITMQ_DEFAULT_USER=cRabbitMQ \ -e RABBITMQ_DEFAULT_PASS=cRABBIT.. \ --name mq \ --hostname hchenp \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq:latest
常见消息模型
基本消息队列(BasicQueue)
依赖<!--amqp--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>
配置文件spring: rabbitmq: host: 198.16 ...
SpringCloud
SpringCloudSpringCloud-Alibaba
<spring-cloud.version>Hoxton.SR8</spring-cloud.version> <mybatis.plus.version>3.3.0</mybatis.plus.version> <mysql.version>5.1.47</mysql.version> <alibaba.version>2.2.5.RELEASE</alibaba.version><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${alibaba.version}</ver ...
Redis
NoSQL
NoSQL特点
1、方便扩展(数据之间没有关系,很好扩展!)
2、大数据量高性能(Redis一秒写8万次,读取11万,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)
3、数据类型是多样型的!(不需要事先设计数据库!随取随用!如果是数据量十分大的表,很多人就无法设计了)
4、传统RDBMS和NoSQL
传统的RDBMS- 结构化组织- SQL- 数据和关系都存在单独的表中- 操作操作,数据定义语言- 严格的一致性- 基础的事务
Nosql- 不仅仅是数据- 没有固定的查询语言- 键值对存储,列存储,文档存储,图形数据库(社交关系)- 最终一致性,- CAP定理 和 BASE(异地多活)- 高性能,高可用,高可扩
3V+V高
大数据时代的3V:主要是描述问题的
1.海量Volume
2.多样Variety
3.实时Velocity
大数据时代的3高:主要是对程序的要求
1.高并发
2.高可拓
3.高性能
四大分类
KV键值对
文档型数据库(bson格式和json一样)
Mong ...
JVM
初识
JIT
跨平台
常见JVM
自带默认 HotSpot:闭源
JVM组成
工具: jclasslib
内存结构
程序计数器
物理硬件:寄存器
线程私有
记录下一条jvm指令的执行地址
起始:jvm指令 ==》解释器 =》机器码 =》 CPU
接下来: 解释器 =》 程序计数器 =》 指令 =》jvm指令 =》机器码 =》CPU
特点
1、是线程私有的:每个线程拥有自己的程序计数器
2、不会存在内存溢出
虚拟机栈
线程私有
线程运行的内存空间
栈帧:一次方法的调用,每个方法运行时需要的内存==》栈帧
每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法
问题解析
1.垃圾回收是否涉及栈内存?
不涉及,栈内存由一 ...