Как стать автором
Обновить
5
0
Levon Minasian @code_batya

Developer

Товарищ! Зачем так грубо?

Автор рассказывает, что наши ублюдки хакеры:

использовали уязвимости Microsoft Exchange ProxyShell и ProxyLogon для скачивания файла

а не

получили удаленный доступ и "I-own-the-server-motherfucker!"

Задача 6(пункт 2):
Почему бы нам не рассмотреть нулевой оператор? Тогда сразу A^T=0, а p(A)=k_0*E(все остальное занулится). Видно, что p(A)!=0, т. к. k_0!=0 по условию ==> исходное утверждение неверно.
Автору спасибо за статью, помогли разобраться:)

P.S. В методе characters() я бы использовал reflection:
public class SAXHandler extends DefaultHandler {
    private static final String CLASSNAME = "class";
    private Object object;
    private String element;
    private Logger logger;

    public SAXHandler() {
        logger = LogManager.getLogger(this.getClass().getName());
    }
    //...
    @Override
    public void characters(char[] chars, int start, int length) {
        if (element != null) {
            String s = new String(chars, start, length);
            try {
                ReflectionHelper.setFieldValue(object, element, s);
            } catch (...) {
                //...
            }
        }

    }
    //...
}



public class ReflectionHelper {
    private static ReflectionHelper helper;

    public static ReflectionHelper instance() {
        if (helper == null)
            helper = new ReflectionHelper();
        return helper;
    }

    public static Object createInstance(String className) throws
            ClassNotFoundException,
            IllegalAccessException,
            InstantiationException {
        return Class.forName(className).newInstance();
    }

    public static <T> void setFieldValue(Object object, String fieldName, T value)
            throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException {

        Field field = object.getClass().getDeclaredField(fieldName);
        field.setAccessible(true);
        if (field.getType().equals(value.getClass())) {
            field.set(object, value);
        } else {
            throw new IllegalArgumentException();
        }
        field.setAccessible(false);

    }
}

И никаких громоздких if'ов или switch-case'ов не требуется. Хотя, у reflection'a тоже есть минусы: само по себе использование reflection очень ресурсозатратное хобби, а вдобавок приходится и рушить концепции ООП: ReflectionHelper.setFieldValue() измененяет значения private полей. Но это уже кому как больше нравится.
Мой юный друг! Я уже не однократно говорил, что показываю наиболее простой(по моему мнению) метод. Вы имеете в виду класть объект дерева в файл? В следующей статье буду портировать нашего Хаффмана на андроид и обязательно расскажу про этот(и не только) метод оптимизации. Спасибо за замечание!
Понял, что вы имели в виду. Исправил статью
1)Да, про 27 минут я серьезно)).
2)В каком смысле несжатое дерево? Вы имеете ввиду несжатую кодовую таблицу, полученную с помощью дерева?
Т.е. не совпадает? Опишите подробнее.
Вот так бы сразу! Действительно, читать входной файл по строкам, мягко говоря, нерационально. Спасибо большое, учту. Я новичок в этих кодерских делах, поэтому был рад услышать корректирующие советы, которые последовали в Вашем живописном комментарии.
Вот так бы сразу! Действительно, читать входной файл по строкам, мягко говоря, нерационально. Спасибо большое, учту. Я новичок в этих кодерских делах, поэтому был рад услышать корректирующие советы, которые последовали в Вашем живописном комментарии.
Я не понимаю, что вам могло не понравиться в реализации(поясните). Насчет хранения таблицы — да, окей, согласен. Но опять же, я показывал наиболее простой для понимания(по моему мнению) способ.
«sp» (space) — это пробел

Буду признателен

Хм, у вас есть решение? Я вообще сомневаюсь, что дерево может быть построено за O(1). Насчет try catch согласен, но я проверял, исключения кроме NullPointerException возникнуть не могут. Но все же, предложите более безопасную реализацию (я начинающий Java кодер, совмещаю Шилдта и практику).
Файл объемом 631 кБит сжимался 27 минут. Как видите, этот результат оставляет желать лучшего на луну быстрее долететь можно. Коэффициент при этом не компенсирует время — 1.79. Статическую реализацию делать не пробовал.
Да, это скорее просто мануал по Хаффману. Но вернемся к вашему предложению. Допустим, мы сжали кодировочный файл(таблицу), ок. Как будем читать оттуда данные?
Допускаю, в ваших словах что-то есть. Даже не задумывался об этом способе. Я показал лишь наиболее понятный и простой (по моему мнению) метод. Согласен, ваш способ более рациональный.

Информация

В рейтинге
Не участвует
Откуда
Елец, Липецкая обл., Россия
Дата рождения
Зарегистрирован
Активность