info

Canal——增量同步MySQL数据到ES

蓝咒 提交于 2019-12-04 00:25:03
1.准备 1.1.组件    JDK :1.8版本及以上;    ElasticSearch :6.x版本,目前貌似不支持7.x版本;   Canal.deployer: 1.1.4    Canal.Adapter: 1.1.4 1.1.配置 需要先开启MySQL的 binlog 写入功能,配置 binlog-format 为 ROW 模式 找到my.cnf文件,我的目录是/etc/my.cnf,添加以下 配置: log-bin=mysql-bin   # 开启 binlog binlog-format=ROW   # 选择 ROW 模式 server_id=1      # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复 然后 重启mysql ,用以下命令检查一下binlog是否正确启动: mysql> show variables like 'log_bin%'; +---------------------------------+----------------------------------+ | Variable_name | Value | +---------------------------------+----------------------------------+ | log_bin | ON |

Zookeeper集群部署和使用

此生再无相见时 提交于 2019-12-03 23:48:43
Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,Google Chubby的一个开源实现。它是一个分布式应用程序协调服务,提供的功能包括:配置管理,名字服务,提供分布式同步、队列管理、集群管理等。 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似 Master/Slave 管理模式。 Zookeeper有两种运行模式: 独立模式(standalone mode):只运行在一台服务器上,适合测试环境。 复制模式(replicated mode):运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) 复制模式的Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。这跟Zookeeper的复制策略有关:Zookeeper确保对znode树的每一个修改都会被复制到集合体中超过半数的机器上。 Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务

你还在用BeanUtils进行对象属性拷贝?

£可爱£侵袭症+ 提交于 2019-12-03 23:45:01
摘自: https://www.cnblogs.com/vandusty/p/11808163.html 你还在用BeanUtils进行对象属性拷贝? 在做业务的时候,为了隔离变化,我们会将 DAO 查询出来的 DO 和对前端提供的 DTO 隔离开来。大概 90% 的时候,它们的结构都是类似的;但是我们很不喜欢写很多冗长的 b.setF1(a.getF1()) 这样的代码,于是我们需要简化对象拷贝方式。 一、背景 1.1 对象拷贝概念 Java 中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括 int 、 double 、 byte 、 boolean 、 char 等简单数据类型,引用类型包括类、接口、数组等复杂类型。 对象拷贝分为 浅拷贝(浅克隆) 与 深拷贝(深克隆) 。 浅拷贝与深拷贝差异 分类 浅拷贝 深拷贝 区别 创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制 引用但不复制引用的对象 。因此,原始对象及其副本引用同一个对象。 创建一个新对象,然后将当前对象的非静态字段复制到该新对象,无论该字段是值类型的还是引用类型,都 复制独立的一份 。当你修改其中一个对象的任何内容时,都不会影响另一个对象的内容。 参考文章 1.2 示例前准备 源对象属性类 UserDO.class

你还在用BeanUtils进行对象属性拷贝?

