Доклад рассматривает тонкости nodejs, а так же преимущества Evented I/O для серверных приложений. Будет предоставлен ряд рекоммендаций по правильному построению архитектуры, модульности, масштабированию, дизайну кода. Краткое введение в технологию программирования "волокнами" (fibers) и ряд других эффективных практик.
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
Курс "Промышленное программирование на Java". Набор лекций 1. "Сборка и компоновка приложения".
Сборка проекта. Apache Maven. Компоновка и верхнеуровневый дизайн приложения. Depencency Injection. Spring Framework. Spring Boot. Обзор популярных утилитарных библиотек. Логгинг, slf4j, log4j.
МФТИ, 2014 год. Лектор - Лаврентьев Федор Сергеевич
Курс "Промышленное программирование на Java". Набор лекций 3. "Реляционные базы данных".
Модель предметной области. Подключение к РСУБД из Java.
Spring JDBC.
МФТИ, 2014 год. Лектор - Лаврентьев Федор Сергеевич
использование Hibernate java persistence.part 1.Asya Dudnik
Излагаются основы Hibernate и приводится пример его применения в Java-коде.
Hibernate значительно уменьшает время разработки приложений, работающих с базами данных, заботится о связи Java классов с таблицами базы данных (и типов данных Java в типы данных SQL), предоставляет средства для автоматического построения запросов и извлечения данных.
Использование javax.persistence аннотаций, позволяет встроить маппинг сущностей используемой системы хранения (в данном случае hibernate) непосредственно в программый код. Это снижает вероятность появления ошибок и теперь не требуется создавать десятки XML файлов маппинга объектов.
Multithreading in java past and actualYevgen Levik
In this talk I’d like to give you an overview of java.util.concurrent package and represent useful Java concurrency tools. I’ll cover the core functionality and the state-of-the-art API (Executors, Accumulators, StampedLock etc).
Simple examples in github (https://github.com/levik666/OverviewInJavaUtilConcurrent)
Доклад рассматривает тонкости nodejs, а так же преимущества Evented I/O для серверных приложений. Будет предоставлен ряд рекоммендаций по правильному построению архитектуры, модульности, масштабированию, дизайну кода. Краткое введение в технологию программирования "волокнами" (fibers) и ряд других эффективных практик.
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
Курс "Промышленное программирование на Java". Набор лекций 1. "Сборка и компоновка приложения".
Сборка проекта. Apache Maven. Компоновка и верхнеуровневый дизайн приложения. Depencency Injection. Spring Framework. Spring Boot. Обзор популярных утилитарных библиотек. Логгинг, slf4j, log4j.
МФТИ, 2014 год. Лектор - Лаврентьев Федор Сергеевич
Курс "Промышленное программирование на Java". Набор лекций 3. "Реляционные базы данных".
Модель предметной области. Подключение к РСУБД из Java.
Spring JDBC.
МФТИ, 2014 год. Лектор - Лаврентьев Федор Сергеевич
использование Hibernate java persistence.part 1.Asya Dudnik
Излагаются основы Hibernate и приводится пример его применения в Java-коде.
Hibernate значительно уменьшает время разработки приложений, работающих с базами данных, заботится о связи Java классов с таблицами базы данных (и типов данных Java в типы данных SQL), предоставляет средства для автоматического построения запросов и извлечения данных.
Использование javax.persistence аннотаций, позволяет встроить маппинг сущностей используемой системы хранения (в данном случае hibernate) непосредственно в программый код. Это снижает вероятность появления ошибок и теперь не требуется создавать десятки XML файлов маппинга объектов.
Multithreading in java past and actualYevgen Levik
In this talk I’d like to give you an overview of java.util.concurrent package and represent useful Java concurrency tools. I’ll cover the core functionality and the state-of-the-art API (Executors, Accumulators, StampedLock etc).
Simple examples in github (https://github.com/levik666/OverviewInJavaUtilConcurrent)
The document discusses various web application vulnerabilities and exploits, including:
1. Wordpress vulnerabilities like file uploads in themes that can be exploited to achieve remote code execution.
2. Joomla vulnerabilities like SQL injections in components that can be used to extract admin credentials.
3. vBulletin vulnerabilities like SQL injections in addons that can be exploited to achieve remote code execution.
4. Tomcat vulnerabilities like directory traversal bugs that can be exploited to access sensitive files like /etc/passwd.
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
Как-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — про...Dev_Party
Валерий Чугреев, ИСЭРТ РАН — Архитектура MVC в контексте web-разработки — проблемы и решения.
Конференция Dev Party (http://devparty.ru).
Вологда, 02.04.2016.
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 3. Распределённая файловая система HDFSTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 1. Введение в Big Data и MapReduceTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №8 "Конфигурирование базы данных". Лектор - Павел Щербинин.
Сначала объясняются основы конфигурирования и общие принципы настройки. Далее рассказывается об области видимости, о настройке использования памяти, обсуждается размер блока ключей key_cache_block_size. Рассматривается устройство и использование кэша InnoDB, а также кэшей потоков и таблиц. Затем говорится об особенностях ввода/вывода в InnoDB. Далее рассказывается о табличном пространстве, оптимизации файловой сортировки, переменных состояния. Финальная часть лекции посвящена репликации: настройка, синхронизация, топология, планирование пропускной способности, администрирование и обслуживание, проблемы и их решения.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №5 "Определение узких мест". Лектор - Павел Щербинин.
Вначале рассказывается о подсистемах хранения: MyISAM, InnoDB, Memory, о критериях выбора подсистем хранения, приводятся практические примеры. Затем обсуждается тема индексирования (B-tree, хеш-индексы) и EXPLAIN (столбцы id, table, possible_keys, key, key_len).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №4 "Расширенные возможности работы с базами данных. Триггеры и хранимые процедуры"
Лектор - Павел Щербинин.
Первая часть лекции посвящена хранимым процедурам (использование, примеры кода, аспекты безопасности при использовании хранимых процедур): LOOP, REPEAT, WHILE, HANDLER, курсоры, EXECUTE. Во второй части рассказывается о триггерах: BEFORE, AFTER, INSTEAD OF, о специальных таблицах inserted, updated и deleted, об использовании триггеров для поддержания целостности и бизнес-логики, о проблемах при использовании триггеров, приводятся примеры кода. В завершающей части лекции обсуждаются вопросы, связанные с транзакциями: концепция A.C.I.D.; уровни изоляции ANSI/ISO (SET TRANSACTION ISOLATION LEVEL); взаимовлияние транзакций и проблемы lost update, dirty read, non-repeatable read и phantom read; технология MVCC (контроль версионирования конкуренции); конкуренция; параллельность и согласованность.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
2. План лекции
2
1. ORM
2. Hibernate
3. HQL
4. DB Service
3. Object-Relational Mapping
3
Связь между объектной моделью программы и реляционной
моделью базы
Пример
Методы DAO принимают объекты и сохраняют их в базе
Методы DAO возвращают объекты собирая их на основе запросов
4. Java Persistence API
4
Package javax.persistence
Аннотации
@Entity: объект класса можно «переложить» в таблицу
@Table: связывает класс и таблицу
@Id: поле является первичным ключом в таблице
@Column: связывает поле и колонку в таблице
5. DataSet
5
DataSet ― объект содержащий данные одной строки таблицы
На каждую таблицу свой DataSet
Извлечение и вставку данных удобно проводить через DataSet-ы
В терминах JPA DataSet это Entity
6. DataSet
6
public class UsersDataSet {
private long id;
private String name;
public UsersDataSet(long id, String name){
this.id = id; this.name = name;
}
public UsersDataSet(String name){
this.id = -1; this.name = name;
}
public String getName() { return name; }
public long getId() { return id; }
}
7. DAO
Data Access Object
7
Объект доступа к данным
Шаблон проектирования скрывающий детали работы с базой
Обычно один DAO на одну таблицу
Высокоуровневый доступ к данным через DataSet-ы
Варианты операций над базой:
Вставка строки ― добавление DataSet
Поиск строки по ключу ― возврат DataSet-а
Поиск строк по признаку ― возврат List<DataSet>
Удаление строки
12. hibernate.hbm2ddl.auto
12
hibernate.hbm2ddl.auto
Автоматически создает или проверяет схему базы
при создании SessionFactory
validate: проверяет схему, не внося изменений
update: обновляет схему, если находит различия
create: пересоздает схему
create-drop: уничтожает схему при закрытии SessionFactory
13. Session Factory
13
Фабрика, которая создает сессии
Одна фабрика на поток
Одна сессия на запрос
15. Аннотации для DataSet-ов
15
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;
…
Перед созданием SessionFactory:
configuration.addAnnotatedClass(UserDataSet.class);
}
16. Session
16
Основной интерфейс между приложением и библиотекой
Время жизни сессии соответствует времени жизни транзакции
Задача сеcсии ― работа с объектами проанотированными как @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);
}
17. DAO
17
public class UserDataSetDAO {
private SessionFactory sessionFactory;
public UserDataSetDAO(SessionFactory sessionFactory){
this.sessionFactory = sessionFactory;
}
…
}
19. HQL
19
Hibernate Query Language
«Язык» написания запросов «к hibernate»
Вместо написания запросов к базе – описание запроса вызовами
методов сессии
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/
queryhql.html
http://www.tutorialspoint.com/hibernate/
hibernate_query_language.htm
25. Database Service
25
DatabaseService – сервис скрывающий работу с базой
При создании соединяется с базой
В своих методах создает DAO
JDBC
TExecutor ― класс с типизированными методами для работы
с запросами
Hibernate
Аннотации на все DataSet-ы, автоматическое создание схемы
26. Database Service
26
Для каждой таблицы
TableDAO ― объект доступа к данным таблицы с именем Table
TableDataSet ― объект с данными одной строки таблицы
с именем Table