Я думаю, что лучше всегда использовать ApplicationContext, если вы не находитесь в мобильной среде, как кто-то еще сказал. ApplicationContext имеет больше функциональности, и вы определенно хотите использовать PostProcessors, такие как RequiredAnnotationBeanPostProcessor, AutowiredAnnotationBeanPostProcessor и CommonAnnotationBeanPostProcessor, которые помогут вам упростить ваши файлы конфигурации Spring, и вы можете использовать аннотации, такие как @Required, @PostConstruct, @Resource и т. Д. В ваших компонентах .
Даже если вы не используете все, что предлагает ApplicationContext, лучше использовать его в любом случае, а затем, если вы решите использовать некоторые ресурсы, такие как сообщения или пост-процессоры, или другую схему для добавления транзакционных советов и т. д. у вас уже будет ApplicationContext, и вам не нужно будет изменять какой-либо код.
Если вы пишете автономное приложение, загрузите ApplicationContext в свой основной метод, используя ClassPathXmlApplicationContext , и получите главный компонент и вызовите его run () (или любой другой метод), чтобы запустить приложение. Если вы пишете веб-приложение, используйте ContextLoaderListener в web.xml, чтобы он создавал ApplicationContext, и позже вы можете получить его из ServletContext, независимо от того, используете ли вы JSP, JSF, JSTL, struts, Tapestry и т. Д. .
Кроме того, помните, что вы можете использовать несколько конфигурационных файлов Spring, и вы можете либо создать ApplicationContext, указав все файлы в конструкторе (или указав их в контексте-param для ContextLoaderListener), либо вы можете просто загрузите основной файл конфигурации с инструкциями импорта. Вы можете импортировать файл конфигурации Spring в другой файл конфигурации Spring, используя & lt; import resource = "otherfile.xml" / & gt; что очень полезно при программном создании ApplicationContext в основном методе и загрузке только одного конфигурационного файла Spring.
sub bin2dec {
return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}
Как обычно, здесь также есть отличный модуль CPAN: Bit :: Vector .
Преобразование будет выглядеть примерно так:
use Bit::Vector;
my $v = Bit::Vector->new_Bin( 32, '0001001100101' );
print "hex: ", $v->to_Hex(), "\n";
print "dec: ", $v->to_Dec(), "\n";
Бинарные строки могут быть практически любой длины, и вы можете делать другие полезные вещи, такие как сдвиг битов и т. Д.
Мой предпочтительный способ:
$x_num = oct("0b" . $x_bin);
Цитата из man perlfunc
:
oct EXPR oct Interprets EXPR as an octal string and returns the corresponding value. (If EXPR happens to start off with "0x", interprets it as a hex string. If EXPR starts off with "0b", it is interpreted as a binary string. Leading whitespace is ignored in all three cases.)
На самом деле вы можете просто вставить '0b' на передней панели, и это будет рассматриваться как двоичное число.
perl -le 'print 0b101'
5
Но это работает только для голого слова.
Вы можете использовать метод eval()
, чтобы обойти ограничение голого слова:
eval "\$num=0b$str;";