분류 전체보기
-
Hello World! 를 웹에 출력해봅시다! 우리는 처음 프로그래밍 언어를 배울 때 콘솔창에 Hello World! 를 출력하는 것부터 하곤 합니다. 컴퓨터와 나누는 첫 대화이자 기본적인 출력 방법을 알 수 있기 때문이죠. 스프링 부트는 웹 프레임워크이기 때문에 웹을 콘솔창으로서 활용해보는 것이 기본이라 생각됩니다. 이번 간단한 프로젝트를 통해 IntelliJ에서 어떻게 스프링 부트 프로젝트를 만들고 실행하는지 알아보도록 하겠습니다. 1. IntelliJ 프로그램 메인 화면 IntelliJ IDEA를 실행하면 다음과 같이 메인 화면이 나타나게 됩니다. 아직 영어로 설정되신 분은 IntelliJ에서 한국어 설정을 공식 지원하고 있어, 프로젝트를 만들다보면 한국어 패치가 있으니 다운받아보라는 메세지가 뜰 ..
스프링 부트에 첫 발 내딛기(2) - Hello World!를 웹에 출력해보기Hello World! 를 웹에 출력해봅시다! 우리는 처음 프로그래밍 언어를 배울 때 콘솔창에 Hello World! 를 출력하는 것부터 하곤 합니다. 컴퓨터와 나누는 첫 대화이자 기본적인 출력 방법을 알 수 있기 때문이죠. 스프링 부트는 웹 프레임워크이기 때문에 웹을 콘솔창으로서 활용해보는 것이 기본이라 생각됩니다. 이번 간단한 프로젝트를 통해 IntelliJ에서 어떻게 스프링 부트 프로젝트를 만들고 실행하는지 알아보도록 하겠습니다. 1. IntelliJ 프로그램 메인 화면 IntelliJ IDEA를 실행하면 다음과 같이 메인 화면이 나타나게 됩니다. 아직 영어로 설정되신 분은 IntelliJ에서 한국어 설정을 공식 지원하고 있어, 프로젝트를 만들다보면 한국어 패치가 있으니 다운받아보라는 메세지가 뜰 ..
2024.01.02 -
이번 챕터에 대한 서론 제가 이번에 봤던 학과 졸업 작품 전시회에서 웹을 이용한 선배님들의 작품들을 보며 생각했던 것이 있습니다. 작품들에 하나같이 사용된 스프링 부트라는 도구(언어인줄 알았습니다..)를 알아보면 좋겠다는 생각이었습니다. 마침 제가 1학년 동안 자바에 대한 기본적인 내용들을 학습했기 때문에 자바를 기본 언어로 하는 스프링 부트를 더욱 쉽고 흥미있게 접근하리라고 기대하고 있습니다. 이번 방학 기간 동안 스프링 부트로 웹의 백엔드 개발을 진행해보며 포스팅을 이어나가 보도록 하겠습니다! Spring Boot, 백엔드를 위한 웹 프레임워크 스프링 부트는 자바의 프레임워크 중 하나인 스프링을 편리하게 이용하게 하기 위하여 여러 편의기능들을 합친 별도의 웹 프레임워크입니다. 프레임워크로서 이미 개발..
스프링 부트에 첫 발 내딛기(1) - 스프링 부트가 뭐야?이번 챕터에 대한 서론 제가 이번에 봤던 학과 졸업 작품 전시회에서 웹을 이용한 선배님들의 작품들을 보며 생각했던 것이 있습니다. 작품들에 하나같이 사용된 스프링 부트라는 도구(언어인줄 알았습니다..)를 알아보면 좋겠다는 생각이었습니다. 마침 제가 1학년 동안 자바에 대한 기본적인 내용들을 학습했기 때문에 자바를 기본 언어로 하는 스프링 부트를 더욱 쉽고 흥미있게 접근하리라고 기대하고 있습니다. 이번 방학 기간 동안 스프링 부트로 웹의 백엔드 개발을 진행해보며 포스팅을 이어나가 보도록 하겠습니다! Spring Boot, 백엔드를 위한 웹 프레임워크 스프링 부트는 자바의 프레임워크 중 하나인 스프링을 편리하게 이용하게 하기 위하여 여러 편의기능들을 합친 별도의 웹 프레임워크입니다. 프레임워크로서 이미 개발..
2023.12.29 -
알고리즘의 효율성을 나타내는 함수, Big-O 현대에 이르러 컴퓨터가 방대한 크기의 데이터를 처리해야 하는 일이 생겨나면서 이를 다뤄 유의미한 결과를 도출해내는 알고리즘 또한 데이터를 빠르게 처리할 수 있도록 요구되어 왔습니다. 버블, 선택, 삽입, 퀵 정렬은 모두 '정렬한다'는 기능적인 면은 같지만 과정 중 소요되는 시간은 매우 다릅니다. 같은 데이터를 주어도 버블 정렬은 1초 걸리는 일을 퀵 정렬은 0.01초만에 해낼 수 있습니다. 이렇게 알고리즘이 어떠한 과정을 수행하는데에 얼마나 많은 시간이 걸리느냐를 말하는 것이 시간복잡도(Time Complexity)이고 이는 곧 알고리즘의 효율성을 나타냅니다. 빅-O 표기법은 시간복잡도를 나타내는 일반적인 방법입니다. 입력 데이터에 따라 표기 모든 알고리즘은..
[알고리즘 기초] 빅-O 표기법알고리즘의 효율성을 나타내는 함수, Big-O 현대에 이르러 컴퓨터가 방대한 크기의 데이터를 처리해야 하는 일이 생겨나면서 이를 다뤄 유의미한 결과를 도출해내는 알고리즘 또한 데이터를 빠르게 처리할 수 있도록 요구되어 왔습니다. 버블, 선택, 삽입, 퀵 정렬은 모두 '정렬한다'는 기능적인 면은 같지만 과정 중 소요되는 시간은 매우 다릅니다. 같은 데이터를 주어도 버블 정렬은 1초 걸리는 일을 퀵 정렬은 0.01초만에 해낼 수 있습니다. 이렇게 알고리즘이 어떠한 과정을 수행하는데에 얼마나 많은 시간이 걸리느냐를 말하는 것이 시간복잡도(Time Complexity)이고 이는 곧 알고리즘의 효율성을 나타냅니다. 빅-O 표기법은 시간복잡도를 나타내는 일반적인 방법입니다. 입력 데이터에 따라 표기 모든 알고리즘은..
2023.12.25 -
어떻게 하면 0과 1로만 이루어진 파일을 읽을 수 있을까 이진 파일은 이름에서 알 수 있으시다시피 이진(0과 1)으로만 구성된 파일입니다. 따라서 파일에 어떤 값이 있는지는 개발자가 의도하기에 달려 있습니다. 의도한 특정 규칙에 따라 파일을 읽고 메모리에 저장시키는 것이 읽기 작업의 중심 화제인 것이죠. 위와 같이 4bytes 크기의 이진 파일을 읽을 때도 프로그램 내에서 어떤 방식으로 데이터를 읽어낼 것인지에 따라 데이터의 개수와 값이 달라질 수 있습니다. int형은 64bit 운영체제에서 4bytes를 소모하므로 그대로 받아오지만 short형은 2bytes를 소모하므로 값이 두개로 분리되어 각각 따로 해석되고 있습니다. fread 함수 size_t fread( void *buffer, size_t s..
[C] 파일 입출력 기초(2) - 이진 파일 읽기어떻게 하면 0과 1로만 이루어진 파일을 읽을 수 있을까 이진 파일은 이름에서 알 수 있으시다시피 이진(0과 1)으로만 구성된 파일입니다. 따라서 파일에 어떤 값이 있는지는 개발자가 의도하기에 달려 있습니다. 의도한 특정 규칙에 따라 파일을 읽고 메모리에 저장시키는 것이 읽기 작업의 중심 화제인 것이죠. 위와 같이 4bytes 크기의 이진 파일을 읽을 때도 프로그램 내에서 어떤 방식으로 데이터를 읽어낼 것인지에 따라 데이터의 개수와 값이 달라질 수 있습니다. int형은 64bit 운영체제에서 4bytes를 소모하므로 그대로 받아오지만 short형은 2bytes를 소모하므로 값이 두개로 분리되어 각각 따로 해석되고 있습니다. fread 함수 size_t fread( void *buffer, size_t s..
2023.12.21 -
제네릭 클래스(Generic Class)란? Generic Class는 직역하면 포괄적인 클래스입니다. 여기서 포괄적이라는 의미는 특정 타입만을 다루지 않고 여러 종류의 타입을 일반화시켜 표현함을 나타냅니다. 즉 Integer만 다루는 계산기가 아니라 Integer, Double 등 숫자와 관련한 Wrapper Class 들도 사용할 수 있도록 일반화한 계산기를 만들고자 하는 것이죠. 그렇지 않으면 모든 Number 클래스에 대한 계산기 클래스를 일일이 하나하나 만들어줘야 할테니까요. 제네릭 클래스 예제 - 탈 것과 회사 간단한 예제를 통해 제네릭 클래스를 보여드리겠습니다. 여기 탈 것(Vehicle) 클래스가 있습니다. 그리고 탈 것 종류(Truck, SUV, Bicycle)에 따라 회사를 만들고자 합..
[JAVA] 제네릭 클래스(Generic Class)제네릭 클래스(Generic Class)란? Generic Class는 직역하면 포괄적인 클래스입니다. 여기서 포괄적이라는 의미는 특정 타입만을 다루지 않고 여러 종류의 타입을 일반화시켜 표현함을 나타냅니다. 즉 Integer만 다루는 계산기가 아니라 Integer, Double 등 숫자와 관련한 Wrapper Class 들도 사용할 수 있도록 일반화한 계산기를 만들고자 하는 것이죠. 그렇지 않으면 모든 Number 클래스에 대한 계산기 클래스를 일일이 하나하나 만들어줘야 할테니까요. 제네릭 클래스 예제 - 탈 것과 회사 간단한 예제를 통해 제네릭 클래스를 보여드리겠습니다. 여기 탈 것(Vehicle) 클래스가 있습니다. 그리고 탈 것 종류(Truck, SUV, Bicycle)에 따라 회사를 만들고자 합..
2023.12.17 -
자바의 이벤트 처리 이벤트는 마우스 클릭, 키 입력, 외부로부터의 데이터 수신 등 사용자의 입력을 다루는 것입니다. 이러한 이벤트를 자바에서 처리할 때 아래 리스트와 같은 프로세스를 거쳐서 진행됩니다. 사용자가 마우스로 JButton 컴포넌트를 클릭한다. 마우스 입력을 전달받은 자바 가상 기계는 이벤트 분배 스레드에게 마우스 클릭에 대한 정보를 보낸다. 이벤트 분배 스레드는 이벤트에 관한 정보를 담은 이벤트 객체를 생성한다. 이벤트 분배 스레드가 JButton에 연결된 이벤트 리스너를 찾아 호출한다 이때 이벤트 객체를 인자로 전달한다. 이벤트 리스너(Event Listener) 란? 위 프로세스에서 주의깊게 봐야 하는 것은 이벤트 리스너입니다. 이벤트를 처리하려면 개발자가 구현해야 하는 interface..
[JAVA] Swing GUI 기초(3) - 이벤트 리스너자바의 이벤트 처리 이벤트는 마우스 클릭, 키 입력, 외부로부터의 데이터 수신 등 사용자의 입력을 다루는 것입니다. 이러한 이벤트를 자바에서 처리할 때 아래 리스트와 같은 프로세스를 거쳐서 진행됩니다. 사용자가 마우스로 JButton 컴포넌트를 클릭한다. 마우스 입력을 전달받은 자바 가상 기계는 이벤트 분배 스레드에게 마우스 클릭에 대한 정보를 보낸다. 이벤트 분배 스레드는 이벤트에 관한 정보를 담은 이벤트 객체를 생성한다. 이벤트 분배 스레드가 JButton에 연결된 이벤트 리스너를 찾아 호출한다 이때 이벤트 객체를 인자로 전달한다. 이벤트 리스너(Event Listener) 란? 위 프로세스에서 주의깊게 봐야 하는 것은 이벤트 리스너입니다. 이벤트를 처리하려면 개발자가 구현해야 하는 interface..
2023.12.05