채팅 솔루션을 개발하며 ChatGPT처럼 한글자씩 나오는 비밀이 무엇일까 찾아보았고 그 내막에는 SSE 기술을 사용한다는 사실을 알게되었다. 따라서 SSE에 대해 공부하고 가능하다면 실제 구현까지 진행해 보도록 할 예정이다. SSE(Server-Sent Events) 방식이란? SSE는 서버에서 클라이언트에게 메세지를 비동기적으로 전송할 때 사용하는 기술이다. 서버에서 클라이언트에게 전송해야하는 상황은 알림이나 채팅창이라든지 실시간으로 서버의 변경을 클라이언트에게 전달해야할 때 유용하다. 서버의 정책을 클라이언트에게 전달해야할때 사용해도 될 것 같다. 폴링(Polling)과 같이 클라이언트가 지속적으로 확인하는 방식이 있지만 좀더 실시간으로 반영하고 빈번하게 발생될 수 있는 케이스라면 SSE를 고려해볼 ..
싱글톤 (Singleton) 패턴이란? 생성자를 통해 클래스가 여러번 호출이 되어도 하나의 인스턴스를 계속 재활용 하는 방식이다. 싱글톤 사용 이유와 언제 사용하는가? 프로그램 전반에서 하나의 인스턴스로만 사용하는 경우에 사용한다. 예를 들어 DB 커낵션 풀이나 로그 설정 등이 있을 수 있다. 싱글톤 패턴 싱글톤은 여러가지 방법으로 접근할 수 있다. 모든 접근 방법은 다음과 같은 공통 사항을 따른다 - 다른 클래스에서 생성자를 직접 호출하지 못하도록 private constructor를 사용한다. - private static 의 변수를 사용하여 생성된 인스턴스를 전역에서 사용하도록 한다. - public static을 사용해서 제어된 방식으로 인스턴스를 얻을 수 있도록 한다. 1. Eager initi..
적용 이유 개인 정보 보호를 위해 고객 데이터를 삭제하는데 삭제 시간을 한번에 업데이트 할 필요가 있었다. 한 콜에 여러 업데이트를 할 수 있는 장점은 있지만 SQL 인잭션과 같은 이유로 보안상에는 좋지 않다. 환경 springboot 2.5.5 1. Mybatis 업데이트 쿼리 UPDATE TABLE SET DELETE_DTTM = DATE_FORMAT(NOW(), '%Y%m%d%H%i%s') WHERE 1=1 AND 고객정보1 = #{item.고객정보1} AND 고객정보2 = #{item.고객정보2} 위의 쿼리를 살펴보면 parameterType에는 VO가 있는데 List 안에 VO 객체를 넣고 Mybatis에 전달하는 형태로 구현했다. collection에는 리스트 변수명을 넣어주었다. List d..
본 내용은 인프런 강의를 바탕으로 공부한 내용입니다. 코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의 디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할 www.inflearn.com 싱글톤 패턴 오직 한개의 인스턴스만 만들고 글로벌하게 제공하는 클래스. 게임에 있는 설정 화면 같이 주로 한가지의 목적으로만 사용하는 것에 사용한다. 아래의 코드에서 보면 Settings라는 객체를 settings, settings1 두개의 다른 인스턴스를 생성하였다. 이는 Settings객체가 public하게 접근이 가능하기 때문이다. 싱글톤에서는 new라는 인스턴스 생성하는 것..
- Total
- Today
- Yesterday
- 프로그래머스
- t-test
- 다이나믹프로그래밍
- 정보보안기사
- springboot
- 그리디
- 리눅스
- t검정
- 코딩테스트
- Python
- 자료구조
- 보안
- 카카오페이
- 딥러닝
- Ai
- 정보보안
- 우선순위큐
- 분산시스템
- 시간초과
- FastAPI
- 백준
- java
- LangChain
- synflooding
- llm
- 보안기사
- linux
- 카카오페이면접후기
- lightsail
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |