본문 바로가기

java29

[Java] Optional이란? Optional 활용법 1. NullPointerExceptionnull처리가 취약한 코드예시/* 주문 */public class Order { private Long id; private Date date; private Member member; // getters & setters}/* 회원 */public class Member { private Long id; private String name; private Address address; // getters & setters}/* 주소 */public class Address { private String street; private String city; private String zipcode; // getters & setters}/* 주문을 한 회원이 살고 .. 2023. 8. 26.
플로이드 워셜 알고리즘 1) 개념 - 모든 최단 경로를 구하는 알고리즘 - 다익스트라가 하나의 정점에서 모든 정점까지의 최단거리를 구한다면, 플로이드-워셜 알고리즘은 한번 실행하여 모든 노드간 최단 경로를 구할 수 있다. 다익스트라에 대한 설명은 아래 링크를 통해 확인하자. 2023.07.05 - [Learning-log -CS/Data Structure & Algorithm] - (알고리즘) 다익스트라 (JAVA , for문 활용 & PriorityQueue 활용 방식 비교)\ (알고리즘) 다익스트라 (JAVA , for문 활용 & PriorityQueue 활용 방식 비교) 1) 개념 한 정점(노드)에서 다른 정점(노드)까지의 최단 경로를 구하는 알고리즘 도착 정점 뿐만 아니라 다른 정점까지 최단경로로 방문하여 각 정점까지의.. 2023. 7. 5.
(알고리즘) 다익스트라 (JAVA , for문 활용 & PriorityQueue 활용 방식 비교) 1) 개념 한 정점(노드)에서 다른 정점(노드)까지의 최단 경로를 구하는 알고리즘 도착 정점 뿐만 아니라 다른 정점까지 최단경로로 방문하여 각 정점까지의 최단 경로를 모두 찾을 수 있음 탐욕기법을 사용한 알고리즘으로 MST 프림 알고리즘과 유사 2) 알고리즘 단계 D : 거리 계산을 위한 배열 U : 경로 배열 출발 노드(a)를 선택 후 a와 연결된 정점들에 대해 배열(D) 값을 가중치로 업데이트한다. >> 다른 정점들은 아직 도달할 수 없는 정점이므로 배열 값 무한대인 상태(배열 초기값을 무한대로 설정해두기)이다. D배열 중 거리가 가장 작으면서 U에 없는 정점(b) 선택한다. a에서 b를 경유해서 갈 수 있는 정점 후보를 보고 그 때 가중치 값을 D에 UPDATE(D[b] +a[b][c])하고 D에 .. 2023. 7. 5.
(자료구조 & 알고리즘 정리) 그래프(DFS, BFS) (2023.06.23) 1. 그래프 표현 방식 1) 인접행렬 - 노드의 개수가 N일 때, N*N 행렬(N*N의 2차원 배열)을 만들어 x행과 y행이 연결 되어 있으면 1, 되어 있지 않으면 0을 행렬 값으로 가지도록 표현 - 무방향 그래프 모든 간선이 양 방향으로 이동이 가능한 것이라 간주 x번째 노드와 y번째 노드가 연결되어 있고 그 배열을 adj라 하자 => adj[x][y] = adj[y][x] = 1 행렬은 왼쪽 대각을 기준으로 양쪽이 대칭이 됨 => 대각을 기준으로 양쪽을 모두 사용하지 않고 행 행인 경우 중 하나만 사용해도 됨 - 가중 그래프 행렬의 값을 가중치로 저장 가중치>=0 이라면 간선이 없는 곳의 값을 -1 로 하 - 특징 구현 간단 특정 두 노드가 인접한지 상수시간에 파악 가능 메모리 낭비 심함(정점에 비.. 2023. 6. 23.
[Java] 람다식(Lamda) 개념 및 사용 정리 1. 람다함수 개념 1) 익명함수를 지칭하는 용어(메소드의 이름 필요 없음) 2) 수학에서 사용하는 함수를 보다 단순하게 표현, 함수를 하나의 식으로 표현 3) 함수형 인터페이스의 인스턴스를 생성하여, 함수를 변수처럼 선언 4) 1급 객체 -> Stream API의 매개변수로 전달 가능 2. 람다의 특징 - 람다식 내의 지역변수는 final을 붙이지 않아도 상수로 간주 - 람다식으로 선언된 변수명은 다른 변수명과 중복 불가 - 람다식으로 생성된 순수 함수는 함수형 인터페이스로만 선언 가능 3. 람다의 장단점 1) 장점 - 코드 간결해짐 - 개발자의 의도가 식에 드러나게 되어 가독성이 높아짐 - 함수를 만드는 과정 없이 한번에 처리해 생산성 높아짐 - 병렬 프로그래밍 용이 2) 단점 - 람다를 사용하여 만.. 2023. 6. 20.
(스프링MVC1편-백엔드 웹 개발 핵심 기술) 1-(1) 웹 서버, 웹 애플리케이션 서버, (2) 서블릿 본 게시물은 인프런의 '김영한 - 스프링MVC1편-백엔드 웹 개발 핵심 기술' 강의를 수강하며 기록한 강의노트입니다. 웹 서버, 웹 어플리케이션 서버 HTTP 메시지에 모든 것을 전송 HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML(API) 거의 모든 형태의 데이터 전송 웹 서버(Web Server) HTTP를 기반으로 동작하는 서버 정적 리소스 제공, 기타 부가기능 정적(파일)HTML, CSS, JS, 이미지,영상 ex ) NGINX, APACHE 웹 애플리케이션 서버(WAS) HTTP 기반으로 동작 웹 서버 기능 포함 + 정적 리소스 제공 가능 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC ex. 톰.. 2023. 4. 28.