전체 글
-
[LeetCode] Longest Substring Without Repeating Characters (Java)IT/Problem Solving 2024. 1. 6. 19:01
문제 문제풀이 과정 1. 카운트배열을 통한 접근 - 문자가 중복되면 안되기 때문에 각 알파벳에 해당하는 불리언 형태의 카운트배열을 만들어놓고 중복값을 마주치면 초기화하도록 구성 - 그리고 failed... 왜지? 문제를 잘못 이해했던 것... 바본가 오랜만에 풀어서 감을 아주 잃어버렸다. - 우선 예제는 소문자만을 얘기하고 있지만, 조건을 보면 English letters, digits, symbols, spaces 모두 들어갈 수 있다. 이런 기초적인 실수를 하다니...ㅠ^ㅠ 감이 아주 죽었구나.... 다시다시 풀이 시작 class Solution { public int lengthOfLongestSubstring(String s) { int maxLength = 0; int cnt = 0; boole..
-
[AWS DVA] 1. AWS IAMAWS/DVA 2024. 1. 6. 13:35
AWS Identity & Access Management (AWS IAM) 1. IAM (Identity and Access Management) - Service that allows you to manage access to AWS services and resources securely. - Enable to contorl who(authentication) can access what(authoriaztion) whitin AWS environment. 2. Users & Groups 1) Root - Account created by default, shouldn't be used or shared 2) Users - Represent individuals or applications inte..
-
[LeetCode] Add Two Numbers (Java)IT/Problem Solving 2024. 1. 4. 00:11
문제 Linked List 형태로 연결된 숫자를 뒤집어 더한 후, 각각의 숫자를 뒤집어서 다시 출력하는 문제 https://leetcode.com/problems/add-two-numbers/description/ 문제 조건 및 설명 - 숫자 범위도 크지 않고, 0으로 시작하지 않는 숫자만을 주기 때문에, 크게 고민하지 않고 for나 while문을 통해 접근하고 각 숫자(digit)에 대한 검증도 필요 없다. - 리트코드는 처음 풀어봐서 쉬운 것부터 풀어보았는데, 이런식으로 클래스 형태를 줘서 신기했다. /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ..
-
[CI/CD] Spring, Jenkins, Nginx, EC2, Docker로 무중단 배포 구현 (2) Jenkins-Gitlab 연동 및 CI 환경 구축Dev Ops/CI-CD 2023. 8. 6. 22:35
지난 번 포스팅 이후로 많은 시간이 지나버렸다... 까먹어서 기억을 되덤어 볼 겸 다시 작성! (싸피가 최근 프로젝트 하느라 조회수가 잘나오더라^_^) 지난 번엔 자동배포 환경에 필요한 툴들을 다운로드 하는 방법에 대해 작성했고, 이번 포스팅에서는 젠킨스로 CI 환경 구축하는 방법까지 작성하고자 한다. 참고로 지금 구축하고 있는 환경은 백엔드용 환경이다. 프론트엔드 배포는 별도로 다룰 예정. [지난 포스팅] 1편. EC2 서버 기본 설정 (도커, 젠킨스, Nginx, JDK, MySQL, Redis 설치) [ Service Architecture ] 이번 포스팅에서 구현할 서비스 구조도는 아래와 같다. 포트를 2개로 구분하여, 서버를 새로 빌드하고 배포하는 과정에서 생기는 서버다운타임 없이 서비스가 운영..
-
[SSAFY] 싸피 8기 비전공 취업 후기 - 비전공자. 잘 취업할 수 있을까?IT/SSAFY 2023. 8. 6. 15:46
싸피 생활에 대한 회고는 아래 블로그 링크에서...https://blog.naver.com/heo0o0o0o/223309426992 22-23. 대기업 퇴사, 싸피 중도 퇴소, 취업 이야기.그 동안 미뤄왔던 (진지한 척하는) 포스팅을 해보려고 한다. 대기업 퇴사. 30대에 도전한 개발자로의 직무...blog.naver.com 나는 싸피 8기 자율프로젝트 중간에 취업으로 중도 퇴소를 했다. 요즘 경제가 어렵다보니 개발자 취업문도 너무 좁아졌고,실제로 7기부터 취업문이 좁아져 지원자는 엄청 많아졌는데 뽑는 사람은 확 줄어버렸다. 나는 대기업 SI/SM 기업 중 하나에 합격하여 다니고 있는데, 이전에는 3자리수로 뽑았다는데 내 동기들은 약 3-40명 가량이다. 거의 1/4~1/5 토막이 난 셈.심지어 뽑는 인..
-
[MySQL/Java] DB 쿼리 성능개선 (2) 랭킹 조회 속도 개선하기 (5s ➡️ 1s대로 줄이기!)DB/MySQL 2023. 6. 29. 21:59
기능 배경 - 개선 대상 : 랭킹 조회 기능 - 랭킹 조회 api 요청시 해당 게임의 Top3에 대한 정보를 DB에서 조회 ➡️ ① Top3 정보 중 하나가 요청자와 일치할 경우 그대로 정보를 담아 return ➡️ ② Top3 정보에 요청자가 없을 경우, 해당 사용자의 등수와 정보를 DB에서 재조회하여 담은 후 return 기존에 해당 기능을 수행하기 위해 작성한 QueryRepository의 코드는 아래와 같다. QueryDSL을 사용해서 작성했는데.. 아무래도 QueryDSL을 잘 알지 못한 상태에서 코드부터 적어서 부족한 부분이 많아 보인다..! 또, 프로젝트였기 때문에 데이터가 많을 경우를 고려하지 않고 아주 미니미한 목데이터 안에서만 테스트를 했기 때문에, 일단 쿼리로 데이터가 "날라만 오..
-
[MySQL/Java] DB 쿼리 성능개선 (1) test용 mock/bulk data 삽입 방법DB/MySQL 2023. 6. 26. 22:09
Gotcha 프로젝트 리팩토링을 하면서 DB 성능 개선에 도전해보고 싶다는 목표! 굉장히 조그마한 프로젝트였기 때문에 쿼리를 신경 쓰지 않고 작성했는데, 데이터가 몇십, 몇백만 단위로 쌓이게 된다면 문제가 발생할 수 있을 것 같다는 생각이 들었다. 그래서 쿼리 성능 테스트를 진행해보기로 했다. 하지만.. 대량 데이터를 넣는 것부터 배울게 아주 많군요...! 우선 테스트하고자 하는 코드를 간략화 하면 아래와 같았다. @CustomSpringBootTest @AutoConfigureMockMvc class ParticipantControllerTest { @Autowired EntityManager em; @Autowired MockMvc mockMvc; @Autowired ObjectMapper obje..
-
[DB] 저장 프로시저 (Stored Procedure)의 개념과 예시DB/DB Basic 2023. 6. 12. 17:11
저장 프로시저 (SP, Stored Procedure)란? : 준비된 SQL문으로, 재사용이 가능하도록 저장한 SQL문을 의미 - 매개변수를 설정할 경우, 매개변수의 값에 따라 SQL문을 실행시킬 수 있음 사용 이유 1. 성능 향상 - SP 생성 이후, 첫 실행을 하게 되면 최적화, 컴파일 단계를 거쳐 그 결과를 캐시(메모리)에 저장 - 이 후 해당 SP 실행시 캐시(메모리)에 있는 결과를 가져와 사용하므로 실행 속도가 향상됨 - 실행 계획이 이미 최적화되어 있기 때문에, SQL문을 매번 구문 분석하고 최적화하는 오버헤드를 줄일 수 있음 2. 유지보수 및 재사용성 향상 - SP 사용시 복잡한 로직과 비즈니스 규칙을 DB내에 캡슐화 할 수 있음 - 여러 어플리케이션이나 스크립트에서 동일한 SP 호출할 수 ..