Так это я и хочу выяснить, возможно и так как ты говоришь, но видишь товарищ сначала заявляет о моей некомпетености, а потом после того как предлагаю показать реальный код компететного человека он почему то притянул за уши олимпиадные задачи. Как притянул слово "реинжиниринг". Это по крайней мере не честное поведение.
SadKo, И почему ты думаешь, что это не твоя тема? Раз назвался груздем и джава программером и называешь себя знающим по архитектуре вот на нее я и хочу взглянуть. Ты же программишь по серверам и базам, раз имеешь что сказать по этому поводу. Или ты будешь ссылаться на якобы знакомых знакомых которые ваяют чудо быстрые сервера. Ну так ежели это так, то тогда если тебе нечего показать, отойди в сторону и пусть говорят эти чудо разрабы серверов если таковые есть и докажут мне что я не прав.
SadKo, Я тебе даже дам часть своего кода прям щас. Осилишь? Код (Text): public Server(BlockingQueue<Socket> q) throws IOException { ss = new ServerSocket(port); noStopRequested = true; this.queue = q; this.init(); Runnable r = new Runnable() { public void run() { try { runWorkFast(); } catch (Exception x) { x.printStackTrace(); } } }; } Все показывать не буду, там самая суть. Ну что покажешь свой код? Я думал о тебе как серьезном разрабе, который плывет в правильном направлении, не разочаровывай меня.
SadKo, ты хоть признайся, когда accept() будешь вызвать, ты хоть это не одном треде будешь делать или в цикле собираешься в main все коннекшены принимать. )))
То есть, вы хотите, чтобы я принял ваши условия игры, а мои принимать не хотите? Интересно. А что ещё должен делать сервер? Вы мне так толком и не сказали. Вы хотите пул воркеров увидеть? Распределение запросов между потоками? Постановку в очередь? А как будет организовываться обслуживание запросов: безусловные отказы, наличие очереди и её размер? Будет ли ограничиваться время обработки запроса? Клиенты будут работать в режиме сессии, или слать однократные запросы? Как будет обрабатываться ошибка в случае, если клиент отвалился? Нужен ли откат транзакций и изменений, сделанных от отвалившегося клиента? А какой протокол обмена будет использоваться? Вы понимаете, что о своём севере не сказали в принципе ничего, и хотите, чтобы я для вас написал какой-то воображаемый сферический сервер в вакууме. А почему я обязан плясать именно под вашу дудку? Значит, вы ставите мне свои удобные для вас условия задач, а мои отрицаете? Да мне и этого хватило: Код (Text): } catch (Exception x) { x.printStackTrace(); } Вот этот код при большом количестве ошибок и большой нагрузке засрёт весь stdout. Если это всё запустите под каким-нибудь томкатом либо глассфишем, оно всю catalina.out зохавает в итоге. log4j или slf4j задействовали бы что ли. Теперь этот кусок: Код (Text): public Server(BlockingQueue<Socket> q) throws IOException { ss = new ServerSocket(port); noStopRequested = true; this.queue = q; this.init(); Инициализация в конструкторе. Это очень печально, потому что: http://mdf-i.blogspot.com/2017/11/blog-post.html Плюс этот код ещё себя, по видимому, в BlockingQueue сабмиттит, т.к. я х.з куда у вас потом ссылка на r передаётся. Видимо, в воздухе повисает. У меня для разных задач разные наработки и всякие ворк-эраунды, которые фиксят баги JDBC-дров оракла и мускуля. У меня нет единственного решения, которое побьёт все остальные. Это в принципе невозможно. А чем вас олимпиадные задачки так напрягают? Мне тут, как раз, недавно пришлось столкнуться, задачки на придумывание не совсем привычного алгоритма. В UML вы решение для них не нарисуете, как ни крутись, потому что там во главенстве всего стоит алгоритм, а не отношение между объектами.
А где твои 30 кило кода? Да, инит в конструкторе не гуд, но это не моя идея. Взята из одной книги. У меня работает.
SadKo, Ну извини, без кода сервера (малой толики, это чтобы не разводить кучу разговоров) я не могу оценить твой профессионализм.
neutronion_old_school, А как ты его оценивать будешь, если можешь только в таблицу умножения и использование готовых серверов? То есть, твоя оценка будет основываться исключительно на том, соответствует ли код тому единственному шаблону, который тебе известен?
а я разве здесь один? А ну да, ты же этого не учел, наверное тоже фанат олимпиадных задач. Кстати есть у меня упражнения и по дискретной математике, графам, и олимпиадные задачи математика-физика-программирование. Пока нет времени, у меня законы-хак-джава еще кое-что.
так кто у нас чемпион по олимпиадным задачам: Бил Гейтс? нет. Джобс? Нет, Маск? Нет. Цукерберг? Нет. Брин(гугл), Нет. Дак ой кто же? Садко. А кто это?
neutronion_old_school, Я думаю последнее ваше сообщение выглядит непрофессионально и глупо. Если вы не хотите решать олимпиадные задачи - откажитесь, попросите придумайте другие условия. Которые всех устроят. А не гните свою линию
Язык отличный. Сейчас Golang и JS (nodejs) очень популярны, половина криптошекелей написана на этих языках. Используется в серверной части проекта. Будущего у C++ нет, он неполноценный объектник в отличии от Java, JavaScript, PHP, .NET... По факту C++ компилируется как макросы на ассемблере, там нет никаких нативных объектов и типов в рантайме, как следствие нет рефлексии близкой к PHP и JS. Зачем сидеть и думать ООП архитектуру, если все это на уровне кода и не более? C++ абсолютно бессмысленный и бесполезный, его самое подходящее применение это учебная литература, примеры в статьях и ноу хау из разряда "смотри как я умею извращаться". В подтверждение моих слов посмотрите на boost, сколько же усилий приложили люди, чтобы можно было C++ хоть как-то применять на практике. Ни в Java, ни в PHP нет такой необходимости тащить за собой один и тот же 3rdparty, чтобы что-то писать. Смело переходите на Golang, иначе очень скоро на вас будут смотреть так же , как вы сейчас смотрите на тех кто кодит под Fortrun. Нормального Си это не касается.
все: Ну Си 1989 года устарел ещё в 1991 году, и будущего у него быть не могло. А Линукс, по Таненбауму по меньшей мере, устарел ещё до того как был разработан. Про БСДНо всё на нём работаит.
Забавно что вы спорите, но не видете главного. Каток, который асфальт ложит едет и есть водитель. А есть быстрые машины. Но тот самый каток хоть и едет, он не уязвим, в отличии от быстрой машины Сейчас вопрос стоит в защите от атак, именно этим и оценивается стабильность и как следствие актуальность. А на чем обьект реализован не важно, атака происходит на сам обьект, а не на средства его реализации - причинно-следственная связь