본문 바로가기 메뉴 바로가기

감자도 개발해요

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

감자도 개발해요

검색하기 폼
  • 분류 전체보기 (147)
    • 일기 (4)
    • 패스트캠퍼스 (13)
      • 과제 (6)
      • 기자단 (7)
    • 백엔드 공부하기 (40)
      • TIL (40)
    • 알고리즘 공부하기 (21)
      • 백준 (13)
      • 프로그래머스 (1)
    • CS (18)
      • 자료구조 (6)
      • 운영체제 (7)
      • 네트워크 (0)
      • 데이터베이스 (5)
    • SQL 공부 (1)
    • Git (3)
    • JAVA (12)
    • Spring boot (17)
      • MSA (1)
    • Spring (2)
    • node js (16)
      • 노드 리액트 기초 (9)
  • 방명록

전체 글 (147)
BOJ 2800 괄호제거 JAVA

문제 링크: https://www.acmicpc.net/problem/2800 🌟 사용한 알고리즘 및 자료구조- 비트 마스킹 (백트래킹 할 때 사용)- 스택 (괄호 쌍 구할 때)- 우선순위큐 (문자열 사전 순 출력)- 맵 (문자열 중복 검사) 🌟  만약 15% 에서 틀린다?다음 반례 참고 (문자열 중복 검사를 해야함) https://www.acmicpc.net/board/view/129131  🌟 코드 (JAVA) 1. 괄호의 갯수 파악 필요 (문제에 주어진 수식은 괄호가 올바르단 명제가 있기 때문에 따로 검사 X)- 괄호 쌍 확인 방법 -> [스택] 사용- 괄호 인덱스 보관 -> 배열 사용  2. 괄호의 갯수는 10개가 최대임이 문제에 나와있기 때문에 백트래킹 문제 없음. - 괄호의 갯수 만큼 백..

알고리즘 공부하기/백준 2025. 2. 2. 15:55
2024년

2025년하고도 2월이지만, 카페에서 갑자기 생각난 기념으로 써보는 글 두괄식 글의 중요성을 알게된 요즘, 이 포스팅의 시작은 키워드로 해볼까한다.  2024년 키워드는 [변화]다. 작년의 나는 여러가지 변화를 겪었다. 포스팅에 못 적을 사적인 변화도 겪었고, 개발자로서 시작의 변화도 겪었다.  [시작으로 인한 변화]학교를 다닌 4년동안 난 매우 열심히 살았다고 자부했지만, 작년 취업을 준비하면서 나의 생각은 오만이었다고 느꼈다. 경기가 안 좋아지고, 무수히 많이 뽑던 취업 시장에서 단 1년만에 문이 확 좁아진 현재, 대부분의 기업은 수 많은 취준생들 중 매우 열심히 살아온 준비생들만 뽑는다.  솔직히 많이 슬펐다. 많이 후회했다. 20살 때 왜 재수를 안했는지도 후회했고, 대학원 진학하지 않았던 것도 ..

일기 2025. 2. 1. 16:21
Redis PUB/SUB, WebSocket 실시간 채팅 개발기 4 : 채팅방 리스트 최신화 성능 개선기

🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 1 : 설계하기 🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 2 : 채팅 기능 구현 🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 3 : 채팅방 리스트는 어떻게 최신화할까? 안녕하세요. 이번 포스팅에서는 채팅 기능을 어떻게 발전시켰는지 작성해 보겠습니다. 결과부터 보여드리자면, 저희의 채팅 기능 속도는 평균적으로 130ms -> 8ms 로 향상했습니다. 약 1500% 정도나 향상하였습니다. %로 하니까 숫자가 믿기지 않네요! [캐치룸]은 채팅서버와 메인서버가 분리된 간단한 MSA 구조를 갖고 있습니다. 채팅 메시지는 Mongo DB에 저장되어, 채팅 서버에 연결되어 있는 반면에, 채팅방 리스트..

Spring boot 2024. 2. 15. 01:52
Redis PUB/SUB, WebSocket 실시간 채팅 개발기 3 : 채팅방 리스트는 어떻게 최신화할까?

🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 1 : 설계하기 🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 2 : 채팅 기능 구현 🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 4 : 채팅방 리스트 최신화 성능 개선기 안녕하세요! 저번 글에서는 채팅 기능 코드를 작성하였습니다. 채팅 메시지를 웹소켓과 Redis를 활용해서 구현하는 것은 이해를 했는데, 채팅 기능에서는 채팅방 리스트 또한 중요합니다. 카카오톡을 보면 마지막 메시지에 따라 채팅방이 정렬이 됩니다. 그렇다면 어떻게 채팅방 리스트의 최신화를 해야 할까요? 🌟 채팅방 리스트의 최신화? 사실 이 문제 때문에 저희는 몇 주를 고민했었습니다. 채팅에 대한 정보는 구글에 널리 퍼져있었지만..

