본문 바로가기

Study Memos

(206)
[남궁성 '자바의 정석'] 16~30강 ※ 이 글은 남궁성 저자의 '자바의 정석' 16~30강을 수강한 후 정리한 내용입니다. 1. JAVA에서도 C 스타일의 출력이 가능하다. System.out.printf()를 쓰면 C 스타일로 출력이 가능하다. 2. 문자열 비교에는 == 대신 equals()를 사용해야 한다. ex) String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); // true System.out.println(str1.equals(str2)); // true String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1==str2); // false Sys..
[남궁성 '자바의 정석'] 1~15강 ※ 이 글은 남궁성 저자의 '자바의 정석' 1~15강을 수강한 후 정리한 내용입니다. 1. 자바의 버전 자바의 버전은 크게 SE, ME, EE 로 나누어져 있다. SE는 Standard Edition의 약자로 일반적인 프로그래밍을 위해 사용하는 JAVA 버전이다. ME는 Micro Edition의 약자로 모바일, 소형기기 프로그래밍을 위한 JAVA 버전이다. EE는 Enterprise Edition의 약자로 대기업 등에서 규모가 있는 프로그래밍을 위한 JAVA 버전이다. 자바의 주요 버전은 JDK 1.0 -> J2SE 1.2 -> J2SE 5.0 -> Java SE 8 -> ... 과 같이 Major 번호가 3씩 증가한다. 자바는 그동안 안정성을 이유로 버전 출시를 신중히 해왔지만, 타 언어들의 변화 속..
Spring Security 메모 ※ 이 글은 백기선 강사님의 인프런 강좌 '스프링 시큐리티'를 수강하고 개인적으로 남긴 메모입니다. * 스프링 시큐리티는 필터를 이해하고 각 필터를 어떻게 설정하는지가 핵심이다. [ 폼 인증 예제 살펴보기 ] 1. Principal -> 현재 페이지에 요청을 하는 유저 정보를 알 수 있다. [ 스프링 웹 프로젝트 만들기 ] 1. 개발할 땐 chrome의 cognitive tab을 사용하면 세션 유지 등을 하지 않아서 좀 더 편리하다. 2. Controller에서 받는 Principal 파라미터에 로그인한 사용자 정보가 담겨 온다. 로그인이 안되어 있을 경우 null이 담겨 온다. [ 스프링 시큐리티 연동 ] 1. dependency에 spring-boot-starter-security 추가 2. 이전의 ..
Java Coding Convention 1. 문자열은 UTF-8 로 통일 2. 윈도우의 CRLF가 섞이지 않도록 에디터와 GIT 설정 3. import 시 static import 가 아닌 이상 * 말고 패키지 명을 모두 명시 4. Indent는 스페이스 4개가 아닌 하드탭 사용, 에디터에서 스페이스와 탭을 구분하여 보여주도록 설정 5. 최대 줄 너비 120으로 줄바꿈을 강제하여 사용한다. 단, package, import 문은 중간에 바꾸지 않고 한 줄로 쓴다. 6. 줄바꿈 허용 위치 - extends 선언 후 - implements 선언 후 - throws 선언 후 - 시작 소괄호( '(' ) 선언 후 - 콤마(,) 후 - . 전 - 연산자 (+, -, *, / 등) 전 7. import 선언 문의 순서도 별도의 Convention이 존재..
우테캠 Pro 2기 TDD 야구게임 * 이 글은 우아한테크캠프 Pro 2기의 프리코스로 진행된 "야구게임 TDD 구현 영상"을 수강하고 메모한 글입니다. 1. 단축키 활용을 잘하자 1) 테스트 코드를 먼저 짜고 구현 클래스는 단축키로 생성하자. 2) 상수로 뺄 값들도 일일이 static final을 타이핑하지 말고 단축키로 빼자. 2. 되도록 객체가 자기 자신이 아닌 놈의 private 필드를 참조하지 않게 하자. 3. TDD로 진행할 때 문제는 가능한 한!!! 작은 단위로 쪼개라. 쉬워진다. 단순해진다. 야구 게임의 경우 공 하나에 대한 개념까지 단위가 쪼개졌다. 4. enum 도 객체다. 객체 취급할 수 있다. 값을 직접 비교하는 대신 객체간의 메시지를 주고받는 식으로 구현하는 것도 좋은 방법이다. 되도록 객체한테서 직접 값을 꺼내지 ..
HTTP 기본 /* 이 글은 김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 인프런 강좌를 듣고 정리한 글입니다. 강좌 링크> www.inflearn.com/course/http-%EC%9B%B9%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard */ 1. IP 프로토콜의 한계 A. 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 보낸 쪽에서 패킷이 잘 도착했는지 알 수가 없음 B. 비신뢰성: 중간에 패킷이 사라지거나 패킷이 순서대로 안 와도 받는 쪽은 모른다. C. 한 IP를 여러 프로그램이 사용하면 문제가 생긴다. 2. IP의 한계를 TCP, UDP에서 해결해준다. A. TCP (Transmission Control Protocol, 전송 제어 프로토콜) i. 연..
JUnit 5 기본 /* 이 글은 White Ship 님의 '"더 자바, 코드를 테스트하는 다양한 방법" 인프런 강좌를 듣고 정리한 글입니다. 강좌 링크> www.inflearn.com/course/the-java-application-test/dashboard */ [ 1 - JUnit 5 환경 ] A. 세부 모듈로는 Jupiter, Vintage, Junit Platform이 있다. B. 우리가 쓰는 @Test 어노테이션은 Junit Platform의 지원이 있기 때문이다. C. Java 8 이상에서 작동하며 대부분의 기능은 Jupiter 안에 있다. [ 2 - JUnit 5 기본 ] A. 테스트 클래스와 테스트 함수에 굳이 public 키워드를 붙일 필요가 없다. B. @BeforeAll, @AfterAll 어노테이션..
스프링 기본 1. 웹 개발 방법은 1) 정적 컨텐츠, 2) MVC와 템플릿 엔진, 3) API 방식이 있다. 1) 정적 컨텐츠 => resources/static/에 있는 HTML등의 파일을 그대로 클라이언트에게 던져준다. => 동적으로 파일 내용을 변경할 수는 없다. 2) MVC와 템플릿 엔진 => 서버에서 파일을 필요에 따라 변경한 후 클라이언트에게 던져준다. => MVC는 Model, View, Controller 로 구성되어 있다. View는 화면을 그리는데 집중한다. Controller, Model은 Business Logic 관리에 집중한다. => 클라이언트 요청은 Controller에게로 전달되고, Controller가 보낸 요청은 ViewResolver에 의해 특정 View로 전달된다. => 클라이언트..