diff --git a/AnalyzeCosts/pom.xml b/AnalyzeCosts/pom.xml index 59cac4f7..635e5353 100644 --- a/AnalyzeCosts/pom.xml +++ b/AnalyzeCosts/pom.xml @@ -37,7 +37,7 @@ junit junit - 4.12 + 4.13.1 test diff --git a/Experiments/DateAndTimeParsing.java b/Experiments/DateAndTimeParsing.java index 9b2c5715..d8ddf8c8 100644 --- a/Experiments/DateAndTimeParsing.java +++ b/Experiments/DateAndTimeParsing.java @@ -3,6 +3,7 @@ import java.text.ParseException; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.time.LocalDate; /* * Parsing different type od date @@ -16,5 +17,8 @@ public static void main(String[] args) throws ParseException { System.out.println(date); System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(date)); + + DateFormat dateFormat = new SimpleDateFormat("d.M.yyy"); + System.out.println(dateFormat.format(java.sql.Date.valueOf(LocalDate.of(2821, 1, 1)))); } } \ No newline at end of file diff --git a/Experiments/DoubleAndFloat.java b/Experiments/DoubleAndFloat.java new file mode 100644 index 00000000..d5866996 --- /dev/null +++ b/Experiments/DoubleAndFloat.java @@ -0,0 +1,9 @@ +class DoubleAndFloat { + public static void main(String[] args) { + float f = 1/3f; + double d = 1/3d; + + System.out.println(f); + System.out.println(d); + } +} \ No newline at end of file diff --git a/Experiments/HashMapGetNull.java b/Experiments/HashMapGetNull.java new file mode 100644 index 00000000..b48f0298 --- /dev/null +++ b/Experiments/HashMapGetNull.java @@ -0,0 +1,11 @@ +import java.util.Map; +import java.util.HashMap; + +class HashMapGetNull { + public static void main(String[] args) { + Map map = new HashMap<>(); + map.put(null, "123"); + String str = map.get(null); + System.out.println(str); + } +} diff --git a/Experiments/ListFileDir.java b/Experiments/ListFileDir.java new file mode 100644 index 00000000..8c48fb9c --- /dev/null +++ b/Experiments/ListFileDir.java @@ -0,0 +1,17 @@ +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +class ListFileDir { + public static void main(String[] args) throws IOException { + List files; + try (Stream stream = Files.list(Paths.get("."))) { + files = stream.filter(f -> Files.isRegularFile(f)).collect(Collectors.toList()); + } + System.out.println(files); + } +} \ No newline at end of file diff --git a/Experiments/RegexpSimpleTest.java b/Experiments/RegexpSimpleTest.java new file mode 100644 index 00000000..96dbee5f --- /dev/null +++ b/Experiments/RegexpSimpleTest.java @@ -0,0 +1,7 @@ +class RegexpSimpleTest { + public static void main(String[] args) { + String exp = "\\d-\\d"; + String str = "2012-2013"; + System.out.println(str.matches(exp)); + } +} \ No newline at end of file diff --git a/Experiments/StringToDouble.java b/Experiments/StringToDouble.java index 35c7f5d4..f99e7cb9 100644 --- a/Experiments/StringToDouble.java +++ b/Experiments/StringToDouble.java @@ -10,6 +10,8 @@ public static void main(String[] args) { System.out.println(StrToDouble("12345.25")); System.out.println(StrToDouble("0.1234")); System.out.println(StrToDouble(".567")); + + System.out.println("123456789".substring(8 - 7, 8)); } static double StrToDouble(String str) { diff --git a/Experiments/TestVisualVMProgram.java b/Experiments/TestVisualVMProgram.java new file mode 100644 index 00000000..180de585 --- /dev/null +++ b/Experiments/TestVisualVMProgram.java @@ -0,0 +1,56 @@ +import java.util.concurrent.Executors; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.Future; +import java.util.concurrent.Callable; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ThreadLocalRandom; + +// from https://urvanov.ru/2017/07/19/%D0%B4%D0%B8%D0%B0%D0%B3%D0%BD%D0%BE%D1%81%D1%82%D0%B8%D0%BA%D0%B0-java-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81-jvisualvm/ +// + +public class TestVisualVMProgram { + private static final int THREAD_COUNT = 10; + private static final int TASKS_COUNT = 10; + private static final long WORK_MINUTES = 60L; + + private static class MyClass{ + private byte[] bytes = new byte[100_000]; + } + + private static final ConcurrentMap concurrentMap = new ConcurrentHashMap<>(); + + private static class MyTask implements Callable { + @Override + public Boolean call() throws Exception { + long startTime = System.currentTimeMillis(); + // Каждый поток работает только WORK_MINUTES минут с момента старта. + while (System.currentTimeMillis() < startTime + 1000L * 60L* WORK_MINUTES) { + try { + Thread.sleep(500L); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } + concurrentMap.put( + ThreadLocalRandom.current().nextInt( + Integer.MIN_VALUE, Integer.MAX_VALUE), + new MyClass()); + + } + return true; + } + } + + public static void main(String[] args) throws InterruptedException { + ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); + Future[] futures = new Future[TASKS_COUNT]; + System.out.println("Scheduling threads..."); + for (int n = 0; n < TASKS_COUNT; n++) { + futures[n] = executorService.submit(new MyTask()); + } + System.out.println("Awaiting termination..."); + executorService.awaitTermination(WORK_MINUTES * 2L, TimeUnit.MINUTES); + System.out.println("Finished."); + } +} \ No newline at end of file diff --git a/Java 1/Java1KnowledgeAndSkills.txt b/Java 1/Java1KnowledgeAndSkills.txt index a6af03f9..c350cee6 100644 --- a/Java 1/Java1KnowledgeAndSkills.txt +++ b/Java 1/Java1KnowledgeAndSkills.txt @@ -58,8 +58,8 @@ Top 6 online Java compilers for students. Article https://jaxenter.com/top-6-jav 1. Майк МакГрат, Java программирование для начинающих (вся книга) 2. Кэти Сьерра, Берт Бейтс, Изучаем Java (главы 1, 2, 4, 7, 8, 10, 12, 13) -3. Брюс Эккель, Философия Java (главы 1, 2, 3, 4, 7, 8, 12, 13, 16) -4. Герберт Шилдт, Java 8. Руководство для начинающих (главы 1, 2, 3, 5, 6, 7, 9, 10, 16) +3. Герберт Шилдт, Java 8. Руководство для начинающих (главы 1, 2, 3, 5, 6, 7, 9, 10, 16) +4. Брюс Эккель, Философия Java (главы 1, 2, 3, 4, 7, 8, 12, 13, 16) TODO: Обдумать возможность рекомендации ещё одной книги: * Яков Файн, Программирование на Java для детей, родителей, дедушек и бабушек diff --git a/Java 1/Java1NotesRU.txt b/Java 1/Java1NotesRU.txt index 7f73fec5..846895ff 100644 --- a/Java 1/Java1NotesRU.txt +++ b/Java 1/Java1NotesRU.txt @@ -1,20 +1,42 @@ Заметки к занятиям: +Ссылки на все методички: + 1. https://docs.google.com/document/d/1zbo8fNRPDHNr6kJ9DJynn5Mi4_ncDYVAIF9pTFjngiI/ + 2. https://docs.google.com/document/d/1Ewxcleh5IgFE1CEUGty5sr0_qH1BSonK3cuN6fpG4Io/ + 3. https://docs.google.com/document/d/1dHxZd2wTRe4Kqo0cj4SnP1AZEYNzrxCQn2sg0C-0YFA/ + 4. https://docs.google.com/document/d/1Rk_xwF65CJvJ0mzxVO1LOSM4I-5DBdOqub0TWXfflls/ + 5. https://docs.google.com/document/d/11EhLrIXlloOmm5Znufff36RBkMnDwLSkS-L2BeUqX7k/ + 6. https://docs.google.com/document/d/1EKdUfBQ9snU8gSgCUWFALke1b5p46A_Iq9Xgn2X2myo/ + 7. https://docs.google.com/document/d/1HxvN5jvGyRJ_b_LspE2kEmg7fw24SQdyCnJu7OQSGQ8/ + 8. https://docs.google.com/document/d/1x8x3rFxZ4a64gMi9EwNnodgrlIM3hRn6y_QlQ8vjiuE/ + +Информировать до начала занятий: + + - пройти курс по Git и создать свой профиль на сайте github.com + - завести учётную запись Google, чтобы иметь возможность писать в чате занятия + 1. Java. Введение 1. Вводные замечания - краткий обзор 8 занятий (нужны все методички?) - как проходить курс, делать ли ДЗ? сертификат - Git. Быстрый старт https://geekbrains.ru/courses/66 уроки 8, 9 - - общение в процессе курса: телеграм-чат https://t.me/joinchat/EuijNkjNM4M8zBHAjcOSfA + - общение в процессе курса: + - вопросы в чате ютуб + - вопросы на страницах занятия (Обсуждение) + - телеграм-чат https://t.me/joinchat/xr78JINUS1I4NzIy + - организационный вопросы: телеграм-чат группы - файлы рекомендации к чтению, список навыков - - рекомендованные книги в браузере + тест - - вебинар IntelliJ IDEA для новичков https://geekbrains.ru/events/770 - - статья Виктора Темпалова Notepad++ https://geekbrains.ru/posts/npp_java + - рекомендованные книги в браузере + тест https://gb.ru/tests/39 + - IntelliJ IDEA для новичков: советы и секреты https://gb.ru/events/770 + - Пишем код на Java и Go в текстовом редакторе https://gb.ru/posts/pishem-kod-na-java-i-go-v-tekstovom-redaktore - Как обмануть мозг и эффективно учиться программированию https://proglib.io/p/effective-learning/ + - Java Code Conventions, соглашение о написании кода 2. Основная тема - - инструменты разработчика (JDK 8) + - комментарии к методичке (использование IntelliJ IDEA CE, maven, использование пакетов) + - инструменты разработчика (JDK 8 или 11), инструмент для написания кода - первая программа, компиляция, выполнение + - обратить внимание на правила именования классов (полей, методов, переменных) - переменные и типы данных - арифметические операции - методы, передаваемые параметры, возвращаемые значения @@ -25,10 +47,10 @@ 2. Основные конструкции 1. Вводные замечания + - напомнить Java Code Conventions, соглашение о написании кода - напомнить про дополнительное чтение (файл Java1RecommendedBooks.txt) - почему используем Notepad++, настройка (файл Java1KnowledgeAndSkills.txt) - - Code Conventions for the Java, стиль - - напомнить про вебинар по IDEA https://geekbrains.ru/events/770 лайки :) + - напомнить про вебинар по IDEA https://gb.ru/events/770 лайки :) - разрешение конфликтов и проблем 2. Разбор ДЗ - стиль кода, отступы, пробелы, аккуратность @@ -38,7 +60,7 @@ - не использовать то, что не изучалось 3. Тема, порядок изложения - switch, коротко, перенесён в тему №1 - - массивы, многомерные массивы, нерегулярные массивы + - массивы, одномерные, многомерные, нерегулярные - for, несколько переменных, for для итерируемых объектов - while, do-while - break и continue @@ -50,15 +72,16 @@ 3. Практика 1. Вводные замечания - - github.com, курс https://geekbrains.ru/courses/66 + - github.com, курс https://gb.ru/courses/1117 - английский язык https://geekbrains.ru/courses/98 + www.duolingo.com - - тест Java уровень 1 https://geekbrains.ru/tests/39 + - тест Java уровень 1 https://gb.ru/tests/39 2. Разбор ДЗ 3. Тема, порядок изложения + - массивы, одномерные, двухмерные, многомерные, нерегулярные - импорт пакетов (библиотек), пакет по умолчанию java.lang - получение информации о пакетах: http://docs.oracle.com/javase/8/docs/api/ - методы класса Arrays (манипуляции с массивами): - - toString() вывод в виде строки + - toString() вывод в виде строки - fill() заполнение одним значением - sort() сортировка - binarySearch() бинарный поиск @@ -69,16 +92,25 @@ - генерация случайных чисел, класс Random - ввод данных из консоли, класс Scanner - printf форматированный вывод - 4. Дополнение1 + 4. Дополнение + - статические и нестатические методы + - классы и объекты + - списочные массивы, класс ArrayList - запись и чтение текстовых файлов, перехват исключений + статья: Эволюция Java на примере чтения строк из файла + https://habr.com/ru/post/269667/ 4. Крестики-нолики в процедурном стиле 1. Вводные замечания - используйте чат, не стесняться спрашивать - - тест Java уровень 1 https://geekbrains.ru/tests/39 + - тест Java уровень 1 https://gb.ru/tests/39 + - рекомендательное письмо, образец https://career.habr.com/ilshat0-0, linkedin.com 2. Разбор ДЗ 3. Написание консольной игры крестики-нолики + 4. Дополнение + - статические и нестатические методы + - классы и объекты 5. Введение в ООП @@ -95,7 +127,7 @@ - перегрузка конструкторов (и методов, в принципе) - ключевое слово this - инкапсуляция, модификаторы доступа, геттеры и сеттеры - 4. Дополнение + 4. Дополнение - основы работы со swing (coздание окна) 6. Продвинутое ООП @@ -113,7 +145,7 @@ - переопределение методов @Override - предотвращение переопределения - final - абстрактные методы и классы, полиморфизм - 4. Дополнение + 4. Дополнение - интерфейс - swing компоненты и Layout компоновщик @@ -127,7 +159,7 @@ - строки StringBuffer/Buider против String - чтение файлов FileReader против BufferedReader - взаимодействие объектов, задача про кормление кота - 4. Дополнение + 4. Дополнение - паттерны проектирования https://habr.com/post/210288/ Singleton - обработка событий в swing diff --git a/Java 1/Java1RecommendedBooks.txt b/Java 1/Java1RecommendedBooks.txt index 85c53f5b..a694bb9b 100644 --- a/Java 1/Java1RecommendedBooks.txt +++ b/Java 1/Java1RecommendedBooks.txt @@ -5,10 +5,10 @@ Главы 1, 2 2. Кэти Сьерра, Берт Бейтс, Изучаем Java Глава 1 - 3. Брюс Эккель, Философия Java - Главы 3, 4 - 4. Герберт Шилдт, Java 8. Руководство для начинающих + 3. Герберт Шилдт, Java 8. Руководство для начинающих Главы 1, 2, 3 + 4. Брюс Эккель, Философия Java + Главы 3, 4 2. Основные конструкции @@ -17,10 +17,10 @@ Главы 3, 4 2. Кэти Сьерра, Берт Бейтс, Изучаем Java Глава 1 - 3. Брюс Эккель, Философия Java - Главы 4, 16 - 4. Герберт Шилдт, Java 8. Руководство для начинающих + 3. Герберт Шилдт, Java 8. Руководство для начинающих Главы 3, 5 + 4. Брюс Эккель, Философия Java + Главы 4, 16 3. Практика @@ -29,14 +29,16 @@ Главы 4, 5, 7 2. Кэти Сьерра, Берт Бейтс, Изучаем Java Главы 1, 10 - 3. Брюс Эккель, Философия Java - Главы 12, 13 - 4. Герберт Шилдт, Java 8. Руководство для начинающих + 3. Герберт Шилдт, Java 8. Руководство для начинающих Главы 9, 10 + 4. Брюс Эккель, Философия Java + Главы 12, 13 4. Крестики-нолики в процедурном стиле Литература: + - Быстрый старт с Java: пишем «крестики-нолики» + https://gb.ru/posts/java_ticktacktoe_game 5. Введение в ООП @@ -45,10 +47,10 @@ Глава 6 2. Кэти Сьерра, Берт Бейтс, Изучаем Java Главы 2, 4 - 3. Брюс Эккель, Философия Java - Главы 1, 2 - 4. Герберт Шилдт, Java 8. Руководство для начинающих + 3. Герберт Шилдт, Java 8. Руководство для начинающих Главы 4, 6 + 4. Брюс Эккель, Философия Java + Главы 1, 2 6. Продвинутое ООП @@ -57,20 +59,20 @@ Глава 6 2. Кэти Сьерра, Берт Бейтс, Изучаем Java Главы 4, 7, 8 - 3. Брюс Эккель, Философия Java - Главы 7, 8 - 4. Герберт Шилдт, Java 8. Руководство для начинающих + 3. Герберт Шилдт, Java 8. Руководство для начинающих Главы 6, 7 + 4. Брюс Эккель, Философия Java + Главы 7, 8 7. Практика ООП и работа со строками Литература: 1. Майк МакГрат, Java программирование для начинающих Глава 5 - 2. Брюс Эккель, Философия Java - Глава 13 - 3. Герберт Шилдт, Java 8. Руководство для начинающих + 2. Герберт Шилдт, Java 8. Руководство для начинающих Глава 5 (стр. 182-188) + 3. Брюс Эккель, Философия Java + Глава 13 8. Написание приложения с графическим интерфейсом @@ -79,7 +81,7 @@ Главы 8, 9 2. Кэти Сьерра, Берт Бейтс, Изучаем Java Главы 12, 13 - 3. Брюс Эккель, Философия Java + 3. Герберт Шилдт, Java 8. Руководство для начинающих + Глава 16 + 4. Брюс Эккель, Философия Java Глава 22 - 4. Герберт Шилдт, Java 8. Руководство для начинающих - Глава 16 \ No newline at end of file diff --git a/Java 1/homeWork/Lesson1HomeWork.java b/Java 1/homeWork/Lesson1HomeWork.java new file mode 100644 index 00000000..5bf3383d --- /dev/null +++ b/Java 1/homeWork/Lesson1HomeWork.java @@ -0,0 +1,44 @@ +/** + * Java 1. Homework 1 + * + * @author Sergey + * @version 6.9.2021 + */ +class Lesson1HomeWork { + + public static void main(String[] args) { + printThreeWords(); + checkSumSign(); + printColor(); + compareNumbers(); + } + + static void printThreeWords() { + System.out.println("Orange"); + System.out.println("Banana"); + System.out.println("Apple"); + } + + static void checkSumSign() { + int a = 5; + int b = 3; + System.out.println("The sum is " + (a + b >= 0? "positive" : "negative")); + } + + static void printColor() { + int value = 101; + if (value <= 0) { + System.out.println("Red"); + } else if (value <= 100) { + System.out.println("Yellow"); + } else { + System.out.println("Green"); + } + } + + static void compareNumbers() { + int a = 10; + int b = 10; + System.out.println(a >= b? "a >= b" : "a < b"); + } +} \ No newline at end of file diff --git a/ToBeginners/Articles/Announcement.txt b/ToBeginners/Articles/Announcement.txt new file mode 100644 index 00000000..7782100b --- /dev/null +++ b/ToBeginners/Articles/Announcement.txt @@ -0,0 +1,21 @@ +*Видео:* + +**Установка JDK 8u202** для Windows 7 +https://www.youtube.com/watch?v=8OEcsVHr_JQ + +*Полезные статьи:* + +Что такое **Java Core**? +https://geekbrains.ru/posts/chto-takoe-java-core + +Java: **быстрый старт**: +https://geekbrains.ru/posts/java_quick_start_part1 + +Пишем код на Java и Go **в текстовом редакторе**: +https://geekbrains.ru/posts/pishem-kod-na-java-i-go-v-tekstovom-redaktore + +*Книги для начинающих:* + +*Майк МакГрат*, **Java программирование для начинающих** +*Кэти Сьерра, Берт Бейтс*, **Изучаем Java** +*Яков Файн*, **Программирование на Java для детей, родителей, бабушек и дедушек** \ No newline at end of file