문제 출처: https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 1. 문제 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 2. 시도 가장 무난하게 for문을 2부터(1은 소인수분해 값이 될 수 없으므로) 입력인 N까지 반복하도록 코드를 작성했다. import java.io.*; public class Main { public static void main(Stri..
전체 글
I'm still working on it. We must be better.Java의 가장 큰 특징 중 하나는 어느 플랫폼, 어느 하드웨어, 어느 운영체제에 상관없이 컴파일된 코드(바이트코드)가 플랫폼 독립적이라는 점입니다. 이것이 가능한 것은 컴파일된 코드(바이트 코드)를 실행시켜주는 가상 컴퓨터 JVM(JAVA Virtual Machine) 덕분입니다. 1. 자바 실행 과정 JVM 동작 원리를 이해하기 위해선 먼저 Java 코드의 동작 원리를 파악해야 합니다. Java 코드 동작 원리 작성한 자바 소스 코드 파일(.java) 을 자바 컴파일러(javac)를 통해 바이트 코드(.class)로 컴파일합니다. 컴파일된 바이트 코드를 JVM의 클래스 로더에게 전달합니다. 클래스 로더는 동적 로딩을 통해 필요한 클래스들을 JVM의 메모리인 런타임 데이터 영역에 로딩합니다. 실행 엔진..
inode란? Linux는 파일 시스템 내부의 모든 파일과 디렉토리에 index node(inode)를 할당해야 하는데 실제 데이터를 저장하진 않습니다. 대신, 각 파일 데이터의 스토리지 블록들을 찾을 수 있는 메타 데이터를 저장합니다. inode에 담긴 메타데이터 유형 파일 타입 파일 권한 (permissions) 파일 크기 Owner ID Group ID 마지막 접근 시간 마지막 수정 시간 Soft / Hard 링크 접근 제어 목록 (Access Control List, ACLs) inode의 기본 구조 파일 시스템의 전체 정보를 가진 슈퍼 블럭 각 파일의 상세 정보를 가진 inode 블럭 실제 데이터를 담은 데이터 블럭 inode 블럭의 구조 1) Mode, Owner Info, Size, Time..
1. 리눅스 파티션 ◈ 디렉터리 저장 위치 마운트 포인트 정의 비고 / 모든 디렉터리의 최상위 디렉터리 루트 파티션 /root 시스템관리자 root의 사용자 홈 디렉터리 /boot 부트 이미지 저장 디렉터리 부팅 커널 저장소 /bin 실행 파일 디렉터리 (ex. cd, cat ...) 기본 명령어 모음 /sbin 시스템 관리용 명령어 모음 ex. ifconfig /etc 각종 시스템 설정 파일 저장 디렉터리 시스템 환경 설정 관련 파일 모음 /home 사용자 홈 저장 디렉터리 사용자 별 공간 /lib 라이브러리 저장 디렉터리 프로그램 라이브러리 저장 /usr 리눅스 응용프로그램 설치 디렉터리 응용 프로그램이 주로 저장됨 /usr/local 사용자 소스 컴파일하여 프로그램 설치 /var 메일 로그 관련, ..
더보기 본 게시글은 간략히 알고 간략히 설명했던 DNS에 대해 이해하기 위해 작성한 글로, Cloudflare의 공식 자료를 참고했다. DNS가 뭘까 DNS는 Domain Name Server의 약자로, ogig0818.tistory.com 같은 도메인 이름을 통해 온라인으로 정보에 액세스합니다. 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용하며, DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환합니다. 인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있습니다. DNS 서버는 사람이 192.168.0.1 (IPv4의 경우) 또는 2400:cb00:2048:1::c629:d7a2 (IPv6의 경우)처럼 영문과 숫자로 된 ..
더보기 본 게시글은 컨테이너의 특징을 좀 더 잘 이해하기 위해 주로 비교되는 VM과 나열하여 특징을 비교하기 위한 글로, AWS의 공식 자료를 참고했습니다. 컨테이너와 가상 머신의 차이점 컨테이너와 가상 머신은 애플리케이션을 IT 인프라 리소스로부터 독립적으로 만드는 기술입니다. 컨테이너는 애플리케이션의 코드, 라이브러리 및 기타 종속 구성 요소를 포함하는 소프트웨어 코드 패키지로, 컨테이너화를 통해 애플리케이션을 이동 가능하도록 만들어 모든 디바이스에서 동일한 코드를 실행할 수 있습니다. 가상 머신은 물리적 머신의 디지털 사본으로, 동일한 호스트 운영 체제에서 고유한 개별 운영 체제가 실행되는 여러 가상 머신을 보유할 수 있습니다. 또한 애플리케이션을 실행하는 데 필요한 모든 것이 포함된 가상 머신을 ..
더보기 본 게시글은 개발 직군 면접의 단골 주제인 컨테이너에 대한 답변을 준비하기 위한 글로 Red Hat의 공식 자료(링크)를 참고했습니다. 애플리케이션의 복잡성이 증가하고 애플리케이션 개발 가속화에 대한 요구가 점차 증가함에 따라 인프라, IT 팀, 프로세스에 대한 요구가 증가했습니다. 컨테이너는 위의 문제들을 완화하고 반복 작업 가속화를 지원합니다. 컨테이너란? 컨테이너는 실행에 필요한 모든 파일을 포함한 전체 실행(runtime) 환경에서 애플리케이션을 패키징하고 격리할 수 있는 기술입니다. 이를 통해 전체 기능을 유지하면서도 컨테이너화된 애플리케이션을 환경(개발, 테스트, 프로덕션 환경 등) 간에 쉽게 이동할 수 있습니다. 컨테이너는 IT 보안의 중요한 부분이기도 한데, 컨테이너 파이프라인에 보..
더보기 해당 게시글은 OSI 7계층의 후속 질문인 네트워크 스위치에 대한 답변을 준비하기 위한 글로, Cloudflare의 자료를 참고하였습니다. 네트워크 스위치는 네트워크 내의 장치를 연결하고, 해당 장치와 데이터 패킷을 주고 받습니다. 스위치는 라우터와 달리 의도된 단일 장치로만 데이터를 전송합니다. 스위치와 라우터의 차이점 라우터는 데이터 패킷이 네트워크를 통과하여 대상에 도달하는 경로를 선택하는데 (서로 다른 네트워크에 연결하고 인터넷을 구성하는) 대규모 네트워크 LAN, 광역 네트워크 (WAN), 자율 시스템 등의 네트워크에서 네트워크로 데이터를 전달하여 이를 수행합니다. (네트워크 간 통신 담당) 이것이 의미하는 바는 라우터는 인터넷 연결에 필요하지만, 스위치는 장치를 상호 연결하는 데만 사용..
개발자 직군 신입에게 묻는 단골 질문인 OSI 7계층에 대한 답변을 준비하기 위한 포스트로 Cloudflare의 공식 자료(링크)를 참고했습니다. OSI 모델의 정의 OSI는 개방형 시스템 상호 연결(Open Systems Interconnection)의 약자로, 표준 프로토콜을 사용하여 통신 시스템이 통신할 수 있도록 국제표준화기구에서 만든 개념 모델입니다. 더보기 7계층(응용) : 사람과 컴퓨터 간 상호작용 계층. 애플리케이션이 네트워크 서비스에 접근 가능 6계층(표현) : 데이터가 사용할 수 있는 형식인지, 데이터 암호화 발생 지점에 있는지 보장 5계층(세션) : 포트와 세션 간 연결 유지와 통제를 책임지는 계층 4계층(전송) : TCP & UDP를 포함한 전송 프로토콜을 사용하여 데이터를 전송 3..