분류 전체보기 22

about Java 11

java11은 2018년 9월에 공개되었으며. java8, 17과 함께 LTS 버전이다. 23년 기준 Java 11 채택률은 약 38% (출처 : jetbrains) Java 11에 추가된 내용String 클래스에 새로운 메서드 추가컬렉션 인터페이스에 toArray() 메서드 추가Predicate에 not 메서드 추가람다식에 var 변수(지역 변수) 사용 가능 1. String 클래스에 새로운 메서드 추가String s = "";s.strip(); // 문자열 앞, 뒤 공백 제거s.stripLeading(); // 문자열 앞 공백 제거s.stripTrailing(); // 문자열 뒤 공백 제거s.isBlank(); // 문자열이 비어있거나 공백만 포함되어 있을 경우 true 반환 s.trim().isEm..

ORM, JPA, Hibernate 그리고 Spring Data JPA

1. ORM (Object - relational mapping)테이블을 객체 지향적으로 사용하기 위한 기술이며 객체와 DB 테이블이 매핑을 이루는 것을 의미한다.JPA에서 DB 접근 시 직접 쿼리를 만들지 않고 메소드로 호출 하기 때문에 사용하기에 따라 굉장히 편리 할 수 있다. 장점별도의 SQL을 사용하지 않아도 개발이 가능하다.재사용 및 유지보수 편의성을 기대 할 수 있다.DBMS에 대한 종속성이 줄어든다.단점완벽한 ORM으로 서비스를 구현하기에는 한계가 있다.충분한 이해가 없을 경우 문제가 발생 할 수 있고 해결이 힘들 수 있다. 2. JPA (Java Persistent API)자바 진영에서 정리한 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 즉, 기술명세인 것이다.JPA를 사용..

JAVA의 Wrapper Class와 Boxing & UnBoxing

래퍼 클래스(Wrapper Class) 프로그래밍을 하다 보면 기본형 타입을 객체로 다뤄야 할 때가 있다.이 때 사용하는 클래스들을 래퍼 클래스라고 부르며, 아래 표와 같이 구분된다. 기본형(primitive type)래퍼 클래스(wrapper class)byteBytecharCharacterintIntergerfloatFloatdoubleDoublebooleanBooleanlongLongshortShort Boxing & UnBoxingBoxing : 기본 타입의 데이터 -> 래퍼 클래스의 인스턴스로 변환 하는 과정UnBoxing : 래퍼 클래스의 인스턴스에 저장 된 값 -> 기본 타입의 데이터로 변환하는 과정 AutoBoxing & AutoUnBoxingjdk 1.5부터 박싱&언박싱이 필요 한 상황에..

JAVA 변수의 기본형 & 참조형 정리

변수(variable)는 데이터를 저장하기 위해 프로그램에 의해 이름을 할당 받은 메모리 공간을 의미한다.또한 데이터 타입(자료형)이란, 변수에 적재할 데이터가 메모리에 어떻게 저장되고 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 키워드이다. 데이터 타입은 아래 2가지로 나뉜다.기본형(primitive type) : 계산을 위해 실제 값을 저장참조형(reference type) : 객체의 주소를 저장한다. (null or 객체의 주소)기본형 타입종류booleancharbyteshortintlongfloatdouble 특징비객체 타입이므로 null 값을 가질 수 없다.변수의 선언과 동시에 메모리에 생성모든 값 타입은 메모리의 stack에 저장저장공간에 실제 자료 값을 가진다 참조형 타입기본형..

[OS] 프로세스(Process)와 스레드(Thread)

프로세스(Process)와 스레드(Thread) 프로세스(Process) : 운영체제로부터 할당 받은 작업의 단위스레드(Thread) : 프로세스가 받은 자원을 이용하는 실행 흐름의 단위쉽게 말하면 프로세스 안에 스레드가 있는 것이다. 프로세스는 최소 1개 이상의 스레드를 보유하게 되며, 프로세스는 별도의 주소 공간을 독립적으로 받는다.스레드는 이 중 stack 영역을 따로 받게 되고 나머지 부분은 공유하게 된다. 자주 사용하는 크롬 브라우저를 실행하면 프로세스 하나가 생성된다.여러 개의 탭을 생성하면 각각의 탭이 하나의 스레드인 것이다.프로세스 자원 구조 code 영역 : 프로그래머가 작성한 프로그램 함수들의 코드가 기계어의 형태로 저장 되어 있다.data 영역 : 코드 실행 시 사용하는 전역 변수나 ..

