Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленький тест, :) 
:(
    Опции темы
AntonSaburov
Дата 17.6.2005, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Пора "Маленький тест" вводить в раздел по .NET - идея красивая.
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 17.6.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(DarkDS @ 17.6.2005, 07:53)
Error:
Hexadezimal.java:1: 'class' or 'interface' expected
using System;
^

Какую идею я упустил smile


--------------------

PM   Вверх
LSD
Дата 20.6.2005, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(AntonSaburov @ 17.6.2005, 12:33)
Но по-моему эту проблему убрали в 1.5.

Убрали, я как раз на нем и тестировал.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 9.7.2005, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Чем плох этот кот?
Код

import java.io.*;

class Worker 
{
    protected void finalize() throws Throwable
    {
        File file = new File("log.txt");
        if (file.exists()) file.delete();
        String s = new String();
        for (int i = 0; i < 1000; i++)
            s += i;
        BufferedWriter bw = null;
        try
        {
            bw = new BufferedWriter(new FileWriter(file));
            bw.write(s);
        }
        catch(Throwable t) {}
        finally
        {
            try
            {
                bw.close();
            }
            catch(Throwable tt) {}
        }
    }
}

public class Test
{
    public static void main(String[] arg) throws Exception
    {
        doSomething();
    }
    
    static void doSomething()
    {
        Worker w = new Worker();
    }
}



--------------------

PM   Вверх
simanyay
Дата 9.7.2005, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: 3
Всего: 36



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


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
Domestic Cat
Дата 9.7.2005, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Это то понятно, но вообще говоря по спецификации метод должен быть вызван, так ведь?


--------------------

PM   Вверх
NotGonnaGetUs
Дата 9.7.2005, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Фаналайз испольняется перед освобождением памяти занимаемой объектом.
Выход из программы обрывает любые активити jvm.
Выход из программы происходит если нет живых не deamon тредов (или вызван exit()), поэтому фанайлайз в данном коде не будет вызван.

подходит? smile
PM MAIL   Вверх
Domestic Cat
Дата 9.7.2005, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Подходит smile Сборщик мусора - это daemon smile


Добавлено @ 19:21
Кот:
Код


import java.util.*;

public class Test1
{
    public static void main(String[] arg) throws Exception
    {
        BV v = new BV(500);
        Bs ems = new Bs();
        ems.ppp(v);
        v.pT();
    }
}

class Bs
{
    ArrayList<B> al = new ArrayList<B>(); 
    Bs()
    {
        al.add(new A(10000));
        al.add(new C(5000));
        al.add(new C(5000));
        al.add(new C(5000));
        al.add(new C(5000));
    }
    
    public void ppp(V v)
    {
        for(B e : al)
            e.at(v);
    }
}

class BV implements V
{
    private double to;
    private double bo;
    
    BV(double b)
    {
        bo = b;
    }
    public void pT()
    {
        System.out.println(to);
    }
    public void isi(C p)
    {
        to += p.getSa();
    }
    public void isi(A b)
    {
        to += b.getSa() + bo;
    }
}

interface V 
{
    void isi(A b);
    void isi(C p);
}

abstract class B 
{
    protected double sa;

    public double getSa()
    {
        return sa;
    }
    
    public abstract void at(V vv);
}
class C extends B
{
    C(double s)
    {
        sa = s;
    }
    
    public void at(V vv)
    {
        vv.isi(this);
    }
}
class A extends B
{
    A(double s)
    {
        sa = s;
    }
    
    public void at(V vv)
    {
        vv.isi(this);
    }
}


1. Какой паттерн тут использован.
2. Деобфусцировать код. smile


--------------------

PM   Вверх
Fantasist
Дата 10.7.2005, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 2
Всего: 41



Цитата(Domestic @ 9.7.2005, 16:12)
ArrayList<B> al = new ArrayList<B>();


Нефига себе, а когда это в Java паттерны (в смысле метапрограммирования, а не дизайн) появились?


Цитата(Domestic @ 9.7.2005, 16:12)
1. Какой паттерн тут использован.


Visitor. smile С такими-то подсказками.... smile
Добавлено @ 03:06
Цитата(Domestic @ 9.7.2005, 16:12)
Деобфусцировать


А шо этот термин означает?



--------------------
Волны гасят ветер...
PM MAIL   Вверх
batigoal
Дата 10.7.2005, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Поясните, плиз, ответ на предыдущий вопрос, я не понял. Почему finalize() не будет вызван? Потому что программа завершится раньше, чем он успеет вызваться?

Цитата(Fantasist @ 10.7.2005, 04:05)
Нефига себе, а когда это в Java паттерны (в смысле метапрограммирования, а не дизайн) появились?

В 5.0 smile

Цитата(Fantasist @ 10.7.2005, 04:05)
А шо этот термин означает?

Поставить нормальные имена переменных и методов вместо кракозяблов.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
NotGonnaGetUs
Дата 10.7.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Код

class Example {
    public static void main(String[] arg) throws Exception {
        TotalPriceCalculator totalPriceCalculator = new TotalPriceCalculator(500);
        ScrapHeap scrapHeap = new ScrapHeap();
        scrapHeap.lookOver(totalPriceCalculator);
        totalPriceCalculator.showResult();
    }
}

interface Visitor {
    void visit(RadioactiveWaste radioactiveWaste);
    void visit(DisposablePackage disposablePackage);
}

/**
 * Calculates total price of burial of waste.
 */
class TotalPriceCalculator implements Visitor { 
    private double totalPrice;
    private double greenPeaceTax;

    TotalPriceCalculator(double greenPeaceTax) {
        this.greenPeaceTax = greenPeaceTax;
    }

    public void showResult() {
        System.out.println(totalPrice);
    }

    public void visit(DisposablePackage disposablePackage) {
        totalPrice += disposablePackage.getBurialPrice();
    }

    public void visit(RadioactiveWaste radioactiveWaste) {
        totalPrice += radioactiveWaste.getBurialPrice() + greenPeaceTax;
    }
}

class ScrapHeap {
    ArrayList<Garbage> stuff = new ArrayList<Garbage>();

    ScrapHeap() {
        stuff.add(new RadioactiveWaste(10000));
        stuff.add(new DisposablePackage(5000));
        stuff.add(new DisposablePackage(5000));
        stuff.add(new DisposablePackage(5000));
        stuff.add(new DisposablePackage(5000));
    }

    public void lookOver(Visitor v) {
        for (Garbage garbage : stuff)
            garbage.visit(v);
    }
}

abstract class Garbage {
    protected double burialPrice;

    public double getBurialPrice() {
        return burialPrice;
    }

    public abstract void visit(Visitor visitor);
}

class DisposablePackage extends Garbage {
    DisposablePackage(double price) {
        this.burialPrice = price;
    }

    public void visit(Visitor visitor) {
        visitor.visit(this);
    }
}

class RadioactiveWaste extends Garbage {
    RadioactiveWaste(double price) {
        this.burialPrice = price;
    }

    public void visit(Visitor visitor) {
        visitor.visit(this);
    }
}


smile
PM MAIL   Вверх
Domestic Cat
Дата 11.7.2005, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(Fantasist @ 9.7.2005, 18:05)

Нефига себе, а когда это в Java паттерны (в смысле метапрограммирования, а не дизайн) появились?

Это ж шаблоны smile

Цитата(Lamer @ 10.7.2005, 00:52)
Поясните, плиз, ответ на предыдущий вопрос, я не понял. Почему finalize() не будет вызван? Потому что программа завершится раньше, чем он успеет вызваться?

Ну в методе то создается куча объектов, потом пишется в файл. Главный поток отработает намного быстрее, а поскольку сборщик мусора - демон, он будет остановлен, даже если он тут же начал убирать этот объект.

NotGonnaGetUs, приблизительно так и было, только про зарплату smile



--------------------

PM   Вверх
Domestic Cat
Дата 11.7.2005, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Вот то, что я "обфусцировал" вручную. Ясное дело это можно было только угадать smile
Код

import java.util.*;

public class Test
{
    public static void main(String[] arg) throws Exception
    {
        EmployeeVisitor v = new EmployeeVisitor(500);
        Employees ems = new Employees();
        ems.process(v);
        v.printTotal();
    }
}

class Employees
{
    ArrayList<Employee> al = new ArrayList<Employee>(); 
    Employees()
    {
        al.add(new Boss(10000));
        al.add(new Programmer(5000));
        al.add(new Programmer(5000));
        al.add(new Programmer(5000));
        al.add(new Programmer(5000));
    }
    
    public void process(Visitor v)
    {
        for(Employee e : al)
            e.accept(v);
    }
}

class EmployeeVisitor implements Visitor
{
    private double total;
    private double bonus;
    
    EmployeeVisitor(double b)
    {
        bonus = b;
    }
    public void printTotal()
    {
        System.out.println(total);
    }
    public void visit(Programmer p)
    {
        total += p.getSalary();
    }
    public void visit(Boss b)
    {
        total += b.getSalary() + bonus;
    }
}

interface Visitor 
{
    void visit(Boss b);
    void visit(Programmer p);
}

abstract class Employee 
{
    protected double salary;

    public double getSalary()
    {
        return salary;
    }
    
    public abstract void accept(Visitor visitor);
}
class Programmer extends Employee
{
    Programmer(double s)
    {
        salary = s;
    }
    
    public void accept(Visitor visitor)
    {
        visitor.visit(this);
    }
}
class Boss extends Employee
{
    Boss(double s)
    {
        salary = s;
    }
    
    public void accept(Visitor visitor)
    {
        visitor.visit(this);
    }
}



--------------------

PM   Вверх
Domestic Cat
Дата 11.7.2005, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Опять те же вопросы-
1. Какой паттерн
2. Написать исходный кот, подсказка оставлена Ж)
Код

