자바/기타
-
[JAVA] WebSocket자바/기타 2021. 3. 22. 10:03
WebSocket 웹 브라우저(클라이언트)와 서버간의 full-duplex(양방향), bi-directional(전이중적인), persistent conntection(지속적인 연결)의 특징을 갖는 프로토콜 웹 브라우저 환경에서 TCP 통신처럼 연결 지향 프로토콜이 필요하게 됨에 따라 탄생 WebSocket vs TCP WebSocket은 연결 요청에 대해 http를 통해 switching 및 handshaking이 이루어진다. TCP는 Binary 데이터만 주고 받을 수 있지만, WebSocket은 Binary 데이터뿐만 아니라 Text 데이터를 주고 받을 수 있다. Spring에서 WebSocket 구현 방법 WebSocket 데이터를 직접 처리 웹 소켓 핸들러를 직접 상속받아 low level 수준..
-
[UML] 유스케이스 다이어그램자바/기타 2021. 2. 2. 15:12
유튜브 : 전병선 IT 아카데미 - UML 에센스 - 모듈9. 유스케이스 다이어그램 내용 정리 개요 시스템의 행위를 모델링하며 시스템의 요구사항을 표현 시스템의 상위 레벨 기능과 범위를 기술 요소 주제 (subject) 구축해야 할 시스템의 부분 시스템 영역 (system boundary) 시스템을 사용하는 사람/사물, 즉 액터(actor)와 시스템이 액터에게 제공하는 이점 즉, 유스케이스(usecase)로 정의된다. 액터 : 시스템 영역 외부 유스케이스 : 시스템 영역 내부 액터 (actor) 시스템 외부에서 시스템과 상호작용하는 사람이나 시스템 액터는 외부 시스템이나, 조직, 장치 일 수 있다. 시스템을 사용하는 사람인 것만은 아니다. 액터가 사람인 경우 그 사람이 시스템과 상호작용하는 역할(role..
-
[JAVA] 멀티 모듈 프로젝트 구성자바/기타 2020. 9. 21. 20:25
이번 시간에는 gradle을 이용해서 멀티 모듈 프로젝트를 구성하는 방법에 대해서 알아보도록 하겠습니다. 이번 시간에 테스트해볼 멀티 모듈의 구조는 아래와 같다. spring-boot-guides : 최상단 프로젝트 application : main 클래스를 통해 실행되는 application 관련 모듈들을 담고 있는 폴더,독립적으로 실행 가능하다. spring-boot-common-super-application : 실행 가능한 프로젝트 모듈 common : 여러 모듈에서 import해서 사용할 수 있는 모듈들을 담고 있는 폴더,독립적으로 실행 할 수 없다. system-core : 공통 로직을 담고 있는 라이브러리 모듈 가장 먼저 IntelliJ에서 New - Project에서 Gradle 프로젝트를..
-
[IntelliJ] 단축키 정리자바/기타 2020. 9. 11. 22:37
keymap : macOS 동작 단축키 상세 Preferences(설정) 창 열기 Cmd + , Project Structure 창 열기 Cmd + ; 구동 종료 Cmd + F2 줄번호 이동 Cmd + L 최근 열어본 파일 리스트 Cmd + E 새 파일 생성 Cmd + N 이름 변경 Shfit + F6 파일 이름 변경 참조되는 모든 변수명 변경 오류로 이동 F2 현재 열려져 있는 파일에서 오류로 이동 참조하지 않는 import 삭제 Ctrl + Opt + O 자동 정렬 Opt + Cmd + L 변수명 자동 생성 Opt + Cmd + V 함수 리팩토링 Opt + Cmd + M 재사용 가능 로직을 함수로 추가 파라미터 리팩토링 Opt + Cmd + P 함수에서 사용되는 상수를 함수의 파라미터로 추가 인라인 ..
-
[JAVA] CommonUtil 클래스자바/기타 2020. 9. 9. 01:45
public class CommonUtil { // 매개변수 객체 empty를 체크하는 함수 public static boolean isEmpty(Object obj) { if (obj == null) { return true; } if ((obj instanceof String) && (((String)obj).trim().length() == 0)) { return true; } if (obj instanceof Map) { return ((Map)obj).isEmpty(); } if (obj instanceof List) { return ((List)obj).isEmpty(); } if (obj instanceof Object[]) { return (((Object[])obj).length == 0..