일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 혼공챌린지
- SQL
- 스터디
- 정처기
- 프로그래머스
- 혼공파
- 안드로이드스튜디오
- join
- Android
- Kotlin
- groupby
- select
- 안드로이드
- 정보처리기사
- 자료구조
- doitandroid
- 자바
- 알고리즘
- 인프런
- 코테
- MySQL
- java
- 오블완
- CS
- 기술면접
- 티스토리챌린지
- 카카오코테
- Til
- 코틀린
- 혼공단
- Today
- Total
목록TIL (66)
Welcome! Everything is fine.

캐싱(caching)이란?Redis에 대해 알아보기 전, 먼저 캐시 & 캐싱이 무엇인지 알아보자! 파레토의 법칙에 따라 자주 사용되는 20%의 데이터를 미리 캐싱해둔다면 효과적인 성능 향상을 기대할 수 있다.캐시(Cache) : 원본 저장소보다 데이터를 더 빠르고 효율적으로 가져올 수 있는 임시 데이터 저장소.캐싱(Caching) : 캐시에 접근해 데이터를 빠르게 가져오는 방식.캐시 사용 시 주의사항자주 사용되면서 변경이 적은 데이터에 적합하다.유실되어도 크게 문제가 없는 데이터에 적합하다.DB와 함께 사용 시 데이터 정합성 문제를 고려해야한다.데이터 캐싱 전략단순히 "캐싱"만 한다고 성능이 무조건 보장되는 것은 아니다. 어떻게 캐싱하느냐가 중요하다.대표적인 데이터 캐싱 전략을 알아보자.Cache Asi..

QueryDSL란?DSL(Domain-Specific-Language) : 특정 도메인에서 발생하는 문제를 효과적으로 해결하기 위해 설계된 언어.(ex. SQL, CSS, Regex 등)QueryDSL : SQL 형식의 쿼리를 Type-Safe하게 생성할 수 있도록 하는 DSL을 제공하는 라이브러리. 엔티티의 매핑정보를 활용하여 쿼리에 적합하도록 쿼리 전용 클래스(Q클래스)로 재구성해준다.✔️ Q클래스란?Q클래스란 엔티티 클래스 속성과 구조를 설명해주는 메타데이터로, Type-Safe하게 쿼리 조건을 설정할 수 있다.annotationProcessor를 통해 생성된 실제 Q클래스는 다음과 같다.다 캡쳐하진 못했지만, Todo의 필드가 QTodo에서도 보이는 것을 알 수 있다. QueryDSL 시작하기qu..

S3(Simple Storage Service)란?Amazon S3는 정적 웹 사이트 호스팅, 온라인 백업, 데이터 아카이브, 기업 애플리케이션, Big Data 분석 등 다양한 용도로 사용된다.버킷(Buckets) : 데이터를 저장하는 가장 상위 레벨의 폴더 형태의 컨테이너. S3에 저장되는 파일들을 ‘객체’라고 부르고, 모든 객체는 ‘키’(디렉토리)로 식별된다.버킷 이름 규칙대문자와 언더스코어 사용 금지길이 제한: 3자 이상, 63자 이하로 작성소문자, 숫자, 점(.) 그리고 하이픈(-)만 사용 가능반드시 문자 또는 숫자로 시작하고 끝내기두 개의 점(.) 연속 사용 금지IP 주소 형식 사용 금지S3 시작하기버킷 만들기Create bucket을 눌러 버킷을 생성해보자! 이름만 정하고 다른 옵션은 일단..
지난 프로젝트에서 다른 팀원 분이 상수를 인터페이스로 관리하는 것을 봤다. final 클래스나 enum 클래스를 사용하는 것이 더 나은 것이 아닐까? 하는 궁금증이 들어 검색도 해보고 튜터님께 찾아가 질문해봤다. 예시 코드는 내가 작성한 에러 메세지 enum 클래스인데, GPT한테 각각의 경우에 맞게 수정을 해달라고 해봤다.final 클래스로 상수 관리하기상수를 관리하려고 할 때 사용되는 가장 고전적인 방법이 아닐까 싶다. final 클래스를 만들고 , 상수들을 static final로 선언한다. 이렇게 하면 정적 import를 통해 클래스 이름을 생략해서 사용할 수 있다는 장점이 있다. 하지만 확장성과 유지보수성 측면에서 enum보다 떨어진다. 만약 final 클래스로 상수를 관리한다면 기본 생성자..

스파르타코딩클럽 AWS의 모든 것 (All about AWS) 강의를 듣고 정리한 내용입니다.RDS란?Relational Database Service(RDS) : AWS에서 제공하는 관리형 관계형 데이터베이스 서비스. Postgres, MySQL, MariaDB, Oracle, Microsoft SQL Server 등 다양한 엔진을 선택할 수 있으며, EC2에 직접 DB를 설치·운영하는 방식보다 운영 부담이 적다.RDS 특징자동 인프라 구축 및 관리DB 설치, 패치, 유지보수 작업을 AWS가 수행한다.자동 백업과 복구지속적인 자동 백업 지원지정한 기간 내 언제든 복구 가능모니터링 지원성능 모니터링과 대시보드 제공확장성스토리지 자동 확장 지원보안성VPC, IAM, KMS로 데이터 보안 강화SSH 접근 불..

어제 Spring Security 도입을 마무리 하고, 다음 단계를 진행하다가 일정을 생성하는 부분에서 다음과 같이 NPE가 발생했다. Postman에서는 403 Forbidden 에러가 난 상황이다. 회원가입과 로그인은 정상적으로 됐고, DB에도 모든 정보가 다 빠짐없이 들어있다. 왜 userRole이 null인가...🤔 DB에도 다 들어있는데 왜 null이지...? 이 상황을 믿을 수가 없어 생성자에서 userRole이 null일 때 에러를 던지도록 해 다시 한 번 확인해봤다. null이 맞다. 그렇다면 왜일까? 검색의 늪에 빠져있다가 여러 상황을 가정하고 확인해보았다.JwtUtil과 JwtAuthenticationFilter에서userRole을 다른 단어로 입력한 경우 → 둘 다 userRole로..

깃허브에 시크릿키를 올리는 것은 위험하다. 따라서 우린 시크릿키를 내 로컬 파일에만 따로 적어놓고 깃허브에는 올라가지 않도록 해야한다. 먼저 resource 패키지 아래에 .env 파일을 만들고 올라가면 안되는 정보를 넣어준다. 그리고 인텔리제이 오른쪽 상단에 있는 점 세개를 누른 후 Edit...에 들어간다. 현재 내가 이미 환경 변수를 설정해놓은 상태지만, Environment variables가 없다면 Build and Run 옆에 있는 Modify options를 누른다. 그럼 이렇게 옵션들을 추가할 수 있는데, Environment variables를 추가해준다. 이제 이 환경 변수 경로를 설정해야한다. 경로는 .env 파일이 있는 경로로 설정하면 된다. 그리고 .env 파일 역시 깃허브에 올라..
이번 프로젝트를 끝내고, 지난 프로젝트에서 아쉬웠던 점을 정리해봤다.🖋️그런 점을 이번 프로젝트에서 꽤 많이 개선한 것 같고, 이번 프로젝트에서의 아쉬운 점 역시 다음 프로젝트에서 개선할 수 있다면 좋을 것 같다!팀원들과 사소한 것 하나까지 공유하자지난 프로젝트에서는 git에 익숙하지 않은 팀원분들이 많았다. 그래서인지 사실 내가 맡은 기능을 개발하는 시간보다 git 관련 문제를 해결하는데 더 많은 시간을 쓴 것 같다. 우리팀에서 일어난 문제는 다음과 같았다.merge가 되면 develop에서 pull을 받은 후, 자신의 브랜치에서 작업을 해야한다. 그러나 중간에 확인해보니 팀원 모두가 pull을 받지 않고 작업을 하고 있다는 사실을 알았다. 자신의 브랜치에서는 자신이 맡은 기능만을 개발해야한다고 알고..