Java навыки программирования EE

Это происходит потому, что в вашем рабочем процессе нет ничего асинхронного, когда закомментировано Sleep.

Все полностью синхронно, но поскольку оно закодировано в вычислительном выражении async, оно становится странным образом вложенным. Видите, каждая строка let! фактически вызывает все, что находится справа (в вашем примере - workAsync), и передает ей обратный вызов, который должен быть вызван после выполнения асинхронной части. Обратный вызов содержит остальную часть кода - продолжение, начинающееся сразу после строки let!. Компилятор выполняет умные преобразования в коде, чтобы он выглядел все красиво и линейно, тогда как на самом деле это серия обратных вызовов.

Однако, поскольку workAsync на самом деле не асинхронный, он просто сразу вызывает обратный вызов, и обратный вызов поворачивается и вызывает следующую итерацию workAsync, и так далее. И поэтому ваш стек растет.

1114 Но подожди! Это на самом деле не должно расти в конце концов. Вызов обратного вызова является последним вызовом в workAsync, также называемом «хвостовым вызовом», и и .NETCore, и .NET Framework их устраняют (и действительно: на моей машине я не могу воспроизвести ваш результат). Единственное предположение, которое я могу предложить, это то, что вы должны запустить это на Mono, что не всегда устраняет хвостовые вызовы.

Однако, если вы раскомментируете Sleep, это становится переломным моментом. Sleep является на самом деле асинхронным, что означает, что он планирует выполнение обратного вызова в новом потоке после истечения времени ожидания. Это выполнение начинается с нуля, со свежим стеком, и поэтому стек не растет, даже если хвостовые вызовы не исключены.

Итак, чтобы ответить на ваш первоначальный вопрос: нет, бесконечное асинхронное вычисление не может переполнить стек, кроме случаев, когда оно фактически не асинхронно и выполняется в Mono.

12
задан Arjan Tijms 5 September 2012 в 21:11
поделиться

6 ответов

Загрузите JBoss и возьмитесь за работу над примерами приложения в документации. При выполнении Java Вы - 95% там. Java EE добавляет контейнер и аспект именования к Java Вы уже, знает и любит. С появлением EJB3 бобы стали намного более простыми, поскольку Вам только нужны несколько аннотаций для получения прокрутки с EJB. Java EE может быть немного пугающим с супом акронима доступных технологий, но сконцентрироваться на основах: EJB3, JNDI, JMS, доступ к данным (как Hibernate/JDO), и контейнерные основы.

11
ответ дан 2 December 2019 в 05:28
поделиться

"Есть ли определенные навыки или среды разработки, что я должен учиться иметь право на эти виды заданий?"

Если бы я должен был взять интервью у кого-то для типичного Java магазин EE, то я хотел бы знать, как хорошо Вы знаете следующее
1) сервлеты
2) EJB (возможно),
3) JSP
4) муравей
5) junit
6) подверсия или другой VCS
7) http и HTML
8) JavaScript
9) распорки
10) быть в спящем режиме
11) пружина (возможно),

Я не пытаюсь испугать Вас, НО 1/2 того, что необходимо знать, что можно добраться "ПРОФЕССИОНАЛЬНЫМ J2EE" из нажатия WROX. Отдых навыка, необходимо смочь обойтись пружинной книгой (большинство пружинных книг также рассказывает о спорах и в спящем режиме) - например, "Краткая информация Spring" - http://www.sourcebeat.com/books/springlive.html.

Удачи

9
ответ дан 2 December 2019 в 05:28
поделиться

Те задания, скорее всего, просят, чтобы у Вас были опыт с одним или несколькими поставщиков сервера основного приложения, т.е. WebLogic, WebSphere или JBoss. Это несколько отличается от того, к чему Вы привыкли с сервлетами и JDBC, но это - все еще просто Java. Обычно необходимо иметь дело с вещами как поиски JNDI, внедрение зависимости, передавая очереди, поддерживая состояние приложения между транзакциями, объектным/реляционным отображением, и т.д.

Я нашел, что для большей части Java проекты EE, это больше о знании, как настроены компоненты и системы и как они сотрудничают, чем это о каком-либо определенном навыке программирования. И Вы также проводите намного больше времени, ожидая сервера для запуска ;);

5
ответ дан 2 December 2019 в 05:28
поделиться

Каждый раз, когда Вы действительно начинаете брать интервью, Ken, знать, что сумасшедшая маркетинговая машина Java, кажется, переименовывает J2EE к Java EE. Вы могли очевидно натыкаться на отдел кадров в ближайшем будущем, которое никогда не слышало о J2EE, но отчаянно нуждается в Java опыт EE.

1
ответ дан 2 December 2019 в 05:28
поделиться

получите книгу "Профессиональный J2EE" от нажатия WROX - этому 6-7 лет, НО содержание довольно хорошо. Необходимо смочь обойтись очень хорошо той книгой и 3.x версия JBoss или 4.x версия JBoss и затмения.

1
ответ дан 2 December 2019 в 05:28
поделиться

Я думаю, что Вы в хорошем состоянии. Сервлеты являются частью Java EE, таким образом, у Вас уже есть один навык. JDBC используются также в значительной степени то же, но большую часть времени под некоторыми другими платформами.

Таким образом, я сказал бы, что у Вас уже есть (немного) Java опыт EE. Читайте о EJBs, Транзакциях, и я думаю, что Вы готовы к интервью.

Много времен единственный способ получить тот опыт достает. Если Вы убедите своего интервьюера, что навык, который Вы имеете уже, достаточно для получения положения, то Вы получите остальных по опыту.

Продолжите! Вы готовы. (если не, по крайней мере, Вы извлечете уроки из интервью :P)

1
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: