`
Everyday都不同
  • 浏览: 724808 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

多重循环提高效率的一种场景 vs slf4j 日志级别理解

阅读更多

补充一:关于某个双层循环提高效率的场景:

有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完整日志文件

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging (JUL)、Logback等。这个接口允许最终用户在部署时插入...

    slf4j输入日志到mongodb

    SLF4J(Simple Logging Facade for Java)是Java中一个用于日志记录的抽象层,它提供了一种标准的日志记录接口,使得开发者可以选择不同的日志实现框架,如Log4j、Logback等。MongoDB则是一个流行的NoSQL数据库系统...

    slf4j日志框架的源代码分享

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging、Logback等。通过SLF4J,开发者可以在运行时绑定任意...

    logback-slf4j日志配置文件-下载即可使用

    "logback-slf4j日志配置文件下载即可使用" logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf...logback-slf4j日志配置文件提供了一种灵活、可靠的日志记录解决方案,能够满足不同的日志记录需求。

    Slf4j日志相关jar包

    Slf4j作为一个抽象层,为Java应用程序提供了一种统一的日志记录接口,而Log4j则是一个具体且功能丰富的日志框架。通过Slf4j,我们可以轻松地在不同的日志实现之间切换,而不需要修改代码。在实际项目中,结合使用Slf...

    非web工程使用slf4j输出日志

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得开发者能够在不改变代码的情况下更换日志实现。在非Web工程中,SLF4J同样扮演着...

    Springboot项目使用Slf4j将日志保存到本地目录的实现代码

    Slf4j 是一个 Java 日志记录门面,它提供了一个通用的日志记录API,允许开发者使用不同的日志记录框架,例如 Logback、Log4j 等。在 Springboot 项目中,Slf4j 是默认的日志记录框架。本文将介绍如何使用 Slf4j 将...

    slf4j日志,可以使用它代替LOG4J

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它的设计目的是为各种日志框架提供一个统一的接口,使得开发者可以在不改变代码的情况下切换不同的日志实现,比如从Log4j切换到Logback,或者...

    SLF4J日志报错解决办法

    处理slf4j日志使用的基本错误,导入三个包,分别是slf4j-impl,slf4j-api和slf4j-log4j12

    slf4j实现热加载日志级别

    一个简单的例子slf4j实现热加载日志级别

    log4j + slf4j-api + slf4j-log4j12

    总的来说,`log4j`、`SLF4J`和`slf4j-log4j12`的结合,为Java应用程序提供了一种高效、可扩展且灵活的日志处理方案。这种组合允许开发者专注于编写业务代码,而不必担心具体日志实现的细节,同时也方便了日志框架的...

    slf4j jar包

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging、Logback等。这个jar包是SLF4J的核心组件,用于在应用...

    slf4j-log4j12-1.7.12.jar、slf4j-api-1.7.12.jar

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个API,允许开发者在运行时插入所需的日志框架。SLF4J的主要目的是为各种日志框架,如log4j、logback等,提供一个统一的接口,使得...

    slf4j-api.jar和slf4j-nop.jar打包下载

    SLF4J(Simple Logging Facade for Java)是Java中一个重要的日志抽象层,它为各种日志框架,如Log4j、java.util.logging、Logback等提供了一个统一的接口。通过SLF4J,开发者可以在不修改代码的情况下更换底层的...

    Java Slf4j依赖包

    例如,如果项目已经使用了Log4j,那么可以将`slf4j-log4j12-1.6.6.jar`加入到类路径,并移除其他日志相关的jar,确保只有一种日志实现。如果希望使用Java内置日志,就选择`slf4j-jdk14-1.5.6.jar`。在部署时,只需...

    slf4j-api-1.7.12.jar slf4j-log4j12-1.7.12.jar

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得开发者能够在不改变代码的情况下更换日志实现。这个接口使得应用程序的代码与...

    android slf4j log4j日志框架

    总结来说,SLF4J和Log4j都是强大的日志解决方案,SLF4J在Android开发中提供了一种轻量级且灵活的方式来记录日志,而Log4j则提供了更全面的控制和定制能力。通过SLF4J,开发者可以在不改变代码的情况下,方便地切换到...

    slf4j最新jar包下载和jar包

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个接口,允许用户在运行时动态地绑定到各种具体的日志框架,如Log4j、Java内置的日志或者Logback等。这个设计使得开发者可以在不修改...

    slf4j与其它日志api的结合

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个统一的API,允许开发者在运行时选择他们喜欢的日志框架。SLF4J的主要目的是为各种日志API提供一个简单统一的接口,使得最终用户能够...

    日志 log4j-slf4j+logback1.3.0

    当我们提到“log4j-slf4j+logback1.3.0”时,这意味着在一个项目中,SLF4J被用作日志的抽象层,而Logback 1.3.0作为实际的日志实现。这样的组合允许开发者利用SLF4J的简单API编写日志代码,同时享受Logback提供的高...

Global site tag (gtag.js) - Google Analytics