Spring boot 2024. 2. 15. 01:46
Redis PUB/SUB, WebSocket 실시간 채팅 개발기 2 : 채팅 기능 구현

🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 1 : 설계하기 🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 3 : 채팅방 리스트는 어떻게 최신화할까? 🔗 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 4 : 채팅방 리스트 최신화 성능 개선기 안녕하세요! 전 글에서는 [캐치룸]의 채팅 기능이 어떠한 기술을 써서 설계했는지 작성하였습니다. 이번 글에서는 실제 코드와 함께 작성하겠습니다. 💻 준비물 Redis - 저는 로컬에서는 Docker에 깔아서 사용했고, EC2에서는 엘라스틱캐시에 연결하여 사용했습니다. Spring boot 특별한 건 없습니다. ✏️ 의존성 주입 //websocket implementation 'org.springframew..

Spring boot 2024. 2. 15. 01:13
[기자단] 패스트캠퍼스X야놀자 백엔드 부트캠프 회고

더운 여름날에 시작했었던 부트캠프가 한겨울을 지나 서서히 따뜻해질 때쯤 끝이 났습니다. 짧다면 짧았던 혹은 길다면 길었던 7개월 간의 부트캠프 회고 작성해보겠습니다. 📌 지원 후기 컴퓨터 전공을 졸업하고 나서 방황을 겪었습니다. 스스로 생각해봤을 때 취업하기에는 많이 부족하다고 느꼈고, 공부를 더 해야겠다고 결심하여 부트캠프를 찾았습니다. 저는 시간이 많이 없었기 때문에 최대한 빠르게 시작하는 부트캠프를 찾고 싶었고 기준을 다음과 같이 잡았습니다. 1. JAVA 백엔드 부트캠프 2. 내가 알만한 기업 연계 3. JAVA 프로젝트 위주 4. 최대한 빠르게 시작 이 모든 조건을 충족하는 부트캠프는 제가 지원했을 당시에 (5월) 야놀자 X 패스트캠퍼스 부트캠프밖에 없었습니다. 당시에 N사 부스ㅌ캠프도 최종합격..

패스트캠퍼스/기자단 2024. 2. 11. 23:49
Redis PUB/SUB, WebSocket 실시간 채팅 개발기 1 : 설계하기

안녕하세요. 숙박 거래 프로젝트 [캐치룸] 에서 일대일 실시간 채팅을 구현하였습니다. 웹소켓으로 실시간 채팅을 위한 기반을 다지고, Redis의 Pub/Sub를 활용해서 여러 서버에서도 채팅이 가능하도록 구현했습니다. 또한 저는 채팅방 실시간 정렬하는데에도 redis를 활용하였습니다. 다음 게시글로 이어집니다. Redis PUB/SUB, WebSocket 실시간 채팅 개발기 2 : 채팅 기능 구현 Redis PUB/SUB, WebSocket 실시간 채팅 개발기 3 : 채팅방 리스트는 어떻게 최신화할까? Redis PUB/SUB, WebSocket 실시간 채팅 개발기 4 : 채팅방 리스트 최신화 성능 개선기 이번 글 [1. 설계하기] 에서는 [캐치룸] 의 채팅 기능을 설계하기 위해 어떤 기술들을 왜 사용했..

Spring boot 2024. 1. 31. 19:30
[Spring boot] [redis] redisTemplate, ValueOperations에 커스텀 객체 List 형태로 저장하는 방법 - 삽질 기록

