대부분 제네릭에 대해 잘 알고 있다고 시작하는 포스팅이니 잘 모른다면 기본을 공부해보고 오는 것을 추천한다. https://blog.naver.com/ilgolc/222552815030 Java_Week14 Generics 란? 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크... blog.naver.com 제네릭 기초에 관한 내용들이 포스팅 되어 있으니 한 번 보고 이 글을 읽기를 바란다. 제네릭은 자바 5 부터 나온 문법으로 기본적으로 컬렉션에서 많이 볼 수 있었을 것이다. 제네릭은 다음 처럼 사용할 수 있다. List list = new ArrayList(); // 뒤에 선언 부에는 생략이 가능 그럼 바로 시작해보자. 로 타입 보다 Generic 제네릭을 사용..
Spring boot를 처음 설정해놓으면 Application 클래스에 @SpringBootApplication이라는 어노테이션을 볼 수 있다. 그리고 그 안에는 여러가지 주석이 존재한다. @SpringBootConfiguration과 @EnableAutoConfiguration 그리고 @ComponentScan이 존재한다. @EnableAutoConfiguration 이 주석은 AutoConfiguration을 쓰겠다는 것을 의미한다. AutoConfiguration은 해석하면 자동 설정이라는 뜻으로 다음과 같은 Spring.factory에 저장되어 있는 정보들을 가지고 자동으로 스프링 빈으로 등록해준다. 그렇기 때문에 우린 별다른 설정 없이 스프링을 자유롭게 사용할 수 있다. 생각을 해보면 Sprin..
HashTable은 컬렉션 프레임워크가 만들어지기 전에 존재하던 것이다. 하지만 호환을 위해 설계를 변경해서 남겨 두었다. 사용한다면 말리진 않겠지만 추천하진 않는다.(HashMap or ConcurrentHashMap) 사용 권장 HashTable은 이름 그대로 해시 테이블을 구현한 클래스로 거의 HashMap과 사용법이 동일하다. public class HashTableEx { public static void main(String[] args) { Hashtable hashtable = new Hashtable(); hashtable.put("1", "kim1"); hashtable.put("2", "kim2"); hashtable.put("2", "kim3"); hashtable.put("3", ..
객체지향 생활 체조 원칙에는 9가지의 원칙이 존재한다. 그 중에 규칙 8을 인용해보면 다음과 같은 규칙이 존재한다. 규칙8. 일급 컬렉션을 사용하라 이 규칙의 적용은 간단하다. 컬렉션을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다. 컬렉션은 매우 유용한 원시타입이다. 많은 동작이 있지만 후임 프로그래머나 유지보수 담당자에 의미적 의도나 단초는 거의 없다. 간단하게 먼저 일급 컬렉션을 보여드리자면 다음과 같다. List list = new ArrayList(); list.add(3); list.add(4); list.add(6); list.add(1); 위 코드를 객체로 한번 감싸 주는 것이다. public class PeopleQueue { private List peoples; public P..
우리는 종종 Key - Value 구조의 HashMap을 사용한다. HashMap은 Key 중복이 없어 중복을 거르고 Key 값으로 빠르게 값을 찾아오기에 조회하는데에 이 점이 있다. 필자는 본 내용을 Map에 대한 사전 지식에 대해 다 갖고 있다는 전제하에 글을 써볼까 한다. HashMap이 중복 key를 걸러낼 수 있는 이유 자바는 모든 객체마다 고유한 hashcode를 갖는다. 이 hashcode는 해싱 알고리즘을 이용하여 만들어낸 코드로 내부 구현은 객체의 주소를 이용하여 만들어진다. public class HashEx1 { public static void main(String[] args) { String str1 = "hello"; String str2 = "world"; System.out..
우리는 Wrapper Class에 대해 알 필요가 있다. 스터디 취지에 맞게 기본적인 설명은 빼도록 하겠다. 자 그러면 Wrapper Class를 사용하면서 얻는 이점이 무엇일지 생각해보자. 무의미한 값을 명확하게 표시할 수 있다. @Id @GeneratedValue @Column(name = "user_id") private Long id; 위 코드는 고유 식별 값을 저장 하기위한 Entity 객체의 멤버 변수이다. 우리는 보통 id를 Long으로 선언하는데 이유는 간단하다. null이 담길 수 있기 때문이다. 기본형 타입은 null을 담을 수 없어 default가 0이라는 의미 있는 값이 담기게 된다. 그렇기에 개발자의 실수로 값이 안들어 가더라도 0이라는 의미가 있는 리터럴 변수가 들어가기에 아무런..
저번에는 성능 향상과 Stream에 동작 순서에 대해 알아보았다면 이제는 Optional에 대해 알아보자 Stream은 지연 처리를 통해 연산을 하여 값을 도출해낸다. 그렇다면 정확한 이유와 흐름에 대해 파악해보자 Stream 지연 처리 예제 코드를 먼저 살펴보자 public class StreamLazyCal { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; int sum = Arrays.stream(arr) .filter(n -> n % 2 == 1) .sum(); System.out.println(sum); } } 이 예제 코드는 배열을 filter를 통해 홀수만 걸러내어 그 합을 출력하는 코드이다. Strea..
자 우리는 Stream 메서들을 알아 보았고 데이터를 생성해 가공하고 결과를 만들었다. 그렇다면 이러한 Stream을 왜쓰고 동작 흐름에 대해 좀 더 깊게 들어갈 필요가 있다. 2부는 이 내용에 초점을 둘 것이다. 그 전에 사전 지식에 대해 알 필요가 있다. 동시성(Concurrency) 멀티 작업을 위해 스레드가 번갈아가며 실행하는 성질, 싱글 코어 CPU를 이용한 멀티 작업은 병렬적으로 실행되는 것이 아닌 동시성 작업이다. 병렬성(Parallelism) 멀티 작업을 위해 멀티 코어를 이용해 동시에 실행하는 성질 데이터 병렬성(Data Parallelism) 전체 데이터를 나누어 서브 데이터를 만들고 서브 데이터를 병렬 처리해 작업을 빠르게 종료하는 것 q병렬 스트림은 데이터 병렬성을 구현 멀티 코어의..
오늘의 주제는 Stream이다. 실무에서 많이 사용하고있는 문법인 Stream은 가독성을 높여주고 지연 연산을 통해 성능을 최적화 할 수 있다. 우리는 그럼 이러한 많은 장점을 보유한 Stream을 다음 순서로 알아볼 것이다. Stream에 존재하는 다양한 메서드 생성하기 가공하기 결과 만들기 동작 순서 성능 향상 지연 처리 Null-safe Stream 생성 줄여 쓰기 자 그럼 시작해보자! Stream에 존재하는 다양한 메서드 우린 차근 차근 Stream을 생성하고 가공하고 결과를 만드는 것을 차례대로 해볼 것이다. 그저 문법이기 때문에 그렇게 어렵지 않을 것이다. 그렇다면 같이 Stream을 생성하여 결과를 만들어보자 !! 1. 생성하기 먼저 배열을 통해 Stream을 생성해보자 ! public cl..
1. MySQL 엔지 아키텍처 MySQL 전체구조 MySQL은 일반 상용 RDBMS와 같이 대부분의 프로그래밍 언어로부터 접근 방법을 모두 지원한다. MySQL 고유의 C API부터 시작해 JDBC나 ODBC 등응 모든 언어로 MySQL 서버에서 쿼리를 사용할 수 있게 지원한다. MySQL서버는 크게 엔진과 스토리지 엔진으로 구분할 수 있다. 그러면 한 번 살펴보자. MySQL 엔진 MySQL 엔진은 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 sQL 파서 및 전처리기, 퀴리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 또한 MySQL은 표준 SQL(ANSI SQL) 문법을 지원하기 때문에 표준 문법에 따라 작성된 쿼리는 타 DBMS와 호환되어 실행될 수 있다. 스토리지 엔진 ..
- Total
- Today
- Yesterday
- 백엔드
- java
- 자바
- 동시성
- thread
- JPA
- DB
- 취준
- MySQL
- DevOps
- 면접 준비
- Redis
- 취업
- 코드
- CS
- 면접
- 취업준비
- 개발
- Kotlin
- 면접준비
- 게시판
- docker
- 코딩
- Spring
- 인터뷰
- swarm
- 개발자
- 프로그래밍
- 프로젝트
- IT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |