분류 전체보기
-
[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
나는 싸피 8기 자율프로젝트 중간에 취업으로 중도 퇴소를 했다. 요즘 경제가 어렵다보니 개발자 취업문도 너무 좁아졌고, 실제로 7기부터 취업문이 좁아져 지원자는 엄청 많아졌는데 뽑는 사람은 확 줄어버렸다. 나는 대기업 SI/SM 기업 중 하나에 합격하여 다니고 있는데, 이전에는 3자리수로 뽑았다는데 내 동기들은 약 3-40명 가량이다. 거의 1/4~1/5 토막이 난 셈. 심지어 뽑는 인원이 점점 줄어드는게 눈에 보인다. 그래서 비전공자, 개발자 취업이 정말 안되나요? 결론부터 말하자면 아니요, 잘만합니다. 서울 비전공 자바반 기준으로 우리반의 현재까지 취업률은 약 70% 그것도 90%는 대기업에 갔고, 나머지도 좋은 중견기업에 들어갔다. 삼성, 현대, LG, 롯데, 국민, 신한, 네이버, 한화, 배민(우..
-
[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 호출할 수 ..