Top.Mail.Ru
? ?

Entries by tag: java

fuck up

от така конструкцiя регулярно повторуються в сорцах Hadoop

    if (LOG.isDebugEnabled()) {
        LOG.debug(StringUtils.stringifyException(new IOException("config()")));
    }

Tags:

Singleton in Java

Так, чисто щоб самому не забути, і було де подивитися, раптом оригінал закосячить

Отже, мало хто зна (хоч напевно багато хто підозрює), що те що ми зазвичай пишемо і називаємо сінглетоном насправді ніякий не одинак і маю купу чудових сюрпрайзів на випадок ситуації з кількома класлоадерами. Отже, правильний сінглетон (для сановскої ЖВМ) виглядає ось так:

Original ©

import java.lang.reflect.*;


/**
 * There can be only one - ie. even if the class is loaded in several different classloaders,
 * there will be only one instance of the object.
 */
public class AbsoluteSingleton implements SingletonInterface {

    /**
     *  This is effectively an instance of this class (although actually it may be instead a
     *  java.lang.reflect.Proxy wrapping an instance from the original classloader).
     */
    public static SingletonInterface instance = null;
    /**
     * Retrieve an instance of AbsoluteSingleton from the original classloader. This is a true
     * Singleton, in that there will only be one instance of this object in the virtual machine,
     * even though there may be several copies of its class file loaded in different classloaders.
     */
    public synchronized static SingletonInterface getInstance() {
        ClassLoader myClassLoader = AbsoluteSingleton.class.getClassLoader();
        if (instance==null) {
            // The root classloader is sun.misc.Launcher package. If we are not in a sun package,
			// we need to get hold of the instance of ourself from the class in the root classloader.
            if (! myClassLoader.toString().startsWith("sun.")) {
                try {
                    // So we find our parent classloader
                    ClassLoader parentClassLoader = AbsoluteSingleton.class.getClassLoader().getParent();
                    // And get the other version of our current class
                    Class otherClassInstance = parentClassLoader.loadClass(AbsoluteSingleton.class.getName());
                    // And call its getInstance method - this gives the correct instance of ourself
                    Method getInstanceMethod = otherClassInstance.getDeclaredMethod("getInstance", new Class[] { });
                    Object otherAbsoluteSingleton = getInstanceMethod.invoke(null, new Object[] { } );
                    // But, we can't cast it to our own interface directly because classes loaded from
			// different classloaders implement different versions of an interface.
			// So instead, we use java.lang.reflect.Proxy to wrap it in an object that *does*
			// support our interface, and the proxy will use reflection to pass through all calls
			// to the object.
                    instance = (SingletonInterface) Proxy.newProxyInstance(myClassLoader,
                                                         new Class[] { SingletonInterface.class },
                                                         new PassThroughProxyHandler(otherAbsoluteSingleton));
		// And catch the usual tedious set of reflection exceptions
			// We're cheating here and just catching everything - don't do this in real code
                } catch (Exception e) {
                    e.printStackTrace();
                }
            // We're in the root classloader, so the instance we have here is the correct one
            } else {
                instance = new AbsoluteSingleton();
            }
        }

        return instance;
    }

    private AbsoluteSingleton() {
    }

    private String value = "";
    public String getValue() { return value; }
    public void setValue(String value) {
        this.value = value;
    }

}


Доречі, думається мені, що ситуацію з синхронізацією можна покращити (!) якщо заюзати AtomicReference

Groovy WTF

комради у ВТФ спільноті віджигають

http://code-wtf.livejournal.com/202731.html

мда, внутріності груві чи то жахдиві, чи то прекрасні
ЗІ. Ну чого на 249 таки зупинилися???

The Common Java Cookbook

Image

Дуже корисна книга, присвячена Apache Commons і ще цілому ряду популярних бібліотек/фреймворків. Хоч у моїй практиці ця бібліотека і мала місце, але, як я зараз бачу, у далеко недостатньому обсязі. Читати потрібно обов"язково. щоб уникнути сотень велосипедів і дізнатися про нові рішення й шляхи їх пошуку. Інформація подається дуже чітко та якісно. Ставить проблема ("велосипед") і зазвичай на цій же сторінці дається її елегантне рішення. Більш того, в окремій главі описується Google Buffer Protocol - доволі маловідома, але дуже корисна штука, про яку розповідали на одній з перших зустрічей Lviv Java User Group
І головне, книга ще не дописана, форматування кривеньке, але головне - її можна офіційно бузкоштовно скачати тут Viva communism!:))

