Search
Write a publication
Pull to refresh
13
0
Kirill Novikov @kirill3333

User

Send message

Hibernate cache

Reading time6 min
Views196K
Довольно часто в java приложениях с целью снижения нагрузки на БД используют кеш. Не много людей реально понимают как работает кеш под капотом, добавить просто аннотацию не всегда достаточно, нужно понимать как работает система. Поэтому этой статье я попытаюсь раскрыть тему про то, как работает кеш популярного ORM фреймворка. Итак, для начала немного теории.

Прежде всего Hibernate cache — это 3 уровня кеширования:
  • Кеш первого уровня (First-level cache);
  • Кеш второго уровня (Second-level cache);
  • Кеш запросов (Query cache);

Кеш первого уровня

Кеш первого уровня всегда привязан к объекту сессии. Hibernate всегда по умолчанию использует этот кеш и его нельзя отключить. Давайте сразу рассмотрим следующий код:
SharedDoc persistedDoc = (SharedDoc) session.load(SharedDoc.class, docId);
System.out.println(persistedDoc.getName());
user1.setDoc(persistedDoc);

persistedDoc = (SharedDoc) session.load(SharedDoc.class, docId);
System.out.println(persistedDoc.getName());
user2.setDoc(persistedDoc);

Возможно, Вы ожидаете, что будет выполнено 2 запроса в БД? Это не так. В этом примере будет выполнен 1 запрос в базу, несмотря на то, что делается 2 вызова load(), так как эти вызовы происходят в контексте одной сессии. Во время второй попытки загрузить план с тем же идентификатором будет использован кеш сессии.
Один важный момент — при использовании метода load() Hibernate не выгружает из БД данные до тех пор пока они не потребуются. Иными словами — в момент, когда осуществляется первый вызов load, мы получаем прокси объект или сами данные в случае, если данные уже были в кеше сессии. Поэтому в коде присутствует getName() чтобы 100% вытянуть данные из БД. Тут также открывается прекрасная возможность для потенциальной оптимизации. В случае прокси объекта мы можем связать два объекта не делая запрос в базу, в отличии от метода get(). При использовании методов save(), update(), saveOrUpdate(), load(), get(), list(), iterate(), scroll() всегда будет задействован кеш первого уровня. Собственно, тут нечего больше добавить.
Читать дальше →

Покончите с беспределом: внедрите бизнес-процессы в CRM

Reading time11 min
Views80K
2006 год. На форуме специалистов SQL неожиданно поднимается вопрос о целесообразности моделирования бизнес-процессов в CRM-системах. Звучат слова: долго, дорого, Siebel, не нужно, сложно.
2014 год. Все чаще клиенты просят посоветовать CRM с возможностью построения и запуска бизнес-процессов. В чем причина? Первое подозрение — где-то услышали и теперь тянутся за модой. На вопрос «Зачем?» поступает взвешенный ответ: «Устали от беспредела и путаницы в организации работ. Хотя бы в часто повторяющихся действиях нужен порядок». Нельзя не согласиться с тем, что основное назначение регламентации бизнес-процессов в компании — именно порядок. Признайтесь, приятно осознавать, что многие процессы в организации проходят четко, слаженно, быстро, с минимальной нервозностью.
Читать дальше →

10 уроков о том, как повысить продуктивность, которые я усвоил, работая по 90 часов в неделю целый месяц

Reading time8 min
Views199K
image

Сколько часов в неделю вы тратите на работу? Около 40, не так ли? А как вы думаете, что будет, если работать 90 часов в неделю?

Автор сайта a Year of Productivity Chris Bailey решил провести такой эксперимент. К чему это привело? Читайте о 10 уроках, которые он извлек, в нашем переводе его статьи.
Читать дальше →

Выбор технологии 3D печати для производства небольшого количества корпусов

Reading time4 min
Views57K

Эта история должна помочь разработчикам “хардверных” продуктов, сэкономить их время при выборе технологий 3D печати и уберечь от ошибок.

Данная публикация — продолжение статьи о процессе производства пилотной партии LaMetric, а именно о том, как создавался корпус прибора. Нижеизложенный опыт основывается на несколько пройденных итераций производства, во время которых мы опробовали и объединили различные технологии.
Читать дальше →

Логика мышления. Часть 3. Персептрон, сверточные сети