public class Test2
{
    public static void main(String[] arg) throws Exception
    {
        A n1 = new S();
        A n2 = new C();
        T s1= new pT(n2);
        T s12= new aT(n1);
        s1.f();
        s12.f();
    }
}

interface A
{
    void ttt();
}
class S implements A
{
    public void ttt()
    {
        System.out.print("\u0046\u0069\u0072\u0069\u006E\u0067\u0020\u006F\u006E\u0065\
u0020\u0062\u0075\u006C\u006C\u0065\u0074");
    }
}
class C implements A
{
    public void ttt()
    {
        System.out.print("\u0046\u0069\u0072\u0069\u006E\u0067\u0020\u006C\u006F\u0074\
u0073\u0020\u006F\u0066\u0020\u0062\u0075\u006C\u006C\u0065\u0074\u0073");
    }
}

abstract class T
{
    protected A nnn;
    public T(A nnn)
    {
        this.nnn = nnn;
    }    
    public abstract void f();
}
class pT extends T
{
    pT(A nnn)
    {
        super(nnn);
    }
    public void f()
    {
        nnn.ttt();
        System.out.println("\u0020\u0077\u0069\u0074\u0068\u0020\u0075\u006E\u0073\u0074\u006F
\u0070\u0070\u0061\u0062\u006C\u0065\u0020\u0070\u006F\u0077\u0065\u0072");
    }
}
class aT extends T
{
    aT(A nnn)
    {
        super(nnn);
    }
    public void f()
    {
        nnn.ttt();
        System.out.println("\u0020\u0069\u006E\u0020\u0074\u0068\u0065\u0020\u0061\u0069\u0072");
    }
}



--------------------

PM   Вверх
NotGonnaGetUs
Дата 11.7.2005, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



1. стратегия.
2. стратегия ведения огня одиночный/автоматический + караульный/участник боевых действий smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0932 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.