slf4j

Java线程池

北城以北 提交于 2020-11-10 03:41:52
缺少更多功能,如更多执行,定期执行,线程中断 线程池中的状态: import java.util.Date; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @Slf4j public class ThreadPoolExample { public static void main(String[] args) { // ExecutorService executorService= Executors.newCachedThreadPool(); // ExecutorService executorService=Executors.newSingleThreadExecutor(); //ExecutorService executorService=Executors.newFixedThreadPool(3); ExecutorService

SpringBoot 整合 Dubbo 控制台报日志警告 log4j:WARN No appenders could be found for logger (org.apache.dubbo.c..

半腔热情 提交于 2020-11-05 20:19:33
log4j:WARN No appenders could be found for logger (org.apache.dubbo.common.logger.LoggerFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 出现这样的警告, 就是因为相关的 jar 包中依赖有 log4j 1. 如果不配置 dubbo.application.logger 的话, Dubbo默认是使用 slf4j 通过dubbo类org.apache.dubbo.common.logger.LoggerFactory, 就可以看出来 2. 打开 pom.xml 文件, 切换到 Dependency Hierarchy 标签页, 然后可以Filter检索, 哪些 jar 包依赖 log4j, 然后在pom.xml文件中 exclusions 相应的 <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId>

为什么阿里巴巴禁止使用Apache Beanutils进行属性的copy?

蹲街弑〆低调 提交于 2020-11-02 07:37:16
点击这段文字获取: 5个可以写到简历的项目实战视频教程(含源码) 在日常开发中,我们经常需要给对象进行赋值,通常会调用其set/get方法,有些时候,如果我们要转换的两个对象之间属性大致相同,会考虑使用属性拷贝工具进行。 如我们经常在代码中会对一个数据结构封装成DO、SDO、DTO、VO等,而这些Bean中的大部分属性都是一样的,所以使用属性拷贝类工具可以帮助我们节省大量的set和get操作。 市面上有很多类似的工具类,比较常用的有 1、Spring BeanUtils 2、Cglib BeanCopier 3、Apache BeanUtils 4、Apache PropertyUtils 5、Dozer 那么,我们到底应该选择哪种工具类更加合适呢?为什么阿里巴巴Java开发手册中提到禁止使用Apache BeanUtils呢?  由于篇幅优先,关于这几种工具类的用法及区别,还有到底是什么是浅拷贝和深拷贝不在本文的讨论范围内。 本文主要聚焦于对比这几个类库的性能问题。 性能对比 No Data No BB,我们就来写代码来对比下这几种框架的性能情况。 代码示例如下: 首先定义一个PersonDO类: public class PersonDO { private Integer id; private String name; private Integer age;

springboot和flowable modeler整合

和自甴很熟 提交于 2020-10-31 03:13:30
准备:项目使用的是springboot2.1.5版本,flowable6.4.0版本 1. IDEA新建Spring Initializr项目,选择依赖,web和MySQL 2. 修改pom.xml依赖 <? 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 http://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.1.5.RELEASE </ version > < relativePath /> <!-- lookup parent from

Dubbo的Api+Provider+Customer示例(IDEA+Maven+Springboot+dubbo)

丶灬走出姿态 提交于 2020-10-28 05:33:59
项目结构 dubbo-demo   dubbo-api:提供api接口,一般存储实体类和接口服务   dubbo-provider:dubbo生产者提供服务,一般存储接口具体实现   dubbo-customer:dubbo消费者使用服务,分发请求 一、新建项目dubbo-demo 1、新建Maven项目,File-->new-->Project,选择Maven 2、填充GroupId、ArtifactId和Version 3、一路Next,最后选择项目名称(之前创建过dubbo的项目,这里重命名为dubbo_demo) 4、生成项目,修改pom.xml(不修改也不影响子模块),删除src 二、添加基于SpringBoot的三个子模块dubbo-api、dubbo-provider、dubbo-customer 1、添加子模块dubbo-api,项目右键-->new-->Module 最后生成的dubbo-api 如下: 2、以相同的方式创建dubbo-provider和dubbo-customer如下: 三、各个模块添加代码示例 1、dubbo-api phone(手机实体类): package com.mirana.api.model; import java.io.Serializable; import java.math.BigDecimal; /** * Title

正确的打日志姿势

自作多情 提交于 2020-10-28 04:25:27
阅读文本大概需要3分钟。 使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。 当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程 基本格式 必须使用参数化信息的方式: logger.debug( "Processing trade with id:[{}] and symbol : [{}] " , id, symbol); 对于debug日志,必须判断是否为debug级别后,才进行使用: if (logger.isDebugEnabled()) { logger.debug( "Processing trade with id: " +id + " symbol: " + symbol); } 不要进行字符串拼接,那样会产生很多String对象,占用空间,影响性能。 反例( 不要这么做 ): logger.debug( "Processing trade with id: " + id + " symbol: " + symbol)

springBoot集成redisson实现分布式锁

偶尔善良 提交于 2020-10-27 18:55:08
场景 公司有块业务需要跑定时业务,来处理数据,后台采用 springBoot 开发的, springBoot 集成定时任务还是挺简单的,使用 Scheduled 配置好 cron 就可以使用了,有个业务是每个小时的45分钟执行一次,因为后台是集群部署的,前端用 Nginx 做的负责均衡,就牵扯到一个问题,同一时刻,后台的定时任务只能用一个触发,最开始采用的 redis 做分布式锁,客户端是使用的 Jedis ,实现的分布式锁,网上基于 redis 实现分布式锁的文章太多了,这里就不再阐述了 基于 Jedis 实现分布式锁的初始代码如下 package com.juyi.camera.cache; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis;