일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시나공
- 코딩봉사
- programmers
- 파이썬
- 문제풀이
- C++
- 스프링
- MYSQL
- SW봉사
- 자바
- softeer
- 알고리즘
- SQL
- 공부일지
- 회고
- 소프티어
- 데이터베이스
- python
- CJ UNIT
- 정보처리산업기사
- java
- kotlin
- 백준알고리즘
- 코딩교육봉사
- 백준
- 프로그래머스
- 코틀린
- 1과목
- 백준 알고리즘
- BFS
- Today
- Total
목록개발 (141)
JIE0025
✅ 개요 Kotlin - Springboot , JPA - Hibernate - DB를 쓰는 상황이다. DB연결을 위해 Entity 클래스를 선언함에 있어 고민이 생겼다. ✅ 엔티티 생성에서 data class를 쓰는것이 좋을까 ? 결론부터 말하면 아니다. 엔티티 클래스는 다음과 같은 필요조건을 갖고있다. ✔️ 엔티티 클래스의 필요조건 클래스는 반드시 javax.persistence.Entity 어노테이션을 적용해야 함 클래스는 반드시 public/ protected의 no-arg 생성자를 갖고 있어야함 (다른 생성자가 있을수도 있다.) 엔티티는 반드시 final이면 안된다 (메소드/인스턴스 변수 모두) 엔티티는 엔티티가 아닌 클래스를 상속할 수 있다. etc 첫번째. 엔티티는 반드시 final이면 안된..
✅ 개요 이전부터 팀 프로젝트는 거의다 모놀리식으로 만들어졌었다. 이후 인턴 생활 중 마이크로서비스에 사용될 프로젝트를 진행하게 되었고 이에 대해 공부해야지 하다가 이제야 글을 쓴다. MSA에 대해 좀 더 자세히 공부해보고, 구조를 이해해보자 (실습은 천천히 해보고 글 올려야지 😊) ✅ 마이크로서비스 ? 애플리케이션 개발 기법중 하나로 기능을 조합해 앱을 실현하는 기술이다. 소규모 기능을 서버 서비스로 구현한 것 기능들을 결합해 다른 기능/서비스를 실현할 수 있다. 1. 각 요소가 독립 되어있다. > 각 요소는 특정 비즈니스 기능을 수행한다. 2. 요소별로 통신을 해서 기능/ 데이터를 교환한다. > API를 통해 서로 통신한다. ✍️ 요약 모놀리식은 애플리케이션을 하나의 SW로 구축하는 반면, MSA는 ..
✅ 개요 이전에 멀티스레딩의 필요성과 기초 지식에 대해 공부했었다. https://jie0025.tistory.com/569 멀티스레딩의 개요 및 운영체제 기초 ✅ 멀티스레딩은 왜 필요할까? 2가지 (응답성, 성능)를 위해서이다. 1. 응답성 만약 수천명이 사용하는 온라인 마켓 Web Application이 있다고 가정해보자. 모든 사용자의 구매정보를 DB에 저장하는데, jie0025.tistory.com 이번에는 스레드를 생성하는 2가지 방법과, 스레드의 우선순위에 대해 알아보자. ✅ Runnable 인터페이스를 구현하여 스레드 생성하기 Thread를 생성하는 첫번째 방법은 Runnable 인터페이스를 구현하는것이다. Runnable 인터페이스에는 run()이 정의되어있기 때문에 @Override를 통..
✅ 개요 애플리케이션의 요구사항은 계속해서 변한다. 오리가 수영하고, 소리를 낼 수 있다는 슈퍼클래스를 만들고 오리인형, 오리A, 오리B가 슈퍼클래스를 상속받도록 했다고 가정해보자. 다음 요구사항이 들어왔다. 오리가 날 수 있게 만들어줘 ✍️ 상속을 사용하는것은 좋지 못할 수 있다. 슈퍼클래스에 Fly()를 추가하는 방법이 있다. 그러나 오리 인형이 를 상속받고 있기 때문에 사용할 수 없다. (오리인형은 수영할 수 있지만, 날 수 없다.) ✍️ 인터페이스를 사용할 경우는? Flyable이라는 인터페이스를 만들면 날아야만 하는 오리들에 대해서만 구현해주면 된다. 그러나 코드 중복을 무시할 수 없고, 날 수 있는 오리의 종류가 100가지가 넘어가게 되면 코드를 전부 고쳐주어야한다. 재사용에 유연한 코드를 작..
✅ 멀티스레딩은 왜 필요할까? 2가지 (응답성, 성능)를 위해서이다. 1. 응답성 만약 수천명이 사용하는 온라인 마켓 Web Application이 있다고 가정해보자. 모든 사용자의 구매정보를 DB에 저장하는데, 한 고객이 여러개의 물건을 구매했다 . -> DB 실행 시간이 길어진다. 이때 동시에 다른 고객도 구매를 하고 싶어하면? 앱이 첫번째 요청에 응답할때까지 두번째 요청자는 대기 하게 된다. 이것이 멀티스레딩의 첫번째 필요성이다. 각 스레드는 각 요청을 처리하도록 하여 사용자의 대기시간을 줄이며 응답성을 높힐 수 있다. 우리는 크롬과 같이 여러개의 창을 띄어둔 채로 컴퓨터를 한다. 이때 모든 작업이 마치 동시에 실행되고 있는것처럼 생각하게 되는데 이 또한 멀티스레딩을 이용한 것이고, 이라고 한다. ..
✅ 개요스프링/스프링부트 프로젝트를 하다보면 Maven과 Gradle을 선택하는것부터 나온다. 초보자 시절엔 그냥 다른 블로그 따라서 Gradle을 선택했었는데... 좀더 세세하게 알아보자. ✅ Build Tool Maven, Gradle은 모두 빌드 관리도구이다. 우리는 프로젝트에 여러가지 외부 라이브러리를 사용하게 된다 이때 빌드 관리 도구 (Build Tool) 를 사용하여, 필요한 라이브러리를 자동으로 관리받을 수 있다. ⏺ Build Tool 작업 과정1) 종속성 다운 2) 소스코드를 바이너리코드로 컴파일 3) 패키징 4) 테스트 5) 프로덕션 시스템에 배포 ✅ Maven 메이븐은 자바 전용 프로젝트 관리 도구이다. Ant의 대안으로 만들어졌고, 아파치 라이센스로 배포되는 오픈소스 소프트웨어이다..
✅ 개요클론 프로젝트의 첫 배포 당시, 빌드를 실패했었고 이번에 새로 배포를 하면서 이 문제를 아주 간단한 방법으로 해결했다. 상황은 다음과 같다. 📆 2월 배포 상황t2-micro 프리티어를 사용했다. 빌드 중 58% --> ASCIIDOC 빌드에서 fail이 났다. 당시에뭐가 문제인지 알지 못해서 프리티어 사용을 포기하고 t2-small로 업데이트 해봤는데, 빌드가 성공했다. 프리티어를 사용하지 않아서 발생하는 요금이 생각보다 커서, EC2 인스턴스를 제거해버렸다. 결국 t2-micro와 t2-small의 차이점에서 발생하는 성능상 이점 때문에 가능했다고 판단만 해둔 상태>> t2-micro의 RAM은 1GB이다 >> t2-small의 RAM은 2GB이다 📆 6월 재배포 상황 재배포하는 상황에서도 5..
이 글에서 도출된 결론은 제가 마주한 개발 상황에서 겪은 과정에 따른 것이며 개발 상황에 따라 달라질 수 있습니다. ✅ 선행 개념 당연히 보이어무어의 동작원리를 알고 와야한다. 보이어무어는 2가지 작동방식이 존재하고, 아래 2개의 링크를 첨부한다. 추가적으로 KMP와 함께 성능을 비교했고, 어떤점이 다른지 명확히 이해하고 싶다면 KMP알고리즘도 확인하자 1️⃣ Boyer Moore - 나쁜 문자 이동 방식 https://jie0025.tistory.com/537 [문자열 매칭] 보이어무어(Boyer-Moore) - Bad Character Heuristic ✅ 개요 어제 문자열 매칭 알고리즘 중 KMP에 대해 알아보았다. [알고리즘] 문자열 매칭 KMP (동작방식,수도코드) ✅ 개요 문자열 매칭 알고..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. ✅ 개요 이전에 프로젝트를 구현하기 위해 Webflux의 간단한 개요 정도만 이해를 했었는데 이번에는 리액티브 프로그래밍에 (Reactor)에 대해 조금 더 세세하게 개념을 이해해보자. ✅ 리액티브 프로그래밍의 구조 선언형 프로그래밍 방식을 사용한다. 명령형은 순차적으로 위에서 아래로 실행이 되는데, 선언형은 최종연산이 수행되는 메서드를 호출하지 않으면, 메서드 체인들이 실행되지 않는다. >> 이런작업을 하라는 람다 표현식만 넘기고, 최종 연산에서 동작을 수행함 Java 8부터 지원되는 Stream API의 예 int sum..
황정식 - 스프링으로 시작하는 리액티브 프로그래밍 Spring WebFlux를 이용한 Non-Blocking 애플리케이션 구현 책을 통해 공부하면서 개인적으로 정리한 내용입니다. ✅ 개요 웹플럭스(WebFlux)는 리액티브 프로그래밍을 기반으로 비동기/논블로킹을 구현할 수 있게 함으로써 대규모 트래픽이 발생할 수 있는 애플리케이션에서 성능 향상을 돕는다. 우리는 WebFlux를 공부하기 위해 가장 기초적인 개념을 공부해야한다. 리액티브란 무엇인지, 리액티브 스트림의 구성요소들에 대해 알아보자! ✅ Reactive 영어 자체를 해석하면 반응을 하는, 반응을 보이는 이란 의미이다. ✍️ Reactive System 리액티브 시스템 클라이언트의 요청에 반응을 잘 하는 시스템을 의미하게 된다. Non-Block..