Reading time8 min
Views128K


В первой части мы описали свойства нейронов. Во второй говорили об основных свойствах, связанных с их обучением. Уже в следующей части мы перейдем к описанию того как работает реальный мозг. Но перед этим нам надо сделать последнее усилие и воспринять еще немного теории. Сейчас это скорее всего покажется не особо интересным. Пожалуй, я и сам бы заминусовал такой учебный пост. Но вся эта «азбука» сильно поможет нам разобраться в дальнейшем.

Персептрон


В машинном обучении разделяют два основных подхода: обучение с учителем и обучение без учителя. Описанные ранее методы выделения главных компонент – это обучение без учителя. Нейронная сеть не получает никаких пояснений к тому, что подается ей на вход. Она просто выделяет те статистические закономерности, что присутствуют во входном потоке данных. В отличие от этого обучение с учителем предполагает, что для части входных образов, называемых обучающей выборкой, нам известно, какой выходной результат мы хотим получить. Соответственно, задача – так настроить нейронную сеть, чтобы уловить закономерности, которые связывают входные и выходные данные.
Читать дальше →

VIZIO. Недорогой ноутбук с Full HD IPS экраном

Reading time5 min
Views172K
Краткая справка:
VIZIO — довольно известная американская фирма. Существует с 2002 года. Производит в основном ЖК телевизоры и мониторы. В последнее время предпринимаются попытки вырваться на рынок ультрабуков и планшетов. Разработка устройств производится в США. При этом разрабатывается не только дизайн, но и внутреннее устройство всей техники и ничего не отдается в аутсорс индусам или китайцам. Производственные мощности находятся в Мексике, Китае и на Тайване. Все заводы, производящие технику, частично или полностью принадлежат собственно фирме VIZIO. Отличается агрессивной маркетинговой политикой, обвиняет крупнейшие мировые бренды в нанесении вреда экологии, использовании копеечной полурабской рабочей силы и кичится своей политикой разработки всего до «последнего винтика» грамотными американскими инженерами. Планов выхода на Российский рынок нет. Вероятность появления у нас продуктов VIZIO или сервис центров стремится к нулю.

Из этого следует что простому российскому гражданину для знакомства с техникой VIZIO придется взять на себя расходы по пересылке довольно увесистого агрегата из США и риски связанные с почтой России и гарантией действительной только в Калифорнии.
image
Вот он какой из себя — весь такой типично металлический минималистский американец.
Всех кто еще не окончательно потерял интерес к описываемой теме, прошу под кат

10 лучших вузов в области речевых технологий и искусственного интеллекта

Reading time11 min
Views24K


За последние несколько лет в России вновь пробудился интерес к речевым интерфейсам. Западная научная традиция, в отличие от русской, в этом направлении имеет непрерывный более чем полувековой опыт.
Наш обзор посвящен ведущим вузам, дающим образование в области речевых технологий — автоматической обработки речи, голосовых интерфейсов, биофизики, искусственного интеллекта, нейронных сетей и т.д.
Учимся говорить...

Яндекс. Директ. Анализируем конкурентное окружение

Reading time4 min
Views16K

Представьте ситуацию. Вы разрабатываете сайты. Хорошие сайты для хороших людей. Ваши рекламные кампании работают давно, вы вышли на хороший уровень ROI, заказы идут с завидной периодичностью. Все казалось бы хорошо, пока в один прекрасный день мы не получаем кучу писем от Директа, о том что мы кем-то вытеснены с насиженных позиций. Мы идем в выдачу и видим на своей любимой позиции незнакомый сайт конкурента. Естественным нашим желанием будет узнать что это за фрукт и на основании этой информации принять стратегическое решение – ввязываться ли в войну бюджетов (если это серьезный и жирный конкурент) или подпереть снизу и помочь слить бюджет (если это мелочевка).

«Но это же невозможно!» – Скажете вы. – «Любая система контекстной рекламы руководствуется принципами закрытого аукциона и не предоставляет своим рекламодателям информацию о конкурентах. Мы ведь не знаем ни ключевых запросов конкурента, ни настроек его РК. Не знаем использует он минус-слова или кавычки. Самое главное – мы не знаем его ставок и CTR»

Спокойствие, только спокойствие! (с)