Tags:

java 4ever

Це геніально!


аплодую стоячи
феноменальний ролік
передивився кілька разів - геніально)

One of the most compelling dramas of our time...



яка проробка деталей, ну це просто супер, тішуся!
ps не ради флейму, зроблено ж супер
pps зверніть увагу, "красную кашпочку" завти Scala. скала прикольно, бу вичти і юзати скалу))

Tags:

приходжу я додому, а тут такий файний сюрпрайз в інеті: вийша Google Collections Library 1.0
здається, тепер в складі Gogle Guava Beautiful code with Google Collections & Guava
уря, мені так не вистачало Multimap
guidelines на хабрі

німецька смалить

дійшов висновку, що англійська таки не найжахливіша з цивілізованих європейських мов. Адже є німецька!
у них є чудова літера ß, яка у верхньому реєстрі виглядає як SS !!!
ну і на фінал:
char c = 0x00DF;
String s = String.valueOf(c);
PrintStream out = System.out; 
out.println("s = " + s);
out.println("upper = " + s.toUpperCase());
// УВАГА!!! 
out.println("lower(upper) = " + s.toUpperCase().toLowerCase());
out.println("upper char = " + Character.toUpperCase(c));

ну і вивід цієї краси

s = ß
upper = SS
lower(upper) = ss
upper char = ß

Тобто, як я розумію - боротися з цим неможливо, і якщо погоняти рядок між реєстрами то його першозданий сенс буде втрачено назавжди:(((

знайшов в ru_java топік з цим приколом

Noop... what is it?

Последнии дни в rss неоднократно мелкал заголовок "Noop - новый язык программирования от Google". Мимо я проти ну никак немог:) А действительность оказалась жесткой:( Во-первых, гугл покуда отношения к нему не имеет, разве что несколько сотрудников работают в гугле. Во-вторых, сказать что язык сырой - это еще мягко. Еще не все фичи утверждены. Положительный строны, имхо, являются следующие:
1) предназначен для JVM
2) имеет поддержку на уровне языка DI (IoC)
3) имеет поддержку модульного тестирования на уровне языка
Из минусов (перечеркивающий все плюсы):
!) отстствие наследования (как я понял)
На текущий момент язык крайне сырой, если я захочу его поробывать то мне нужно скачать до 4ех прог и искодники, собрать среду и только тогда запускать. а примеры крайне беды, из них ничего сказать нельзя:( Да о чем мы говорим:) они даже за название спорятся: есть варианты Noop, Nøøp, NooP. Идея с DI and in-built modul tests мне нравится, хотя нада глянуть не спаскудят ли они ее. как-то так, через год посмотрим

solve: 5+5+5+5=555

посвящается вопросу о "5+5+5+5=555"
Самое читерское решение под катомCollapse )

Tags:

Билл Джой (William Nelson Joy)

практически биография тут . Кстати, один из основателей САН = Энди Бехтольшейм (Andy Bechtolsheim), очень примечательная личность:) Потому что благодаря ему Google называется именно так! Это он стал первым инвестором гугла, подарив (!) молодой компании 100 тыс "убитых енотов", но... сделав описку в чеке: написал название компании Google. Поэтому, что бы получить деньги в банке, Брину и Пейджу пришлось переименовывать свое детище в Google.
Так что Sun мы обязаны не только за Java но и за Google:)

Latest Month

July 2014
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Comments

  • kkud
    17 Sep 2012, 15:49
    америка погрузла в капіталізмі, який продукує консерванти
  • 17 Sep 2012, 04:24
  • kkud
    16 Sep 2012, 12:52
    ну наче не все так погано

    але для американця, який має 20ть кредитів важлива лише абсолютна сума заробітку - а в ІТ вона далеко не найвища
  • kkud
    16 Sep 2012, 12:50
    у нас такі позиції займають китайці, місцеві янкі в фотошопі логотипчики малюють
  • kkud
    16 Sep 2012, 04:57
    то есть айти в штатах не одна из прибыльных профессий?
Powered by LiveJournal.com
Designed by Akiko Kurono
Image