분류 전체보기

· Java
포스팅의 주제는 백기선님의 자바 스터디 1주차 과제에서 가져왔습니다. 자바 공부하기에 좋은 주제들을 제시해주셔서 저도 따라가 보려고 합니다. JVM은 JRE에 속해있고 자바 코드 실행 환경을 제공해주는 가상 머신입니다. 자바 프로그램의 실행 과정을 살펴보겠습니다. 자바 프로그램 실행 과정 프로그램이 사용할만큼의 메모리가 할당되고 이를 JVM이 관리합니다. 자바 컴파일러가 자바 소스코드를 바이트코드(.class 파일)로 변환시킵니다. 그다음 Class Loader를 통해 class 파일들을 JVM에 로딩합니다. 로딩된 파일들을 Execution Engine에서 처리합니다. JVM 구성 요소 자바 프로그램 실행 과정은 전부 JVM에서 일어나는 일입니다. 메모리 관리, Class Loader, Executio..
사용자가 메인 페이지에서 글쓰기 버튼을 누르면 글 작성 페이지로 넘어가고 작성한 내용을 mysql 데이터베이스에 저장해봅시다. mysql 및 기본 프로젝트 설정은 이미 준비되어있다는 가정하에 진행합니다. 오늘의 포스팅은 JPA로 테이블 매핑만 해보도록 하겠습니다. dependency dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation ..
· Java
JIT 컴파일러 JIT 컴파일러는 JVM의 Execution Engine 파트에 속해있습니다. 예전 자바는 인터프리터 방식만을 사용했다고 합니다. 인터프리터의 경우 명령어를 하나씩 실행하는 방식으로 각각의 명령어 단위로 본다면 실행 속도가 빠르지만 큰 덩어리로 본다면 속도가 느린 방식입니다. 중복되는 코드가 있어도 라인별로 실행하기에 다시 인터프리팅하는 과정이 들어가거든요. JIT 컴파일러는 Just In Time 컴파일러로 인터프리터 방식의 단점을 보완하기 위해 도입되었습니다. 실행 시점에 인터프리터 방식으로 기계어 코드를 생성 하면서 그것을 따로 캐싱해둡니다. 나중에 동일한 부분이 호출된다면 캐싱해둔 코드를 불러다가 쓰면 되겠죠. 이러한 경우에는 인터프리터 방식보다 빠르다고 볼 수 있습니다. 저는 여..
Spring Initializr를 이용해서 프로젝트를 만들면 프로젝트명Application이 자동으로 생성됩니다. 메서드 선언부에는 main 메서드 하나만 선언되어 있고 SpringApplication.run 메서드를 호출해서 웹 애플리케이션을 실행합니다. 그 위의 @SpringBootApplication 가 오늘 살펴볼 어노테이션입니다. @SpringBootApplication은 크게 @SpringBootConfiguration 과 @EnableAutoConfiguration 그리고 @ComponentScan 이 세 가지로 이루어져 있습니다. @ComponentScan @ComponentScan은 @component 어노테이션 및 @Service, @Repository, @Controller 등의 어노..
· Java
컴파일러를 통해 자바 클래스 파일이 자바 바이트 코드로 변환되고 이를 JVM이 실행시킵니다. 여기서 바이트 코드란 무엇인지에 대해서 정리해보겠습니다. 바이트 코드란? 바이트 코드는 가상 머신에서 돌아가기 위한 표현 방법입니다. 컴파일러에 의해 변환된 명령어 코드가 1바이트라서 바이트 코드라고 부른다고 합니다. 어떤 플렛폼에도 종속되지 않고 실행될 수 있는 가상 머신용 코드라고 보시면 됩니다. 바이트 코드는 다시 실시간 번역기 또는 저스트 인 타임(just-in-time, JIT) 컴파일러에 의해 바이너리 코드로 변환됩니다. 바이너리 코드와의 차이점 바이너리 코드는 기계가 이해할 수 있도록 구성된 이진 코드입니다. 여기서 차이점이 생깁니다. 바이너리 코드는 기계(CPU)가 읽을 수 있는 형태인 반면 바이트..
· Java
자바 가상 머신(Java Virtual Machine, JVM)은 자바로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상 머신입니다. 자바 가상 머신 대신 JVM이라고 줄여서 언급하겠습니다. Write Once, Run Anywere JVM은 사용 중인 운영체제와 관계없이 그 안에서 실행될 프로그램을 위한 환경을 조성합니다. 이게 무슨 의미냐면 제가 구구단을 출력하는 프로그램을 만들었다고 가정할게요. 저는 Windows 10 운영체제를 사용하고 있는데, Linux나 Mac을 쓰는 사람들에게 배포를 해도 정상적으로 동작합니다. 즉, 운영체제에 독립적으로 실행 가능한 환경을 제공해줍니다. 이게 가능한 이유는 JRE라는 친구가 있기 때문입니다. 각 운영체제마다 적절한 JRE가 설치되어..
· TechTalk
오늘 2021/03/20 1시부터 5시 40분까지 라인 코딩테스트가 있었습니다. 정확히는 일정이 아래와 같았습니다. ​[코딩테스트] 2021년 3월 20일(토) 오후 1시 ~ 오후 3시 (한국시간 기준, 120분) ​ ​[단계별 코딩테스트] 2021년 3월 20일(토) 오후 3시 20분 ~ 오후 5시 40분 (한국시간 기준, 120분이었으나 서버 문제로 20분 추가) 네... 코딩테스트에서 4문제 단계별 코딩테스트에서 3문제 총 7문제가 나왔는데요. 대체로 어려운 사전 지식을 필요로 하지 않는 구현 문제였습니다. 진짜 어떻게든 풀 수 있겠다 싶은 난이도의 문제들로 구성되어 있었습니다.그래서 오히려 더 힘들었네요. 아예 확 어려웠으면 전략적으로 문제를 고르고 집중했을 텐데 다 풀어야 되는 느낌이라 부담감이..
www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 그래프 이론을 방금 배운 사람들도 바로 적용해볼 수 있는 문제입니다. 굳이 따지자면 그래프를 인접 리스트 형태로 만든 다음에 DFS로 탐색했습니다. 인접 리스트를 구현한 방법만 설명드릴게요. graph[1-1]에는 2랑 5가 들어갑니다. 즉 graph[n-1]에는 n과 연결된 노드를 넣어줍니다. 이미 방문한 노드는 가지 않도록 visited 배열도 관리해줍니다. 최종적으로 방문한 노드들은 visited에 체크가 되어..
· web
오늘은 TCP/IP 계층에서 3계층을 담당중인 전송 계층 = 트랜스포트 계층에 대해서 다뤄보겠습니다. 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 통신 과정(프로토콜 계층별 관점) 통신 과정을 탑다운 방식으로 살펴보겠습니다.(전송 측) 채팅을 한다고 가정하면, 프로그램에서 메시지를 생성하고 소켓 라이브러리를 통해 전송 계층에 전달합니다. 전송 계층에서는 보낼 데이터 + 자신의 정보(TCP)를 더해서 인터넷 계층에 보냅니다. 인터넷 계층인 IP도 자신의 패킷을 생성해서 앞의 데이터에 덧붙입니다. 각 계층마다 정보를 덧붙여서 인터넷으로 전달합니다. TCP/IP 패킷 정보 IP패킷에 TCP 관련 정보 포함 T..
· web
인터넷 인터넷은 컴퓨터들이 서로 통신 가능하도록 하는 거대한 네트워크입니다. 인터넷은 간단하게 설명하면 선(wire)입니다. 컴퓨터와 컴퓨터를 연결하는 거죠. 인터넷 통신 이 연결선을 통해서 컴퓨터끼리 데이터를 주고받는 과정이 인터넷 통신입니다. 라우터나 중간 서버 등을 거쳐가면서 도착지까지 데이터가 이동합니다. IP(Internet Protocol) 인터넷을 이용하여 통신할 때 사용하는 규약 IP주소를 통해서 컴퓨터들이 서로를 찾아내고 통신을 할 수 있습니다. 지정한 주소로 데이터 전달이 용이함 데이터 전달 시 패킷이라는 단위로 데이터를 전달 패킷에는 출발지 IP, 도착지 IP, 데이터 등등의 내용이 포함됩니다. 사람들은 보통 도메인 주소로 특정 서버에 데이터를 요청합니다.(ex, 173.194.121..
moongomi
'분류 전체보기' 카테고리의 글 목록 (9 Page)