>  기사  >  Java  >  온라인 프로그래밍 대회 중에 온라인 리뷰 시스템이 충돌하는 이유는 무엇입니까?

온라인 프로그래밍 대회 중에 온라인 리뷰 시스템이 충돌하는 이유는 무엇입니까?

WBOY
WBOY앞으로
2023-08-27 15:57:061413검색

온라인 프로그래밍 대회 중에 온라인 리뷰 시스템이 충돌하는 이유는 무엇입니까?

요즘 다양한 코딩 플랫폼에는 GeeksforGeeks, CodeChef, Codeforces, atCoder, SPOJ, HackerRank, HackerEarth 등과 같은 경쟁력 있는 코딩이 포함되어 있다는 것을 우리 모두 알고 있습니다. 그들은 스스로 코딩해야 합니다. 로컬 편집기 파일(예: Sublime Editor)을 첨부하거나 해당 편집기에 직접 작성하세요.

그렇다면 이러한 테스트 사례에 어떻게 액세스하거나 코드가 컴파일 및 실행 중이라고 간단히 말할 수 있을까요? 이러한 프로그래밍 경쟁 플랫폼에서 온라인 심사위원은 코드 편집 및 실행의 중추 역할을 합니다.

온라인 심사

사용자가 제출한 코드는 심사를 거쳐 동일한 환경에서 컴파일 및 테스트되며 이는 온라인 심사위원에 의해 이루어집니다. 온라인 심사는 경쟁력 있는 프로그래밍 대회 설립을 지원하고, 교육 및 채용 프로세스를 강화하고, 데이터 마이닝 문제 해결을 촉진하는 시스템, 온라인 컴파일러, 기타 맞춤형 시스템의 구성 요소로 통합되는 개발 플랫폼으로 구분됩니다. 따라서 학생들이 데이터 구조에 대한 지식과 프로그래밍 기술을 습득하는데 도움이 되는 효과적인 시스템으로 구현될 것입니다. 시스템에는 사용자 인터페이스, 샌드박스 검토 환경, 평가 점수 및 보고서를 데이터베이스로 업데이트하는 기능이 포함되어 있습니다. 이 기사에서는 프로그래밍 대회에서 온라인 심사위원이 어떻게 평가하는지 논의할 것입니다. 이 사진은 그것이 어떻게 분해되는지 더 잘 설명하는 데 도움이 될 것입니다.

  • Time Limit Completion - 특정 시간에 코드가 실행되어야 합니다. 운영 체제에서 스레드가 기본적으로 실행될 때 시간 제한을 설정할 수 있습니까?

  • 메모리 제한 완료 - 프로그램이 CPU의 모든 메모리를 차지해서는 안 됩니다. 이것을 더 간단한 방법으로 어떻게 바꿀 수 있습니까?

  • Stack Overflow Errorr - 프로그램을 추적한 후 시스템은 프로그램이 성공적으로 실행되었는지 여부를 알게 됩니다. 그렇다면 이 정보는 어떻게 우리에게 전달되나요?

위 내용은 모두 시스템이 프로그램을 확인하고 실행할 때 발생하는 문제를 설명합니다. 사용자는 프로그램 내에서 모든 코드를 제출할 수 있습니다. 제출된 코드가 악성인지 여부와 정도를 어떻게 판단합니까?

일부 코드는 다양한 프로세스를 실행하거나, 문서 디렉터리를 조사하여 일부 정보를 얻거나, 관리 명령을 실행하거나, 서버의 대역폭을 소모할 수 있습니다. 시스템이 이를 수행하도록 허용할 필요는 없습니다. 그렇다면 문제는 이러한 라이선스 지침을 어떻게 실천할 수 있느냐는 것입니다. 위의 상황을 처리하기 위해 다음과 같은 방법을 설명하겠습니다 -

Way

