Курс java-2016. Занятие 07. Логи, фасады, библиотеки и...

Post on 11-Feb-2017

391 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Курс по Java, 2016

Логи, фасады, библиотеки и коллекции

slf4j, maven repo, collections framework

annie.tarasenko@7bits.it, denis.nelubin@7bits.it

Курс по Java, 2016

ЖурналыSystem.out.println("Hello");System.err.println("World");new Exception("stack").printStackTrace();

HelloWorldjava.lang.Exception: stack

at it.sevenbits.example.logs.OutPrint.main(OutPrint.java:8)

Не надо так!

Курс по Java, 2016

SLF4J<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version></dependency>

http://www.slf4j.org/

Курс по Java, 2016

SLF4J (Simple Logging Facade for Java)import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class SLF4JLogSample { final static Logger logger =

LoggerFactory.getLogger(SLF4JLogSample.class); public static void main(String[] args) { logger.info("Hello"); logger.warn("World"); logger.error("error", new Exception("exception")); }}

Курс по Java, 2016

SLF4JSLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Курс по Java, 2016

SLF4J

Курс по Java, 2016

SLF4J SimpleLogger<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.21</version></dependency>

Курс по Java, 2016

SLF4J SimpleLogger[main] INFO it.sevenbits.example.logs.SLF4JLogSample - Hello[main] WARN it.sevenbits.example.logs.SLF4JLogSample - World[main] ERROR it.sevenbits.example.logs.SLF4JLogSample - errorjava.lang.Exception: exception

at it.sevenbits.example.logs.SLF4JLogSample.main(SLF4JLogSample.java:13)

Курс по Java, 2016

Logback<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version></dependency>

Курс по Java, 2016

Logback12:13:58.659 [main] INFO it.sevenbits.example.logs.SLF4JLogSample - Hello12:13:58.670 [main] WARN it.sevenbits.example.logs.SLF4JLogSample - World12:13:58.696 [main] ERROR it.sevenbits.example.logs.SLF4JLogSample - errorjava.lang.Exception: exception

at it.sevenbits.example.logs.SLF4JLogSample.main(SLF4JLogSample.java:13)

Курс по Java, 2016

Logback configuration (logback.xml)<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="warn"> <appender-ref ref="STDOUT" /> </root></configuration>

Курс по Java, 2016

Logback configured13:32:20.330 [main] WARN i.s.example.logs.SLF4JLogSample - World13:32:20.343 [main] ERROR i.s.example.logs.SLF4JLogSample - errorjava.lang.Exception: exception

at it.sevenbits.example.logs.SLF4JLogSample.main(SLF4JLogSample.java:13)

Курс по Java, 2016

Log levellogger.trace("трассировка");logger.debug("отладка");logger.info("информирование");logger.warn("предупреждение");logger.error("ошибка");

Курс по Java, 2016

ОптимизацииString name = "World";

if (logger.isDebugEnabled()) { logger.debug("Hello, {}!", name);}

Курс по Java, 2016

Фасад

Курс по Java, 2016

Maven Central http://search.maven.org/

Курс по Java, 2016

Курс по Java, 2016

Collection FrameworkНабор коллекций в java.util

С Java 1.2

Generic с Java 1.5

Курс по Java, 2016

java.util.ListList<String> listOfStrings;

listOfStrings.add("abc"); // добавление элементаlistOfStrings.size(); // размер коллекцииlistOfStrings.contains("abc"); // проверка наличия элементаlistOfStrings.get(0); // получение элементаfor (String item : listOfStrings) { // цикл по элементам}

Курс по Java, 2016

Реализации ListList<String> arrayList = new ArrayList<String>();

List<String> linkedList = new LinkedList<String>();

Курс по Java, 2016

java.util.MapMap<Integer, String> map;map.put(5, "five"); // добавить значение по ключуmap.size(); // получить количество значенийmap.containsKey(5); // проверить наличие ключаmap.containsValue("five"); // проверить наличие значенияmap.get(5); // получить значение по ключуfor (Map.Entry<Integer, String> entry : map.entrySet()) { // цикл по ключам и значениям entry.getKey(); // ключ entry.getValue(); // значение}

Курс по Java, 2016

Реализации MapMap<Integer, String> hashMap =

new HashMap<Integer, String>();

Map<Integer, String> treeMap = new TreeMap<Integer, String>();

Курс по Java, 2016

Hashtable

Курс по Java, 2016

Red-black tree

Курс по Java, 2016

hashCode() и equals()public class Entry { public Integer key; public String value; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Entry entry = (Entry) o; if (key != null ? !key.equals(entry.key) : entry.key != null) return false; return value != null ? value.equals(entry.value) : entry.value == null; } @Override public int hashCode() { int result = key != null ? key.hashCode() : 0; result = 31 * result + (value != null ? value.hashCode() : 0); return result; }}

Курс по Java, 2016

Домашнее заданиеВ Formatter:

● Устранить замечания по коду касательно исключений, пакетов, интерфейсов

● Использовать Logger (SLF4J) везде, где нельзя применить unit-тесты

Если хотите получать индивидуальный отзыв на работу, нужно сдать задание до 22:00 четверга, 28 апреля 2016 года.

Следующие занятия переносятся на 5 и 12 мая!

Почитать: https://habrahabr.ru/post/113145/

top related