분류 전체보기 59

HTTP 활용 - HTTP API 설계 예시

API 설계 - post 기반 등록 회원 목록 /members GET 회원 등록 /members -> POST 회원 조회 /members/{id} -> GET 회원 수정 /members/{id} -> PATCH, PUT, POST 회원 삭제 /members/{id} -> DELETE post 기반 등록 특징 클라이언트는 등록될 리소스의 URI를 모른다. 회원 등록 /memebers ->POST 서버가 새로 등록된 리소스 URI를 생성해준다. 컬렉션 서버가 관리하는 리소스 디렉토리 서버가 리소스의 URI를 생성하고 관리 API 설계 - put 기반 등록 파일 목록 /files -> GET 파일 조회 /files/{filename} -> GET 파일 등록 /files/{filename} -> PUT 파일 조..

개발 공부/http 2023.04.09

HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송

전송 방법 1. 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 2. 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 전송 상황 1. 정적 데이터 조회 이미지, 정적 텍스트 문서 조회는 GET을 사용 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순히 조회 가능 2. 동적 데이터 조회 쿼리 파라미터 사용 쿼리 파라미터를 기반으로 정렬 필터해서 결과를 동적으로 생성 주로 검색, 게시판 목록에서 정렬 필터(검색어) 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 조회는 GET 사용 GET은 쿼리 파라미터 사용해서 데이터를 전달 3. html form 데이터 전송 -HTML Form su..

개발 공부/http 2023.04.09

HTTP 메서드

API URI 설계 리소스 식별, URI 계층 구조 활용 회원 목록조회 /read-member-list -> /members 회원 조회 /read-member-by-id -> /members/{id} 회원등록 /create-member -> /members/{id} 회원수정 /update-member -> /members/{id} 회원삭제 /delete-member -> /members/{id} uri 설계시 가장 중요한것은 리소스 식별이다. 리소스의 의미 회원을 등록하고 수정하고 조회하는게 리소스가 아니다. 회원이라는 개념 자체가 바로 리소스다. 리소스를 어떻게 식별밥법 회원이라는 리소스만 식별하면 된다-> 회원 리소스를 URI에 매핑 리소스와 행위를 분리 URI는 리소스만 식별 리소스와 해당 리소스를..

개발 공부/http 2023.04.09

UnsatisfiedLinkError: already loaded in another classloader 에러

코드를 수정한 후 war파일을 서버에 올리는 도중 만난 에러 war파일을 업로드하고 unzip후 sh start.sh 로 서버를 시작 했는데 native Library 가 이미 다른 클래스 로드에 이미 로드 되어있다고 오류가 떴다. 한번 load 된 Native Library 는 Java VM 에서는 unload 할 방법이 없다. 따라서 class 수정시 서버를 꼭 종료 후 재 시작 해야한다. 나는 sh shutdown.sh 로 서버 종료 후 sh start.sh로 서버 시작하니까 오류가 안났다. 참고: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=vikong&logNo=60184208978

장애 개선/Error 2023.04.05

HTTP기본

HTTP 거의 모든 형태의 데이터 전송 가능 (test, image, 음성, 영상, 파일 등등 전송 가능) 서버간에 데이터를 주고 받을 때도 대부분 http사용 JSON, XML(API) HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전 HTTP특징 클라이언트 서버 구조 무상태 프로토콜(스테이트 리스), 비연결성 HTTP메시지 단순, 확장 가능 클라이언트 서버 구조 request, response 구조 클라이언트는 서버에 요청을 보내고 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 클라이언트와 서버가 분리되어서 양쪽이 각각 발전하기 좋다. 무상태 프로토콜(stateless) stateful vs stateless차이 stateful: 서버가 클라이언트의 이전 상태를 보존하는..

개발 공부/http 2023.03.11

URI이란

URI(Uniform Resource Identifier): 자원자체를 식별하는 방법 Uniform: 리소스를 식별하는 통일된 방식 Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음) Identifier: 다른 항목과 구분하는데 필요한 정보 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류 될 수 있다. - URL(Resource Locator): 리소스가 있는 위치를 나타냄 - URN(Resource Name): 리소스에 이름을 부여 위치는 변할 수 있지만, 이름은 변하지 않는다. URN의 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음 URI를 URL과 같은 의미로 사용가능(실제는 URI가 더 큰 의미) URL scheme - scheme://[u..

개발 공부/http 2023.03.11

최단 경로 알고리즘

최단 경로 알고리즘은 가장 짧은 경로를 찾는 알고리즘을 의미한다. 다양한 문제 상황에서 사용 한 지점에서 다른 한 지점까지의 최단 경로 한 지점에서 다른 모든 지점까지의 최단 경로 모든 지점에서 다른 모든 지점까지의 최단 경로 각 지점은 그래프에서 노드로 표현 지점 간 연결된 도로는 그래프에서 간선으로 표현 다익스트라 최단경로 알고리즘 특정한 노드에서 출발하여 다른 모든 노드로 가는 최단 경로를 계산한다. 다익스트라 최단 경로 알고리즘은 음의 간선이 없을 때 정상적으로 동작함. 현실 세계의 도로(간선)은 음의 간선으로 표현되지 않음 다익스트라 최단 경로 알고리즘은 그리디 알고리즘으로 분류됨. 매 상황에서 가장 비용이 적은 노드를 선택해 임의의 과정을 반복 다익스트라 알고리즘 동작 과정 출발 노드를 설정한..

인터넷 네트워크(인터넷통신, IP, TCP/UDP, PORT, DNS)

http 학습을 위한 인터넷 네트워크 기본 상식알아보기 1. 인터넷 통신 복잡한 인터넷 망을 통해서 메세지를 전송하기 2. IP(인터넷 프로토콜) IP 주소 부여 (ex: 100.100.100.1) 지정한 IP주소에 데이터 전달 패킷이라는 통신 단위로 데이터 전달 IP 패킷 정보: 출발지 IP, 목적지 IP, 기타.. IP프로토콜의 한계 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성: 중간에 패킷이 사라지거나 패킷이 순서대로 안올 수 있음 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 프로그램 구분 어려움 3. TCP / UDP 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계..

개발 공부/http 2023.02.12

다이나믹 프로그래밍 (DP)

다이나믹 프로그래밍은 메모리를 적절히 사용하여 수행시간 효율성을 비약적으로 향상시키는 방법이다. 이미 계산된 결과는 별도의 메모리영역에 저장하여 다시 계산하지 않도록 함 일반적으로 탑다운과 보텀업 방식으로 구성 탑다운: 큰 문제를 해결하기 위해 작은 문제를 호출하는 방식 보텀업: 작은 문제부터 차근차근 답을 도출하는 방식 동적 계획법 -> 자료구조에서 동적할당은 프로그램이 실행되는 도중에 실행에 필요한 메모리를 할당하는 기법을 의미한다. 다이나믹 프로그래밍에서의 다이나믹은 별다른 의미 없이 사용된 단어이다. 다이나믹 프로그래밍의 조건 1. 최적 부분 구조 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2. 중복되는 부분 문제 동일한 작은 문제를 반복적으로 해..

Git - 커밋 컨밴션

이번 나누기 팀 프로젝트를 진행하면서 깃에 커밋할 때 일관성과 가독성을 높이기 위해서 깃 커밋 컨밴션을 적용하여 커밋을 진행했다. 기본 구조 제목(Subject), 본문(Body), 꼬리말(Footer) (커밋 타입) 제목 본문 내용 꼬리말 (이슈 넘버 등) 커밋 타입(Commit Type) feat : 새로운 기능에 대한 commit fix : 수정에 관한 commit style : 코드 스타일에 관한 commit refactor : 코드 리팩토링에 대한 commit test : test code 작업 및 수정에 대한 commit docs : 문서 작업에 관한 commit 제목 (Subject) 제목은 50글자 이내로 작성한다. 첫글자는 대문자로 작성한다. 마침표 및 특수기호는 사용하지 않는다. 영문으..

개발 공부 2023.01.31