java.util.Date vs java.sql.Date

Ответ dtheodor получил 95%, кроме этого:

session = requests.session(cookies=cookies)

Для меня это вызывает исключение, поскольку session () не принимает аргументы.

Я работал вокруг него взяв ключи / значения в файле cookie.get_dict и добавив их вручную в сеанс, используя:

session.cookies.set(cookies.keys()[n],cookies.values()[n])
484
задан Jonas 7 December 2010 в 17:56
поделиться

3 ответа

Поскольку новые версии Rails используют Rack под колпаком, переключение между веб-серверами должно быть довольно простым. При простом запуске Unicorn с вашим приложением в среде разработки, с какими конкретными проблемами вы сталкиваетесь?

Вы должны иметь возможность продолжать использовать Nginx в качестве обратного прокси. Из того, что я собрал, Unicorn должен делать балансировку нагрузки между работниками сам, потому что у него есть только один слушающий сокет/порт, который он разделяет между ними. Таким образом, Nginx обычно должен быть сконфигурирован как очень простой обратный прокси-сервер и сервер ресурсов, без балансировки нагрузки. (За исключением, конечно, распределения работников по машинам.)

Есть ли конкретная зависимость от пассажира в вашем приложении, которую вы надеетесь решить? Или вы запрашиваете общие инструкции по развертыванию для Unicorn?

-121--3713315-

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

-121--2943669-

Поздравляю, вы попали в мой любимый питомец pieve с JDBC: Обработка класса даты.

В основном базы данных обычно поддерживают как минимум три формы полей datetime, которые являются датой, временем и меткой времени. Каждый из них имеет соответствующий класс в JDBC и каждый из них расширяет java.util.Date . Быстрая семантика каждого из этих трех:

  • java.sql.Date соответствует SQL DATE, что означает, что в ней хранятся лет, месяцев и дней , в то время как час, минута, секунда и миллисекунда игнорируются. Кроме того, sql.Date не привязан к часовым поясам.
  • java.sql.Time соответствует SQL TIME и, как должно быть очевидно, содержит только информацию о часе, минутах, секундах и миллисекундах .
  • java.sql.Timestamp соответствует SQL TIMESTAMP, которая является точной датой наносекунды ( обратите внимание, что util.Date поддерживает только миллисекунды! ) с настраиваемой точностью.

Одной из наиболее распространенных ошибок при использовании драйверов JDBC в отношении этих трех типов является неправильная обработка типов. Это означает, что sql.Date зависит от часового пояса, sql.Time содержит текущий год, месяц и день и т.д. и т.д.

Наконец: Какой из них использовать?

Зависит от типа поля SQL. Оператор имеет установщики для всех трех значений, # setDate () - для sql.Date , # setTime () для sql.Time и # setTimestamp () для sql.Timestamp

Обратите внимание на то, что при использовании ps.setObject (startIndex, utilDateObject) вы можете фактически присвоить обычную util.Date большинству драйверов JDBC, которые будут с радостью поглощать ее, как если бы она была правильного типа, но при последующем запросе данных вы можете заметить, что на самом деле не хватает всего.

Я действительно говорю, что ни одна из Дат не должна использоваться вообще.

Что я говорю, что сохранить миллисекунды/наносекунды в виде простых длин и преобразовать их в любые объекты, которые вы используете ( обязательный joda-time plug ). Один хакерский способ, который можно сделать, это сохранить компонент даты как один длинный и временной компонент как другой, например, прямо сейчас будет 20100221 и 154536123. Эти магические числа могут использоваться в запросах SQL и будут переноситься из базы данных в другую и позволят полностью избежать этой части JDBC/Java Date API: s.

571
ответ дан 22 November 2019 в 22:43
поделиться

Единственный случай использования java.sql.Date - в PreparedStatement.setDate. В противном случае используйте java.util.Date. Показательно, что ResultSet.getDate возвращает java.sql.Date, но его можно присвоить непосредственно java.util.Date.

19
ответ дан 22 November 2019 в 22:43
поделиться

ПОЗДНЕЕ РЕДАКТИРОВАНИЕ: Начиная с Java 8, вы не должны использовать ни java.util.Date , ни java.sql.Date , если вы вообще можете этого избежать, и вместо этого предпочитаю использовать пакет java.time (основанный на Joda), а не что-либо еще. Если вы не используете Java 8, вот исходный ответ:


java.sql.Date - когда вы вызываете методы / конструкторы библиотек, которые его используют (например, JDBC). Не иначе. Вы не хотите вводить зависимости в библиотеки баз данных для приложений / модулей, которые явно не связаны с JDBC.

java.util.Date - при использовании библиотек, которые его используют. В противном случае, как можно меньше по нескольким причинам:

  • Он изменяемый, что означает, что вы должны делать его защитную копию каждый раз, когда вы передаете его или возвращаете из метода.

  • Он не очень хорошо обрабатывает даты, что отталкивает таких людей, как ваш истинный, думают, что классы обработки дат должны.

  • Теперь, поскольку j.u.D не очень хорошо справляется со своей работой, были введены ужасные классы Calendar . Они также изменчивы, с ними ужасно работать, и их следует избегать, если у вас нет выбора.

  • Есть лучшие альтернативы, такие как Joda Time API (, который может даже войти в Java 7 и стать новым официальным API обработки даты - быстрый поиск говорит, что не будет).

Если вы считаете излишним вводить новую зависимость, такую ​​как Joda, long s не так уж и плохо для использования в полях меток времени в объектах, хотя я сам обычно заключаю их в j.u.D при их передаче для обеспечения безопасности типов и в качестве документации.

58
ответ дан 22 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: