powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / jdk17
25 сообщений из 240, страница 8 из 10
jdk17
    #40108207
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остался пустяк. Как всем впарить эту ссылку.
...
Рейтинг: 0 / 0
jdk17
    #40108230
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
а ядра видяшки
видяшка просто быстее, но если на js hf,jnftn - то почему на прце смарта не пробовать?
ферма из нескольких сотен самсунгов, или ксиоми
компактно.


Потому что люди попробовали и получилось грустно, в году эдак в 2010 еще можно было. но тогда не было arm72. Сейчас есть arm72 но уже нет 2010 года :)
По той же причине почему и ложкой огород копать не стоит, а лопатой есть суп. Вроде можно, но целесообразность вызывает сомнения.

Ферма из 300 сотен самсунгов ака samsum s20e например по 45тыр будет в 13_500_000
это гдето 65 видеокарт 3080 гдето по 200тыр

Можно например зайти в ДНС и спросить почему samsung s20e а наличии имеется а видеокарты rtx3080 все еще нет.
...
Рейтинг: 0 / 0
jdk17
    #40108237
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

это конечно верно. но потребление видях намного больше.
с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок?
...
Рейтинг: 0 / 0
jdk17
    #40108268
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
lleming,

это конечно верно. но потребление видях намного больше.
с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок?


По той же причине по которой суп не едят вилкой а огород не копают ложкой.
...
Рейтинг: 0 / 0
jdk17
    #40108271
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок?
Рендеринг 3D на уровне алгоритмов состоит почти исключительно из сложения и перемножения матриц чисел размером 4х4. Процессор в видяхе заточен на проведение только этих операций и выполняет их на порядки быстрее, чем процессор общего назначения. Но любые другие операции он выполняет намного хуже. Соответственно, на видеокарты переносят те алгоритмы, которые можно свести к перемножению матриц. Но далеко не все алгоритмы можно так преобразовать.
...
Рейтинг: 0 / 0
jdk17
    #40108272
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming
По той же причине по которой суп не едят вилкой а огород не копают ложкой.
вроде как и майниг на js, однако он существует.
то что счас это не делают - не значит, что не будут делать. время покажет.
...
Рейтинг: 0 / 0
jdk17
    #40108286
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич

Процессор в видяхе заточен на проведение только этих операций и выполняет их на порядки быстрее, чем процессор общего назначения. Но любые другие операции он выполняет намного хуже.

Нет. Он всё таки чуть более универсален.
...
Рейтинг: 0 / 0
jdk17
    #40108288
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя

это конечно верно. но потребление видях намного больше.
с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок?

Они не быстрые. Там просто на одном кристалле собрано много мелких АЛУ (thread)
которые делают простые операции. Они получают общее задание типа
рендеринг 1 кадра изображения и далее распараллеливают его на всех.
Кадр скорее всего бъётся на сегменты и каждый thread делает узкую
задачу. Например красит полосочку полигона алгоритмом Гуро.

Построить какую-либо универсальную архитектуру на таких мелких АЛУ
вряд-ли получится. Тут скорее всего самая главная проблема как всегда
лежит в нас. В разработчиках. Большинство алгоритмов для бизнеса
например нихрена не параллелятся так чтобы получить одно задание
и рендерить его со скоростью 120 fps. А рендеринг графики - это узкая
задача. Которая имеет мало I/O и мало внутренних блокировок и синхронизаций.

С генерацией подписей для битка - получилось удачно. А просто обобщённый
алгоритм вы нихрена ни перенесете на графические процессоры.
...
Рейтинг: 0 / 0
jdk17
    #40108289
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не в курсе на каких видяшках щас майнят. Но еще несколько лет назад
слышал что не на видяшках а на таких себе узких устройствах типа такого

https://www.ixbt.com/news/2021/04/25/asic-bitmain-antminer-e9-25-geforce-rtx-3090-115-cmp-30hx-240.html

Они вроде эффективнее и экономнее ферм из видяшек - но есть другой недостаток.
Обычно заточены на 1 алгоритм. И если биток провалится в какое-то дно-днищенское
то заменить его оперативно на новую валюту будет либо сложно либо невозможно.
...
Рейтинг: 0 / 0
jdk17
    #40108321
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мы попробовали на 17 залететь,сразу словили баг с десериализацей,понятно что виной всему jackson - но пока еще видимо рано - мало кто успел релизнутся на 17 версию

месяца 2-3 наверно еще нужно подождать,хотя это конечно печаль - у меня сейчас например глобальный рефакторинг - и вот свитч с патерн матчингом + запечатнные классы это вот то что мне просто необходимо + рекоды

делаю зачем то работу двойную ибо на 17 джаве все придется переписывать...
...
Рейтинг: 0 / 0
jdk17
    #40108372
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как-то нейтрально отношусь ко всем этим синтаксическим изыскам. На Java 1.8 вполне комфортно, Stream API или Time API были действительно существенным улучшением. Всё равно до C# ещё очень далеко в плане всей этой синтаксической жести. Когда писал на C# я конечно всем этим пользовался, но не могу сказать, что в Java очень скучаю по этому.

Мне вообще из языков больше всего нравится Lisp. Для Java и C# это недостижимый идеал. И, как это не удивительно, нравится JavaScript, потому что он духом напоминает Lisp. Какие-то извращенцы любители C#/Java/... придумали TypeScript, который нивелирует многие преимущества JavaScript. Ещё нравится Isabelle HOL, там фактически в каждой теории можно создавать свой язык со своим синтаксисом. А в Java/C#/... все эти синтаксические фишечки на мой взгляд особой погоды не делают.
...
Рейтинг: 0 / 0
jdk17
    #40108380
localhost8080
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ares_ekb
Я как-то нейтрально отношусь ко всем этим синтаксическим изыскам. все эти синтаксические фишечки на мой взгляд особой погоды не делают.

Еще как делают- патерн матчинг не только синтаксический изыск - это реализация патерна посетитель,который широко применятеся везде ,где есть развитые иерархии классов
...
Рейтинг: 0 / 0
jdk17
    #40108382
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb

Мне вообще из языков больше всего нравится Lisp. Для Java и C# это недостижимый идеал. И, как это не удивительно, нравится JavaScript, потому что он духом напоминает Lisp. Какие-то извращенцы любители C#/Java/... придумали TypeScript, который нивелирует многие преимущества JavaScript. Ещё нравится Isabelle HOL, там фактически в каждой теории можно создавать свой язык со своим синтаксисом. А в Java/C#/... все эти синтаксические фишечки на мой взгляд особой погоды не делают.

Common-Lisp, или какой-то коммерческий?
...
Рейтинг: 0 / 0
jdk17
    #40108389
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alegro, sbcl,
...
Рейтинг: 0 / 0
jdk17
    #40108392
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По хорошему завидую. Я единственное промышленное применение лиспу видел только в AutoCAD.
Да и то там был какой-то свой собственный ограниченный лисп для чертежей.
...
Рейтинг: 0 / 0
jdk17
    #40108412
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
lleming
По той же причине по которой суп не едят вилкой а огород не копают ложкой.
вроде как и майниг на js, однако он существует.
то что счас это не делают - не значит, что не будут делать. время покажет.


ну около тысячи лет прошло с момента появления вилки, а с момента появления ложки (ну или чтото ей подобное) наверное уже не одна тысяча лет.

Думаешь будущее уже рядом? Совсем недолго осталось как ложки перекочуют в сельское хозяйство и они окончательно исчезнут из столовых приборов ?

Не хочется тебя расстраивать и разрушать твой оптимизм
...
Рейтинг: 0 / 0
jdk17
    #40108421
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

к сожалению только Lisp как идея, потому что в коммерческой разработке я его никогда не использовал. Common Lisp слишком большой и там много странных вещей. Scheme нравится больше, он более компактный, но не нравятся гигиенические макросы (define-syntax и т.п.) или я их не понимаю, это кажется усложнением. Наверное больше всего нравится Arc, но он вообще нигде не используется. Clojure и Racket выглядят интересно, но их толком не смотрел. Конечно у меня есть и своя реализация Lisp :) По смыслу она похожа на Arc. В качестве среды разработки, файлового менеджера, NNTP-клиента, браузера и т.п. у меня был конечно Emacs, а в качестве оконного менеджера Sawfish.

Мне в лиспе нравится минимализм, что в него не пытаются запихать всё, что только возможно. Всякие синтаксические вещи, проверки типов и т.п. добавляются самими программистами. Не нужно бороться с синтаксисом языка, ждать 10 лет, когда в него подвезут какой-нибудь pattern-matching. Придумывать всякие костыли, чтобы на этапе компиляции обойти ограничения языка или наоборот добавить какую-то логику (как только люди не исхищряются с template в C++). Мне когда-то очень давно нравился C++, потом я прочитал книгу Александреску, его Loki мне казалась чем-то очень клевым. А потом я познакомился с другими языками и понял, что всё это просто борьба с ограничениями языка.

