slf4j

java 判断两个bean 是否相等(技术点:反射)

家住魔仙堡 提交于 2020-04-29 15:12:25
知识点: 1. class.getDeclaredFields(); 获取类的所有字段 2.class.getMethods(); 获取类的方法 3.objValue = method.invoke(obj, new Object[] {}); 通过反射获取属性的值,obj对象,new Object[] {} 方法参数 1.bean package com.qimh.springbootfiledemo.utils; import com.alibaba.fastjson.JSONObject; /** * @author ex-qiminhui001 */ public class Person { private String name; private Integer age; private String[] friends; private JSONObject carts; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String

【Elasticsearch-Java】Java客户端搭建

混江龙づ霸主 提交于 2020-04-28 07:35:52
Elasticsearch Java高级客户端 1. 概述 Java REST Client 有两种风格: Java Low Level REST Client :用于Elasticsearch的官方低级客户端。它允许通过http与Elasticsearch集群通信。将请求编排和响应反编排留给用户自己处理。它兼容所有的Elasticsearch版本。(PS:学过WebService的话,对编排与反编排这个概念应该不陌生。可以理解为对请求参数的封装,以及对响应结果的解析) Java High Level REST Client :用于Elasticsearch的官方高级客户端。它是基于低级客户端的,它提供很多API,并负责请求的编排与响应的反编排。(PS:就好比是,一个是传自己拼接好的字符串,并且自己解析返回的结果;而另一个是传对象,返回的结果也已经封装好了,直接是对象,更加规范了参数的名称以及格式,更加面对对象一点) (PS:所谓低级与高级,我觉得一个很形象的比喻是,面向过程编程与面向对象编程) 在 Elasticsearch 7.0 中不建议使用TransportClient,并且在8.0中会完全删除TransportClient。因此,官方更建议我们用Java High Level REST Client,它执行HTTP请求,而不是序列号的Java请求。既然如此

elasticsearch 使用RestHighLevelClient

两盒软妹~` 提交于 2020-04-27 15:26:54
因公司使用ES搜索引擎,所以自己研究了几天,目前看网上的帖子五花八门,而且好多版本不用导致不能调用. 顾自己硬着头皮,看官方介绍,逐字翻译api,终于功夫不负有心人,demo可以使用了 本人用es最新版本es-7.2.0,客户端用RestHighLevelClient.还有一个客户端是transportClient客户端,但注意这个客户端将要被弃用.虽然本人开始研究的时候,是这个客户端,但为了后期,就果断放弃此客户端. 代码框架springboot2.0.X版本,springboot也有自己的封装客户端,好像是rest什么的,但底层封装的客户端是transportClient,而且和官方介绍的api差很多,boot也没有一个介绍相关调用的案列,顾没有深入研究. 废话不说,直接上代码了 我们是集群的配置: 配置文件: bootstrap.yml. firstIp: bs01 secondIp: bs02 thirdIp: bs03 firstPort: 9093 secondPort: 9093 thirdPort: 9093 clusterName: bses 创建客户端: ESClientSpringFactory package com.ztgx.es.config; import org.apache.http.HttpHost; import org

Java 项目创建 -- 统一结果处理、统一异常处理

一世执手 提交于 2020-04-27 13:51:13
一、IDEA 插件使用 1、说明   此处使用 SpringBoot 2.2.6 、JDK 1.8 、mysql 8.0.18 作为演示。   使用 IDEA 作为开发工具。 2、IDEA 插件 -- Lombok (1)简介   Lombok 能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString 等方法。   比如在实体类上使用 @Data 注解,就可以省去 getter、 setter 等方法的编写,但是在编译生成的字节码文件中有getter和setter方法。 (2)安装   Settings -> Plugins,搜索 Lombok。点击 install 安装后重启 IDEA 即可。 (3)使用 Step1:   使用 maven 添加依赖,引入对应的 jar 包。 <!-- https: // mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </dependency> Step2:   使用各种注解,简化代码编写。比如

rabbitmq生产者的消息确认

荒凉一梦 提交于 2020-04-27 08:49:46
通过Publisher Confirms and Returns机制,生产者可以判断消息是否发送到了exchange及queue,而通过消费者确认机制,Rabbitmq可以决定是否重发消息给消费者,以保证消息被处理。 1.什么是Publisher Confirms and Returns? Delivery processing acknowledgements from consumers to RabbitMQ are known as acknowledgements in AMQP 0-9-1 parlance; broker acknowledgements to publishers are a protocol extension called publisher confirms. 地址: http://www.rabbitmq.com/confirms.html 根据RabbitMq官网定义,rabbitmq代理(broker)对发布者(publishers)的确认被称作发布者确认(publisher confirms),这种机制是Rabbitmq对标准Amqp协议的扩展。因此通过这种机制可以确认消息是否发送给了目标。 2.如何通过Spring amqp来使用Publisher Confirms and Returns机制? Confirmed and

SpringBoot集成rabbitmq(二)

痴心易碎 提交于 2020-04-27 02:35:48
前言 在使用rabbitmq时,我们可以通过消息持久化来解决服务器因异常崩溃而造成的消息丢失。除此之外,我们还会遇到一个问题,当消息生产者发消息发送出去后,消息到底有没有正确到达服务器呢?如果不进行特殊配置,默认情况下发送的消息是不会给生产者返回任何响应的,也就是默认情况下生产者并不知道消息是否正常到达了服务器。对于数据必达的需求,你肯定对消息的来龙去脉都有个了接,这种情况下就需要用到rabbitmq消息确认。 消息确认 rabbitmq消息确认分为生产者确认和消费者确认。 生产者消费确认提供了两种机制: 通过事务机制实现 通过confirm机制实现 事务机制则用到channel.txSelect、channel.txCommit、channel.txRollback。可以参考下面AMQP协议流转过程(参考Rabbitmq实战指南) 事务机制在一条消息发送之后会阻塞发送端,以等待rabbitmq回应,之后才继续发送下一条消息。所以相对来说事务机制的性能要差一些。事务机制会降低rabbitmq的吞吐量,所以又引入了另一种轻量级的方式: confirm机制。 生产者通过调用channel.confirmSelect将信道设置为confirm模式,之后Rabbitmq会返回Confirm.Select-Ok命令表示同意生产者将当前信道设置为confirm模式

springboot日志

為{幸葍}努か 提交于 2020-04-26 01:41:33
1.日志门面、日志实现选择 日志门面(抽象层):SLF4J 日志实现:Logback(是Log4j修改) 这三个框架都是同一个人写的 spring框架默认JCL springboot选用SLF4J和Logback 2.SLF4J使用 在开发的时候,日志记录方法的调用,不应该直接调用日志的实现类,而是调用日志抽象层里的方法,给系统里面导入SLF4J的jar和Logback的实现jar 每个日志的实现框架都有自己的配置文件。使用SLF4J以后,配置文件还是要做成日志实现框架自己本身的配置文件。 Logger logger=LoggerFactory.getLogger("****.class"); logger.info("************"); 3.不同框架遗留问题 统一日志记录,使别的框架也使用SLF4J进行输出 解决: 1.将系统中其他日志框架先排除出去 2.用中间包来替换原有的日志框架 3.导入SLF4J其他的实现 4.springboot日志关系 <!-- springboot用它来做日志功能 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> 1

[java学习笔记]logback的使用

半腔热情 提交于 2020-04-24 23:41:13
建立一个简单的springboot的项目,不需要引入额外的依赖即可使用logback日志; 默认的日志记录级别是info,即只显示info, warn, error的日志,debug级别的日志不会显示; 可以通过配置文件的形式,将错误日志和正常的日志分开记录,指定日志的级别,日志的格式等操作,默认的配置文件名是logback-spring.xml,一个配置文件的例子; <?xml version="1.0" encoding="UTF-8"?> <configuration> <!--定义日志文件的存储地址,使用绝对路径--> <property name="LOG_HOME" value="G:/jarpro/ly_log/log"/> <!-- Console 输出设置 --> <appender name="CONSOLE" class ="ch.qos.logback.core.ConsoleAppender"> <encoder> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>utf8<

五分钟学Java:可变参数究竟是怎么一回事?

别等时光非礼了梦想. 提交于 2020-04-24 20:15:53
在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题。比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下。 我 以前很不重视基础,觉得不就那么回事嘛,会用就行了。就比如说今天这个主题,管它可变不可变呢,不就是个参数嘛,还能有多大学问——抱着这种态度,我一直横行江湖近十载(苦笑)。可等到读者找我提一些基础的问题时,我几乎回答不上来,感觉知识是散的,或者是浮于表面的。幸好最近一段时间,我开始幡然醒悟,开始不放过任何一个细节,渐渐地,有点“知识储备”了。 好了,牛逼吹完,让我们来步入正题。Java 的可变参数究竟是怎么一回事? 可变参数是 Java 1.5 的时候引入的功能,它允许方法使用任意多个、类型相同( is-a )的值作为参数。就像下面这样。 public static void main (String[] args) { print( "沉" ); print( "沉" , "默" ); print( "沉" , "默" , "王" ); print( "沉" , "默" , "王" , "二" ); } public static void print (String... strs) { for (String s : strs) System.out.print(s); System.out.println

Spring Boot整合SLF4j+log4j

五迷三道 提交于 2020-04-23 09:17:25
一 点睛 SLF4j作为日志门面,log4j作为日志实现。 二 pom 需要排除自带的logback依赖,引入springboot-log4j <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.cakin</groupId> <artifactId