Skip to main content

Posts

Tomcat in debug, JPDA in Java 11 and Windows

In the latter versions  of Java you need to specify host. Otherwise it'll be "loopback": only connection from the same host would be possible. If Tomcat is started as Windows service, then change Java options: -Xdebug -Xrunjdwp:transport=dt_socket,address=*:9043,server=y,suspend=n What will happen if to use address=9043 with port only? Open Windows Resource Monitor -> Network tab -> Listening Ports: But when we change it to address=*:9043, Address becomes IPv4 unspecified. How to check from the machine with IDE. You can use the following PowerShell command: Test-NetConnection host.address -Port 9043 The output in case of address=9043 is the following: PS C:\Users\username> Test-NetConnection host.address -Port 9043 WARNING: TCP connect to (host.ip : 9043) failed ComputerName           : host.address RemoteAddress          : host.ip RemotePort            ...

End of line in Git

Initially we had SVN, but then migrated to Git. Actually we had no idea about end of line issue, because we always worked on Windows. After some time we've noticed that specific commits changed the whole file, though some diff tools insisted that there are no differences. First of all, it occurred that the order of revisions in git diff is important. It misled us, we started to think that those commits changed LF -> CRLF. Finally, git diff <parent_commit> <child_commit> --ws-error-highlight=new,old -- FileName.java revealed the truth: Now we are thinking should we stay with "Windows-style everywhere" or migrate to "commit Unix-style". Points to consider: There are tons of holly wars, but I couldn't find recommendation from Git. But it provides a way to change behavior. There is recommendation from GitHub to use LF in repository. Windows for git has three options, but neither one of them enforces CRL...

Hibernate

1. Hibernate Session . Javadoc называет её главным интерфейсом между java-приложением и Hibernate. Иногда её называют единицей работы или логической транзакцией. Основная функция сессии - обеспечить операции создания, чтения, удаления объектов. Объекты могут находиться в одном из 3 состояний (см. 2) Сессия создается с помощью SessionFactory. SessionFactory знает конфигурацию ORM, её внутреннее состояния immutable. При вызове Configuration().configure() загружается файл hibernate.cfg.xml. После того, как конфигурация загружена, можно изменить настройки программно. Данные корректировки возможны только до создания экземпляра фабрики сессий. // Initialize the Hibernate environment Configuration cfg = new Configuration().configure(); // Create the session factory ServiceRegistryBuilder srb = new ServiceRegistryBuilder(); ServiceRegistry sr = srb.applySettings(cfg.getProperties()).buildServiceRegistry(); SessionFactory factory = cfg.buildSessionFactory(sr); // Obtain the new session obj...

Spring Security и PreAuth

Windows hints

1. Хотим остановить зависшую  службу, но через Administration -> Services показывает статус Stropping бесконечно. Хорошая статья: http://www.examiner.com/list/how-to-kill-a-windows-service-that-s-stuck-on-stopping-or-starting Общий смысл: sc queryex servicename     где servicename из свойств службы, покажет PID taskkill /f /pid [PID]

Using filesort; Using temporary

При выполнении explain в колонке Extra иногда значатся Using filesort; Using temporary. Что бы это значило? Хороший ответ на английском  What does Using filesort mean in MySQL? Его перевод на русский с дополнениями: Если в памяти создается временная таблица, хранящая результаты запроса, то это Using temporary. Временная таблица может быть сохранена на диск, если она слишком велика, чтобы поместиться в память. // TODO: слишком велика - это сколько? по какой еще причине она может быть записана на диск? Каждый раз, когда сортировка не может быть выполнена по индексу, это using filesort. Плохое имя заставляет нас думать о файлах, но они тут не при чем. Filesort могла бы называться просто sort. На самом деле это quicksort. Если сортировка больше, чем "sort buffer" (?), то она выполняется по частям. Объем памяти, выделяемый для filesort(), хранится в переменной @@sort_buffer_size .  Если сортируемые данные не помещаются в эту память, filesort будет использовать временные ...

Spring

Wikipedia: The Spring Framework is an open source application framework and inversion of control container for the Java platform. Это Container, так как Spring управляет жизненным циклом всех объектов контейнера: создает их и связывает (wiring) их друг с другом. Это Framework, Spring позволяет создавать и конфигурировать сложные приложения из простых компонент, предоставляя гибкие и эффективные реализации многих необходимых сервисов. 1. DI и IoC Фаулер считает одним и тем же, просто DI - более подходящий термин. Паттерн DI предоставляет компоненту внешнюю зависимость (вместо того, чтобы захардкодить её). То есть мы сообщаем объекту о его зависимостях вместо того, чтобы он сам о них знал. Предыстория: Мы стараемся использовать интерфейсы, например tree.getFruits(), но где мы создаем объект tree? Если в классе, который его использует, то получается, что класс зависит не только от интерфейса ITree, но и от конкретной реализации, скажем AppleTree. А если кто-то захочет использоват...