В статье я расскажу, как по косвенным признакам узнать максимум стратегически важной информации о конкурентах, достаточной для принятия решений.

Читать дальше →

Яндекс.Директ. Кавычки против минус-слов или как отделить жемчужины от навоза

Reading time4 min
Views16K

Цель настройки любой рекламной кампании сводится к двум основным стремлениям рекламодателя.
— Четко нацелиться на целевую аудиторию, выжать из нее максимум посетителей себе на сайт (если кто-либо из целевой аудитории, запрашивает ключевое слово – мы должны сделать все, чтобы заполучить его себе на сайт)
— Ни в коем случае не допустить показов нецелевой аудитории (показы этой аудитории понизят драгоценный CTR и повысят стоимость клика, а возможные случайные клики этой аудитории – съедят кусок бюджета)
Для выполнения этих целей Директ предоставляет нам 2 инструмента: Оператор «кавычки» и минус-слова. О них и речь в этой статье.
Читать дальше →

Советы front-end разработчику

Reading time7 min
Views191K


Привет, читатель хабра.

Наверное, ты сразу спросишь меня: «Да кто ты такой, чтобы давать мне советы?». Итак, немного обо мне.

Первое мое общение с HTML и CSS было 10 лет назад, еще в школе, когда у меня только появился интернет, и я понял что тоже хочу делать странички, которые сможет увидеть весь мир. С тех пор у меня есть как минимум 5 полных лет опыта разработки сайтов по-взрослому. Сейчас я могу без лишней скромности сказать, что сверстал я уже пару сотен сайтов, большинство из которых, как ни странно, совершенно не совпадают с моими текущими требованиями к верстке.

Я не хочу рассказывать как надо делать, эта статья результат моего опыта и попытка написать рекомендации тем, кто только начинает, хотя и для матерых верстальщиков (слово режущие слух) здесь могут найтись интересные идеи.
Если ты заинтересовался прошу под кат…
Читать дальше →

Как мы учили английский язык в японской школе на Филиппинах

Reading time14 min
Views64K
Привет! Зимой этого года мы прожили месяц на Филиппинах, изучая английский язык.


(Учитель Latisha передает привет читателям хабрахабра)


(все разнообразие русскоязычной части школы на тот момент: слева направо Алекс (сотрудник школы и по совместительству студент), студенты Женя, Женя и Рома)

Продолжение под катом

Обзор нового образовательного набора по электронике от Амперки (Матрешка Z)

Reading time3 min
Views359K


Думаю многие слышали про компанию Амперка, это наверное единственная российская компания, кто занимается продажей наборов на базе Ардуино.

Я знал про них давно, но как-то скептически относился к бизнесу на базе Ардуино, когда рядом находится Китай, e-bay, таобао — где можно напрямую и достаточно недорого заказать Ардуино и другие комплектующие.

Но вот к нам в хакспейс попал новый набор «Матрешка Z», и я понял, что Амперка не просто продаёт Ардуино — они делают качественные образовательные наборы по электронике для начинающих.

Что же внутри?
Читать дальше →

Программируем квадрокоптер на Arduino (часть 1)

Reading time18 min
Views378K


Здравствуйте, хаброжители!
В этой серии статей мы с вами приоткроем крышку квадрокоптера чуть больше, чем этого требует хобби, а также напишем, настроим и запустим в воздух собственную программу для полетного контроллера, которым будет являться обычная плата Arduino Mega 2560.

У нас впереди:
  1. Базовые понятия (для начинающих коптероводов).
  2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
  3. Собственно программа для Arduino и настроечная программа на Qt.
  4. Опасные тесты квадрокоптера на веревке. Первые полёты.
  5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
  6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

Материал объемный, но постараюсь уложиться в 2-3 статьи.
Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
Читать дальше →

Spring изнутри. Этапы инициализации контекста

Reading time11 min
Views373K


Доброго времени суток уважаемые хабравчане. Уже 3 года я работаю на проекте в котором мы используем Spring. Мне всегда было интересно разобраться с тем, как он устроен внутри. Я поискал статьи про внутреннее устройство Spring, но, к сожалению, ничего не нашел.

Всех, кого интересует внутреннее устройство Spring, прошу под кат.
Читать дальше →

Алгоритмы сортировки в виде пошаговой анимации

