본문 바로가기

분류 전체보기

(86)
JAVA(1) 자바를 시작하기 전에 자바란? 프로그래밍 언어로 컴퓨터 프로그램을 만드는데 사용한다. 자바는 프로그램을 만드는 것 뿐만 아니라 실행환경, 개발도구, 라이브러리를 제공한다. *라이브러리란 프로그램을 개발하는 데 필요한 기능들을 미리 만들어놓은 것으로, 우리가 프로그램을 만드는데 자주 쓰일만한 것들을 남들이 미리 만들어놓은 기능 자바로 만들수 있는 프로그램에는 PC 애플리케이션(eclipse) 웹 애플리케이션(Spring) 모바일 애플리케이션(안드로이드) 빅 데이터(hadoop) 게임(마인 크래프트), 과학, 소형기기 등이 있다. 자바의 특징 1. 객체지향 언어이다. 객체지향 언어란? 기존의 프로그래밍 언어에 객체지향 개념을 도입한 것, C++, JAVA, 파이썬, JS 등등 2. 자동 메모리 관리 기능이 있다. 이전에는 사용할..
스프링부트 프로젝트 생성하기 / 실행 error 해결하기 스프링 프로젝트는 다음과 같이 생성하였다. Spring boot developer tools는 프로젝트에서 파일이 변경될 때 자동으로 재시작해준다. Lombok은 getter, setter, 생성자를 자동 생성해준다. Spring data JPA는 데이터베이스를 위한 것으로, JPA를 통해 데이터베이스를 만들 것이다. 데이터베이스는 MySQL을 사용할 것이다. Spring security는 보안과 관련된 라이브러리이다. Spring web은 어노테이션을 위해 사용한다. 톰켓이 기본적으로 내장되어 있다. 스프링은 IOC(제어의 역전)으로 내가 아닌 스프링이 컴포넌트 스캔을 하고 메모리에 로드하여 객체를 new하기 때문에, 스프링이 스캔을 할 때 이미 정의된 이름이 아닌 다른 이름인 패키지의 경우 스캔을 할..
CSS 레이아웃: FLEX 레이아웃이란 컨텐츠를 잘 정리정돈해서 구조화 시킬 때 사용하는 기능으로, flex는 CSS에서 레이아웃을 잡을 때 사용한다. 태그가 반드시 ul이나 ol 같은 부모태그가 필요하듯이 flex를 사용하기 위해서는 태그가 두 단계가 필요한데 바로 부모 역할을 하는 태그인 container와 자식 역할을 하는 태그인 item이다. 정렬하고자 하는 각각의 아이템들은 부모에 해당하는 container가 필요하다. /* 자식과 부모가 있어야 한다. */ 또한 컨테이너에게 부여하는 속성과 아이템들에게 부여하는 속성이 각각 존재한다. 레이아웃으로 flex를 사용하려면 출발점은 반드시 부모에게 display 값을 flex로 주는 것이다. 부모가 flex가 된 순간 자식들은 변하게 된다. display를 flex로 설정하면..
oauth의 동작원리 사용자의 데이터를 구글이나 페이스북과 같은 다른 서비스에서 가져와서 그 정보를 가공하여 사용자에게 가치를 전달하고 싶다면 우리는 oauth를 사용할 수 있다. 우리가 사용자에게 제공하고자 하는 서비스는 클라이언트, 우리의 서비스를 사용하는 사용자는 리소스 오너, 사용자의 정보를 가지고 있는 구글이나 페이스북과 같은 회사는 리소스 서버라고 가정하자. 클라이언트가 사용자에게 리소스 서버의 아이디와 패스워드를 물어보고, 그것을 저장했다가 필요한 경우 리소스서버에 해당 아이디와 패스워드로 접속하면 사용자에 대한 정보를 가져올 수 있다. 하지만 여기서 보안이라는 중요한 문제점이 생긴다. 리소스 서버는 클라이언트를 어떻게 믿고 사용자의 아이디와 패스워드를 줄까? 사용자의 데이터는 아주 중요한 정보이기 때문에, 최근..
awt 라이브러리 awt 라이브러리는 자바에서 그림을 그리는 라이브러리이다. 윈도우 창을 awt 라이브러리로 빌려올 수 있다, 즉 윈도우 창을 만들 수 있다. 이 윈도우 창의 이름은 JFrame이라고 한다. 윈도우 창을 만들면 안에 도화지가 들어가야 하는데, JFrame은 기본적으로 도화지가 내장되어 있고 이 도화지의 이름은 JPanel 이다. 도화지에는 그림을 그릴 수 있다. JFrame으로 창을 켜면 창이 계속 유지가 되는데 무조건 while문이 계속 돌면서 창이 켜지기 때문이다. JFrame은 계속 돌고 있는 상태에서 JPanel에 그림을 그린다. 도화지 안에 그림을 그리고 싶다면? 특정 픽셀에 가서 그림을 그린다. 픽셀이란 모니터에 점처럼 박혀있는 색깔이다. 픽셀의 단위가 촘촘할수록 해상도가 좋아지고, 그림의 퀄리..
스프링 컨테이너 스프링 컨테이너의 전체적인 순서는 다음과 같으며, 사용자가 요청하기 전에 서버가 켜져야 하는데 이 때 생기는 일들이다. 서버가 켜지고 톰켓이 실행되면 문지기 역할을 하는 web.xml이 호출되고, 자신이 해야하는 일들을 확인한다. 그 다음에 데이터베이스와 관련된 객체들(모든 스레드가 공유하는 자원)을 컴포넌트 스캔에서 메모리에 올린다. *이 때 root-context 파일이 읽어진다. 이렇게 서버가 로딩이 되면 사용자에게 request 요청이 들어오게 되면서 디스패처 서블릿이 동작하게 되는데, web.xml이 해야하는 역할을 자신이 대신해서 웹과 관련된 자원들을 메모리에 띄우고 주소 분배를 한다. *이때는 servlet-context 파일이 읽어진다. 모든 요청이 끝나면 데이터로 응답할지, html 파일..
스프링부트 JPA 개념잡기 JPA란 무엇인가? +JPA의 장점에 대해서 1. JPA는 Java Persistence API 이다. Persistence(영속성)이란 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. RAM은 휘발성 데이터를 저장하는 메모리이며, 컴퓨터가 꺼지거나 정전이 되면 데이터는 전부 사라지게 된다. 데이터가 날라가지 않도록 RAM의 소중한 데이터를 비휘발성인 하드디스크에 기록하게 되면 데이터를 영구적으로 저장할 수 있다. 영속성이라는 것, 어떤 데이터가 영구히 기록되게 하는 것이다. 자바에서는 데이터 저장을 파일시스템이나 하드디스크가 아닌 DBMS인 데이터베이스에서 한다. JPA에서 Java Persistence API라는 것은 자바의 데이터를 영구히 기록할 수 있는 환경을..
web.xml과 FrontController 패턴 web.xml이 하는 일 servletContext의 초기 파라미터 생성 session의 유효시간 설정 servlet/jsp에 대한 정의 servlet/jsp 매핑 Mime type 매핑 welcome file list error pages 처리 리스너/필터 설정 보안 (1)servletContext의 초기 파라미터 생성 엄청나게 큰 성이 하나 있는데, 이 성에는 입구가 있고 입구에는 문지기가 한 명 있다. 문지기는 스스로 일을 할 수 없어 관리자는 문지기에게 문서를 던져 일을 시킨다. 그 문서대로 문지기를 일을 하게 되는데 이 문서가 web.xml 파일이다. 첫번째로 하는 일은 servletContext의 초기 파라미터를 생성하는 것이다. 외부에 사람이 들어올 때 문지기는 그 사람에게 암호는 ***라고..
스프링부트의 동작 원리 1. 스프링은 내장 톰켓을 가진다. 톰켓을 따로 설치할 필요 없이 바로 실행가능하다. -소켓과 http 소켓(socket): 운영체제가 가지고 있는 것으로, A라는 대상과 B라는 대상이 서로 메세지를 교환하고 싶을 때 운영체제가 제공해주는 소켓을 이용하게 된다. 처음에 A가 소켓을 연다(open) 오픈한 소켓의 포트번호가 필요한데, B가 A와 통신하고 싶다면 A의 IP주소를 넣으면 연결이 되고, A와 B는 서로 메세지를 주고 받는 통신이 가능해진다. 또 다른 대상인 C가 A와 통신하고 싶다면 B는 이미 소켓이 연결 되어있는 상태라 연결할 수 있는 방법이 없다. 그래서 최초에 연결용도로만 쓰는 포트를 만들고, 연결되는 순간 다른 포트를 만들며, 새로운 소켓을 만들 때는 새로운 스레드를 만든다. 최초에 연결..
스프링이란? 스프링의 기초 개념 1. 스프링은 프레임워크이다. 프레임이란 틀이고 워크는 동작한다는 뜻이다. 즉, 틀 안에서 동작을 한다는 것이다. 틀이 있으면 안에 구슬을 집어넣고 좌우로 움직이거나 위 아래로 움직여도 구슬은 틀을 벗어날 수 없다. 프레임워크란 이 틀을 벗어나지 말라고 정해주는 것이다. "개발자 마음대로 만들지 말고 틀을 제공할테니, 틀에 맞춰서 개발을 하라" 라는 뜻. 2. 스프링은 오픈 소스이다. 오픈소스라는건, 소스코드가 공개되어 있고, 내부를 고칠수도 있다는 것이다. 스프링이 어떻게 만들어져있는지 내부를 볼 수가 있고, 불편한 부분은 고쳐서 기여도 할 수 있다. 3. 스프링은 IOC 컨테이너를 가진다 (*스프링의 핵심이다) IOC란 Inversion of controll의 약자이자, 제어의 역전이라는 뜻이다. 제..