시스템 권한 및 하드웨어를 적용하는 데 사용되는 기술을 코드 샌드박싱이라고 합니다. Web은 위에서 언급한 다양한 시나리오를 처리하기 위해 두 가지 방법으로 샌드박스를 코딩하기로 결정했습니다.

  • 불편한 방법

  • 역사를 향한 긴 여정

방법 1: 형편없는 방법

코드가 실행되기 전에 개발자가 코드에서 악성 기능을 발견할 수 있도록 하는 눈에 띄는 온라인 의사 결정 이니셔티브는 거의 없습니다. 예를 들어, 코드가 C++를 기반으로 하는 경우 먼저 "시스템" 구문을 사용하는 코드 줄이 있는지 확인합니다. 많은 프로그래밍 언어가 같은 방식으로 그려지지 않기 때문에 이 답변은 다르게 그려지지 않습니다. 기능을 동적으로 생성하고 여러 프로그래밍 언어로 터치할 수 있으므로 코드에 필터링이 그려지지 않습니다. 또 다른 문제는 "system"을 출력으로 인쇄하고 싶다면 어떻게 해야 할까요? 이 답변은 코드가 악성이라고 말하지만 그렇지 않습니다.

방법 2: 기나긴 역사의 길

이 방법에서는 네트워크가 결정한 최대값이 유효합니다. 이 답변은 완전한 Linux 기반 시스템과 관련이 있습니다. 스택 오버플로/런타임 오류는 프로그램의 반환 비용을 통해 확인할 수 있습니다. 0과 거리가 멀면 시스템이 성공적으로 실행될 수 있었다고 말할 수 있으며, 다른 경우에는 충돌이 발생했습니다.

다양한 Unix 기반 라이브러리를 사용하여 메모리 제한 번거로움과 시간 제한 제한을 제공할 수 있습니다. Java와 같은 일부 프로그래밍 언어에서는 기본적으로 이 제한 플래그 기능을 활성화합니다. 시간 제한 범위와 메모리 제한 결함은 많은 완전한 Unix 기반 라이브러리를 사용하여 해결할 수 있습니다. Java와 같은 일부 프로그래밍 언어는 기본적으로 이러한 유형의 경계 플래그를 지원합니다.

Linux에서는 디렉터리 권한이 간단합니다. 간단히 사용자를 생성하고 해당 사용자에게 일부 디렉터리에 대한 액세스와 일부 읽기/쓰기 권한을 허용할 수 있습니다. 그런 다음 해당 사용자의 용도에 맞는 애플리케이션을 실행하여 문서 목록 문제를 해결할 수 있습니다. 또한 코드는 일부 관리 명령을 실행할 수 없습니다.

일부 라이브러리(예: Trickle)를 사용하면 커뮤니티 기술이 제한될 수도 있습니다. 단순히 보안 허점을 메우기 위해 서로 다른 라이브러리를 설정하고 서로 다른 코드를 작성할 수 있습니다.

결론

완전히 VM(가상머신) 기반의 Docker나 Box를 사용하면 위의 모든 문제를 해결할 수 있습니다. 예비 기억을 갖고 싶다면 상자를 만들고 상자의 커뮤니티 권한과 시간 제한을 미리 설정할 수 있습니다. 가상 머신의 도움으로 모든 문제를 무시할 수 있습니다. 개발자가 알고 있는 대안이 있을 수 있습니다. 이 솔루션의 전체 판단 기계도 다른 기술보다 느리게 보일 수 있지만, 규모 면에서는 절대적으로 다른 솔루션보다 훨씬 빠르며 더 안전하고 위생적입니다. 이 GitHub Repo를 살펴보고 판단을 위해 Docker를 사용하는 방법을 알아볼 수 있습니다.

전체 심사 방법은 온라인 심사에서 가장 중요한 부분 중 하나입니다. 판단 기계를 실행하려면 운영 체제가 어떻게 작동하는지, 프로그래밍 언어가 어떻게 작동하는지 이해해야 합니다.

위 내용은 온라인 프로그래밍 대회 중에 온라인 리뷰 시스템이 충돌하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제