субота, 29 грудня 2007 р.

З Новим Роком!

Кто первый найдет меня на флешке - пиво :)
http://www.elfyourself.com/?id=1846012118

понеділок, 10 грудня 2007 р.

ХНУРЭ - лабы :)


Вот так проходят лабы: высокомощный мэйнфрейм показывает поразительные результаты по производительности

субота, 8 грудня 2007 р.

Hibernate + MySQL = unicode

Проблема решается с помощью hibernate.cfg.xml:



property name="connection.url">jdbc:mysql://localhost:3306/teach?useUnicode=true&аmp;characterEncoding=UTF-8


Причем в идее не позволяет использовать & в строке соединения а &аmp; вполне заменяет его :)

PS в &аmp используется русская буква а для того чтоб предотвратить преобразование производимое движком блога


----------------
Now playing: Scientific Soul - Teus Olhos (Original Latin Session)
via FoxyTunes

вівторок, 27 листопада 2007 р.

JSR 225 XQuery API for Java

Этот JSR определяет АПИ для выполнения Xquery вызовов и для работы с результатами. XQJ представляет для Xquery тоже что и JDBC для SQL. АПИ XQJ имеет много общего с высокоуровневыми концепциями JDBC ( DataSource, Connection и др.) но также поддерживает специфические концепции Xquery — такие как статические и динамические фазы, XML-ориентированное получение данных и др.
Пример:
...
// establish a connection to the XQuery engine
XQConnection conn = xqds.getConnection();
// create an expression object that is later used
// to execute an XQuery expression
XQExpression expr = conn.createExpression();
// the XQuery expression to be executed
String es = "for $n in fn:doc('catalog.xml')//item " +
"return fn:data($n/name)";
// execute the XQuery expression
XQResultSequence result = expr.executeQuery(es);
// process the result (sequence) iteratively
while (result.next()) {
// retrieve the current item of the sequence as a String
String str = result.getAtomicValue();
System.out.println("Product name: " + str);
}
// free all resources allocated for the result
result.close();
// free all resources allocated for the expression
expr.close();
// free all resources allocated for the connection
conn.close();
...

субота, 24 листопада 2007 р.

JSR 166 Утилиты одновременного (конкурентного) доступа

Этот JSR первоначально был представлен для библиотек обеспечивающих конкурентный доступ в Джава 5 и также привел к изменениям в Джава 6. Для Джава 7, группа JSR 166 добавит новый вид BlockingQueue называемый TransferQueue и фреймворк для параллельных вычислений основанный на таких принципах: разделяй и властвуй(divide-and-conquer) и украдающий работу (work-stealing).
Work-stealing:
У каждого рабочего(Worker) есть свой стэк (очередь работающая по принципу LIFO) задачь. Как только он выполняет все свои задачи то он пытается «украсть» задачу из стэка другого рабочего рассматривая его очередь — т.е. получая его задачи по принципу FIFO.


Позволяет работу которая может быть выполнена параллельно выполнять на разных ядрах процессора.
Большие (32 и более) ядерные процессоры выйдут во время использования Java 7, существование этого фреймворка позволит людям выполнять приложения для получения относительного простого увеличения производительности для вычислительных задачь. Сейчас forkjoin лучше всего работает на машинах Sun Niagaras и Azuls. Вообще то, вы не получите значительного ускорения с менее чем 4 процессорами из-за — основным назначением является компьютеры с наличием от десяти до сотни процессоров
Пример вычисления чисел Фибоначчи:
Без усовершенствований — обычный код:
int seqFib(int n) {
if (n <= 1)
return n;
else
return seqFib(n-1) + seqFib(n-2);
}
Усовершенствованный код:
class Fib extends FJTask {
static final int sequentialThreshold = 13; // for tuning
volatile int number; // argument/result

Fib(int n) { number = n; }

int getAnswer() {
if (!isDone())
throw new IllegalStateException("Not yet computed");
return number;
}

public void run() {
int n = number;

if (n <= sequentialThreshold) // base case
number = seqFib(n);
else {
Fib f1 = new Fib(n - 1); // create subtasks
Fib f2 = new Fib(n - 2);

coInvoke(f1, f2); // fork then join both

number = f1.number + f2.number; // combine results
}
}

public static void main(String[ ] args) { // sample driver
try {
int groupSize = 2; // 2 worker threads
int num = 35; // compute fib(35)
FJTaskRunnerGroup group = new FJTaskRunnerGroup(groupSize);
Fib f = new Fib(num);
group.invoke(f);
int result = f.getAnswer();
System.out.println("Answer: " + result);
}
catch (InterruptedException ex) {} // die
}
}

JSR 107 JCache API

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

середа, 14 листопада 2007 р.

JSR 310 API Даты и времени

Основные недостатки текущего АПИ это несколько их реализаций (util & sql для Date), ограничение на даты которые можно задать.

Этот JSR предлагает новое и улучшенное апи для даты и времени в Джава. Основная цель это разработка с учетом полученных уроков от первых двух АПИ (Дата и Календарь) в Джава, пердставляя более развитой и всесторонней модели для манипуляций с датой и временем.

Новое АПИ будет направлено на все приложения которым необходима модель данных для времени и даты. Эта модель заменит Date и Calendar, для включения представления даты без времени, времени без даты, продолжительностей и интервалов. Это увеличит качество кода. Например, вместо использования int для хранения продолжительности, и javadoc описания этого числа как количество дней, модель даты и времени предложит класс определяющий его однозначно.

АПИ будет основано на Joda-Time но будет обновлено с учетом JDK 5 фич и пользовательских добавлений.