레디스를 사용하면서 객체가 담긴 List를 저장해야하는 방법이다. 📌 RedisConfig redisTemplate.setValueSerializer 에 Jackson2JsonRedisSerializer(Object.class)); 가 중요하다! @RequiredArgsConstructor @Configuration public class RedisConfig { private final RedisProperties redisProperties; //생략 /** * 어플리케이션에서 사용할 redisTemplate 설정 */ @Bean public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate red..

Spring boot 2024. 1. 26. 14:46
[기자단] 패스트캠퍼스X야놀자 백엔드 부트캠프 : 파이널 프로젝트 후기

🌟 파이널 프로젝트란? 야놀자와 협업하는 기업 연계 프로젝트이다. 실제 포트폴리오에서도 야놀자와 협업이라고 기재할 수 있는 프로젝트이다. 야놀자가 제시한 프로젝트 주제들 중 하나를 맡아 PM, UXUI, FE, BE인 4개의 부트캠프 수강생이 모여 한팀을 이룬다! 프로젝트 주제는 대외비이기 때문에 자세히 기술하지는 않지만, 내가 맡은 주제는 당근마켓같이 '숙박 거래 서비스'라고 보면 될 것 같다. 📌 우리의 프로젝트 [캐치룸] ? 우리 프로젝트의 이름은 캐치룸이다. 숙소를 빠르게 catch 하자! 라는 의미에서 지었다. 팀원은 PM 5명, UXUI 1명, FE 6명 그리고 내가 속한 BE 4명으로 이루어져있다. 프로젝트가 시작되면 다음과 같은 순서로 진행했다. 1) 팀빌딩 2) PM의 기획 기간. 이때 ..

패스트캠퍼스/기자단 2024. 1. 21. 11:32
[Spring boot] [MSA] Feign client 사용하기

📌 개요 캐치룸 프로젝트에서는 채팅 서버와 메인 서버를 나누어서 진행하고 있다. 하지만 채팅 서버에서도 메인 서버에 연결된 RDS를 사용해야하는 일이 있었고, 처음에는 채팅 서버에도 RDS를 연결하여 적용하고자 했다. 하지만 2개의 서버가 같은 RDS를 바라볼 경우 다음과 같은 의문점이 생긴다. 서버를 분리한 이유 자체가 특정 서버가 다운되더라도 다른 서버가 유지될 수 있도록 함인데, 두개의 서버가 같은 DB를 바라보는 것 자체가 위의 장점에 모순되는 것 아닌가? 만약 메인 서버의 문제로 인해 RDS가 다운되면, 채팅 서버 쪽에서도 문제가 생길 수 있다. 혹은 반대로 채팅 서버에서 RDS를 망가뜨리면, 메인 서버 또한 문제가 생길 수 있다. 그래서 채팅 서버의 RDS 참조를 과감하게 삭제하고, RDS를 ..

Spring boot/MSA 2024. 1. 18. 17:47
[Spring boot] EC2 배포시 spring boot Timezone 한국 시간으로 변경하기

📌 개요 채팅 어플리케이션 개발 중 채팅 보낸 시간을 LocalDateTime.now() 로 보내고 있었다. 배포시에는 미국 시간으로 저장이 되는 문제가 발생 했다 📌 해결 방법 @SpringBootApplication public class ChatApplication { //추가 @PostConstruct public void started() { TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul")); } public static void main(String[] args) { SpringApplication.run(ChatApplication.class, args); } } 아예 부트를 실행할 때 제일 먼저 timezone을 서울로 지정해주었다.

Spring boot 2024. 1. 18. 17:22
[문제 해결] [성능 개선] redis를 이용한 주문 재고 관리 동시성 제어 (Facade 패턴, AOP 이용)

전에 비관적 락을 이용해 동시성을 제어 했었다. (블로그 링크) 🌟 이 글의 목적 및 정리 사항 - 기존에 비관적 락을 걸어주어 주문 동시성 처리를 하였음. - 동일한 리소스에 1000개의 접근 (500개의 주문, 500개의 단순 조회)가 있다고 가정할 때, 주문에 대해 정상적으로 동시성 문제는 해결됐으나, 동시 조회는 안됐음. - redis 를 이용한 분산락을 이용해 해당 문제 해결 - 퍼사드 패턴을 이용했으나, 보다 더 확장성을 위해 AOP로 구현함. 📌 비관적 락과 분산락의 차이 비관적 락 (cf. 배타락) 해당 데이터(레코드) 읽고, 쓰는 모든 작업에 lock을 걸어서 다른 자원이 읽고 쓰는 접근을 못하게 함. 분산 락 여러 서버로 구성된 분산 시스템에서 데이터의 동시 접근을 제어하기 위한 메커니..

Spring boot 2023. 12. 20. 15:32
패스트캠퍼스X야놀자 백엔드 부트 캠프 : 미니프로젝트 회고 [ 숙박 예약 서비스 ]

12조 중 1등 했다 야호! 💻 프로젝트 개요 숙박 예약 서비스 (ref. 야놀자, 에어비엔비) 📌 프로젝트 명 트릴리언 (Tr1ll1on) 📌 기간 2023.11.20 (월) ~ 2023.12.01 (금), 2주 📌 참여 인원 프론트 5명, 백 4명 (나는 백) 📌 개발 환경 및 의존성 언어 : JAVA 17 프레임워크 : Spring boot, Spring scurity RDB : MySQL DB 관리 : JPA, MyBatis 데이터 제공 : 한국관광공사_국문 관광정보 서비스 ⛑️ 배포 환경 (CI/CD) Github action, S3, EC2, Codedeploy, RDS, Elastic Load Balancer, Route53, AWS Certificate Manager 📃 아키텍처 (백엔드만..

패스트캠퍼스/과제 2023. 12. 12. 02:34
[기능 개발] MySql에 QR code 이미지 저장하고, 결제 처리하기 기능 개발기 (QR code 결제)

프로젝트 [만원의 행복] 개발 중에 이미지 저장하는 DB가 아직 구축이 되지 않아서, 일단 MySql에 이미지로 저장하고 프론트엔드한테는 endpoint api로 전달하기로 했다. ✔️ 결제 처리 로직 1) 짠처리 상품 구매 2) 서버 : 결제 API 처리 3) 서버 : QR code 발급 1) 짠처리 상품 사용하고 싶음 2) 업주 : QR code 찍음 3) 서버 : QR code 사용처리 4) 상품 제공 ✔️ ERD 는 다음과 같다. (아직 수정 중이고 많이 부족하다ㅜ) 📌 QR image Entity (QR code 이미지 저장 entity) 일단 QR 코드 (이미지) 를 저장할 수 있는 entity는 다음과 같다. 이미지는 byte 타입으로 저장해야하므로, byte[] 로 선언한다. ✔️ @Lob..

