补充一:关于某个双层循环提高效率的场景:
有2个集合:
List<Integer> list = new ArrayList<Integer>(); List<Integer> list2 = new ArrayList<Integer>(); for(int i=0; i<100; i++) { list.add(i); } for(int i=0; i<100; i+=2) { list2.add(i); }
写法1:
int n = 0; for(int i=0; i<list.size(); i++) { int j = list.get(i); n += list.size()*list2.size(); // System.out.println(list2.size()); for(int k=0; k<list2.size(); k++) { if(j==list2.get(k)) { System.out.print(j + " "); n += i*j; break; } } } System.out.println(); System.out.println("循环次数:" + n); System.out.println("====================");
写法2:
int m = 0; for(int i=0; i<list.size(); i++) { int j = list.get(i); // System.out.println(list2.size()); m += list.size()*list2.size(); for(int k=0; k<list2.size(); k++) { if(j==list2.get(k)) { System.out.print(j + " "); list2.remove(list2.get(k)); break; } } } System.out.println(); System.out.println("循环次数:" + m);
打印结果:
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98
循环次数:661700
====================
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98
循环次数:250000
说明,两种写法都达到了目的,重点是写法2加上list2.remove(list2.get(k));之后大大减少了无用的循环,循环次数直接比写法1少了很多很多。 因此在多重循环的时候我们如果能好好优化代码,性能会得到很大提升!
补充二:slf4j的一些【日志级别显示属性】配置的理解
log4j常见日志级别为:debug < info < warn < error < fatal
log4j.rootLogger=INFO,CONSOLE,LOGFILE 第一个参数表明参数级别显示的总开关,第二个参数表示控制台,第三个参数表示日志文件
log4j.appender.LOGFILE.threshold表示日志文件里显示的最低级别(即大于或等于该指定级别的显示)
log4j.appender.CONSOLE.threshold表示控制台显示的最低级别
注意无论是控制台还是日志文件,是否显示会受总开关影响。即如果总开关的显示级别设定为较高级别(如warn),如果控制台或日志文件显示级别设为较低级别(如debug),则会失效,因为不能比总开关的级别大。所以一般建议总开关的级别设定为较低级别。
log4j.appender.LOGFILE(或CONSOLE).layout.ConversionPattern表示日志显示的前缀方式,如:%p %d{yyyy-MM-dd HH:mm:ss,SSS} %C.%M(%L) %m%n 其中%p表示日志级别,%d表示日期时间,{...}里面的表示时间格式,%C表示类(包名.类名)%M方法名,%L所在行 %m表示具体内容而 %n则表示换行。
理解这个主要是为了项目调试的时候屏蔽无用的日志打印干扰,只看我们想要观察的日志信息。
相关推荐
SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging (JUL)、Logback等。这个接口允许最终用户在部署时插入...
SLF4J(Simple Logging Facade for Java)是Java中一个用于日志记录的抽象层,它提供了一种标准的日志记录接口,使得开发者可以选择不同的日志实现框架,如Log4j、Logback等。MongoDB则是一个流行的NoSQL数据库系统...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging、Logback等。通过SLF4J,开发者可以在运行时绑定任意...
"logback-slf4j日志配置文件下载即可使用" logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf...logback-slf4j日志配置文件提供了一种灵活、可靠的日志记录解决方案,能够满足不同的日志记录需求。
Slf4j作为一个抽象层,为Java应用程序提供了一种统一的日志记录接口,而Log4j则是一个具体且功能丰富的日志框架。通过Slf4j,我们可以轻松地在不同的日志实现之间切换,而不需要修改代码。在实际项目中,结合使用Slf...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得开发者能够在不改变代码的情况下更换日志实现。在非Web工程中,SLF4J同样扮演着...
Slf4j 是一个 Java 日志记录门面,它提供了一个通用的日志记录API,允许开发者使用不同的日志记录框架,例如 Logback、Log4j 等。在 Springboot 项目中,Slf4j 是默认的日志记录框架。本文将介绍如何使用 Slf4j 将...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它的设计目的是为各种日志框架提供一个统一的接口,使得开发者可以在不改变代码的情况下切换不同的日志实现,比如从Log4j切换到Logback,或者...
处理slf4j日志使用的基本错误,导入三个包,分别是slf4j-impl,slf4j-api和slf4j-log4j12
一个简单的例子slf4j实现热加载日志级别
总的来说,`log4j`、`SLF4J`和`slf4j-log4j12`的结合,为Java应用程序提供了一种高效、可扩展且灵活的日志处理方案。这种组合允许开发者专注于编写业务代码,而不必担心具体日志实现的细节,同时也方便了日志框架的...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging、Logback等。这个jar包是SLF4J的核心组件,用于在应用...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个API,允许开发者在运行时插入所需的日志框架。SLF4J的主要目的是为各种日志框架,如log4j、logback等,提供一个统一的接口,使得...
SLF4J(Simple Logging Facade for Java)是Java中一个重要的日志抽象层,它为各种日志框架,如Log4j、java.util.logging、Logback等提供了一个统一的接口。通过SLF4J,开发者可以在不修改代码的情况下更换底层的...
例如,如果项目已经使用了Log4j,那么可以将`slf4j-log4j12-1.6.6.jar`加入到类路径,并移除其他日志相关的jar,确保只有一种日志实现。如果希望使用Java内置日志,就选择`slf4j-jdk14-1.5.6.jar`。在部署时,只需...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得开发者能够在不改变代码的情况下更换日志实现。这个接口使得应用程序的代码与...
总结来说,SLF4J和Log4j都是强大的日志解决方案,SLF4J在Android开发中提供了一种轻量级且灵活的方式来记录日志,而Log4j则提供了更全面的控制和定制能力。通过SLF4J,开发者可以在不改变代码的情况下,方便地切换到...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个接口,允许用户在运行时动态地绑定到各种具体的日志框架,如Log4j、Java内置的日志或者Logback等。这个设计使得开发者可以在不修改...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个统一的API,允许开发者在运行时选择他们喜欢的日志框架。SLF4J的主要目的是为各种日志API提供一个简单统一的接口,使得最终用户能够...
当我们提到“log4j-slf4j+logback1.3.0”时,这意味着在一个项目中,SLF4J被用作日志的抽象层,而Logback 1.3.0作为实际的日志实现。这样的组合允许开发者利用SLF4J的简单API编写日志代码,同时享受Logback提供的高...