Reading time1 min
Views66K
Сортировка последовательности данных — один из столпов компьютерной науки. Проблема в том, как делать сортировку наиболее эффективным образом, и эта задача стоит перед исследователями чуть ли не с первого дня после изобретения компьютера. На сайте sorting.at различные алгоритмы сортировки проиллюстрированы в виде пошаговой анимации, для лучшего понимания принципов их работы.


Читать дальше →

Работа с Java в командной строке

Reading time11 min
Views659K
Сейчас уже никто не создает программы в консоли. Используя любимую IDE, разработчик чувствует себя неуютно за чужим компьютером, где её нет.
Решив разобраться в работе Ant и Maven, я поймал себя на том, что не смогу собрать приложение без них в консоли.
В данной статье я постарался уместить все этапы проектирования демонстрационного приложения, чтобы не искать справку по каждой команде на просторах Интернета.
Читать дальше →

«Переведем Coursera»: как сделать платформу для перевода лучших курсов мира на русский язык

Reading time4 min
Views23K
24 марта ABBYY Language Services и центр Digital October объявили об официальном запуске краудсорсингового проекта «Переведем Coursera». Его цель — на волонтерской основе перевести лучшие курсы Coursera на русский язык и сделать их доступными для всех пользователей Рунета. Зарегистрироваться и приступить к переводу лекций можно уже сейчас на сайте проекта.

Пока мы разрабатывали и готовили к запуску этот проект, произошло много интересного. Мы решили массу организационных и технических задач, познакомились с большим количеством интересных людей, в том числе с яркой командой и основателями Coursera, а также с командой нашего локального партнера по этому проекту Digital October. Думаем, что вам будет интереснее узнать про технологии, поэтому сейчас расскажем, из чего состоит и что умеет платформа, которую мы разработали. Почти наверняка это не последний пост о проекте, так что пишите в комментариях, о чем еще вы бы хотели узнать.
Читать дальше →

λ-исчисление. Часть вторая: практика

Reading time5 min
Views49K
Идею, короткий план и ссылки на основные источники для этой статьи мне подал хабраюзер z6Dabrata, за что ему огромнейшее спасибо.

Первая часть дала нам теоретическое представление о том, что есть лямбда-исчисление. В этой статье мы последуем неофициальной його-заповеди «Practice-practice-practice» и увидим его в действии.
Читать дальше →

Промдизайн для электроники: как разработать корпус устройства

Reading time4 min
Views33K


Разработка корпуса — один из основных этапов создания продукта для рынка электроники. В руках промышленных дизайнеров сосредоточена большая власть и ответственность: именно они определяют внешний вид устройства, стремятся сделать его привлекательным, стильным и удобным.
 
Каждый день мы пользуемся результатами работы промдизайнеров: смартфонами, ноутбуками, ТВ-приставками, клавиатурами, мышками и другими устройствами. Посмотрим на процесс создания всех этих вещей изнутри и ответим на три самых распространенных вопроса, которые возникают в процессе реализации проектов по разработке корпуса для электроники:
  1. Промдизайн: что вообще скрывается под этим словом?
  2. Разработка дизайна и конструкции корпуса: из чего состоит проект?
  3. Работа с промдизайнерами: как организовать сотрудничество и оценить результаты?

Читать дальше →

Как изготовить рабочий прототип электронного устройства

Reading time5 min
Views45K


Мы продолжаем публиковать статьи о разработке и производстве сложной современной электроники. В этот раз расскажем об изготовлении прототипов и опытных образцов. Любой проект включает в себя эту стадию, от ее результатов зависит дальнейшая судьба устройства — выход на массовое производство или отправка на доработку.
 
Рабочий образец воплощает в себе результаты работы инженеров, программистов, промдизайнеров и технологов. Его щупают, рассматривают и оценивают, сравнивая ожидаемое с действительным.
 
Зачем вообще нужны эти прототипы? Сколько штук их нужно изготовить в рамках проекта и сколько это стоит? Какие документы нужны для производства опытных образцов? Ответы на эти вопросы вы найдете под катом.
 
Читать дальше →

Information

Rating
Does not participate
Registered
Activity

Specialization

Fullstack Developer, Mobile Application Developer
Lead
JavaScript
React
React Native
Node.js
TypeScript
GraphQL