Spring boot 2023. 12. 8. 02:45
[성능 개선] 상품 주문 시, 비관적 Lock으로 동시성 제어하기 : curl을 이용한 동시성 테스트

상품 주문하기를 개발하던 중, 단 1초의 오차도 없이 동시다발적으로 상품을 주문한다고 가정할 때 문제가 발생한다. 일단 동시적으로 값을 보내주기 위해 테스트를 만들어보자. #상황 원래는 로그인 환경에서 해야하지만, 그러면 테스트가 더 복잡해지니 시큐리티에서 로그인 안해도 되도록 설정을 바꿔준 후 로컬에서 테스트를 진행했다. 포스트 맨에서 Body를 작성한 후에, 옆에 누르면 자동으로 curl 코드를 만들어준다. 그대로 복사. 메모장에 여러번 복붙해서 테스트 케이스를 만들자, 여러개 붙일 때에는 & 를 붙여준다. 그대로 전부 복사해서 터미널에 실행시키면 끝 📌 문제 상황 요청을 7개를 보냈으나, 응답이 7개는 정상적으로 온다. 그렇지만, DB에는 1개밖에 처리되지 않은 상태. 어찌보면 예외 발생보다 더 최..

Spring boot 2023. 11. 30. 04:24
🌟 EC2 인스턴스 사이트에 연결할 수 없음 해결 : AWS + SpringBoot + S3 + RDS + github actions + CodeDeploy CI/CD 삽질 기록기 3

정말 이유도 모르겠고 구글링 해도 잘 안 나왔다. 이유는 간단하다. RDS 연결시에 id, pw를 따로 보관해두었지만, S3에 올릴 때 jar 파일에는 그 값이 들어가야한다. #1 프로젝트 레포지토리 > Settings > Security > Secrets and variables 에 Application.yml 파일 내용을 기록한다. id, pw를 기록해야하므로, 보안상 시크릿에 보관하는 것이다. #2 workflows 안에 있는 CD 역할 하는 deploy.yml에 해당 내용을 추가한다. # 2-1) yml 파일 추가 - name: Create application.yml run: | mkdir -p src/main/resources echo "${{ secrets.APPLICATION_YML }}"..

백엔드 공부하기/TIL 2023. 11. 27. 17:51
이전 1 2 3 4 ··· 10 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • 국비지원취업
  • 패스트캠퍼스강의
  • 데이터베이스
  • 채팅기능개발
  • springboot
  • #국비지원취업
  • 백준
  • 과정중간회고
  • Java
  • TiL
  • 백엔드
  • qjzl
  • boj
  • 자료구조
  • 그룹스터디
  • 야놀자
  • 자료구조 #스택 #큐 #덱 #선형자료구조
  • 그룹스터디워크샵
  • 부트캠프
  • 커리어멘토링
  • 백엔드부트캠프
  • 야놀자X패스트캠퍼스부트캠프
  • 국비지원캠프
  • 패스트캠퍼스
  • be
  • 카카오API
  • 백엔드개발자
  • 프로젝트후기
  • 스터디후기
  • 국비지원
more
«   2026/08   »
일 월 화 수 목 금 토
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
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바