일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링컨테이너
- privateapi
- 자바의정석
- publicapi
- 항해99 9기
- java
- 다형성
- Velog
- refreshtoken
- 9기
- 항해99
- 서버사이드렌더링
- bean
- 더티채킹
- IoC
- 싱글톤패턴
- 변경감지
- 지네릭스
- 애너테이션
- DI
- 클라이언트사이드렌더링
- 정적중첩클래스
- 일급컬렉션
- github actions
- 인수테스트
- Spring
- 비정적중첩클래스
- 인프콘
- 스파르타코딩클럽
- SOLID
- Today
- Total
목록전체 글 (39)
멈재
시간이 오래 지난 글들을 읽으면서 전반적인 수정이 필요하다는 생각을 하게 되었습니다. 그래서 이참에 퇴고와 더불어 새단장(?)을 해보고자 합니다. 숨김 처리된 게시물들이 대부분이지만 약 2년동안 170여개의 게시물을 작성하였는데요, 한 편씯 옮겨가면서 기존의 글들은 좀 더 정돈하고, 새로운 글들은 잘 읽히도록 올려보겠습니다. https://tally.tistory.com/ 탈리 tally.tistory.com 감사합니다. 이참에 퇴고와 더불어 새단장(?)을 하고자 합니다.
2023년의 반은 취준생, 그 나머지 반은 개발자, 그리고 나라는 사람으로서 어떤 한 해였는지 정리해보려고 합니다. 준비2023년 시작과 동시에 본격적으로 개발자 취업 준비를 하게 되었는데, 처음에는 잘 될거야라는 막연한 생각으로 다가갔던 것 같아요. 당시에 두 개의 스터디를 만들어 운영하고, 하나의 사이드 프로젝트를 진행하며 준비했어요. 이때 만든 하나의 스터디는 지금까지도잘 진행되고 있답니다. 취업개발자로서의 취업은 제 삶에서 뜻 깊은 이벤트였어요. 내가 이만큼이나 즐겨한 건 개발이 처음이었고, 내가 이만큼이나 노력해본 것도 개발이 처음이었거든요. 다행히도 운 마저도 따라와줘서 지금 회사에 좋은 사람들과 함께 할 수 있게 되었어요. 회사회사 생활은 처음이다보니 처음엔 어깨 너머로 배워갔어요. 생각하..
JPA에서 데이터를 변경하는 방법을 소개하고 병합을 통한 변경 시에 주의할 점에 대해서 소개하려고 합니다. 일반적으로 Spring Data JPA에서 데이터를 변경하는 방법은 두 가지가 있습니다. 더티채킹에 의한 변경 병합(merge)을 이용한 변경 그리고 Spring Data Jpa를 이용하여 작성한 코드는 보통 다음과 같은 패턴의 형태로 동작되게 됩니다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello jpa"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); try { tx.begin(); // biz l..
23년 8월 16일자로 서비스 회사에 백엔드 개발자로 입사하게 되었다. 취업하기까지학부가 끝나갈 무렵에서야 웹 개발자란 분야로 가고자 결정했기에 과 동기들보다 다소 느린 출발선에서 시작하게 되었다. 그 당시 내가 할 수 있는 선택지는 커뮤니티를 통해 정보를 얻고, 여러 매체(강의, 책 등)를 통해 실무에 필요한 기술을 익히는 것이었다. 나름대로 반년간 이것저것 노력하며 지내왔지만 학자형이었던 난 정체기가 왔음을 느꼈다. 그래서 극복하고자 결정한 것이 부트캠프였다. 부트캠프를 진행하고나서 무엇을 얻을 수 있었냐함은 함께할 동료들과 야생형 학습 스타일을 얻었다고 할 수 있다. 그렇게 세 달간의 부트캠프가 끝난 직후에 스터디를 만들어 부족한 점을 보완해나갔다. 그러나, 소극적인 지원 때문인지 역량이 부족했던건..
작년 하반기에 글또를 우연히 알게 되었는데 좋은 환경이라는 생각에 참여해보고 싶었다. 글또를 지원했을 당시 지원 동기란에 쓴 나의 답변은 다음과 같다.글또라는 공간 자체가 서로 나눌 수 있고 함께라는 힘을 알고 있는 사람들의 집단이라서 좋은 영향을 주고 받을 수 있다고 생각했습니다. 무엇보다 글또의 비전이 제가 추구하는 그룹의 비전과 유사한 점이 많아 지원하게 되었습니다. 그러나, 아쉽게도 적극적으로 영향을 주고 받는 것과 네트워킹에는 적극적으로 실천하지 못했다. 그럼에도 불구하고, 무척이나 값진 배움이 있었다. 나만의 노하우와 기준이 생겼다.글쓰기가 익숙하지 않았을 때에는 막연하게 좋은 내용을 담은 포스팅을 써야지라는 섣부른 마음만 있었다. 그리고 처음엔 모든 것이 그렇듯 그 당시에는 최선이라고 생각했..
문제 상황사용자가 설정한 관심 플랫폼에 따라 메인 페이지에 맞춤 크리에이터를 제공하는 과정에서 발생한 에러 발생한 로그는 다음과 같다.o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: null o.h.engine.jdbc.spi.SqlExceptionHelper : HikariPool-1 - Connection is not available, request timed out after 30059ms.에러 메시지 내용처럼 커넥션 타임 아웃(Time out)으로 인해 발생한 문제임을 알 수 있었다. 이후 발생 가능한 상황을 생각하여 두 가지 예상 원인을 도출했다.특정 API가 커넥션을 물고 있어서 발생한 문제많은 요청 또는 처리 지연 등의 이..
데이터베이스에서 데이터 검색 속도를 높이기 위해 우리는 인덱스를 사용하고, 인덱스는 클러스터형 인덱스(Clustered Index)와 비클러스터형 인덱스(Secondary Index)로 나뉜다. 본 포스팅에서는 클러스터형 인덱스와 세컨더리 인덱스에 대해 알아보고자 한다.디스크 읽기 방식, 인덱스 그리고 옵티마이저까지 다룰 내용이 너무나도 방대하지만, 본 포스팅에서는 클러스터형 인덱스와 세컨더리 인덱스를 주를 이룬다. 클러스터형 인덱스(Clustered Index)클러스터형 인덱스는 테이블 전체가 정렬된 인덱스가 되는 인덱스로 비슷한 레코드들을 묶어서 인덱싱된 형태를 말한다. 클러스터형 인덱스의 주요 특징은 다음과 같다.테이블의 프라이머리 키를 정의하면 해당 컬럼이 자동으로 클러스터형 인덱스가 된다.클러스..
스프링에서는 트랜잭션 처리를 하는 선언적 트랜잭션 방식인 Transactional 애너테이션을 제공해주고 있고, 해당 애너테이션이 있다면 트랜잭션 AOP의 대상이 되어 트랜잭션 프록시가 적용된다. 트랜잭션이 무엇인지는 [DB] MySQL 트랜잭션 격리 수준 살펴보기 포스팅을 참고해주세요 본 포스팅에서는 (나도 그랬고) 스프링을 처음 접하거나 익숙하지 않을 때 Transactional 애너테이션으로 인해 마주할 수 있는 두 가지 문제를 소개하려고 한다. 주요 내용은 크게 다음과 같다. 트랜잭션 프록시의 적용 대상과 접근제어자 트랜잭션 AOP 프록시의 내부 호출 트랜잭션 프록시의 적용 대상과 접근제어자 자바에는 외부로부터 함부로 접근하지 못하도록 접근제어자가 존재하고 있고 접근제어자의 종류와 허용 범위는 다..
소프트웨어를 모델링하는 용도로 흔히 표준화된 모델링 언어인 UML을 종종 사용하게 되는데 그중에서도 정적인 면을 나타내는 클래스 다이어그램을 알아보려 한다. 클래스 다이어그램은 다음 이미지와 같이 시스템을 구성하는 클래스, 인터페이스, 관계, 상속 등을 보여주는 다이어그램으로 클래스 내부의 정적인 내용과 클래스간의 의존 관계를 표시하는 용도로 사용한다. 클래스 다이어그램의 구성 요소는 크게 네 가지로 구분할 수 있다.클래스스테레오 타입추상클래스 / 메서드클래스간의 관계 코드 예시와 함께 하나씩 알아보자.전체 코드는 Github를 참고해주세요 클래스클래스 다이어그램에서 클래스는 클래스의 이름, 속성(변수), 행위(메서드)를 표현할 수 있다.가장 윗 부분: 클래스 이름중간 부분: 속성(변수)마지막 부분: 행..
토이 프로젝트에 알림 기능이 추가됨에 따라 실시간 통신 기술을 알아볼 필요성이 있었다. 알아볼 실시간 통신 기술은 다음과 같다. 실시간 트릭 기술 Polling Long Polling 실시간 기술 양방향(bidirectional) Web Socket 단방향(unidirectional) SSE 크게 실시간 트릭 기술과 실시간 기술로 나누었다. 실시간 통신 기술 설명하기 전에 HTTP에 대해서 간단하게 설명해보려고 한다. HTTP는 서버와 클라이언트간에 데이터를 주고받을 때 사용하는 프로토콜로 다음과 같은 특징을 가진다. 클라이언트 서버 구조 클라이언트는 서버에 요청을 보내고 서버는 요청에 대한 결과를 만들어 응답을 보내게 된다. 무상태(Stateless) 클라이언트의 상태를 보존하지 않는다. 비연결성(Co..