Java Books
Java Библиотека По всем вопросам- @notxxx1 @ai_machinelearning_big_data - machine learning @pythonl - Python @itchannels_telegram - 🔥 best it channels @ArtificialIntelligencedl - AI @pythonlbooks-📚 @programming_books_it -it 📚 № 5032728887
Ko'proq ko'rsatish📈 Telegram kanali Java Books analitikasi
Java Books (@java_library) kanali faol ishtirokchi. Hozirda hamjamiyat 14 215 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 8 752-o'rinni va Rossiya mintaqasida 45 718-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 14 215 obunachiga ega bo‘ldi.
26 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -61 ga, so‘nggi 24 soatda esa -6 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 9.15% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 3.73% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 300 marta ko‘riladi; birinchi sutkada odatda 530 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent docker, собеседование, sql, boot, string kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Java Библиотека
По всем вопросам- @notxxx1
@ai_machinelearning_big_data - machine learning
@pythonl - Python
@itchannels_telegram - 🔥 best it channels
@ArtificialIntelligencedl - AI
@pythonlbooks-📚
@programming_books_it -it 📚
№ 503272888...”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 27 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
Проблема поиска кратчайшего пути от одной вершины до всех остальных (SSSP) — одна из фундаментальных в теории графов, и её история тянется с 50-х годов прошлого века. Классический алгоритм Дейкстры, в связке с продвинутыми структурами данных, решает эту задачу за время, которое примерно пропорционально сумме числа рёбер и произведения числа вершин на логарифм от их же числа. Именно этот множитель - число вершин, умноженное на логарифм, долгое время считался теоретическим минимумом, так как в своей основе алгоритм Дейкстры побочно сортирует вершины по расстоянию от источника. Этот предел известен как «барьер сортировки» и казался непреодолимым.🟡Основная идея работы - гибрид из алгоритма Дейкстры и алгоритма Беллмана-Форда. Алгоритм Дейкстры на каждом шаге выбирает из "границы" - множества еще не обработанных вершин ту, что находится ближе всего к источнику. Это и создает узкое место, так как размер границы может достигать величины, сопоставимой с общим числом вершин в графе, и на каждом шаге требуется находить минимум. Алгоритм Беллмана-Форда, в свою очередь, не требует сортировки, но его сложность пропорциональна числу ребер, умноженному на количество шагов, что слишком долго. 🟡Новый подход использует рекурсию. Вместо того чтобы поддерживать полную отсортированную границу, алгоритм фокусируется на ее сокращении. А если граница слишком велика, то запускается несколько шагов алгоритма Беллмана-Форда из ее вершин. Это позволяет найти точное расстояние до некоторой части вершин, чьи кратчайшие пути коротки. Длинные же пути должны проходить через одну из "опорных" вершин, которых оказывается значительно меньше, чем вершин в исходной границе. Таким образом, сложная работа концентрируется только на этом небольшом наборе опорных точек. 🟡Принцип "разделяй и властвуй". Он рекурсивно разбивает задачу на несколько уровней. На каждом уровне применяется вышеописанная техника сокращения границы, что позволяет значительно уменьшить объем работы на каждую вершину, поскольку логарифмический множитель эффективно делится на другой, более медленно растущий логарифмический член. В итоге, путем подбора внутренних параметров алгоритма, которые являются специфическими функциями от логарифма числа вершин, и достигается итоговая временная сложность, пропорциональная числу ребер, умноженному на этот новый, более медленно растущий логарифмический множитель. ✔️ Зачем это нужно — Быстрее решаются задачи в навигации, графах дорог, сетях и планировании. — Доказано, что Дейкстра — не предел, и можно ещё ускорять поиск кратчайших путей. 🟡Arxiv @ai_machinelearning_big_data #AI #ML #Sorting #Graphs #Algorithm
Enumeration и Iterator. Оба позволяют пройтись по элементам, но у них разный синтаксис, возможности и история.
📌 1. Enumeration (старый интерфейс, до Java 2)
Используется в таких классах, как Vector и Hashtable.
🧪 Пример:
Vector<String> vector = new Vector<>();
vector.add("A");
vector.add("B");
Enumeration<String> e = vector.elements();
while (e.hasMoreElements()) {
System.out.println(e.nextElement());
}
✅ Преимущества:
– Прост
– Меньше накладных расходов
❌ Недостатки:
– Только чтение: нельзя удалить элемент
– Устарел: используется в legacy-коде
– Не поддерживает коллекции из java.util (List, Set и т.п.)
📌 2. Iterator (введён в Java 2, заменил Enumeration)
Работает с большинством коллекций: ArrayList, HashSet, HashMap, и т.д.
🧪 Пример:
ArrayList<String> list = new ArrayList<>();
list.add("X");
list.add("Y");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
✅ Преимущества:
– Совместим с современными коллекциями
– Поддерживает удаление элементов во время итерации (it.remove())
– Поддерживает обобщения (generics)
❌ Недостатки:
– Немного более "шумный" синтаксис
– Не поддерживает безопасную модификацию (если изменить коллекцию вне итератора — будет ConcurrentModificationException)
🧠 Вывод:
Используй Iterator в 99% случаев. Enumeration пригодится только при работе со старыми структурами (Vector, Hashtable), либо в очень специфичных случаях.
// Лучше:
for (Iterator<String> it = list.iterator(); it.hasNext();) {
String val = it.next();
if (val.equals("X")) it.remove();
}
Если нужен ещё более современный подход — смотри в сторону for-each, Stream API, и spliterator.
for (String item : list) {
System.out.println(item);
}
list.stream().forEach(System.out::println);
💡 Java развивается — пиши на ней современно.
@java_librarydocker run -d — запуск контейнера в фоне
✅ docker logs — просмотр логов
✅ docker attach — повторное подключение к контейнеру
Ничего не нужно устанавливать — всё прямо в браузере!
Попробовать можно здесь:
Если хочешь прокачать Docker на практике — начинай отсюда.
👉 https://labs.iximiuz.com/challenges/docker-101-container-run-in-background?x=2vector bucket. Внутри него вы создаете векторные индексы, указывая размерность векторов и метрику расстояния (косинусную или евклидову).
🟡Дальше все работает как магия
Вы просто загружаете в индекс свои эмбеддинги вместе с метаданными для фильтрации, а S3 берет на себя всю грязную работу по хранению, автоматической оптимизации и обеспечению субсекундного ответа на запросы. Никакого управления инфраструктурой.
Один бакет может содержать до 10 тысяч индексов, а каждый индекс, в свою очередь, десятки миллионов векторов.
🟡Главная сила этого решения - в экосистеме.
S3 Vectors бесшовно интегрируется с Bedrock Knowledge Bases. Теперь при создании базы знаний для RAG-приложения можно просто указать S3-бакет в качестве векторного хранилища.
Процесс создания RAG-пайплайна для тех, кто уже живет в облаке AWS, упрощается до нескольких кликов. То же самое касается и SageMaker Unified Studio, где эта интеграция тоже доступна из коробки.
🟡"One more thing" анонса - умная интеграция с сервисом OpenSearch.
AWS предлагает гибкую, многоуровневую стратегию. Нечасто используемые или «холодные» векторы можно экономично хранить в S3 Vectors. А когда для части данных потребуется максимальная производительность и низкая задержка в реальном времени, например, для системы рекомендаций, их можно быстро экспортировать в OpenSearch.
Это очень прагматичный инженерный подход, позволяющий балансировать между стоимостью и производительностью.
Пока сервис находится в статусе превью и доступен в регионах US East (N. Virginia), US East (Ohio), US West (Oregon), Europe (Frankfurt), and Asia Pacific (Sydney) Regions.
Попробовать S3 Vectors можно в Amazon S3 console.
🟡Статья
🖥Github
@ai_machinelearning_big_data
#AI #ML #RAG #AmazonDispatcherServlet в Spring — два способа
DispatcherServlet — это сердце Spring MVC. Он принимает все HTTP-запросы и перенаправляет их нужному контроллеру. Вот как его можно настроить:
🔹 Через `web.xml` — классический способ
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
🔹 Программно (без XML) — через WebApplicationInitializer
public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext sc) throws ServletException {
XmlWebApplicationContext ctx = new XmlWebApplicationContext();
ctx.setConfigLocation("classpath:app-config.xml");
ServletRegistration.Dynamic servlet = sc.addServlet("dispatcher",
new DispatcherServlet(ctx));
servlet.setLoadOnStartup(1);
servlet.addMapping("/");
}
}
📌 Оба способа подойдут, но:
web.xml — для классических Java EE приложений
Java-код — для современного подхода и Spring Boot-проектов
Полное объяснение и примеры — в оригинальной статье:
https://www.blackslate.io/articles/how-to-configure-dispatcher-servlet-in-spring-framework
@Test
void shouldFulfillConstraints() {
Taikai.builder()
.namespace("com.enofex.taikai") // выбранный пакет
.java(java -> java // правила для Java-кода
.noUsageOfDeprecatedAPIs() // запрет устаревших API
.methodsShouldNotDeclareGenericExceptions()// никаких throws Exception
.utilityClassesShouldBeFinalAndHavePrivateConstructors())
.logging(logging -> logging // единый стиль логгеров
.loggersShouldFollowConventions(
Logger.class, "logger",
EnumSet.of(PRIVATE, FINAL)))
.spring(spring -> spring // правила для Spring-слоя
.controllers(c -> c
.shouldBeAnnotatedWithRestController() // все контроллеры = REST
.shouldNotDependOnOtherControllers()))
.build()
.check(); // тест упадёт, если есть ошибка
}
Плюсы подхода:
Быстрая обратная связь — CI сразу показывает, где правила нарушены.
Чёткая документация — правила читаемы прямо в коде, без вики-страниц.
Меньше рутины на ревью — обсуждаем дизайн, а не «почему здесь throws Exception».
Добавь такой тест-набор в проект и поддерживай кодовую базу в здоровом состоянии автоматически.
#Java #CodeQuality #ArchUnit #SpringBoot
@java_library