간단이론정리 2024.06.12

Filter, Interceptor 그리고 AOP

1. 서버를 실행시켜 서블릿이 올라오는 동안에 init이 실행되고, 그 후 doFilter가 실행된다. 2. 컨트롤러에 들어가기 전 preHandler가 실행된다.3. 컨트롤러에서 나와 postHandler, after Completion, doFilter 순으로 진행이 된다.4. 서블릿 종료 시 destroy가 실행된다.1. Filter필터는 주로 스프링 영역 밖에서 처리된다.인증이나 권한 체크에 많이 쓰이며 모든 요청에 대한 로깅이나 검사나 이미지/데이터 압축 및 문자열 인코딩에서도 사용하게 된다. 사용하기 위해선 javax.servlet의 Filter 인터페이스를 구현하면 된다.init(FilterConfig filterconfig) : 필터 객체를 초기화 하여 서비스에 추가하기 위한 메소드. 웹 ..

간단이론정리 2024.06.12

트랜잭션 격리수준(Isolation Level)

이번에는 트랜잭션 격리수준을 간단하게 정리해보고자 한다. 1. 정의동시에 여러 트랜잭션이 처리 될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할 지 여부를 결정하는 것을 말한다. 2. 단계MySQL 기준으로 가장 높은 격리 수준 순서대로 보면 아래와 같다.MySQL의 기본 격리 수준은 'Repeatable Read'이다.SerializableRepeatable ReadCommitted ReadUncommitted Read ※ 언두 영역- UPDATE 문이나 DELETE 문으로 데이터 변경 시 이전 데이터를 보관 하는 영역트랜잭션의 롤백 대비트랜잭션의 격리 수준 유지하며 동시성 제공 2.1 Serializable가장 고수준의 격리 수준이다.여러 트랜잭션이 동일한 레..

간단이론정리 2024.06.11

about Java 8

Java 8은 2014년 3월에 공개되었다. 3가지의 LTS(Long Term Support) 버전 중 하나이다.Java 8Java 11Java 17LTS 버전은 말 그대로 오랜 기간 지원을 해주기 때문에 실제 개발 시 사용하기에 용이하다. 23년 기준 Java 8 채택률은 약 50% (출처 : jetbrains) 일반 지원은 2019년 종료 되었지만, 연장 지원은 2023년 9월까지 였다. 여전히 많이 사용되어지고 있는 Java 8의 특징을 보려고 한다.Java 8에 추가 된 내용람다 표현식(Lambda Expression)메서드 참조(Method Reference)Interface의 Default MethodOptionalStream새로운 시간/날짜 API 1. 람다 표현식 (Lambda Expres..

Inversion of Control, 제어의 역전

IoC는 주로 면접에서 많이 묻는 내용이 아닐까. DI(Dependency Injection, 의존성 주입)와 함께 말이다.두 가지 내용을 가볍게 정리하여 살펴보고자 한다. 1. IoC- 기존 개발 방식에서 개발자가 직접 흐름을 제어하지 않고 프레임워크or라이브러리가 대신 제어 하는 것.public class Coffee { private Americano americano; public Coffee() { americano = new Americano(); }}커피 클래스는 아메리카노를 필드로 갖고 생성자 내부에서 직접 생성하여 초기화 한다.개발자가 직접 관리하는 것이다.public class Coffee { @Autowired private Americano americ..

HTTP Method 정리하기

웹과 관련된 개발자라면 HTTP Method에서 벗어 날 수 없다.개발 경력 내내 함께하는 동반자라고 봐도 문제가 없지 않을까.그렇다면 각 메소드에 대해 아주 간단히 정리하자. 주요 5가지 메소드GET데이터를 조회POST데이터를 서버에 전송하여 처리를 요청한다. 주로 등록에 사용.PUT리소스를 덮어쓴다. 없을 경우에는 새로 등록된다.PATCH리소스의 일부를 변경 한다.DELETE글자 그대로 삭제  1. GET필요한 데이터를 조회하는데에 사용한다.요청 시 데이터를 추가적으로 전달하게 될 경우 일반적으로 Body에 값을 넣는 것이 아닌, 쿼리 파라미터로 데이터를 전달한다. 회원번호 1번인 회원을 조회 할 경우/member/1회원 목록을 조회 할 경우/members 2. POST데이터를 서버에 보내며 해당 데..

간단이론정리 2024.05.25