Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AnalyzeCosts/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
4 changes: 4 additions & 0 deletions Experiments/DateAndTimeParsing.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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))));
}
}
9 changes: 9 additions & 0 deletions Experiments/DoubleAndFloat.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
11 changes: 11 additions & 0 deletions Experiments/HashMapGetNull.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import java.util.Map;
import java.util.HashMap;

class HashMapGetNull {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(null, "123");
String str = map.get(null);
System.out.println(str);
}
}
17 changes: 17 additions & 0 deletions Experiments/ListFileDir.java
Original file line number Diff line number Diff line change
@@ -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<Path> files;
try (Stream<Path> stream = Files.list(Paths.get("."))) {
files = stream.filter(f -> Files.isRegularFile(f)).collect(Collectors.toList());
}
System.out.println(files);
}
}
7 changes: 7 additions & 0 deletions Experiments/RegexpSimpleTest.java
Original file line number Diff line number Diff line change
@@ -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));
}
}
2 changes: 2 additions & 0 deletions Experiments/StringToDouble.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
56 changes: 56 additions & 0 deletions Experiments/TestVisualVMProgram.java
Original file line number Diff line number Diff line change
@@ -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<Integer, MyClass> concurrentMap = new ConcurrentHashMap<>();

private static class MyTask implements Callable<Boolean> {
@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<Boolean>[] 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.");
}
}
4 changes: 2 additions & 2 deletions Java 1/Java1KnowledgeAndSkills.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 для детей, родителей, дедушек и бабушек
64 changes: 48 additions & 16 deletions Java 1/Java1NotesRU.txt
Original file line number Diff line number Diff line change
@@ -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), инструмент для написания кода
- первая программа, компиляция, выполнение
- обратить внимание на правила именования классов (полей, методов, переменных)
- переменные и типы данных
- арифметические операции
- методы, передаваемые параметры, возвращаемые значения
Expand All @@ -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. Разбор ДЗ
- стиль кода, отступы, пробелы, аккуратность
Expand All @@ -38,7 +60,7 @@
- не использовать то, что не изучалось
3. Тема, порядок изложения
- switch, коротко, перенесён в тему №1
- массивы, многомерные массивы, нерегулярные массивы
- массивы, одномерные, многомерные, нерегулярные
- for, несколько переменных, for для итерируемых объектов
- while, do-while
- break и continue
Expand All @@ -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() бинарный поиск
Expand All @@ -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. Введение в ООП

Expand All @@ -95,7 +127,7 @@
- перегрузка конструкторов (и методов, в принципе)
- ключевое слово this
- инкапсуляция, модификаторы доступа, геттеры и сеттеры
4. Дополнение
4. Дополнение
- основы работы со swing (coздание окна)

6. Продвинутое ООП
Expand All @@ -113,7 +145,7 @@
- переопределение методов @Override
- предотвращение переопределения - final
- абстрактные методы и классы, полиморфизм
4. Дополнение
4. Дополнение
- интерфейс
- swing компоненты и Layout компоновщик

Expand All @@ -127,7 +159,7 @@
- строки StringBuffer/Buider против String
- чтение файлов FileReader против BufferedReader
- взаимодействие объектов, задача про кормление кота
4. Дополнение
4. Дополнение
- паттерны проектирования https://habr.com/post/210288/ Singleton
- обработка событий в swing

Expand Down
Loading