Java

Database/데이터 접근 기술

[Java, Spring] 트랜잭션을 적용하는 여러 가지 방법

[JDBC] 트랜잭션 적용 - Connection 직접 이용 JDBC 코드를 직접 짤 때 트랜잭션을 이용하는 방법이다. 비즈니스 로직을 실행할 때, 하나의 커넥션 내에서 동작해야 하므로 메서드 사용 시 connection을 파라미터로 넘겨야 한다. 따라서 서비스 계층, 데이터접근 계층에 모두 Connection을 파라미터로 받아서 이용해야 한다. public void loadLotsOfData(DataList dataList) { String sql = "insert into table values ( /* ... */)"; Connection conn = null; PreparedStatement pstmt = null; try { conn = getConnection(); pstmt = conn.pr..

기타/Tech Interview

백엔드 개발자 면접 질문 모음 (답변 없음)

이번 게시글은 면접 예상 질문과 저라면 어떻게 대답할지에 대해 적어봤습니다. 각자 아래 질문에 어떻게 대답할지 생각해 보시면 좋을 것 같습니다. "접은 글"로 제 기준 대답 키워드를 적어놨는데, 피드백이나 의견 댓글로 남겨주시면 감사하겠습니다, [기술 관련] 💡 Java/Spring Boot/JPA를 활용한 REST API 서버 개발 경험 ⬇️키워드 더보기 REST 방식으로 URL로 자원 명시, HTTP Method로 처리 방법을 지정 SpringBoot의 Spring MVC 구조, 레이어드 아키텍처 이용 Controller 단에서 클라이언트 요청 처리 Service 단에서 비즈니스 로직 처리 데이터 접근 계층은 Spring data JPA를 이용하여 JpaRespository 인터페이스를 사용 💡 RD..

JAVA/JAVA 이론

[Java] equals()와 hashCode() / equals와 hashCode를 둘 다 재정의 해야하는 이유

Java의 모든 객체는 Object 클래스를 상속받고 있다. Object 클래스는 객체의 동일성을 비교하기 위한 equals와 hashCode 메서드가 정의되어 있다. 따라서 Java의 모든 객체는 필요에 따라 equals와 hashCode를 재정의할 수 있다. equals() equals()는 두 객체의 값이 같은지 여부를 비교할 때 사용하는 메서드이다. 객체를 비교할 때 기본적으로 객체의 주소를 비교한다. public static void main(String[] args) { Car car1 = new Car(1111, "blue"); Car car2 = new Car(1111, "blue"); System.out.println(car1 == car2); //두 객체는 주소가 다르기 때문에 fals..

기타/Tech Interview

백엔드 개발자 기술 면접 정리 - Java, 객체 지향

Java, 객체 지향 관련 질문 모음입니다. 자세한 내용은 추가로 검색을 해보셔서, 본인의 언어로 정리하시길 추천드립니다. 이 글 역시 제 생각과 언어에 맞게 정리하였고, 틀린 부분이 있을 수 있으니 댓글로 지적해 주시면 감사하겠습니다! [ 객체 지향 ] 💡OOP(객체지향 프로그래밍)의 특징 객체 지향의 특징은 크게 4가지가 있습니다. ⬇️객체지향의 4가지 특징 더보기 캡슐화 객체가 역할을 수행하기 위한 정보와 기능을 하나로 묶어서 데이터를 외부로부터 보호하는 것을 말합니다. - 클라이언트에게는 인터페이스만 제공을 해서 필요한 정보만 노출을 하고, 실제 구현 정보는 숨겨서 기능만 사용할 수 있게 합니다. - 필드는 private으로 접근을 막고, 메서드를 public으로 열어서 캡슐화를 사용합니다. 추상..

Computer Science/프로그래밍 이론

[Computer Science/디자인 패턴] 전략 패턴(strategy pattern)

전략 패턴(strategy pattern) 전략 패턴은 정책 패턴(policy pattern)이라고도 하며, 객체의 행위를 바꾸고 싶은 경우에 직접 수정하지 않고 "전략"이라고 부르는 "캡슐화된 알고리즘"을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 비즈니스 로직을 인터페이스로 만들고, 해당 인터페이스를 구현한 클래스를 사용하도록 만드는 것이라고 생각하면 된다. 우선 Java 코드를 이용한 기본 예제로 알아보고, 추가로 Spring에서 어떻게 전략 패턴을 사용하는지 알아보자. Java 기본 예제 예제로 알아보자. interface : Payment public interface Payment { void pay(int amount); } 구현체 1 : KakaoCardPayment..

Projects

[Java/Spring] 백엔드 개발 프로젝트 명세서 (Fitness Record)

Github https://github.com/HSRyuuu/FitnessRecord 1. 개요 프로젝트 명: FitnessRecord 개발 기간: 2023.10.18 ~ 2023.11.18 개발 인원: 1명 주요 기능: 운동(웨이트 트레이닝) 기록, 루틴 공유 커뮤니티 서비스 2. Skills Java 11, Spring Boot 2.7.16, gradle 8.2.1 Spring Data JPA, Spring Security MariaDB, Redis JUnit5 IntelliJ Idea 기타 사용 기술 상세 JWT redisson (분산 락, JWT Token 관리) google GSON Gmail smtp 메일 발송 Swagger 3. 요구 사항 1) 인증, 인가 Spring security 이용 ..

Computer Science/프로그래밍 이론

[Spring / 스프링 부트 핵심 가이드] 디자인 패턴 정리

각 디자인 패턴들에 대해 공부하고 정리할 때마다 정리한 글의 링크를 첨부할 예정이다. 디자인 패턴이란? 디자인 패턴은 소프트웨어를 설계할 때 자주 발생하는 문제들을 해결하기 위한 해결책들이다. 상황에 맞는 최적의 디자인 패턴을 결정해서 사용하는 것이 좋다. [ GoF 디자인 패턴 ] 대표적인 디자인 패턴 분류 방식이다. (GoF는 디자인 패턴을 구체화하고 체계화해서 분류한 4명의 인물을 의미한다.) GoF 디자인패턴 분류 방식에 따르면 크게 3가지로 구분된다. 생성 패턴 객체 생성에 사용되는 패턴으로, 객체를 수정해도 호출부가 영향을 받지 않게 한다. 구조 패턴 객체를 조합해서 더 큰 구조를 만드는 패턴이다. 행위 패턴 객체 간의 알고리즘이나 책임 분배에 관한 패턴이다. 객체 하나로는 수행할 수 없는 작..

자료구조_알고리즘/Algorithm

[Algorithm/Java] 카운팅 정렬 (Counting sort)

카운팅 정렬 (Counting sort) 카운팅 정렬은 정렬 시 데이터들의 개수를 세어 카운팅 배열에 저장하고 이후에 하나씩 꺼내오는 방식으로 정렬한다. 특정 조건이 부합할 때만 사용할 수 있지만, 데이터 수가 많더라도 중복된 값이 많이 분포되어 있는 배열을 정렬할 때 효과적이고 빠른 정렬 알고리즘이다. 시간복잡도는 O(N + k)이다. k는 컬렉션(카운팅배열) 내부의 최대 숫자이다. 따라서 최대값이 너무 큰 경우에는 시간복잡도가 매우 커질 수 있다. 카운팅 정렬의 조건 1. 데이터가 양의 정수인 경우 카운팅 정렬은 기본적으로 0~최댓값의 인덱스를 가지는 배열에 데이터 등장 횟수를 카운팅 하는 방식이다. 따라서 양의 정수만 가능하다. 2. 데이터의 크기 범위가 제한 된 경우 위에서 언급했듯이, 최대값이 ..

HSRyuuu
'Java' 태그의 글 목록