| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- BFS
- 정렬
- EC2
- 개방주소법
- DIP
- 서버타임존설정
- aws
- STL
- SSOK
- localdatetime
- hashcollision
- 완전탐색
- DP
- 자료구조
- 서버
- ZonedDateTime
- 구현
- google calendar api
- 해시충돌
- 객체지향설계
- 에러로깅
- C++
- DFS
- web
- 그리디
- 멀티모듈
- OCP
- SW마에스트로
- 비즈니스요구사항
- 탄력적 ip
- Today
- Total
목록전체 글 (63)
레츠고✨
🌱 들어가기 전YAPP에서 진행한 프로젝트 ssok(여행 숙소 자동 비교 서비스)에서 생긴 에러에 대해서 알아보자!동아리 활동은 2주 전에 끝났고, GCP 무료 크레딧 기간도 끝이 났다 ! 하지만 서비스 운영은 계속 이어나가기 위해 다시 무료 크레딧 GCP로 이사를 가야함..(3개월 시한부 인생😭)DB에서 기존 데이터도 다 들고 와서 이전을 시켰는데, 비교표 조회 API를 요청이 실패한다.. 🚨 문제 상황원래대로라면 숙소를 선택하고 비교표를 생성하면 => 바로 비교표 조회가 성공해야함!근데 오른쪽 사진 처럼 이상한 화면이 나옴 스웨거에서 요청해서 에러 메세지 확인 번역) 비교표엔티티 컬렉션의 Lazy 초기화 실패했어 - 프록시를 초기화할 수 없어 - 세션이 없어 🤔 원인 분석YAPP 데모데이가 ..
🌱 들어가기 전웹소켓으로 양방향 실시간 소통이 가능하다는 건 알겠는데, 그 자세한 동작과정이 어떻게 되지?웹소켓을 사용하면 좋은 점이 뭐야? Rest 통신과는 뭐가 다른거지? 등등 평소 웹소켓에 대한 궁금증이 많았는데이번 멋쟁이 사자처럼 교육 과정에서 관련 개념에 대해서 학습하고 채팅 기능을 구현해본 과정을 정리해보려고 한다! 왜 웹소켓을 사용하는지, 어떻게 사용하면 되는지, 장점과 단점은 무엇인지의 흐름으로 진행된다 ❓ 왜 Websocket을 사용하는거야?기본적으로 웹 통신을 하기 위해서는 REST 통신을 사용한다. 웹소켓을 왜 사용하는지 알아보기 전에 전통적인 통신 방식인 REST 통신 방식에 대해서 소개하자면HTTP 프로토콜을 사용하며, URI를 통해 자원을 명시한다클라이언트와 서버 구분이 명확하..
🌱 들어가기 전작년 한해를 돌아보면 소마가 일상의 90% 정도는 차지하는 것 같다. 소마에 입과하기 위해 1월달부터 코테를 준비했고, 코테와 면접을 거쳐 4월에 입과해서 12월까지 열심히 소마 활동을 하면서 굉장히 정신없이 살았다. 하지만 바쁘게만 살고 제대로 돌아본 적이 없는 것 같아서 다소 늦은 감이 있지만 이번 기회에 소마 생활에 대해서 회고하는 시간을 가져보려고 한다! 1️⃣ 내가 소마에 지원한 이유작년 초 졸업을 앞두고 취업을 바로 시작하기에 고민이 되었다. 당장 취업 시장에 뛰어들기에 내 실력이 너무 부족한 것 같다는 생각이 많았다. 그래서 작년 한 해는 바로 취업보다 성장하는 시간으로 보내고 싶었다. 그러다 소마 모집 공고를 보게 되었다..! 주변에 개발자 친구가 많지는 않았는데 소마에서는..
🌱 들어가기 전Python으로 코딩테스트를 풀 때에는 itertools 라이브러리를 사용해서 순열, 조합을 쉽게 사용할 수 있었는데,Java에서는 순열, 조합 라이브러리가 없어서 다 구현해야 한다.Java로 코테를 옮기면서 가장 불편한 점 중 하나이다.. 그래서 Java로 순열, 조합을 구하는 방법을 모두 정리해보려고 한다. 1️⃣ 순열순서를 고려하여 n개의 값 중에서 r개의 숫자를 뽑는 경우를 말한다.예를 들어 [1,2,3] 이라는 크기3의 배열에서 순서를 고려해서 2개의 숫자를 뽑는 경우는 3!/1! = 6가지 [1, 2] [1, 3] [2, 1] [2, 3] [3, 1] [3, 2] 방법1. SWAP을 이용한 순열(재귀)swap 함수를 만들어서 배열들의 값을 직접 바꾸는 방법이다.배열의 첫 값..
🔍 최장 증가 부분 수열이란?LIS = Longest Increasing Subsequence원소가 n개인 배열의 일부 원소를 골라내서 만든 부분 수열 중, 각 원소가 이전 원소보다 크다는 조건을 만족하고, 그 길이가 최대인 부분 수열 예를 들어, nums = [4, 7, 2, 8, 10, 3, 11, 9] 라는 배열이 있다면[4, 7, 2, 8, 10, 3, 11, 9] => [4, 7, 8, 10, 11] 와 같이 증가하는 부분 수열 중 길이가 가장 긴 것을 말한다.반대로 감소하는 부분 수열 중 가장 긴 것은 최장 감소 부분 수열(LDS, Longest Decreasing Subsequence)이라고 한다. 코딩 테스트 문제 중에는 최장 증가(감소) 부분 수열을 이용한 문제들이 왕왕 있어 이번 ..
☠️ 데드락두 개 이상의 프로레스/스레드가 서로가 가진 리소스를 무한히 기다리게 되어 다음 처리를 하지 못하는 상태 데드락 발생 필요 조건 4가지데드락은 다음 4가지 조건이 동시에 성립될 때에만 발생할 수 있다.1️⃣ 상호 배제(Mutual exclusion)리소스를 공유해서 사용할 수 없다 = 한 번에 한 스레드만이 그 자원을 사용할 수 있다.더보기📌 참고이 조건은 공유 데이터에 대한 일관성과 무결성을 보장하기 위해 프로세스/스레드 간의 동기화를 시키는 데에 필요한 조건이었다.하지만 이 조건이 아래 3가지 조건이 만나면 관련된 프로세스/스레드가 더 이상 진행되지 못하는 데드락이 발생할 수 있다.2️⃣ 점유하며 대기 (Hold and wait)프로세스가 이미 하나 이상의 리소스를 취득한 상태(hold..
🌱 들어가기 전프로세스와 스레드는 병행 또는 병렬로 실행이 가능합니다.또한 프로세스 간 데이터 공유가 필요할 때에는 IPC를 사용할 수 있고,스레드 간 데이터 공유도 가능합니다.이런 배경에서 만약 여러 프로세스와 스레드가 같은 데이터에 접근하여 조작하려고 하는 상황이 발생한다면 어떨까요?그런 상황에서 데이터의 일관성과 무결성이 무너질 수 있는데, 이런 상황을 경쟁 조건이라고 합니다.경쟁 조건을 해결하기 위해서 프로세스와 스레드 간 동기화 작업이 필요합니다 경쟁 조건과 동기화 개념✅ 경쟁 조건(Race Condition)여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황Process P1과 P2가 공유 데이터인 count에 동시에 접근하려고 할..
🌱 들어가기 전해시가 정확히 뭔지, 해시 테이블과 해시 맵이 뭐가 다른지, 해시 충돌은 언제 발생하는지 제대로 아는 것이 없어서이번 기회에 해시 자료구조에 대해서 공부하고, 해시 충돌이 발생하는 원인과 해결 방법, 언어별 해시 충돌을 어떻게 해결하고 있는지 등에 대해서 공부하고, 그 내용을 정리해보고자 한다. ✅ 해시 관련 용어 정리해시와 관련된 다양한 용어들이 헷갈려서 먼저 각 용어를 정리해보자Hash Function (해시 함수)데이터를 효율적으로 관리하기 위해 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 함수단방향 암호화 기법이다더보기❓단방향 암호화 기법: 암호화는 수행하지만 복호화는 불가능한 암호화 기법Hash (해시) = Hash Value, Hash Code해시란 해시함수를 이용하여..
🌱 들어가기 전데이터베이스 인덱스에 왜 B+Tree를 사용하는지 알아보기 위해, 이진탐색트리부터 B-Tree를 먼저 알아보고 B+Tree가 무엇이 다른지 차이점을 비교해서 정리해보고자 한다. ✅ 이진 탐색 트리(BST)이진 탐색과 연결리스트를 결합한 자료구조로모든 노드의 왼쪽 서브트리는 해당 노드의 값보다 작고, 모든 노드의 오른쪽 서브트리는 해당 노드의 값보다 크다는 특징을 가진다 ✅ B-Tree이진 탐색 트리(BST)를 일반화 시킨 트리 구조이다. 이진 탐색 트리는 하나의 노드가 최대 2개의 자식노드만 가질 수 있고, 하나의 노드에 1개의 데이터만 저장 가능하다. 하지만 하나의 노드가 최대 M개의 자식 노드를 가질 수 있도록 개념을 확장시켜 B-Tree 를 만들었다.따라서 이진트리와 다르게 하..
🚫 문제 상황기존에 api 서버만 운영하면서 api 관련 코드만 작성하다가비동기 기능이 필요해지고, 배치 서버를 따로 운영해야 해서아예 멀티 모듈 프로젝트 구조로 리팩토링 하기로 했다.그래서 api, batch, domain 모듈로 분리했는데 이젠 빌드 에러가 났다.api 모듈이 domain 모듈에 의존성을 가지기 때문에 api 모듈의 build.gradle 파일에 아래와 같이 domain 모듈 의존성을 추가해주었는데, 이런 에러가 떴다!A problem occurred evaluating root project 'api'.Project with path ':domain' could not be found in root project 'api'. api 모듈의 build.gradle 파일 내용plu..