일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 더티채킹
- 변경감지
- 인수테스트
- 다형성
- 정적중첩클래스
- IoC
- 인프콘
- publicapi
- 클라이언트사이드렌더링
- bean
- SOLID
- 항해99 9기
- 자바의정석
- github actions
- 비정적중첩클래스
- 스프링컨테이너
- 항해99
- Velog
- 스파르타코딩클럽
- 지네릭스
- DI
- privateapi
- refreshtoken
- Spring
- java
- 일급컬렉션
- 9기
- 애너테이션
- 서버사이드렌더링
- 싱글톤패턴
- Today
- Total
목록분류 전체보기 (39)
멈재

싱글턴 패턴은 개념과 원리 그리고 구현 코드 자체도 간단하고, 스프링 컨테이너에 적용된 만큼 많은 사람들이 익히 알고 있는 패턴이다. 하지만 그만큼 다소 위험한 예시 코드들을 접하게 되면서 위험성을 가진 코드들을 알기도 쉬워졌다. 나 또한 그런 사람들 중 한 명이었고, 이번 기회에 싱글턴 클래스를 만들 때 주의해야 점을 다뤄보려 한다. 싱글턴 패턴이란 어떤 클래스의 인스턴스가 오직 하나임을 보장하며, 전역적으로 해당 인스턴스에 접근할 수 있도록 하는 제공하는 패턴 싱글턴 패턴을 쓰는 이유는 한 번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다. 싱글턴의 인스턴스는 전역 인스턴스이기 때문에 데이터를 공유하기 쉽다. 그렇다면, 싱글턴 패턴은 어떨 때 사용하는 것이 적합할까 애플리케이션에..

트랜잭션이란 하나의 처리를 안전하게 처리하도록 보장해주는 것 작업의 완전성을 보장해주는 것 풀어쓰면 데이터베이스의 상태를 변경하는 논리적인 작업 단위를 전부 반영하거나 아무것도 적용하지 않아야 한다는 것을 보장한다. 즉, 모두 처리하지 못할 경우에 작업의 일부분만 적용되는 현상(Partial Update)이 발생하지 않게 하는 기능이다. 🧐 용어 설명 *상태를 변경한다 INSERT, UPDATE 등의 작업으로 저장된 데이터의 상태를 수정, 삭제 등의 작업을 통해 변경하는 것을 의미 *작업 단위 하나의 처리를 위해 수행되는 SQL 질의어 *하나의 처리 '하나의 처리’라고 해서 여러 개의 쿼리를 의미하는 것이 아닌 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 자체를 의미 예를 들어 ..

모든 예시 코드는 깃허브에 있으니 참고해주세요. 애너테이션이란 애너테이션은 Java 5부터 등장한 기능으로 Java 컴파일러 또는 JVM에게 추가 정보를 제공하는 메타데이터의 일종이다. @Override @Getter @Setter @Data @Controller ... 메타 데이터란?? 메타데이터란 데이터를 설명해주는 데이터라는 의미를 갖는데 예를 들어, 사진이라는 데이터는 사진 그 자체와 직접 관련이 없는 사진 크기, 해상도, 촬영 일시 등의 추가 정보를 담고 있다. 이러한 사진에 추가적인 정보를 메타데이터라고 한다. 1. 컴파일러에게 코드 문법이나 경고를 나타내지 말라는 정보를 줄 수 있다. @Override 메서드 앞에만 붙일 수 있는 애너테이션으로 부모 클래스의 메서드를 오버라이딩한다는 것을 컴..

Java에는 실수형을 나타내는데 기본적으로 float과 double을 지원한다. float 4 바이트 정밀도 7자리 저장 가능 범위: 1.4x10^(-45) ~ 3.4x10^38 Double 8 바이트 정밀도 15자리 저장 가능 범위: 4.9x10^(-324) ~ 1.8x10^308 실수를 표현하는 방식으로는 고정 소수점 방식과 부동 소수점 방식으로 나눌 수 있다. 이러한 float과 double은 기본적으로 부동 소수점 방식을 사용한다. 고정 소수점과 부동 소수점 컴퓨터는 0과 1로만 이루어진 2진수 체계로 이루어져있다. 그렇기 때문에 실수 또한 2진수로 표현해야 한다. 참고: 컴퓨터는 왜 2진수를 기반으로 할까? https://madplay.github.io/post/why-computer-is-ba..

인덱스의 특징을 이해하는 데에 있어서 인덱스의 데이터 저장 방식인 B+Tree를 아는 것이 좋다고 생각돼서 전체적인 목차를 이진 탐색 트리, B-Tree, 인덱스, B+Tree의 순으로 작성하려 한다. 이진 탐색 트리(Binary Search Tree) 이진 탐색 트리는 이진 탐색(Binary Search)의 효율적인 탐색과 빈번한 자료 삽입과 삭제에 용이한 연결 리스트(Linked List)의 장점을 결합한 정렬된 이진트리이다. - 이진 트리 이진 트리란 모든 노드의 최대 차수가 2개인 트리를 말한다. 이진 탐색?? 연결리스트?? - 이진 탐색 이진 탐색은 데이터가 정렬되어 있는 배열에서 특정한 값을 찾아내는 알고리즘으로 다음과 같은 순서를 거친다. 1. 배열의 중간에 있는 임의의 값을 선택하여 찾고자..

