본문 바로가기

분류 전체보기

(201)
자바 버전 선택에 대한 이유 자바 버전에 선택에 있어 고려할 부분을 두 가지로 나눠보면 실무작업과 학습으로 나눌 수 있을 것이다.학습용도에서는 버전이 자신이 학습할 기술에 맞게 버전을 선택하고 지원기간도 별도로 고려 대상에 넣지 않는다.하지만, 개발을 통해 운영이 필요할 경우에 자바 버전을 선택하는 데에는 많은 것을 고려해야 하는데, 그중 가장 중요하다고 생각하는 것은 서비스의 지원 유무일 것이다.많이 사용하는 버전들을 보면 LTS(Long Term Support)라고 붙은 장기간 지원을 해주는 버전을 많이 사용하고 있다.Java 8 (Java1.8)Lambda의 기능이 추가되고 가장 많은 가장 긴 지원기간을 가지고 있고 안정성과 신뢰성이 높아 오랜 기간 동안 사용되고 있다. 주요 기능Lambda Expressions : 함수형 프..
한 주 정리 : 24_05 3주차 이번 주 목표정리한 개념 및 CS용어를 체득시키기토이 프로젝트에 최적화 적용하고 추가 기능 처리 해보기진행 내용토이 프로젝트에 최적화 적용하고 추가 기능 처리 해보기토이 프로젝트에서 유저 연관관계에서 발생한 문제로 인해 불필요하게 사용되는 쿼리를 연관관계를 수정해 발생하지 않도록 고치고 게시글 상세 정보 조회 시 댓글의 유저 정보를 가져오는 상황에서 발생하는 N + 1문제를 최적화해 해결하였다.좋아요 기능에 적용한 레디스를 구체화시키고, 캐시를 데이터베이스에 적용하는 부분은 구현 중에 발생하는 문제를 잡지 못해 좀 더 확인을 해봐야겠다.정리한 개념 및 CS용어를 체득시키기학습하고 정리한 내용들을 한동안 안보고 다시 보니 완전히 이해했다고 했던 부분도 먼가 한 군데씩 부족해 보이는 부분들이 보였다. 확실히..
사이드 프로젝트 : 중고 거래 플랫폼 - 좋아요 수정 레디스 적용 이유좋아요 기능은 빈번하게 발생하는 기능으로 사용할 때마다 데이터베이스에 연결해서 좋아요 수치를 조정하면 많은 부하가 발생할 수 있다. 그렇기 때문에 레디스를 이용해서 캐시를 사용하면 해당 문제를 해결할 수 있다.레디스 사용시 값을 String으로 사용한 이유좋아요 수치를 캐시로 사용 시 set타입으로 게시글 및 댓글의 아이디를 키로 잡고 값을 사용자의 아이디를 추가해 해당 사용자가 게시글 및 댓글의 좋아요 여부를 표시할 수 있다.좋아요 여부를 확인 하기 위해서 키를 이용해서 set에 들어있는 값을 조회해 확인할 수 있는데, set의 경우는 원하는 값 하나를 지정해서 출력할 수 없기 때문에 set 전체를 가져온 다음 set.contains()를 이용해 값을 가지고 있는지를 확인해야 한다.하지..
사이드 프로젝트 : 중고 거래 플랫폼 - 게시글 관련 쿼리 최적화 게시글 상세 조회 시 최적화게시글 상세 조회 시 댓글을 작성한 사람의 정보를 가져오는 곳에서 N + 1 문제 발생 원인 파악 게시글 상세정보 데이터를 보낼 때, DTO에 게시글 엔티티를 통채로 넘긴 다음 DTO 생성자 안에서 게시글 데이터에 있는 댓글 정보를 찾아 바로 댓글 DTO 리스트로 만들어 전송을 한다. 게시글 데이터 안에 있는 댓글 리스트를 가져올 때는 댓글 쿼리 하나가 발생하지만, 댓글 리스트에서 댓글을 DTO로 만드는 과정에서 댓글의 유저 아이디를 가져오는 과정에서 N + 1 문제가 발생했다. 해결 방안 게시글 엔티티안에 있는 댓글 리스트를 이용하는 것이 아닌, 게시글 아이디를 이용해 댓글을 별도로 조회하면서 패치 조인으로 유저 정보를 한 번에 가져온 뒤 댓글 DTO를 만들고 해당 댓글 DT..
[JAVA 알고리즘]BAEKJOON 9527번 1의 개수 세기 1의 개수 세기문제 설명두 자연수 A, B가 주어졌을 때, A ≤ x ≤ B를 만족하는 모든 x에 대해 x를 이진수로 표현했을 때 1의 개수의 합을 구하는 프로그램을 작성하시오. 즉, f(x) = x를 이진수로 표현 했을 때 1의 개수라고 정의하고, 아래 식의 결과를 구하자. ∑𝑥=𝐴𝐵𝑓(𝑥)입력 첫 줄에 두 자연수 A, B가 주어진다. (1 ≤ A ≤ B ≤ 10^16) 출력1의 개수를 세어 출력한다.제한사항없음입출력 예inputreturn2 1221문제 분석문제에서 주어지는 값이 10^16으로 int의 범위를 넘어 가므로 long을 사용해야 한다.비트마스크를 사용하기 위해서 최대 값인 10^16을 이진수로 했을 경우, 총 57자리의 크기가 필요하므로 최대크기를 57로 지정해 준다.이진수에서 ..
[알고리즘] 비트마스크 비트마스크이란? 비트마스크는 이진수 표기법의 특징을 활용한 비트 연산을 이용해 부분집합을 표현하는 것이다.비트 마스크를 이용하면 더 빠른 수행 시간, 더 간결한 코드, 더 적은 메모리 사용이라는 효과를 얻을 수 있다.비트의 연산A101010B01106A & BAND 연산 : 둘다 1이면 1, 아니면 000102A | BOR 연산 : 둘다 0이면 0, 아니면 1111014A ^ BXOR 연산 : 둘이 다르면 1, 아니면 0110012~ANOT 연산 : 0이면 1, 1이면 001015B 왼쪽 시프트 : X비트 만큼 왼쪽으로 이동110012A >> 1오른쪽 시프트 : X비트 만큼 오른쪽으로 이동01015시프트 연산은 X비트만큼 2를 곱하고 나누는 것과 같다. (2의 X제곱을 곱하고 나누는 것과 동일)비트마스크..
한 주 정리 : 24_05 2주차 이번 주 목표토이 프로젝트에 최적화 적용하고 추가 기능 처리 해보기김영한의 실전 자바 - 중급 1편 강의 시청 및 내용 정리진행 내용토이 프로젝트에 최적화 적용하고 추가 기능 처리 해보기토이 프로젝트에서 프론트 부분이 만들어져 있지 않아 개인적인 욕심으로 프론트 부분을 리엑트를 이용해서 어느 정도는 나오면 좋을 것 같아 최적화를 적용하기 전에 추가하는 작업을 하고 있지만, 생각보다 예전의 리엑트의 느낌과 달라진 게 있어 바로바로 화면을 만들지는 못하였다. 현재 게시글 관련 화면을 추가하였고 다른 화면들이 추가되면 최적화등을 해보면서 체득하는 과정을 해봐야겠다.김영한의 실전 자바 - 중급 1편 강의 시청 및 내용 정리기본적으로 사용하던 String과 시간 관련 클래스들의 자세한 내용을 파악할 수 있었고, ..
[JAVA 알고리즘]BAEKJOON 27172번 수 나누기 게임 수 나누기 게임문제 설명《보드게임컵》을 준비하다 지친 은하는 보드게임컵 참가자들을 경기장에 몰아넣고 결투를 시키는 게임 《수 나누기 게임》을 만들었습니다.《수 나누기 게임》의 규칙은 다음과 같습니다.게임을 시작하기 전 각 플레이어는 1부터 1000000 사이의 수가 적힌 서로 다른 카드를 잘 섞은 뒤 한 장씩 나눠 가집니다.매 턴마다 플레이어는 다른 플레이어와 한 번씩 결투를 합니다.결투는 서로의 카드를 보여주는 방식으로 진행되며, 플레이어의 카드에 적힌 수로 다른 플레이어의 카드에 적힌 수를 나눴을 때, 나머지가 0이면 승리합니다. 플레이어의 카드에 적힌 수가 다른 플레이어의 카드에 적힌 수로 나누어 떨어지면 패배합니다. 둘 다 아니라면 무승부입니다.승리한 플레이어는 1점을 획득하고, 패배한 플레이어는..