半腔热情 提交于 2019-12-03 22:51:35
在做业务的时候,为了隔离变化,我们会将 DAO 查询出来的 DO 和对前端提供的 DTO 隔离开来。大概 90% 的时候,它们的结构都是类似的;但是我们很不喜欢写很多冗长的 b.setF1(a.getF1()) 这样的代码,于是我们需要简化对象拷贝方式。 一、背景 1.1 对象拷贝概念 Java 中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括 int 、 double 、 byte 、 boolean 、 char 等简单数据类型,引用类型包括类、接口、数组等复杂类型。 对象拷贝分为 浅拷贝(浅克隆) 与 深拷贝(深克隆) 。 浅拷贝与深拷贝差异 分类 浅拷贝 深拷贝 区别 创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话,则复制 引用但不复制引用的对象 。因此,原始对象及其副本引用同一个对象。 创建一个新对象,然后将当前对象的非静态字段复制到该新对象,无论该字段是值类型的还是引用类型,都 复制独立的一份 。当你修改其中一个对象的任何内容时,都不会影响另一个对象的内容。 参考文章 1.2 示例前准备 源对象属性类 UserDO.class (以下示例,源对象都用这个) @Data public class UserDO { private int id; private String

swagger在maven的使用

别来无恙 提交于 2019-12-03 22:21:02
引入pom.xml中 需要在版本中指定版本 然后导入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${springfox.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${springfox.version}</version> </dependency> 写一个类 package cn.jiedada.crm.web.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc

消息写入

折月煮酒 提交于 2019-12-03 21:20:26
消息写入 生产消息时的rpc请求日志 leader节点 [2019-09-25 19:40:22,266] INFO Handling request:RequestHeader(apiKey=FETCH, apiVersion=5, clientId=broker-0-fetcher-0, correlationId=8855) -- {replica_id=0,max_wait_time=500,min_bytes=1,max_bytes=10485760,isolation_level=0,topics=[{topic=test.vv19,partitions=[{partition=0,fetch_offset=35,log_start_offset=0,max_bytes=1048576}]}]} from connection 172.16.113.38:9094-172.16.113.38:49385-0;securityProtocol:PLAINTEXT,principal:User:ANONYMOUS (com.code260.ss.KafkaTestUtils$) [2019-09-25 19:40:22,266] INFO testEnter0006-replica:0 newLogEndOffset:35 oldLogEndOffsetMetadata

Python之jsonpath模块

天大地大妈咪最大 提交于 2019-12-03 21:12:41
使用jsonpath模块,需要 pip install jsonpath 安装即可。 当遇到层级比较深的字典时,要想取值使用jsonpath取值比较方便,可以一下取到。 如果取得值不存在,则返回False, import jsonpath d = { "error_code": 0, "stu_info": [ { "id": 314, "name": "矿泉水", "sex": "男", "age": 18, "addr": "北京市昌平区", "grade": "摩羯座", "phone": "18317155663", "gold": 100, "cars": [ {"car1": "bmw"}, {"car2": "ben-z"}, ] } ] } result=jsonpath.jsonpath(d,'$..car2') #模糊匹配 result=jsonpath.jsonpath(d,'$.stu_info') #取到stu_info这里的所有内容 result = jsonpath.jsonpath(d, '$.stu_info[0]') #取到stu_info里的第1个元素 result = jsonpath.jsonpath(d, '$.stu_info[0].id') # 取到stu_info里的第1个元素中的id print(result) 来源: https

【CentOS 7Tomcat配置5】,Tomcat日志#180121

我的未来我决定 提交于 2019-12-03 21:10:01
hellopasswd Tomcat日志 ls /usr/local/tomcat/logs 其中catalina开头的日志为tomcat的综合日志,他记录tomcat服务相关信息,也会记录错误日志 其中catalina.日期.log和catalina.out内容相同,前者会每天生成一个新的日志 host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志 localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志 访问日志默认不会生成,需要server.xml中配置一下 [root@localhost ~]# ls /usr/local/tomcat/logs/ catalina.2018-01-17.log host-manager.2018-01-17.log localhost.2018-01-21.log manager.2018-01-17.log catalina.2018-01-21.log host-manager.2018-01-21.log localhost_access_log.2018-01-17.txt manager.2018-01-21.log catalina.out localhost.2018-01

微软的分布式应用框架 Dapr Helloworld

纵然是瞬间 提交于 2019-12-03 20:43:48
Dapr HelloWorld Dapr Distributed Application Runtime. An event-driven, portable runtime for building microservices on cloud and edge. 分布式应用运行时、事件驱动、为云和边缘构建微服务提供便携化运行时。 我现在也不是很懂。 dapr/dapr GitHub Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks. Dapr codifies the best practices for building microservice applications into open, independent, building blocks that enable you to build portable applications with

基本数据类型及内置方法

一笑奈何 提交于 2019-12-03 20:35:23
基本数据类型及内置方法 一、数字类型int与float int整形的定义 : age=10 #本质age = int(10) 其他进制转十进制 二进制:0,1 (如110) 1 * (2** 2)+1 * (2** 1) + 0 * (2** 0) = 4+2+0 = 6 八进制:0-7 (如123) 1 * (8** 2) + 2 * (8** 1) + 3 * (8**0) = 64 + 16 + 3 = 83 十六进制:0-9 a-f 3 * (16 ** 2) + 2 * (16 ** 1) + 1 * (16** 0) = 768 + 32 + 1 = 801 十进制转其他进制 #十进制转二进制: # print(bin(108)) # 0b 1101100 #十进制转八进制: # print(oct(83)) # 0o 123 #十进制转十六进制: # print(hex(1000)) # 0x 3e8 float浮点型的定义 height = 1.73 #本质height=float(1.73) 字符串转整形需要先转成浮点型 二、字符串str 字符串的定义 :单引号/双引号/三引号之间包含的字符就是字符串(三种方式没有任何区别,但是不可以混用) 字符串前面加小写的r,代表转义(如果字符串中有特殊含义的字符,就可以定义为普通字符) #数据类型转换:str(