분류 전체보기 357

CORS란 무엇일까?

CORS란? CORS(Cross-Origin Resource Sharing)는 출처가 다른 자원을 공유한다는 뜻으로, 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념 직역하면, 교차되는 출차 자원들의 공유를 뜻함 다른 출처에 있는 자원을 요청하면, 이를 교차 출처 요청이라고 부름 교차 출처 리소스 공유(CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행 출처란? 위의 구성요소 중에서 Protocol + Host + Port 이 세 가지가 같으면 동일 출처..

배열과 링크드리스트

배열이란? 배열(Array)은 각 값에 대해 별도의 변수를 선언하는 대신, 여러 값을 하나의 변수에 저장하는데 사용되는 것! 배열을 선언하려면 대괄호를 사용해 변수 유형을 정의하여 사용해준다 배열은 고정된 갯수의 데이터만큼 연속된 공간에 저장하는데 사용하는 자료구조로써, 배열의 길이는 배열이 생성될 때 설정 가능 한 번 생성된 배열의 길이는 변경할 수 없음! 배열의 각 항목을 요소라고 하며, 각 요소는 숫자 인덱스를 사용해 접근 할 수 있음 맨 첫 번째 요소는 0부터 시작하는 걸 잊지말자! 연관된 데이터를 저장하기 위한 변수의 선언을 줄여주고, 반복문 등을 사용해 계산과 같은 과정을 쉽게 처리 가능 데이터를 추가하거나 삭제할 때는 효율적이지 못함 LinkedList(링크드리스트)란? Collection ..

실전 프로젝트 회고

6주간의 실전 프로젝트 끝났다!! 아쉬운 점은 프로젝트 중반까지 팀원들과 같이 이것저것 테스트 해보면서 잘 따라가고 있었는데 협업을 해야하고 각자의 역할을 맡아 진행할 때부터 속도가 많이 뒤쳐지고 필요한 프로그램 셋팅에도 어려움을 많이 겪었다. 원래 진행하고 있던 부분이 아닌 다른 팀원이 진행하고 있던 부분에 같이 합류해서 진행해야했기 때문이다. 그렇게 역할이 결정되고 진행되었을 때, 스스로 서비스 로직이나 코드를 더 자세하게 파악하고 진행했어야 하는데, 다급한 마음에 제대로 이해가 되지도 않은 상태에서 기능 구현에만 힘쓰려고 하다보니 제대로 된 역할을 하면서 프로젝트를 진행하지 못했던 아쉬움이 크다. 팀원들에게 상황을 전달했을 때, 누구하나 뭐라하는 사람이 없이 다 이해해주었고 괜찮다고 해주셨다. 정말..

실전 프로젝트 - 40일차

직렬화(Serialize)란? 직렬화의 정의 어떤 환경의 데이터 구조를 다른 환경에 전송/저장하기 위해 바이트(Byte) 포맷으로 변환하는 과정 반대의 개념인 역직렬화는 바이트 포맷으로부터 데이터 구조를 추출하는 것 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것 자바에서 객체를 전송 가능한 형태로 만드는 것 직렬화가 필요한 이유 기기마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에 참조형 타입의 데이터들은 전달할 수 없다. 따라서 주소값이 아닌 Byte형태(기본형 타입)로 직렬화한 데이터로 전달해야 파싱이 가능한 데이터가 된다. 즉, 우리가 만국 공통어인 영어를 사용하듯 각자 모두가 알아들을 수 있는 형태로 변환해주는 과정이다! 그리고 직렬화를 하면 VM의 메모리에서 상주하..

23.04.10 - 04.16 -WIL

역시 진짜로 뭐하나 쉬운게 없다~~ 우리 팀원들이 열심히해서 완성한 결과물을 어떻게 해야지 깔끔하고 보기 쉽게해서 자랑할 수 있을까..ㅋㅋㅋㅋ 노션 정리하고~ PPT 만들고~~ 역시 공대생한테 PPT 디자인은 너무 어려운 것... 아니 근데.. 제일 중요한 기능인 엘라스틱 왜케 죽는거니 너.. 나도 잘 모르는데, 열심히 기능 완성해준 우리 팀원들 속상하게 왜그러니.. 찝찝하잖아.. 명확한 원인이 나오지를 않는다... 에러 이유는 시간이 초과되서 그렇다고 하는데.. 관련 에러를 찾아보니.. 시간을 늘려주면 되는거 같은데 내가 자세하게 모르니, 팀원들한테 이런게 있던데 하면서 한 번 물어봐야겠다.. 진짜 언제 99일하지? 하던 99일 다 갔다 진짜.. 나도 고생했고.. 12기도 고생했고.. 우리 팀원들 너무..

실전 프로젝트 - 35일차

실전 프로젝트 발표 자료 만드는중.. PPT 작성하고, 팀 노션 작성하고, 브로셔 작성중... 내 부족한 부분을 팀원들이 채우고 있으니까! 이거 하면서 팀을 돕고 일해야지 그치?ㅋㅋ 팀 로고도 만들어보는 중인데 희한한걸 다 해보는구나 ㅋㅋㅋㅋㅋㅋ 눈아프다 눈아파... 그나저나.. 컴터야 제발.. 울지마라.. 나도 참고있는데 너가 울면 내가 어떡하니.. 조금만 버텨주라 제발 사양은 좋은데 왜 일을 못하니.. 멈추지마라..

실전 프로젝트 - 34일차

간만에 쓰는 TIL.. 적지 않았다. 이유가 있었겠지.. 오늘은 가비지 컬렉터를 알아가보자 가비지 컬렉션, 컬렉터란? Garbage Collection, 줄여서 GC라고도 한다. 메모리 관리 방법 중에 하나로, 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다. 예를 들어 C언어는 프로그래머가 메모리를 할당한 뒤 수동으로 해제까지 직접 해줘야 한다. 그래서 사용자가 메모리를 할당해놓고 필요 없어진 뒤에도 해제를 안하는 일이 생겨 메모리 누수가 있거나, 반대로 해제했던 메모리를 다시 사용하는 실수 때문에 버그가 나오기도 한다. 이러한 문제를 해결하기 위해 제시된 방법이 가비지..

23.04.03 - 04.09 -WIL

실전 프로젝트를 하며 담당했던 기능은 챌린지팀 특성이라 해야할까..? 공통된 목표를 가지고 처음에는 진행했던 것 같다. 1000만건의 데이터에서 검색성능 향상이라는 공통된 목표를 가지고 진행했다. 각자 다양한 방법으로 index를 걸어보며 검색성능을 향상 시켜보았다. 3주차부터는 이제 역할을 분담해서 기능 구현에 나섰는데, 내가 맡은 기능 구현은 Redis와 Spring Batch를 활용한 주문 기능 구현 및 재고 시스템 자동화였다. 이것저것 다 해보았는데.. 기능 구현에는 실패했다. 다른 팀원이 기능을 구현해주어서 다행이었고, 그나마 기능을 맛 봄으로써 조금 쉽게 이해를 할 수 있었다. 이제 정말 끝을 향해 달려가는데, 나에게 주어진 과제가 하나 아직 있는데.. 솔직히 이젠 진짜 코드 못치겠다. 팀원들..

실전 프로젝트 - 28일차

동시성 문제를 해결하는 다양한 방법 Java 사용하는 방법 Synchronized를 활용한 방법 @Service @RequiredArgsConstructor public class StockService { private final StockRepository stockRepository; public synchronized void decrease(Long id, Long quantity) { Stock stock = stockRepository.findById(id).orElseThrow(); stock.decrease(quantity); stockRepository.saveAndFlush(stock); } 자바에서 지원하는, synchronized를 사용하면 접근하고 있는 메서드에 하나의 스레드만 ..

728x90