본문 바로가기

전체 글60

테스트 코드(JUnit)에서 모의 객체가 필요할 땐? "Mockito" Mockito 란? 자바 기반의 모킹 프레임워크이며, 실제 의존성을 모의 객체로 대체하여 유연하고 독립적인 테스트를 가능하도록 한다 모킹(Mocking)이란? 테스트 코드 외부에 있는 의존성들을 대체하기 위해 사용되는 가짜 객체(Mock Objects)를 생성하는 기술 (테스트 코드에 대한 설명 보러 가기) Mockito 의 주요 기능 #1 인자 매처 메소드를 특정 타입의 인자나 조건을 만족할 때만 지정한 값을 반환하도록 설정하여 다양한 입력 값에 대한 메소드의 동작을 검증할 수 있다 #2 행동의 검증 메소드가 정상적으로 호출되었는지, 어떤 매개변수로 호출되었는지, 호출 횟수는 몇 번인지 검증하여 DB 에 저장하는 로직을 검증할 수 있다 #3 부분적인 모의 복잡한 서비스 객체에서 특정 메소드만 모의하여 .. 2023. 12. 26.
equals() 랑 "==" 랑 똑같은 거 아니였어? - JAVA String 변수를 선언하는 방법이 두 가지가 있다는 사실을 아시나요? 흔히(?) 사용한다고 할 수 있는 리터럴을 이용한 방식 String str = "string"; 그리고 new 연산자를 이용한 방식 String str = new String("string"); 두 방식에는 명백한 차이점이 존재한다 new 연산자를 사용하여 선언할 경우 Heap 영역에 존재하게 되고, 리터럴을 사용하여 선언할 경우 내부적으로 String 의 intern() 메소드가 호출되고 해당 문자열이 string constant pool 에 존재하는지 확인하고 존재하면 해당 주소값을 반환하고 존재하지 않는다면 string constant pool 에 넣고 새로운 주소 값을 반환한다 기본적인 String 생성 방식에 대해서 알아봤으.. 2023. 12. 17.
캐시(cache)랑 쿠키(cookie)는 뭐가 다른 거야? 누구나 한 번쯤은 웹서핑을 하다 보면 쿠키 설정을 하라는 문구가 뜨거나. 이전 검색 기록들을 볼 수 있다거나, 광고들이 갑자기 내가 쿠팡에서 직전에 검색했던 상품들로 가득 찼던 경험이 있지 않은가 이것이 바로 쿠키(cookie)다. 쿠기는 크롬과 같은 브라우저에 저장되는 작은 텍스트 조각이며, 사용자의 인증을 도와주는 역할을 한다 만료기간이 존재하여 시간이 지나면 자동으로 삭제되지만, 개발자 도구에서 수정이나 삭제가 가능하며 제 3자 또한 조회할 수 있기 때문에 보안상 민감한 정보를 저장하기엔 부적절하다 따라서 남에게 탈취되거나 조작되어도 크게 문제가 되지 않는 정보들을 저장하면서 유저의 웹사이트 이용을 보다 편하게 해주는 역할이다 예를 들어, 다크 모드 설정 여부 자주 보는 웹툰 목록 등과 같은 간단한.. 2023. 12. 16.
scan.next() 사용 시 주의 사항 - JAVA JAVA 에서 Scanner 를 통하여 String 을 입력받을 때 주로 사용되는 next()... 주의 사항에는 어떤 점들이 있고 nextLine() 과 어떠한 차이가 있을까? 먼저 코드부터 살펴보자 입력값은 Hello World! 이고, 가독성을 위해 입력값은 " " 처리 nextLine() after next() public class Warning { public static void main(String args[]) { Scanner scan = new Scanner(System.in); System.out.print("문자열 입력(Space, Tab, Enter 전까지): "); String wordBeforeGap = scan.next(); System.out.println(wordBefo.. 2023. 12. 14.
[chapter 2] 어라라? 분명 다섯 명이었는데 chapter 2. 어라라? 분명 다섯 명이었는데 점심 식사 후 예정되어 있던 우리의 첫 스터디 점심시간이 끝나고 회의실에 들어가 보니 어라라? 분명 다섯 명이었는데 두 분이나 더 들어오셨다 사람이 많을수록 통제가 안될 수도 있지만 자발적으로 참여한 "어른"들이 그럴 리가 있겠어요? 한 개의 주제에 대해서 더욱 다양한 관점을 공유할 수 있고 이렇게 열정 가득한 분들로 둘러싸이면 나도 자극을 받지 않을까? 그렇게 진행된 우리의 첫 모임...! 음... 나름? 성공적이었다. 다들 당연히 준비를 잘해오시고 소통도 원활하게 이루어졌다 후기를 남겨보자면... "다음 스터디가 기대된다?" 피드백받은 내용들을 바탕으로 다음번엔 내가 제일 잘 준비해 갈 테야 라는 욕심을 부려본다 이 스터디가 오래오래 지속되길 소망하며.. 2023. 12. 13.
NoSql 이 뭐야? 대용량 데이터와 실시간 데이터 처리의 중요성으로 인하여DB의 역할이 현대 어플리케이션에서 점점 더 중요해지고 있습니다전통적인 관계형 DB는 오랜 기간 동안 안정적인 데이터 관리 솔루션을 제공했지만,최근의 데이터 처리 요구사항을 충족시키기에는 몇 가지 한계가 분명히 존재합니다이러한 한계를 극복하고자 등장한 것이 바로 NoSQL입니다 NoSQL이란?"Not Only SQL"의 약자로 전통적인 관계형 DB 외의 다양한 데이터 저장 방식을 의미유연한 스키마, 수평적 확장성, 다양한 데이터 모델 지원 등 다양한 특징을 가지고 있다  특징SQL (관계형)NoSQL (비관계형)데이터 모델테이블 기반의 관계형 모델키-캆, 도큐먼트, 컬럼 패밀리, 그래프, etc스케일링주로 수직적 확장주로 수평적 확장스키마고정된 스키마.. 2023. 12. 12.
[프로그래머스] 알고리즘 고득점 kit - 여행경로 (DFS) 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/43164 DFS(Depth First Search)를 선택한 이유 모든 항공권을 사용해야 하므로 백트래킹을 지원하고, 가능한 모든 경로를 고려하면서 끝까지 탐색하는 DFS 가 더 적합하다고 판단 트리가 아닌 그래프 구현을 선택한 이유 1. 하나의 공항에서 여러 다른 공항으로 갈 수도, a[1].compareTo(b[1])); // 시작 전 정렬(알파벳 순) dfs("ICN", "ICN", tickets, 0, vistedFlag, possibleRoutes); // ICN에서 시작하는 DFS Collections.sort(possibleRoutes); // 알파벳 순 정렬 return po.. 2023. 12. 12.
쓸데없는 이놈의 물욕 이 세상에서 제일 쓸데없는 녀석 "물욕" 인간은 참 간사한 것일까 아니면 적응의 동물인 것일까 ​ 오랫동안 갈망하고, 오랫동안 추구하고, 오랫동안 꿈꿔왔던, ​ 물건을 내 손에 넣는 순간 행복할 줄만 알았는데, 내 인생은 완벽할 줄 알았는데, 아니더라. 그게 전혀 아니더라 ​ 목표를 설정하고, 나의 삶의 지속적인 원동력이 되고, 내가 두 발로 뛰게 만드는 이유가 된다면 좋겠지만. 내 그릇이 작은 건가 ​ 오히려 그와 반대로, 허무함이 밀려오고, 현타가 파도처럼 밀려온다 ​ 소유하고 싶던 간절함이 고스란히 만족으로 이어지는 경우도 있었지만, 생각보다 흔치 않다 ​ 인생의 목표가 명사가 되면 안 된다는 말이 문득 머릿속을 스쳐 지나간다 ​ 2023. 12. 11.
728x90
반응형