В итоге я пришёл к тому, что чем меньше всей этой фигни в языке (разные синтаксические конструкции, статическая типизация и т.п.), тем лучше. В JavaScript как-раз всего этого нет и код писать проще. Если где-то нужны проверки, то можно просто определить какую-нибудь функцию assert или несколько её вариантов для разных случаев и добавлять где требуется. Либо ошибки должны выявляться анализаторами кода. Хотя я не могу сказать, что и статическая типизация - абсолютное зло. Но просто если не получается сделать какую-нибудь специфическую иерархию классов с generic'ами и т.п., то и фиг с ней, можно и в рантайме проверять что требуется.

Ещё одна идея, которая мне нравится в лиспе - это отношение к написанию кода как к созданию своего DSL. Скажем, у меня приложение работает с моделями. Для лиспа естественно определить несколько примитивных методов для запросов к этим моделям, для изменения моделей. На основе простейших функций определить более сложные и т.д. В итоге получится внутренне API, минифреймвок для работы с моделями. И всё приложение состоит из таких микрофреймвоков. Это звучит вроде совершенно логично. Но, блин, большинство Java- и других разработчиков, с которыми я сталкиваюсь, пишут код совершенно иначе. Обычно это какой-нибудь класс с кучей полей. В одном методе устанавливаем одно поле, потом вызываем другой метод, в котором читаем это поле и устанавливаем ещё какие-то поля. Сами методы - это куча вложенных циклов, if-ов. Полная каша, в которой вообще ничего невозможно понять. Если капнуть, то оказывается, что эти поля вообще не нужны (потому что они используются просто для передачи данных между методами, а не для хранения долговременного состояния объекта), все эти безумные вложенные циклы можно разбить на несколько повторно используемых методов.

В общем что нравится:
1) Минимализм, пусть лучше в языке вообще ничего не будет, чем ждать какой-нибудь очередной синтаксический сахар годами. Например, в JavaScript нет ни Stream API, ни LINQ, но есть итераторы и этого достаточно, чтобы сделать своё Stream API. Или без классов вполне как-то обходились
2) Отношению к языку не как к данности, что если что-то нельзя написать, значит это что-то неправильное. Может просто язык стрёмный
3) Построение кода из небольших самостоятельных блоков (микро-DSL, микрофреймвоков, внутренних API). Люди, которые ни на чём кроме Java не писали, либо впадают в ступор, когда чего-то нет в стандартной библиотеке, либо пишут какой-то лапшакод
4) Конечно же уникальная штука - это макросы. В других языках это решается костылями в виде препроцессоров, шаблонов, рефлексии, аннотаций, кодогенерации, добавления синтаксического мусора, систем типов, а в лиспе всё это закрывается одной конструкцией
...
Рейтинг: 0 / 0
jdk17
    #40108446
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
localhost8080
патерн матчинг не только синтаксический изыск - это реализация патерна посетитель
Ну, без паттерн-матчинга раньше же как-то обходились. В EMF такой код вообще писать не нужно, там из модели генерится иерархия Java-классов, вспомогательные классы, в том числе Switch-класс.

Например вот:

1) Есть модель . В виде XML-файла она выглядит страшно, но по сути это просто диаграмма классов с наследованием, атрибутами, связями между классами.

2) Из этой модели они сгенерили тонны Java-классов и интерфейсов.

3) В том числе сгенерили и такой класс . Да, в нём куча switch/case и if, но какая разница, сопровождать его всё равно не нужно. Если изменится модель, то все эти классы они просто перегенерят. Причём сейчас этот класс можно сгенерить с паттерн-мэтчингом вместо if. Достаточно чуток изменить шаблон кода и нажать кнопку.

4) Затем мы просто наследуемся от этого сгенеренного класса и переопределяем нужные case-методы.


Если модель, для которой нужен visitor достаточно большая, то наверное, да, паттерн-матчинг позволит сделать visitor немного компактнее и надёжнее (мы на этапе компиляции будем знать, что не забыли в коде обойти какие-то классы). Но, на мой взгляд, visitor - это абсолютно типовой код, который нужно генерить и дописывать чего не хватает.

Хотя, блин, на самом деле здесь не совсем visitor, а просто switch. И благодаря паттерн-матчингу этот Switch-класс больше не нужен, сейчас действительно этот код можно писать проще, хотя благодаря кодогенерации люди и раньше не особо напрягались, но сейчас и кодогенерация не нужна. Но если нам нужен не просто switch, а более сложный visitor, который рекурсивно обходит дерево, т.е. смотрит какие у объекта вложенные объекты, переходит к ним и так далее, то здесь кодогенерация может и пригодиться, а на голом паттерн-матчинге запаришься писать столько кода.

Опять-таки, возвращаясь к лиспу, там вообще таких проблем нет. Не нужно ни ждать много лет паттерн-матчинга, ни генерить код, всё решается макросами. А в Java остаётся либо мучаться и ждать, либо просто генерить нужный код.
...
Рейтинг: 0 / 0
jdk17
    #40108449
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb

В итоге я пришёл к тому, что чем меньше всей этой фигни в языке (разные синтаксические конструкции, статическая типизация и т.п.), тем лучше. В JavaScript как-раз всего этого нет и код писать проще. Если где-то нужны проверки, то можно просто определить какую-нибудь функцию assert или несколько её вариантов для разных случаев и добавлять где требуется. Либо ошибки должны выявляться анализаторами кода. Хотя я не могу сказать, что и статическая типизация - абсолютное зло. Но просто если не получается сделать какую-нибудь специфическую иерархию классов с generic'ами и т.п., то и фиг с ней, можно и в рантайме проверять что требуется.

Да. В JavaScript есть memory-model напоминающая дерево объектов с полями и ссылками на функции. Есть в этом
что-то от вложенных списков Lisp. Но наблюдая за тем как работают сами JS-разработчики я вижу что они
практически не могут создать сколь-либо внятного фреймворка. Типичная ситуация - с утра фронт-кодер
решает делать свой фреймворк на JS. И вечером он его уже заканчивает. И следующим утром он его выбрасывает
в мусорное ведро и... садится писать новый. Тоесть я вижу что % повторного использования кода в JS очень низок.
Или... очень низка культура передачи знаний на уровне библиотек и фреймворков. В Java к примеру есть абстракции
такие как abstract class, interface, package, bundle, module(java9). Это всё способсвтует разделению декларативной
части и реализации. И соблюсти этот баланс в языках - большое искусство. Чтоб интерфейс не был доминирующим
или раздражающим (как в доисторических Java Beans). Вот мне сегодня если надо затащить в проект какую-то либу
(ну например по работе с NoSQL БД) - лучше всего взять java реализацию. Потому-что я за 15 минут освою интерфейсы
и уже буду видеть с helicopter-view то что мне надо для реализации. Подобный челлендж в С++ например чреват
ковырянием в обще-системных вещах что отвлекает от главной задачи. Или в go или rust интерфейсная часть будет
не так явно выражена и ее еще надо будет визуально найти и осмыслить. Сколько я ни ругал ООП а всё таки
есть у него сильная сторона. Скорость освоения библиотеки.

Как я буду осваивать новую библиотеку на JS - ХЗ. Мне - неудобно отсутствие типов. И мне нужно
понимать где начинается контекст или жизненный цикл объектов с которыми я должен работать.
...
Рейтинг: 0 / 0
jdk17
    #40108450
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb
Если капнуть, то оказывается, что эти поля вообще не нужны (потому что они используются просто для передачи данных между методами, а не для хранения долговременного состояния объекта), все эти безумные вложенные циклы можно разбить на несколько повторно используемых методов.

Я думаю что насчет полей вы скорее всего ошибаетесь.

А безумные вложенные циклы в Java-Enterprise разработке тоже являются анти-паттерном и от них избавляются.
Возможно если вы покажете код - я пойму в чем было дело. Но вот другие практики - такие как инлайнинг или rollup
циклов - в Java делать не принято.

Также принято делать компактные строки кода (по 1 оператору на линию). Это упрощает дебаггинг
и помогает при git merge. Тоесть такой кейс как написать лямбду в 80 символов длиной - это скорее
плохой чем хороший кейс.

Вообще главная цель - обеспечить читаемость кода другим человеком. А уж компиллятор как нибудь разберется.
Это кстати сказал Мартин Фаулер. Код пишется человеком для людей.
...
Рейтинг: 0 / 0
jdk17
    #40108451
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

я думаю, что подавляющее большинство JavaScript-библиотек - это просто ужас. Есть исключения типа d3, она построена на одной понятной идее и всё вокруг неё крутится.

Вопрос нужны ли для JavaScript вообще какие-то фреймвоки. HTML, CSS, SVG и стандартные API (WebGL, ...) позволяют делать крутейшие вещи, которые на каком-нибудь SWT запаришься делать. На мой взгляд, приложение в принципе должно состоять из микрофреймвоков. Если нет хороших готовых, то остаётся писать свои. Правда нет гарантии, что получится лучше :)
...
Рейтинг: 0 / 0
jdk17
    #40108455
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb

1) Минимализм, пусть лучше в языке вообще ничего не будет, чем ждать какой-нибудь очередной синтаксический сахар годами. Например, в JavaScript нет ни Stream API, ни LINQ, но есть итераторы и этого достаточно, чтобы сделать своё Stream API. Или без классов вполне как-то обходились

Я, читая книжку SICP изучал mit-scheme. Ни для какой-то цели. Просто так. Как забавный мозговой эксперимент.
Тоесть я вообще не ставил цели использовать ским ни в какой продуктовой разработке. Просто проверял себя
чтобы не заржавел. Так вот списки и ленивые списки всё таки различаются по конструированию.

Обычное конструирование списков
Код: java
1.
(cons ...)


ленивое
Код: java
1.
(cons-stream ...)



В противоположность в Haskell например все списки изначально декларированы как ленивые и stream api - органичен.

Код: java
1.
2.
3.
Prelude> let x = [ x | x <- [2..], (mod x 2) /= 0, (mod x 3) /= 0]
Prelude> take 100 x
[5,7,11,13,17,19,23,25,29,31,35,37,41,43,47,49,53,55,59,61,65,67,71,73,77,79,83,85,89,91,95,97,101,103,107,109,113,115,119,121,125,127,131,133,137,139,143,145,149,151,155,157,161,163,167,169,173,175,179,181,185,187,191,193,197,199,203,205,209,211,215,217,221,223,227,229,233,235,239,241,245,247,251,253,257,259,263,265,269,271,275,277,281,283,287,289,293,295,299,301]
...
Рейтинг: 0 / 0
jdk17
    #40108458
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

я не могу показать код из-за NDA, но там эпичные вещи. Эпичные вещи долго описывать. Приведу такой пример (псевдокод):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class SomeWizard {

   private final SomeModel model = new SomeModel();
   private ISelection selection;

   public void init(ISelection selection) {
       this.selection = selection;
       String name = getName()
       model.setName(name);
   }

   private String getName() {
       return selection.getFirstObject().getName();
   }

}



Ни selection, ни getName() нигде больше не используются. getName() однозначно не потребуется переопределять в дочерних классах, да, и дочерних классов тоже быть не должно.

Зачем это поле? Зачем этот метод? Если так уж хочется сделать метод, то почему бы не передавать туда selection как аргумент? Ну, тут ещё ладно, глядя на этот код можно понять о чём он. Но когда таких полей и методов десятки, то вообще ничего не понять. Для начала что-нибудь такое (поля/методы желательно перемешать, чтобы было непонятно что в какой очередности вызывается, где и зачем используется):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class SomeWizard {

   private Object firstObj;
   private final SomeModel model = new SomeModel();
   private ISelection selection;

   private void getName() {
       name = firstObj.getName();
   }

   private void updateObj() {
       firstObj = selection.getFirstObject();
   }

   public void init(ISelection selection) {
       this.selection = selection;
       updateObj();
       setName();
       model.setName(name);
   }

}



Сделать ещё несколько таких классов, чтобы они вызывали методы друг у друга. Ну, и сами методы, даже если в них есть очевидно повторно используемые вещи ни в коем случае нельзя этот повторяющийся код выносить в сервисные классы, нужно его обязательно дублировать или засирать этим кодом базовые классы, чтобы в них всё было в куче. И если тебе нужен этот код, то выбирай: либо наследуйся от этого безумного класса, либо дублируй код.
...
Рейтинг: 0 / 0
jdk17
    #40108462
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
в Haskell например все списки изначально декларированы как ленивые и stream api - органичен
Да! А в лиспе ленивость добавляется макросами, если нужна.
...
Рейтинг: 0 / 0
jdk17
    #40108463
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ares_ekb

Код: java
1.
2.
3.
   private String getName() {
       return selection.getFirstObject().getName();
   }



Тут есть два варианта. Раньше этот метод был публичным. Потом его скрыли.

Второй вариант - это плод неудачного рефакторинга. Раньше в методе было больше смысла.
...
Рейтинг: 0 / 0
25 сообщений из 240, страница 8 из 10
Форумы / Java [игнор отключен] [закрыт для гостей] / jdk17
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]