3. Содержат данные о программе не являясь частью программы
Могут влиять на работу компилятора, инструметов и библиотек
Не влияют непосредственно на работу приложения
Влияют только на ту функциональность, которая их обрабатывает
“Decorating” or “wrapping” классы в runtime
5. Обозначает устаревшую фукциональность
Отмечает методы, кторые переопределяют методы базового класса
Deprecated методы могут бять удалены в следующих версиях
Компилятор проверяет сигнатуры методов
Указание компилятору не сообщять об проблемах типа «warning»
6. @interface CreatedBy {
String author();
String date();
}
Не может наследовать или быть базовым классом
Может содержать методы без переменных, которые работают как поля
Не содержит конструкторов и полей
@CreatedBy (author = “tully”, date = “04.12.2012”)
public class MyClass {…}
@CreatedBy (author = “tully”, date = “05.12.2012”)
public static void main(String args[])
7. Class myClass = MyClass.class;
Method method = myClass.getMethod(“main”);
CreatedBy annotationC = myClass.getAnnotation(CreatedBy.class);
CreatedBy annotationM = method.getAnnotation(CreatedBy.class);
log.info(“Author of the class: ” + annotationC.author());
log.info(“Date of Writing the class: ” + annotationC.date());
log.info(“Author of the method: ” + annotationM.author());
log.info(“Date of Writing the method: ” + annotationM.date());
8. RetentionPolicy.SOURCE – аннотации присутствую только в коде
RetentionPolicy.CLASS – аннотации сохранеы в .class, но не доступны в runtime
Информация для компилятора
Информация для библиотек
Не доступны через reflection
Информация для инструментов IDE
RetentionPolicy.RUNTIME – аннотации сохранены в .class и доступны в runtime
Аннотации можно получать из getClass() через reflection
11. Связь между объектной моделью программы и реляционной моделью базы
Пример:
Методы DAO принимают объекты и сохраняют их в базе
Методы DAO возвращают объекты собирая их на основе запросов
15. ServiceRegistryBuilder builder = new ServiceRegistryBuilder();
builder.applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = builder.buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
System.out.append(transaction.getLocalStatus().toString());
session.close();
Фабрика которая создает сессии
Одна фабрика на приложение
Одна сессия на поток
16. import javax.persistence.*;
@Entity
@Table(name="users")
public class UserDataSet {
@Id
@Column(name="id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name="name")
private String name;
…
}
configuration.addAnnotatedClass(UserDataSet.class);
Перед созданием SessionFactory:
17. Основной интерфейс между приложением и библиотекой
Время жизни сессии соответствует времени жизни транзакции
Задача сесии – работа с объектами проанотированными как @Entity
public void save(UserDataSet dataSet){
Session session = sessionFactory.openSession();
Transaction trx = session.beginTransaction();
session.save(dataSet);
trx.commit();
session.close();
}
public UserDataSet read(long id){
Session session = sessionFactory.openSession();
return (UserDataSet)session.load(UserDataSet.class, id);
}
18.
19. 1. История и особенности языка Java.
2. Платформа Java. Java Editions. GC, JVM, JDK, JRE. ByteCode.
3. Правила наименований. Запуск java приложений.
4. class Object и class Class<?>.
5. Простые типы в Java. Классы обертки простых типов.
6. Generics.
7. Коллекции в Java. Iterator, Iterable.
8. Processes and Threads.
9. Interface Runnable. class Thread. Методы start() и run().
10 Методы класса Thread: sleep(), interrupt(), join().
11. Ключевое слово synchronized.
12. Проблемы многопоточного доступа к данным. Race condition.
13. Deadlock. wait() и notify().
14. Плюсы и минусы многопоточных приложений.
15. Способы взаимодействия потоков.
16. MessageSystem. Address и Abonent.
17. Распределение классов по пакетам. Циклические зависимости.
18. Архитектура игрового сервера.
19. Процесс работы игрового сервера, репликация.
20. Виды тестирования.
21. GC. Виды GC. Параметры GC. Принципиальное устройство GC.
22. Random.
23. Singleton и Context.
24. Events, подписка на события.
25. Callback.
26. Анонимные классы.
27. Работа со временем и датой. Unix time. Locale.
28. I/O Streams. Потоки байт и потоки символов.
29. Сериализация/десериализация. Interface Serializable.
30. Ключевое слово transient.
31. Reflection. Роль reflection в сериализации.
32. Factory method pattern.
33. SAX парсер.
34. DOM парсер.
35. ResourceFactory. Роль ресурсов в игре.
36. JDBC API.
37. Драйвер базы данных.
38. class Connection.
39. Dependency Injection.
40. Statement.
41. ResultSet.
42. Transactions.
43. DataSet.
44. DAO.
45. Annotation.
46. Object Relational Mapping.
47. Frontend.
48. Game Mechanics.
49. Resource System.
50. Database System.