작년 12월 초부터 글또 모집만을 기다려오다가 지난 일요일 오리엔테이션을 시작으로 글또 8기의 여정에 합류하게 되었다. 글또에 지원하게 된 건 개발 직군인 사람들이 모인 환경에서 다른 여러 사람들의 이야기를 듣고 나누기 위함이 컸다. 그래서 오리엔테이션에서 큰 기대 없이 글을 잘 쓰는 법.. 꾸준히 하는 법.. 을 얘기해 주실 줄 알았다. 그러나 글또의 오야지인 메타몽님의 오리엔테이션을 듣고 나는 어떤 사람인가를 돌이켜 본 시간이었다. 지금의 난 계속해서 성장하고 있다고 생각했다. 근데 과연 내적인 면도 성장하고 있을까를 생각해 본다면,,,, ..... 확실하게 답하진 못하겠다. 올해는 나 자신도 되돌아보며 조금 더 어른스러운 마음과 더 여유로운 생각들을 가지고 싶다. 다시 본론으로 들어가서, 오티에서 ..

최근 로버트 C. 마틴 저자의 클린 코드도 읽고 잘 읽히는 코드에 대해 고민을 하다 보니 여러 사람들의 코드를 보는 일이 많아졌다. 그러다 우연히 코드숨이라는 곳을 보게 되었고, 그 안에 어떤 분의 리뷰 내용으로 다음과 같은 내용이 있었다. "왜 데이터가 없을 때 204 상태로 응답해야 하는지...(중략)" 나의 경우 DELETE 작업을 지금까지 두 가지로 처리해왔다. 플래그(Y/N) 필드를 두어 미사용 처리 영속 계층(persistence layer)에서 삭제(delete) 처리 그리고 위 두 경우 모두 정상적으로 실행하면 상태코드 200(OK)을 반환하도록 했었다. HTTP 1.1 공식문서인 RFC 2616에서 DELETE는 다음과 같이 설명되어 있다. ... A successful response ..

어떠한 두 대상이 같은지 여부를 확인하는 과정에서 흔히 동일성 비교와 동등성 비교를 하게 된다. 다만, 경우에 따라서 메모리 내 주소값이 달라도 특정 조건을 만족하면 논리적으로 같은 객체로 다뤄야 하는 경우가 존재한다. 동일성(identity): 메모리 내 주소값이 같은지 비교한다. (==) 동등성(equality): 논리적 지위가 동등한 지 비교한다. (equals) 우선 동일성 비교(==)부터 알아보자. int, boolean과 같은 원시 타입간에 동일성 비교는 값을 비교한다. boolean isTrue = true; boolean isFalse = false; System.out.println(isTrue == isFalse); // true == false >> false System.out.pr..

지난 유스콘 콘퍼런스의 OOP START! 세션을 들으면서 캡슐화, 상속의 쓰임을 새로 알게 되면서 객체 지향을 다시 꼼꼼히 알아보자는 생각에서 쓰게 되었다. 객체 지향 프로그래밍의 특징 중 하나로 코드의 재사용. 즉, 상속(inheritance)이 있다. 코드 재사용을 수행할 수 있는 방법은 두 가지가 있다. 상속의 구현(IS-A 관계) 객체 구성(HAS-A 관계) 일반적으로 흔히 아는 내용은 보통 이럴 것이다. IS-A: ~은 ~이다. ex) 강아지는 동물이다. HAS-A: ~은(는) B를 가지고 있다. ex) 자동차는 엔진을 가지고 있다. 내가 처음 이 말을 들었을 당시 되게 추상적으로 다가왔다. ~은 ~이면 IS-A 관계를.... ~은 ~를 가지고 있으면 HAS-A 관계를... . 그래서.... ..

우아한 테크 코스 5기 슬랙방에서 우연히 우아한 형제들과 넥스트스탭에서 주관하는 유스콘 콘퍼런스를 알게 되었다. 누군가의 생각과 경험을 듣는 걸 좋아하기도 하고, 콘퍼런스마다 나 자신을 되돌아볼 수 있게 돼서 이번에도 참여하게 되었다. https://frost-witch-afb.notion.site/YOUTHCON-22-a18e4511463a416e8befd99993355215 YOUTHCON'22유쾌한 스프링방에서 탄생한 유스콘은 👨🎓 젊은 개발자와 👨🏫 선배 개발자가 함께 가치 있는 기술에 관한 정보와 경험을 공유하는 콘퍼런스입니다. 여기서 발표하는 사람들을 잘 기억frost-witch-afb.notion.site 아쉽게도 올해 마지막 날이라 가족끼리 시간을 보내야 할 것 같아서 오프라인 신청도 ..