일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링 회원가입 인증
- OpenAI
- 위키 꾸미기
- ssh
- aws ec2
- 위키 탭
- Spring
- 자바
- 문자 인증
- 셀레니움
- 개발자 디자인
- Java
- 잘하고싶다..
- 인턴
- 스프링
- 현장실습
- 정렬 기준
- 스터디 관리
- DNS동작원리
- 스트림
- nurigo
- 현장실습 IT
- excalidraw
- 사이드 프로젝트
- 숭실대
- 프로그래머스
- Executors
- 값 객체
- REST
- NAVER D2
- Today
- Total
목록Java (9)
뭐요
Value Object도메인에서 한 개, 또는 그 이상의 속성들을 묶어서 특정 값을 나타내는 객체도메인 객체의 부분집합기본 키로 식별값을 갖는 Entity와 구분해서 사용 왜 구분하는가?Entity에서 충분히 원시(primitive) 타입만 가지고 속성을 만들 수 있다.하지만 원시타입을 갖는 속성은 그 자체만으로 제약사항을 추가할 수 없고, 비슷한 속성끼리 묶을 수 없기 때문에 지나치게 속성을 많이 갖을 수 있다.가령 User 객체에 나이를 나타내는 age라는 속성이 있다고 해보자.간단하게 private int age; 라고 표현할 수 있지만 int는 음수도 포함할 수 있는데 실제 나이는 음수 값을 갖지 못한다. 이러한 경우 제약사항을 추가해서 실제 나이가 갖는 특징을 VO로 만들어 제약사항을 추가할 수..

Concurrency API Summary기존에 병렬 처리를 하기 위해서는 Thread 클래스 혹은 Runnable 인터페이스를 직접 사용해야 했습니다. 하지만 자바 5부터 새롭게 추가된 Concurrency API를 통해 기존의 한계점을 극복합니다.작업을 실행하기 위해 Executor 인터페이스를 제공합니다.쓰레드 풀, 큐 등 다양한 Executor 구현체를 제공합니다. 예시로 설명하는 기존 방식의 한계점 (Thread, Runnable)웹 서버는 여러 사용자의 요청을 동시에 처리해야 하므로 다음과 같은 형태의 코드를 지닐 것입니다.try (ServerSocket listenSocket = new ServerSocket(port)) { Socket connection; while ((connection..
isEmpty()문자열의 길이가 0이면 true isBlank()문자열의 길이가 0이거나 공백으로만 이루어져있으면 true String 객체가 null 값인 상태에서 위 메소드 호출 시 NPE 발생
정적 팩토리 메소드 (static factory method)란?정적 팩토리 메소드를 사용하면 객체를 생성하기 위해 직접 new 키워드를 사용하여 생성자를 호출하지 않습니다.기존의 public 생성자는 접근 지정자를 private으로 바꾸어 외부에 감추고, static method를 사용해서 간접적으로 생성자를 호출해 객체를 생성하는 것이 정적 팩토리 메소드 입니다. 아래 코드는 Boolean class에서 사용한 정적 팩토리 메소드 입니다.public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } 왜 사용할까?‘이펙티브 자바’에서 가장 첫 번째 챕터는 다음과 같다.생성자 대신 정적 팩토리 메서드를 고려하라 1...

Stream실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름자바에서는 파일, 시스템 입출력을 직접 다루지 않고 스트림이라는 흐름을 통해 다룹니다. 따라서 프로그램과 외부 시스템 사이의 중간 매개자라고 할 수 있습니다.한 방향으로만 통신이 가능합니다. 따라서 입력 스트림과 출력 스트림으로 나눌 수 있습니다.java.io 패키지에서 입력 스트림과 출력 스트림 클래스를 별도로 제공합니다. 출처 : https://hudi.blog/java-inputstream-outputstream/ 자바의 Streamjava.io 패키지에서 다양한 출력 스트림을 제공합니다.크게 바이트 단위의 입출력 스트림과 문자 단위의 입출력 스트림으로 나눌 수 있습니다. 바이트 단위문자, 그림, 영상 등 다양한 형태의 데이터를 주고 받..
What is the ‘Stream’ ?‘데이터의 흐름’ 으로 해석할 수 있는 스트림(Stream)은 자바 8에서 추가 되었습니다.일반적으로 배열과 컬렉션은 for 혹은 foreach를 통해 요소를 하나씩 꺼내는데, 스트림을 활용하며 보다 간결하게 코드를 작성할 수 있게 되었습니다. 이후에 알아보겠지만 간결한 코드 작성 외에도 병렬 처리가 가능합니다. Stream Class특징1. 원본의 데이터 변경 X기존에 컬렉션을 정렬하는 방식과 Stream을 이용하여 정렬하는 방식입니다. 전자의 경우는 원본 데이터 자체가 바뀌지만 후자는 그렇지 않습니다.// 기존의 방식 List list = Arrays.asList(4, 6, 2, 3); Collections.sort(list); System.out.println..
왜 알아야 하는가?다음은 Java Documentation에 나와있는 Exception의 정의입니다.💡An exception is an event that occurs during the execution of a program that disrupts the normal flow of instructions.위 정의에서 알 수 있듯이, 런타임에서 비정상적으로 흘러갈 수 있는 부분에 대해 Exception 처리를 해주어야 합니다.코드를 작성할 때 예외 상황에 대해서 적절히 처리를 해주는 것은 중요합니다. 자바에서는 이러한 예외 처리를 해주기 위해 Exception이라는 Class가 존재합니다. Exception의 계층구조[사진 1][사진 2] Exception Class는 Throwable을 상속받고, ..

프록시(Proxy) 란? 💡 proxy : 대리 (행위), 대리권, 대리 투표 프록시 패턴 충분히 프록시의 뜻에서 유추해볼 수 있습니다. 프록시 패턴을 사용한다는 것은 내가 해야할 일을 프록시에게 맡겨 대신 수행하도록 하는 것입니다. 좀 더 프로그래밍 관점에서 살펴보면 인터페이스를 하나 두어 실제 서비스를 수행할 클래스와 프록시 클래스 두 개로 나눠 구현합니다. 이후 프록시 클래스에서는 실제 서비스를 수행할 클래스의 객체를 갖고 실제 수행할 서비스의 로직을 수행하도록 합니다. 이러한 형태를 띄고 있기 때문에, 본래 수행되어야 하는 서비스에 대해서는 결과 값이 달라지지 않습니다. 단지 흐름제어만 바꾸는 것입니다. 프록시 패턴의 형태를 요약하면 다음과 같습니다. 대리자 (프록시)는 실제 서비스와 같은 이름의..
Java 비동기처리 왜 알아보았는가? 운영체제 수업 들으면서 교수님이 면접 때 많이 물어보는 3개가 다음과 같다고 함. 비동기 처리 인공지능 메타버스 방학을 이용해서 Java 비동기 처리에 대해 공부해보려고 한다. (빠른 시일 내로 리눅스&스프링도 비동기처리 해볼 것) 비동기처리를 공부하기에 앞서, 시험 끝나고 종강하니까 하고싶은 공부할 수 있어서 너무 행복하다. ㅋ.ㅋ 또한, 크롤링을 통한 LMS 연동 학업관리서비스 프로젝트를 진행하면서 성능 문제의 이슈 때문에 비동기 처리의 절실함을 느꼈다. 단지 막연하게 순서가 보장되지 않아도 되기 때문에 비동기 처리를 이용하면 되지 않을까? 했지만 개념적으로 잘 이해하고 있다면 추후에 비슷한 이슈가 발생했을 때 빠르게 정답의 길로 나아갈 수 있을 것이다. 개요 S..