전체 글
-
RestTemplat 등 jvm 패킷 피들러로 디버깅 하기개발/Java 2022. 3. 24. 13:17
restTemplat을 사용하여 api 연계하는 도중 restTemplat으로 보내는 요청도 피들러로 확인을 하고 싶었다 만약 api 개발을 한다면 이런 경우가 많을 것 같아서 방법이 없나 찾아 봤더니 피들러 홈페이지에 답이 있었다 피들러나 네트워크로 RestTemplat, WebClinet 등 jvm에서 보내는 요청에 대한 패킷은 일반적으로 보이지 않는다 따라서 피들러로 해당 요청에 관한 내용을 보고 싶은 경우 따로 proxy 설정을 해줘야 한다 1. jvm 으로 설정하는 방법 jre -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 MyApp jre -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 MyA..
-
item 31 한정적 와일드카드를 사용해 API 유연성을 높이라책/이펙티브 자바 2022. 3. 23. 20:54
ITEM 31 한정적 와일드카드를 사용해 API 유연성을 높이라 매개변수화 타입은 불공변이다 서로 다른 타입 Type1과 Type2가 있는 경우 List은 List의 하위 타입도 상위 타입도 아니다 List은 List의 하위 타입이 아니다 List에는 어떤 객체든 들어가지만 List은 문자열만 넣을수 있어서 리스코프 치환 원칙에 어긋난다 매개변수화 타입이 불공변인 경우 유연성이 떨어진다 자바에서는 이를 대체하는 방법으로 한정적 와일드카드타입이라는 특별한 매개변수 타입을 제공한다 유연성을 극대화하려면 원소의 생산자나 소비자용 입력 매개변수에 와일드카드 타입을 사용하라 펙스(PECS) 공식 (와일드카드 타입을 사용하는 기본 원칙) 매개변수화 타입 T가 생산자라면
-
자주 접하는 HTTP 응답코드CS/네트워크 2022. 3. 22. 23:23
100 번대 : 정보전달 200번대 : 성공응답 200: OK, 정상처리 204: NO Content, 보통 특정내용을 삭제 시 해당 응답코드를 응답한다. 206: Range, 헤더를 지정한 요청을 응답할 때 사용한다. 300번대 : Redirection, request 완료를 위해 추가 동작이 필요합니다. 301: Moved Permanently, 영구적으로 URI 변경을 의미 302: Found, 일시적인 URI 이동을 의미 304: Not Modified, 변경 없음 Temporary Redirect, 임시적인 redirect 400번대 : 클라이언트 에러 400: Bad Request, 잘못된 요청 403: Forbidden, 접근권한 없음 404: Not Found, 요청 내용이 없거나 찾을 수..
-
TCP/IP 4계층CS/네트워크 2022. 3. 22. 23:22
TCP/IP 4계층 OSI (Open System Interconnections) 7계층은 시스템들의 연결을 위한 모델 TCP/IP 4계층은OSI 7계층을 웹 서비스에 맞게 단순화 시킨 모델이다. 응용 계층(Application Layer) HTTP, FTP, Telnet, SMTP 등 네트워크를 사용하는 응용프로그램으로 이루어진다. 전송 계층(Transport Layer) TCP, UDP 등 시스템을 연결하고 데이터를 전송하는 역할을 한다. 인터넷 계층(Internet Layer) ICMP, IGMP, IP 등 데이터를 정의하고 데이터의 경로를 라우팅한다. 물리 계층(Physical Layer) Ethernet, ATM 등 네트워크 하드웨어를 의미한다. 실행순서 클라이언트로부터 특정 주소로의 요청 DN..
-
OSI 7 계층CS/네트워크 2022. 3. 22. 23:21
OSI Model (Open Systems Interconnection Model) 국제 표준화기구(International Organization for Standardization, IOS)에서 만든 컴퓨터의 통신 기능을 계층 구조로 나눈 모델이다. 특정 네트워킹 시스템에서 일어나는 일을 계층을 활용해 시각적으로 이해가 가능하다. 총 7계층으로 이루어져 있으며(OSI 7계층이라고 불림) 데이터가 네트워크로 나갈 때는 위층부터 , 네트워크에서 데이터를 받을 때는 아래층 부터 들어온다. 물리 계층 (Physical Layer) 전송 케이블이 직접 연결되는 계층 ( 케이블을 통해 전송하는 기능) 전압과 전류의 값을 할당하거나 케이블이나 커넥터의 모양 등 통신 장비의 물리적 전기적 특성을 규정한다. Ex) ..
-
실습 1 문자열 계산기책/자바 웹 프로그래밍 next step 2022. 3. 22. 21:08
실습 1 문자열 계산기 요구사항 쉼표 또는 콜론을 구분자로 가지는 문자열을 전달 받으면 구분자를 기준으로 분리한 각 숫자의 합을 반환한다 ex) "1,2" = 3 , "1,2,3" = 6 ... 공백이 들어오면 0이 반환 되어야 한다 ex) "" = 0 커스텀 구분자를 지정 가능하다(//와\n 사이의 문자) 커스텀 구분자를 기준으로 분리한 각 숫자의 합도 반환 가능해야한다 ex) "//;\n1;2;3" = 6 음수가 입력되는 경우 RuntimeException으로 예외 처리 추가 요구사항 메서드가 한 가지 책임만을 가지도록 한다 인덴트(indent , 들여쓰기) 깊이를 1단계로 유지한다 while 문과 if문을 사용할 경우 인덴트 깊이가 1씩 증가한다 아래 예제는 인덴트가 2다 while (true) {..
-
item 30 이왕이면 제네릭 메서드로 만들어라책/이펙티브 자바 2022. 3. 22. 21:02
ITEM 30 이왕이면 제네릭 메서드로 만들어라 제네릭 메서드 제네릭 메서드 작성법은 제네릭 클래스 작성법과 비슷하다 로 타입을 사용한 메서드 public static Set union(Set s1, Set s2) { Set result = new HashSet(s1); result.addAll(s2); return result; } 위의 메서드를 안전하게 만들려면 타입을 안전하게 만들어야 한다 메서드 선언에서의 입력2개, 리턴1개 이 원소 타입을 타입 매개변수로 명시한다 메서드 내부에서 명시한 타입 매개변수만 사용한다 타입 매개변수 목록은 메서드의 접근제어자와 리턴 타입 사이에 온다 타입 매개변수 목록 : 리턴 타입 : Set public static Set union(Set s1, Set s2) { ..
-
item 29 이왕이면 제네릭 타입으로 만들라책/이펙티브 자바 2022. 3. 21. 14:13
ITEM 29 이왕이면 제네릭 타입으로 만들라 작성하는 코드 내에 Object로 받는 부분이 있다면 제네릭으로 변경이 가능한지 고려해보자 클라이언트에서 직접 형변환을 해주는 타입보다 제네릭 타입이 더 안전하고 사용하기에 편리하다 새로운 타입을 설계 하는 경우에는 형변환을 하지 않고도 사용이 가능하도록 설계하자 형변환을 하지 않고 사용이 가능하게 하려면 제네릭을 사용해야 하는 경우가 많다 작성하는 코드 뿐만 아니라 기존에 존재하던 코드에서도 제네릭 타입으로 변경이 가능한 코드가 있다면 변경하자 제네릭 타입을 사용하면 기존 클라이언트 코드는 아무 영향을 받지 않지만 새로운 사용자는 훨씬 더 편리하게 사용 할 것이다 제네릭 타입을 사용하므로써 확장성 및 유연성이 증대된다 컴파일 단계에서 오류 검증이 가능해져 ..
-
11655 ROT13PS/백준 2022. 3. 19. 22:53
import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String inputVal = buf.readLine(); for (int i = 0; i = 'a' && inputVal.charAt(i) = 'A' && inputVal..
-
2743 단어 길이 재기PS/백준 2022. 3. 19. 22:27
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String s = buf.readLine(); System.out.println(s.length()); } }