Я хочу, чтобы графический интерфейс пользователя изменил название кнопки с «Go» на «Working...», прежде чем объект будет создан и фактически выполнит работу. После завершения, я хочу, чтобы название кнопки переключилось обратно в «Go».
Вот код:
private class convert implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton button = (JButton)e.getSource();
button.setText("Working...");
button.setEnabled(false);
anObject name = new AnObject();
boolean result = name.methodName(chooser.getSelectedFile(),encoding);
// A bunch of stuff was here but irrelevant to the question,
// so it was removed to save room.
button.setEnabled(true);
button.setText("Go");
}
Что на самом деле происходит на практике имя создается, methodName вызывается, и ЗАТЕМ кнопка обновляется на экране, несмотря на то, что я сказал ВМ изменить название кнопки первым.
Моя рабочая теория, учитывая, что я не сделал эту программу многопоточной, это имеет какое-то отношение к рабочему приоритету, или внутренней многопоточности JVM, или что-то такое...
Есть предложения?
-121--1540019-У меня есть таблица пользователей, идентификатор пользователя является открытым. Но я хочу запутать количество зарегистрированный пользователь и тенденции проекта, поэтому я не хочу иметь общие увеличивающиеся идентификаторы.
При создании нового пользователя необходимо найти случайное целое число, которое больше определенного числа и которого еще нет в базе данных.
Наивный код:
<?php
$found = false;
while(!$found) {
$uid = rand(1000000000,4294967295) // find random number betwen minimum and maximum
$dbh->beginTransaction();
// check if user id is in use, and if not insert it
if($dbh->query("SELECT * FROM users WHERE uid = $uid")) {
$dbh->exec("INSERT INTO users (uid) VALUES ($uid)");
$found = true;
}
$dbh->commit();
}
// we just got our new uid ...
?>
Это сработает, но может стать неэффективным. Правда, что есть большой диапазон и вероятность попадания неиспользуемого uid высока. Но что, если я хочу использовать меньший диапазон, потому что я не хочу иметь таких длинных пользователей?
Пример моих опасений:
Так что один метод оптимизации заключается в том, что
Это должно дать мне число с максимальным временем выполнения O(Диапазон)
Это звучит довольно плохо, но я думаю, что это не так, потому что я представляю случайные числа в базу данных и что все они в начале очень маловероятно. Итак, насколько это хорошо/плохо на самом деле?
Я думаю, что это будет работать просто хорошо, но я хочу, чтобы это ЛУЧШЕ
Так что насчет этого?
Если я думаю правильно, это даст ma число с максимальным O (регистрация (диапазон) времени.
Это довольно удовлетворительно, потому что регистрация () довольно хорош. Однако я думаю, что этот метод часто будет настолько плохим, насколько это возможно. Потому что с нашими случайными числами мы, вероятно, всегда будем поражать числа в больших интервалах.
Так что в начале наш чистый случайный метод, вероятно, лучше.
Так что насчет ограничения, как это
Что было бы X и почему?
Так что последний вопрос:
Это довольно легко и довольно сложно в то же время.
Я думаю, что это стандартная проблема, потому что много и много систем используют случайные идентификаторы (билеты поддержки и т.д.), поэтому я не могу представить, что я первый, кто наткнулся на это.
Как бы вы решили эту проблему? Любые входные данные приравниваются!
Существует ли для этого класс/процедура, которую я могу использовать?
Или некоторые функции базы данных, которые я могу использовать?
Я хотел бы сделать это в PHP/Mysql
ВАЖНАЯ ПРАВКА:
Я просто подумал о диапазоне/логарифмическом решении. Кажется, это полная чушь извините за мою формулировку потому что:
Тогда я делю свой диапазон так долго, если он только 1. И даже тогда номер занят.
Так что его полностью то же, что и чисто случайный метод с самого начала, только хуже....
Я немного смущен, что я выдумал это, но я оставлю это, потому что я думаю, что это хороший пример слишком сложного мышления!