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