Transcript
Page 1: Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции

Курс по Java, 2016

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

slf4j, maven repo, collections framework

[email protected], [email protected]

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

Курс по 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)

Не надо так!

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

Курс по Java, 2016

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

http://www.slf4j.org/

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

Курс по 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")); }}

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

Курс по 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.

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

Курс по Java, 2016

SLF4J

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

Курс по Java, 2016

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

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

Курс по 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)

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

Курс по Java, 2016

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

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

Курс по 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)

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

Курс по 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>

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

Курс по 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)

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

Курс по Java, 2016

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

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

Курс по Java, 2016

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

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

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

Курс по Java, 2016

Фасад

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

Курс по Java, 2016

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

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

Курс по Java, 2016

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

Курс по Java, 2016

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

С Java 1.2

Generic с Java 1.5

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

Курс по Java, 2016

java.util.ListList<String> listOfStrings;

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

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

Курс по Java, 2016

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

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

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

Курс по 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(); // значение}

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

Курс по Java, 2016

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

new HashMap<Integer, String>();

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

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

Курс по Java, 2016

Hashtable

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

Курс по Java, 2016

Red-black tree

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

Курс по 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; }}

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

Курс по Java, 2016

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

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

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

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

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

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


Recommended