Ответы пользователя по тегу Java
  • Как освободить выделенную потоку память?

    @sirs
    В java память и не должна осбождаться таким образом.
    GC стартует только тогда, когда это реально нужно, например когда нужно выделить память под новый объект, а память уже на исходе (очень грубый пример). Посмотрите тут или еще лучше в спецификации.
    Принудительно вызвать GC из клиентского кода и удалить неиспользуемые объекты возможности нет.

    UPD: Думаю это обсуждение должно дать вам ответ.
    Ответ написан
    3 комментария
  • Мнимальный порог для freelance на Java?

    @sirs
    Минимальный порог - это понять задачу и составить правильно уточняющие вопросы к заказчику.
    Если Вы не поймете в чем задача, естественно не сможете сделать. Сложность в плане программирования - работы есть от нуля до уровня бога.
    Но если у Вас возникает такой вопрос - вероятнее Вам лучше пойти как джуниор в любую контору и набить немного руку и приобрести уверенности.
    Ответ написан
    1 комментарий
  • Android. Как совместить ORM модель и ООП модель?

    @sirs
    Лепить все в один класс не стоит. Классы, которые у вас используются для REST объявите как dto объекты, они должны синхронно меняться как на клиенте, так и на сервере. Для связи между тем, что в ресте и тем, что в бд - напишите простейшие конверторы на уровне сервиса.

    UPD

    Простейший пример:
    dto класс :
    class User {
    String responseStatus;
    String name;
    String password;
    
    public User(final String responseStatus, final String name, final String password){
    this.responseStatus=responseStatus;
    this.name = name;
    this.password=password;
    }
    
    //setters
    //getters
    }


    entity модель для orm:

    class UserEntity {
    @DatabaseField (autoincrement = true) int id;
    @DatabaseField String name;
    @DatabaseField String password;
    //getters
    //setters
    }


    есть у Вас простой сервис, который из контроллера передает данные в слой работы с базой, например

    public class UserService(){
    
    //some field
    
    public void addUser(final User user){
    //some code
    UserEntity userEntity = convert(user);
    //save userEntity into db
    }
    
    private UserEntity convert(final User user){
    //some if 
    //some logger
    UserEntity userEntity = new UserEntity();
    userEntity.setName(user.getName());
    userEntity.setPassword(user.gerPassword());
    return userEntity;
    }
    }


    Это простейший пример, вариантов может быть много - различные мапперы, билдеры, конверторы и т.д. Это зависит от используемых фреймворков и принятого подхода на проекте.
    Ответ написан
    3 комментария
  • Как правильно сделать ReadOnly поле с условием?

    @sirs
    Если Вы используете хибернейт, то попробуйте добавить на колонку в таблице (оно же поле в бине) свойство
    property name="docType" insert="true" update="false"
    link это для случая, когда Вы не хотите изменять после создания.
    Если хотите, чтобы менять мог только администратор - нужно смотреть в сторону spring security
    Ответ написан
    Комментировать
  • Как написать агента MBean для JMX?

    @sirs
    попробуйте назвать свой интрефейс TestIMBean
    Ответ написан
  • Как работает блокировка у Singleton на кластере?

    @sirs
    Никак не работает. Смотрите тут и тут

    Есть какой-то встроенный механизм на уровне базы, что второй инстанс не может зайти в критическую секцию?

    Транзакция вам не подходит? Или распределенные транзакции аля XA Transactions?
    Ответ написан
  • Почему не поддерживает try-with-resources?

    @sirs
    Возьмите за привычку искать ответы на возникающие вопросы в официальной документации
    any object that implements java.lang.AutoCloseable, which includes all objects which implement java.io.Closeable, can be used as a resource.

    Ваш класс Microphone помечен таким интрефейсом? Не видно импортов на скрине и не понятно, что за класс и из какой либы.
    Ответ написан
  • Как правильно переопределить метод equals при наследовании?

    @sirs
    Спорный вопрос, но Josh Bloch с вами согласен.
    С другой стороны нарушен принцип симметричности equals.
    В любом случае, серебрянной пули не существует, а отдельные решения отлично подходят в каждом конкретном случае.
    Ответ написан
    Комментировать
  • JavaServlets как лучше возращать HTML страницу?

    @sirs
    Если я правильно понял ваш вопрос, то вам нужен паттерн Command
    Ответ написан
    Комментировать
  • Как правильно хранить файлы изображений в веб приложении?

    @sirs
    Динамику (картинки, иконки, логопиты и т.п. все что может быть загружено в рантайме) и статику (то, что никогда не меняется в рантайме) надо держать отдельно. Во-первых, чтобы не терять данные при редеплое или добавлении новой ноды/инстанса вашего приложения и во-вторых, статик контент гораздо быстрее отдается через спец. сервера, чем через контейнер аля tomcat или какой-нибудь jboss.
    Посмотрите для старта на Apache HTTP Server. Прост в использовании, минимальные настройки для старта, много примеров. Потом попробуете более продвинутое решение.
    Ответ написан
    Комментировать
  • Регистрация/Вход просмотр сообщений Servlet?

    @sirs
    Совет от меня: разделите вашу ну уж очень объемную задачу на несколько более мелких. Потому как у вас в одном вопросе сразу десять вопросов. Берете свое тз/задание/проект и пилите на мелкие понятные части, чем мельче - тем лучше. И решаете проблемы постепенно, степ бай степ.

    Есть БД с таблицей registr и полями login, pass, message, online. Главный вопрос как проверять существует данный пользователь в БД или нет, потому как сейчас один и тот-же login можно создавать n-раз, на просторах читал что нужно обрабатывать через js?

    Юзер попадает на страницу login.jsp или index.jsp, вводит свой login и password, нажимает кнопку login/sing in - вы отправляете post запрос на сервер в свой сервлет. Сервлет вызывает ваш UserService, сервис должен вызвать Dao и извлечь сущность User из бд. Далее обычно введенные юзером креды прогоняются через md5 или еще что-нибудь и сравниваются с теми, которые были извлечены из бд. Если совпадают - юзер либо получает rights либо добавляется в некий список и получает доступ к остальным ресурсам. Права на доступ обычно проверяют в Filter при запросе ресурса.
    Если не хотите заморачиваться с самодельным велосипедом, то да - смотрите spring-security, по нему достаточно много материалов и примеров.
    Что вы имели ввиду, когда упоминали js ? В контексте собрать данные из login form и сделать submit на сервер? Или вы ищите способ с помощью js достать данные из бд?
    Ответ написан
    Комментировать
  • Что сделать, что бы не нарушался принцип инверсии зависимостей?

    @sirs
    Вы наверное не совсем верно понимаете, что такое принцип инверси зависимостей.
    Вы нигде не используете интерфейсы, у вас все жестко зашито, например TransferManager умеет работать только с одним единственным типом объектов BankAccount ....

    P.S. Почитайте про code convention, потому что непросто читать ваш код.
    Ответ написан
  • Не получается обработать POST запрос, отправленный с странички JSP, в Servelet. Как исправить?

    @sirs
    <form method="post" action="/">
       ...
       <input type="text" size="40" name="login" value="Loligan">
       <input type="submit" value="Сохранить логин в сервелете">
    </form>
    Ответ написан
    2 комментария
  • Считается ли хорошим подходом создавать исключения в Java?

    @sirs

    if (box== null) throw new Exeption("Коробки нет на складе");
    if (box.ready) throw new Exeption("Коробка уже отсканирована");

    Куча if не есть хорошо. Почему бы вам просто не ввести понятие State, создать под него Enum со всеми возможными состояниями и применить шаблон, например, Strategy . Под каждое конкретное состояние объекта нужно будет написать отдельный обработчик и из метода кидать не Exception, а просто передавать управление в нужный обработчик.

    Как альтернативный вариант - посмотрите фреймворки, который позволяют организовать т.н. Route, может быть вам понравится такая реализация. Если коробка есть на складе - пройти по пути 1, если коробки нет на складе - пройти по пути 2, если с коробки уже считан код - пройти по роуту 3 и т.д. Такая реализация, например, поможет наладить транзакционность из коробки.
    Ответ написан
    2 комментария
  • Помогиие выбрать ORM для MySQL для java?

    @sirs
    Если у вас только crud операции - spring data с repository вам в помощь. Или jpa+hibernate.
    Ответ написан
    Комментировать
  • Объясните смысл идентификатора volatile в Java?

    @sirs
    то не проще будет присвоить объекту модификатор static?

    Нет, не проще. static поле принадлежит самому классу (объекту класс), а не объектам. Как вы будете его модифицировать?
    volatile позволяет увидеть изменения переменной во всех потоках сразу, однако не стоит забывать, что это верно только для атомарных операций!

    Если же вы ищете конкретное решение конкретной проблемы - посмотрите в сторону AtomicInteger, AtomicLong и т.д. если вам нужно что-то похожее на счетчики, в сторону ReentrantLock если у вас какой-то разделяемый ресурс, и в сторону ConcurrentHashMap если у вас коллекция, с которой должно работать множество потоков...
    Ответ написан
    Комментировать
  • Почему не сохраняет логи в файл log4j?

    @sirs
    Немного смущает
    src/main/java/test.class
    public class test {
    public static OrderLogic logic;
    public static void main(String[] args) {
    logic = new OrderLogic();
    logic.doOrder();
    }
    }

    и потом
    log4j.appender.file.File=${catalina.home}/logs/myapp.log

    Вы свое приложение запускаете из консоли или все-таки запаковываете в war файл, например, и разворачиваете на томкате?
    Ответ написан
  • Доступ к подпакету в jar?

    @sirs
    Так а что ж вы в javadoc не посмотрели описание вашего exception?
    "Thrown if the Java Virtual Machine cannot find an appropriate native-language definition of a method declared native."
    Владеете информацией, что за jar mpjdev.jar такой и какой нативный код там может быть?
    Ответ написан
  • Как правильно определить Entity если часть данных хранится в таблице свойств?

    @sirs
    Как один из вариантов - можно сделать с аннотацией @OneToMany. Создать отдельное entity на таблицу PEOPLE_ATTRIBUTE, например

    @Entity
    @Table(name = "PEOPLE_ATTRIBUTE")
    public class PeopleAttribute {
    private int peopleCode;
    private int attributeCode;
    private String attributeValue;
    ...
    }
    
    @Entity
    @Table(name = "PEOPLE")
    public class People {
    
    ...
    private Set<PeopleAttribute> attributes;
    
    @OneToMany(mappedBy = "attribute")
    public Set<PeopleAttribute> getAttributes() {
    		return this.attributes;
    	}
    ...
    }


    P.S. Небольшой совет из опыта: 1) всегда используйте Long для id сущностей, даже если вам кажется что short/int вам хватает, накладные расходы не такие уже и большие, не стоит экономить на спичках. 2) Если у вас @Id private int codePeople; является ID, то и называйте его peopleId, peopleID или просто id. Когда сущностей набирается много - начинается путаница и проблемы, особенно если в команде людей много и все пишут по разному.
    Ответ написан
    1 комментарий
  • Какие примеры правильного Java кода можно привести?

    @sirs
    Что-то мне подсказывает, что вы ищете серебряную пулю, но ее не существует.
    Нет такого понятия как идеальный код, идеальный паттерн, идеальная обработка исключений и т.д.
    Каждый паттерн, каждое архитектурное решение отлично подходит под какого-то круга задач, но этот круг задач всегда ограничен. Нелья написать код и сказать, что это эталон. Если все так было просто, задачу написания кода давно бы уже автоматизировали на 100%.
    То, что вы ищете, может придти только с опытом и со временем.
    Примеры решения конкретных проблем - ищите на stackoverflow, "красивое" оформление кода - в опенсорсных фреймворках на гитхабе (https://github.com/spring-projects/spring-framework).
    Ответ написан
    2 комментария