본문 바로가기

분류 전체보기

(92)
메모리 구조(Stack , Heap) JVM은 기본적으로 Stack메모리와 Heap메모리 라는 두가지 저장 공간을 이용하여 메모리를 할당한다고 배웠다. Stack메모리와 Heap메모리가 무엇인지 차근차근 다시 알아보려고 한다. 1. 메모리 먼저 메모리란, 프로그램이 실행되기 위해서는 운영체제(OS)가 프로그램의 정보를 메모리에 로드해야 한다. 또한 프로그램이 실행되는 동안 CPU가 코드를 처리하기 위해서는 메모리가 명령어와 데이터들을 저장해야 한다. 위와 같이 프로그램이 운영체제(OS)로 부터 할당받는 대표적인 메모리 공간은 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 구성되어있다. 2. 코드 영역(Code) 코드 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고 부르기도 한다. CPU는 코드 영역에 저장된 명령을 ..
Spring Security 동작 원리 프로젝트를 진행하면서 Spring Security를 활용해서 회원 로그인/로그아웃 처리 과정을 구현 했었다. 당시 시간이 촉박하다는 핑계로 상세하게 들여다보지 않고 로그인이 되는 상세 처리 과정만 이해하고 넘어갔었다. 로그인 과정 로그인 시도 -> username, password 정보를 HTTP body로 전달 인증 관리 -> UserDetailsService에게 username을 전달하고 회원 상세정보를 요청 회원 DB에서 회원 조회 -> 조회된 정보를 UserDetails로 변환 인증 관리자가 인증 처리 -> UserDetailsService가 전달해준 UserDetails의 정보와 클라이언트가 시도한 username,password 일치 여부 확인 UserDetails의 password는 암호문이..
선형 검색(Linear Search)과 이진 검색(Binary Search) 항해를 진행하면서 프로젝트를 완성하는 것에 쫓기다보니 자료구조와 알고리즘 관련해서 깊게 공부를 할 수 없었다. 프로젝트를 마치고 지금부터라도 하나하나 알아가보려고 한다. 먼저 검색 알고리즘이란 데이터 집합에서 원하는 값을 가진 요소를 찾아내는 알고리즘이다. 검색 알고리즘에는 선형 검색(Linear Search)과 이진 검색(Binary Search)이 있다. 선형 검색(Linear Search) 데이터가 모인 집합(배열, 리스트 등)의 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아내는 알고리즘으로 선형 검색 또는 순차 검색이라고 한다. 3 4 5 9 7 0 1 6 8 2 데이터를 정렬하거나 건드릴 필요가 없어 난이도가 쉬운 편이지만 데이터의 양이 많아지면 검색에 소요되는 시간도 비례하여 많아..
나는 왜 JPA를 사용했을까? 항해를 진행하면서 아무렇지 않게 당연히? JPA를 사용했다. 왜 사용했는지는... 사실 처음 배웠던게 JPA다. 그러나 많은 ORM중에 나는 왜 굳이 JPA를 사용했는가?에 대해서 깊게 생각해보지 못했다. 이번 글을 작성하면서 ORM과 JPA에 대한 내용을 정리해보려고 한다. ORM(Object-Relational Mapping) 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. 데이터베이스 데이터 Object 필드 객체를 통해 간접적으로 데이터베이스 데이터..
채팅방 인원수 카운팅 오류(Redis) 항해 9주차 마무리 웹소켓/STOMP를 이용한 실시간 채팅을 구현하였고 채팅에서 실시간 참여 인원을 redis에 저장해보기로 하였다. 사용자가 구독을 하는 순간 정상적으로 인원수 카운팅이 되었지만, 사용자가 다른 페이지를 가거나 브라우저를 닫으면 연결이 끊기는데 연결이 끊기는 순간 인원수 카운팅이 정상적으로 되지 않았다. 여기서 시간을 많이 쏟아부었다... 단순히 disconnect되는 순간 유저 카운팅을 -1되는 로직으로 구현을 하였는데, 구독한 채널에서 유저 카운팅이 되는게 아닌 엉뚱한곳에서 -1이 되고 있었다. 우리팀은 Redis를 구현하는데 생각보다 시간이 오래걸렸고 반드시 이 문제를 해결하고 싶다는 의지에 불탔다. 계속해서 header값에 log를 찍어보았고 실마리?를 찾았다. 해당 채널을 구독..
백준_오르막 수_11057 오르막 수 문제 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수 있다. 입력 첫째 줄에 N (1 ≤ N ≤ 1,000)이 주어진다. 출력 첫째 줄에 길이가 N인 오르막 수의 개수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 1예제 출력 1 10예제 입력 2 2예제 출력 2 55예제 입력 3 3예제 출력 3 220 풀이 과정 dp함수를 2차원 배열로 만들었다. dp배열 의미하는 뜻은 dp[길이(N=자리수)] [마지막 자리..
프로그래머스_부족한 금액 계산하기 부족한 금액 계산하기 문제 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수 놀이기구..
백준_쉬운 계단 수_10844 쉬운 계단 수 문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 예제 입력 1 1예제 출력 1 9예제 입력 2 2예제 출력 2 17 풀이 과정 dp함수를 2차원 배열로 만들었다. dp배열 의미하는 뜻은 dp[길이(N=자리수)] [마지막 자리수] 이다. (ex.2자리수, 마지막자리 숫자1 => dp[2][1] //2자리수, 마지막자리 숫자3 => dp[2][3]) 0으로 시..
프로그래머스_x만큼 간격이 있는 n개의 숫자 x만큼 간격이 있는 n개의 숫자 문제 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한사항 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 x n answer 2 5 [2,4,6,8,10] 4 3 [4,8,12] -4 2 [-4, -8] 입출력 예 설명 없음풀이 과정 n개의 리스트를 리턴해야 하므로 입력받는 n의 길이인 answer배열 선언 반복문으로 answer배열에 순서 대로 값을 넣어주고 2-1. answer배열 다음 index번호에 이전 index값을 누적해서 더해줘야하..
TCP / UDP 차이와 특징 전송계층 이전 글에서 TCP/IP 모델에 대해 공부했다. TCP와 UDP는 TCP/IP의 전송계층 에서 사용되는 프로토콜이다. 전송계층은 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당하는 계층이다. TCP vs UDP TCP는 Transmission Control Protocol의 약자이고, UDP는 User Datagram Protocol의 약자이다. 두 프로토콜은 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되어 있지만, 서로 다른 특징을 가지고 있다. 먼저 TCP는 전송 제어 프로토콜, 연결 지향형 프로토콜이다. 데이터 전송 서비스는 두 통신 프로세스 간에 양방향으로 데이터가 동시에 전송될 수 있는 전이중 통신방식을 사용한다. 반명에 ..