WEB/JAVA
내가 보려고 정리하는 JAVA 멀티 스레드 1 - 멀티스레드 개념
멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라고 볼 수 있다. 멀티 스레드는 다양한 곳에서 사용된다. 1. 대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할해서 병렬로 처리하는 곳에서 사용 2. UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해 사용 3. 다수 클라이언트의 요청을 처리하는 서버를 개발할 때 - 메인 스레드 메인 스레드가 작업 스레드보다 먼저 종료되더라도 작업 스레드가 계속 실행 중이면 프로세스는 종료되지 않는다. - 작업 스레드 몇 개의 작업을 병렬로 실행할지 결정하고 각 작업별로 스레드를 생성한다. (작업1) (작업2) (프로그램에서 병렬로 실행할 작업을 결정) -> 메인스레드 스레드1 스레드2 Thread클..
객체 지향 프로그래밍 - 객체, 캡슐화
인프런 객체 지향 프로그래밍 입문 - 최범균를 공부하며 적은필기 노트입니다. 직접 실전에서 Java를 쓰게 되면서 객체 지향 프로그래밍에 중요성이 뼈를 강타했다... 공부하자! "Software maintenance is not keep it working like before it is keep being useful in a changing world" - Jessica Kerr 유지보수는 그대로를 관리하는 것이 아니라 유용하게 변경하는 것이다. 그러므로 분석과 수정이 빠르게 되어야 한다. 비용과 변화 낮은 비용으로 변화할 수 있어야 한다. 1. 패러다임 객체 지향, 함수형, 리액티브 등 2. 코드, 설계, 아키텍처 DRY, TDD, SOLID, DDD, ... 클린 아키텍처, MSA, ... 3. ..
Enum Type 사용하기
이번에 스타트업에 취업하면서 많은 걸 배우는 동시에 많은 게 싫어졌다. 하지만 버티고 나면 추억이고 나의 경력이 되겠지 ... ㅠ 꿻 우선 처음 프로젝트를 들어가서 처음으로 사용해 봤다. 학원에서 많이 사용하지 않는다고 배웠지만 이번에 사용하면서 가독성면에서 매우 좋다고 느꼈기 때문에 나중을 위해 정리한다! Spring Boot 에서 api 설계 중 배송 기능을 만들면서 배송상태 관리를 하는데 1,2,3... 등 숫자로 표현되어 1이 무엇인지 2가 무엇인지 일일이 찾아보기 번거로웠다. 또한 코드 리뷰 때 어떤 건지 헷갈릴 거 같아 Enum타입을 사용하기로 했다. @Getter public enum SomethingStatus { PAYMENT_COMPLETE(0), PREPARING(1), CANCEL(..
[JAVA] 의 데이터 타입의 분류
기본타입 / 참조타입 으로 나뉩니다. (immutable / mutable) 기본타입은 정수, 실수, 문자, 논리 리터럴을 저장하는 타입입니다. 종류 기본타입 메모리 기본값 정수 byte 8bit 1byte 0 char 16bit 2byte 유니코드(\u0000), ASCII, 문자형 short 16bit (2byte) 0 int 32bit (4byte) 0 long 64bit (8byte) 0 실수 (부동 소수점) float 32bit (4byte) 0.0F double 8bit (1byte) 0.0 논리 boolean 8bit (1byte) false 메모리에는 0과 1을 저장하는 최소 기억 단위인 bit가 있습니다. 이 bit 8개를 묶으면 byte가 됩니다. 이 byte가 클수록 표현하는 값으 범..
Java Enum이란?
Enum을 통해 얻는 기본적인 장점 문자열과 비교해, IDE의 지원을 받을 수 있다. 자동완성, 오타검증, 텍스트 리팩토링 등 허용 가능한 갑들을 제한할 수 있다. 리팩토링시 변경 범위가 최소하 된다. 내용의 추가가 필요해도, Enum코드외에 수정할 필요가 없다. Java Enum인 경우 int값이 아니라 완전한 기능을 가진 클래스이다! 우선 enum타입으로 클래스를 생성해야한다 이제 상수를 선언하면 되는데, 관례적으로 모두 대문자로 작성한다. Entity클래스에 선언해주기 위해서 String이 아닌 enum을 선언한다. JPA를 사용하므로 @Enumerated(EnumType.SPRING)을 선언하면 Enum필드가 테이블에 저장시 숫자형이 아닌, Enum의 이름이 저장된다. 여기서는 GUEST,USER..
람다식 (stream,map,collect)
//postRepository에서 넘어온 결과를 postsRepository.findAllDesc().stream() //Stream을 통해 map으로 new PostsListResponseDto 에 매핑 해준다. //PostsListResponseDto에서는 파라미터로 postRepository에서 넘어온 결과 Entity posts를 받고 있으므로 //결과적으로 .map(posts -> new PostsListResponseDto(posts)) .map(PostsListResponseDto::new) //collect를 사용해서 List로 변환한다. .collect(Collectors.toList()); stream이라는 게 있는 것 조차 몰라서 공부하면서 혼란스러웠다 람다식을 배운 적이 없으니. ㅠ..