Back-end (90) 썸네일형 리스트형 [Java] String, StringBuilder, StringBuffer 각각의 차이 String은 불변입니다. new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않음 (Immutable) 문자열 연산 시 새로 객체를 생성하여 오버헤드 발생 시킴 불변이므로 동기화 신경 쓰지 않아도 되어 멀티 스레드 환경 사용 가능 Garbage Collector로 제거되어야 함. StringBuilder와 StringBuffer는 이런 String의 특징 때문에 사용하는 가변 타입이라고 볼 수 있습니다. StringBuilder와 StringBuffer는 Thread-safe 여부의 차이가 있습니다. StringBuilder는 비동기로 Thread-safe 하지 않습니다. StringBuffer 는 동기로 Multi-Thread 환경에서 사용할 때는 를 사용합니다. new 연산으로 클래스를 한 .. [Java] Java 8에서 추가된 기능 Java 8에서는 Lambda식, Stream API, Optional, 날짜 시간 API, StringJoiner 등이 추가되었습니다. Lambda는 함수형 프로그래밍을 지원 Stream API는 고차함수를 지원 Optional은 Null-safety를 제공하며, Stream과 사용법이 유사 날짜 시간 APi는 Joda-time 등의 라이브러리에서 영향을 받아 괜찮은 API 되었음 StringJoiner는 문자열을 간단하게 구분자로 합칠 수 있는 기능 제공 [Java] 동일성(identity)와 동등성(equality) (equals(), ==) 동일성(identity)은 객체의 주소를 비교하는 것이고, (==) 동등성(equality)은 객체의 같음을 비교하는 것입니다. (equals) 기본적으로 자바에서는 Object 클래스에 정의된 equals() 메소드가 동일성 비교를 합니다. 따라서, 개발자는 원한다면 equals() 메서드를 오버라이딩해서 동등성의 판단 기준을 정의해주면 됩니다. [JPA] JPA란? JPA JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준 JPA가 제공하는 API를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 됨 JPA가 개발자 대신 적절한 SQL을 생성하여 DB에 전달하고, 객체를 자동으로 Mapping 해줌 JPA는 내부적으로 JDBC API를 활용하는데, 개발자가 직접 JDBC API를 활용하면 패러다임 불일치, SQL 의존성 등으로 인해 효율성이 떨어짐 이 때, JPA를 활용한다면 모든 SQL에 대해 개발자 대신 JPA가 자동으로 해결해 준다는 점에서 생산성을 크게 높임 ORM ORM(Object-Relational Mapping)은 객체와 관계형 DB를 매핑한다는 뜻 ORM 프레임워크를 사용하면 객체를 마치.. [Database] Join이란? Join은 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법으로 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여주는 것입니다. 기본 사용 방법 두 개의 테이블에 하나라도 같은 컬럼이 있어야 함 두 컬럼의 값은 공유 되어야 함 보통 조인을 위해 기본키(Primary Key)와 외래키(Foreign Key)를 활용함 [Database] 정규화란? 정규화는 데이터의 중복 방지, 무결성을 충족 시키기 위해 데이터베이스를 설계하는 것을 의미합니다. 제1정규형: 모든 속성 값이 원자값을 갖도록 분해한다. 제2정규형: 제1정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속이도록 분해한다. 제3정규형: 제2정규형을 만족하고, 기본키가 아닌 속성이 기본키에 직접 종속하도록 분해한다. BCNF 정규형: 제3정규형을 만족하고, 함수 종속성 X->Y가 성립할 때 모든 결정자 X가 후보키가 되도록 분해한다. [Database] 트랜잭션 격리 수준(Transaction Isolation Levels) 트랜잭션 격리 수준은 고립도와 성능의 트레이드 오프를 조절합니다. Read Uncommitted: 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있음 Read Committed: 다른 트랜잭션에서 커밋된 내용만 참조할 수 있음 Repeatable Read: 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있음 Serializable: 트랜잭션에 진입하면 락을 걸어 다른 트랜잭션이 접근하지 못하게 함 (성능이 매우 떨어짐) [Database] 트랜잭션 ACID ACID는 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질입니다. Atomicity(원자성): 트랜잭션의 연산은 모든 연산이 완벽하게 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션은 실패해야 합니다. Consistency(일관성): 트랜잭션을 수행하기 전이나 후나 데이터베이스는 항상 일관된 상태를 유지해야 합니다. Isolation(고립성): 트랜잭션은 동시에 실행될 경우 다른 트랜잭션에 의해 영향을 받지 않고 독립적으로 실행되어야 합니다. Durability(내구성): 트랜잭션이 커밋된 이후에는 시스템 오류가 발생하더라도 커밋된 상태로 유지되는 것을 보장해야 합니다. 수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야 합니다. 이전 1 ··· 5 6 7 8 9 10 11 12 다음