목록개발공부 (26)
발전하는 개발자가 되자
REST 란? REST 는 웹을 위한 아키텍쳐 스타일 이다. 아키텍쳐 스타일 : 제약조건의 집합 그래서 제약조건을 모두 만족해야 REST라 할 수 있다. REST 의 제약조건 Client -server - 서버와 클라이언트를 가져야 한다. Stateless - 상태를 가지면 안된다. Cacheable - 캐시를 가져야 한다. Layerd system - 레이어드 시스템 이어야 한다. code-on-demand (optional) - 서버에서 코드를 클라이언트에게보내서 실행 가능해야한다. (js) 위의 조건들은 HTTP 통신을 이용하면 자동으로 만족한다. uniform interface - identifcation of resources - manipulation of resources through re..
JVM과 GC JVM 이란? GC 란? JVM (Java Virtual Machine) 이란 자바 버추얼 머신으로 자바 프로그램이 컴파일 되고 class 파일이 만들어지면 그 클래스 파일을 기계어로 변화시키고 하는 명세 cpu 나 운영체제의 종류에 무관하게 동작한다 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다. JVM 메모리 구조 Method area, Heap area, Stack area, PC Register , Native method stack Method area : 상수, 메소드 클래스 코드가 적제되는 영역 Heap area : new Car 와 같이 실제 객체, 전역변수 등이 적제되는 ..
SRP (단일책임의 원칙: Single Responsibility Principle) 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임(변화의 축: axis of change)을 수행하는 데 집중되어 있어야 한다는 원칙입니다. 이는 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 함을 의미합니다. SRP원리를 적용하면 무엇보다도 책임 영역이 확실해지기 때문에 한 책임의 변경에서 다른 책임의 변경으로의 연쇄작용에서 자유로울 수 있습니다. 뿐만 아니라 책임을 적절히 분배함으로써 코드의 가독성 향상, 유지보수 용이라는 이점까지 누릴 수 있으며 객체지향 원리의 대전제 격인 OCP원리뿐 아니라 다른 원리들을 적용하는 기초가 됩니다. 이 원리는 다른 원리들에 비..
프로그래머스 알고리즘 (java) 도둑질 프로그래머스 (도둑질) 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다. 각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요. 코드리뷰 조건 1번째 집을 털면 마지막 집은 털지 못한다. 인접한 집은 털지 못한다. 풀이방향 인접한 집을 털지 못하니 1번집을 털 경우와 2번집을 털 경우 그리고 한 칸씩 띄워서 두개의 최대 값을 비교하면 된다 생각하고 문제를 풀었습니다. 하지만 두칸 건널 수도 있다는 경우를 생각..
프로그래머스 알고리즘 (java) 등굣길 프로그래머스 (등굣길) 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어질 때, 학교에서 집까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. 코드리뷰 조건 최단거리를 가야하기 때문에 왼쪽 과 아래 밖에 못 움직인다. 웅덩이가 있는곳은 못 지나간다. 풀이방향 이차원 배열을 만들고 웅덩이를 표시하고 거기서부터는 예전 수학시간에 배운 최단거리를 구하는 방법처럼 구해봤습니다. 웅덩이는 -1 로 미리 ..
프로그래머스 알고리즘 (java) 정수 삼각형 프로그래머스 (정수 삼각형) 코드 리뷰 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 조건 맨위 부터 아래로 내려가며 숫자를 증가시킨다. 마지막 까지 내려가 가장 큰 수를 반환한다. 풀이방향 현재 위치의 값을 구할 때 이전 값이 필요합니다. 그래서 저는 배열을 만들었고 이전 배열과 현재 배열을 더하는 식으로 접근 했습니다. 그러다 보니 양쪽 끝부분은 가지수가 1개이고 사이 [j] 값 은 이전 [j], [j - 1] 값을 비교해 큰 값을 더했습..
Mybatis 와 JPA Mybatis 특징 JPA 특징 Mybatis JDBC 를 좀더 편하게 사용할 수 있도록 객체를 SQL 이나 저장 프로시저와 매핑 해주는 퍼시스턴스 프레임워크 SQL 구문을 java 메소드와 매핑해준다. 장점 다른 프레임워크에 비해 간단하다. 소스 코드와 SQL 의 분리 (생산성, DBA와의 협업) SQL을 직접 다뤄 복잡한 쿼리 작성, SQL 함수나 저장 프로시저를 자유롭게 이용가능 단점 반복적인 코드와 CRUD SQL 작업 SQL과 데이터베이스 벤더에 대한 종속성(오라클에서 mySQL 로 바꾸면 함수들을 바꿔줘야한다.) ORM(JPA) 자바 객체를 데이터테이블과 매핑시킨다. ORM : 데이터베이스 객체를 자바 객체로 매핑하여 객체 간의 관계를 바탕으로 SQL을 자동으로 생성 ..
get 과 post 의 차이 get 과 post는 무엇일까. http 메소드중 하나 서버에 데이터를 주고 받을 때 사용하는 메소드 get은 select 성격을 갖고있다. post는 서버의 값이나 상태를 바꿀 때 사용한다. get 특징 get은 데이터를 조회 하는데 사용하는 메소드다. get으로 서버에 데이터를 포함해 보낼 수도 있다. 그럴 경우에는 url 에 정보들 담아 요청을 보낸다. /RegisterDao.jsp?name1=value1&name2=value2 ? key = value 형태로 데이터를 보낸다. post 특징 get 과 다르게 http 메세지의 바디부분에 데이터를 담아 요청을 보낸다. post 는 http body 에 정보를 담아 get 보다는 더 많은 데이터를 보낼 수 있다. 또한 ur..