본문 바로가기

분류 전체보기

(31)
노력 1 일차 뒷심이 부족한 나의 문제를 어떻게 해결할까 생각했었다. 생각을 하다보니 정말 생각만 하는 문제가 계속해서 반복되었다. 그래서 '뭐라도 해보자! 실천하면서 생각해보자!' 라는 마음가짐으로 오늘부터 블로그에 오늘 한 것을 남겨볼려고 한다. 이 블로그를 하는 이유는 내가 어떻게 살고 있는지에 대한 기록이기 떄문에 정말 거짓 없이 써볼려고한다. 오늘 한 일 개발 - 알고리즘 문제 1개 취업 준비 - 이력서 다듬기 기타 - 걷기 1시간 30분
성능 개선을 위한 Transactional 처리 JPA 를 사용해 데이터를 조회할 때 Transactional (readonly = true)를 사용하는 것과 사용하지 않는 것의 차이가 있다는 것을 알게 되었다. 그러면 왜 차이가 있을까? JPA는 엔티티가 영속성 컨텍스트에 관리되면 1차 캐시부터 변경 감지까지 얻을 수 있다는 혜택이 많다. 하지만 영속석 컨텍스트는 변경 감지를 위해서 스냅샷 인스턴스를 보관하므로 더 많은 메모리를 사용하는 단점이 존재한다. 그렇기 때문에 데이터가 변경되지 않는 조회는 쓸 때 없는 데이터를 사용할 필요가 없다. 적용방법 성능을 최적화 할 수 있는 방법은 다양하지만, 가장 편리한 방법은 스프링 프레임 워크에서 제공하는 트랜젝션 읽기 전용 모드를 설정하는 방법이다. 방법은 @Transactional(readOnly = tr..
백준 알고리즘 15624 피보나치 수 7 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 1,000,000보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다. 풀이 풀이 방법은 문제에서 제공해준 F..
백준 알고리즘 2670 연속부분 최대곱 문제 N개의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력하는 프로그램을 작성하시오. 예를 들어 아래와 같이 8개의 양의 실수가 주어진다면, 색칠된 부분의 곱이 최대가 되며, 그 값은 1.638이다. 입력 첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나 같고, 9.9보다 작거나 같다. 풀이방법 1. 입력한 수를 배열에 넣는다. 2. 배열에 담긴 숫자를 0번째부터 순서대로 곱한다. 3. 위에서 차례대로 곱한 값을 최댓 값 MAX와 비교하여 MAX 값보다 크다면 MAX에 값을 넣는다. (MAX값 처음은 1) ..
표준과 프로토콜의 세계, 인터넷 & 인터넷이 가능한 메커니즘 인터넷이란 컴퓨터들이 서로 통신 가능한 거대한 네트워크이다. 전세계 컴퓨터를 연결하려면 이름, 주소, 경로, 프로토콜이 필요하다. 프로토콜은 컴퓨터끼리 데이터를 주고받을 때 정해놓은 규칙이다. 가까운 네트워크는 이더넷, 와이파이 블루투스로 연결이 가능하다. 거리가 먼 네트워크는 인터넷으로 연결한다. 인터넷을 사용하기 위해선 몇가지 내용이 필요하다. 먼저 주소가 필요하다. 주소는 내 컴퓨터에서 확인 할 수 있다. 그 다음은 라우팅이다. 라우팅은 쉽게 말해서 경로를 설정하는 것이다. 라우팅은 중간 중간 게이트웨이를 통해 최적의 경로를 찾아 연결한다. 마지막으로는 프로토콜이다. 프로토콜은 위에서 설명했듯이 데이터를 주고 받을 때 정해놓은 규칙이다. 나는 이번 내용에서 프로토콜이 가장 중요하다고 생각한다. 왜냐..
백준 알고리즘 10815 숫자 카드 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이..
항해 5 주차 후기 항해 5주차에는 드디어 백엔드와 프론트엔드의 협업 프로젝트를 진행하였다. 처음으로 이렇게 나누어 협업을 하기 때문에 어떻게 회의를 진행해야할지 프로젝트 방향성을 잡는게 중요하다고 생각했다. 그래서 처음에는 어떤 프로젝트를 진행할지 주제를 선정하였고, 다음으로 주제에 해당하는 기능을 정했다. 기능을 정한 뒤에 백엔드와 프론트엔드가 각자 그 기능을 어떤식으로 구현을 할지 생각을 공유하였다. 그리고 난 후 api를 작성하여 프론트엔드에서 요청하는 Method방법과 request 정보를 정하고 프론트엔드에서 필요한 response데이터를 정했다. 그래서 백엔드팀은 api 설계도를 보고 코딩할 수 있게 하였다. 이렇게 api를 설계한 뒤 프론트 엔드는 와이어 프레임을 작성하였고, 백엔드는 ERD를 작정하였다. 이..
자바 스크립트 동작 과정 & 파이썬 동작 과정 이번 챕터는 프로그래밍 언어의 아주 원초적인 동작과정을 알게 되었다. 프로그래밍 언어의 동작 과정을 알기전에 인터프리터와 컴파일러 기능을 알아야 했다. 인터프리터 언어 프로그래머가 작성한 코드를 기계어로 변환하는 과정 없이 한 줄 한 줄 해석해서 바로 명령어를 실행하는 언어 기계어로 변환하지 않기 때문에 빌드 과정 없이 바로 실행 가능 런타임 상황에서는 한 줄씩 읽기 때문에 컴파일 언어에 비해 속도가 느림 컴파일 언어 프로그래머가 작성한 코드를 모두 기계어로 변환 후 기계에 넣고 기계어 코드를 실행 빌드 과정 (소스 파일 -> 실행 파일)에서 인터프리터 언어에 비해 시간 소요 런타임 상황에서는 이미 소스코드가 변환되어 있기에 빠름 수정 후 다시 컴파일 해야 함 먼저, 자바 스크립트의 동작 과정을 알게 되..