분류 전체보기

·Algorithm
오랜만에 작성하는 알고리즘 포스팅:)오늘은 정렬중에 병합정렬 즉, 머지소트를 작성해보고자 한다.때때로 알고리즘 시험중에 외부 라이브러리를 사용할 수 없어 직접 구현해야하는 경우가 있다.그러니 이번기회에 개념을 정리하며 나와같이 머리에 넣어보도록 하자! 😚🧁 병합 정렬(merge sort) 알고리즘?존 폰 노이만(John von Neumann)이라는 사람이 제안한 방법병합 정렬은 분할정복 방식과 재귀 알고리즘을 이용한 정렬알고리즘이다.즉, 주어진 배열을 원소가 하나밖에 남지 않을 떄까지 계속 둘로 쪼갠 후에 다시 크기순으로 재배열 하면서 원래 크기의 배열로 합치는걸 반복한다.병합정렬의 구조상 최대한 작게 문제를 쪼개어 앞의 부분 리스트부터 차례대로 합쳐나가기 때문에 안정정렬 알고리즘이기도 하다. 😀?..
·Docker
서론 이번에 진행했던 프로젝트에서 배포를 담당했었다. 배포라고 하면 소스코드가 업데이트될때마다 자동으로 배포해주는 CI/CD 구축을 하는 것이 꽃이라고 할 수 있겠...지만, 당시의 나는 CI/CD 툴에 대해 알아보고 공부하기에는 시간이 턱없이 부족한 상황이었다. 그래서 수동 배포를 비주기적으로 하는 것이 최선이었다. 처음에는 로컬에서 docker image를 만들어 docker hub에 push하고, 그것을 EC2 서버에서 받아 컨테이너를 구동시키는 방식을 채택했었다. 물론 그런 방식으로 배포를 하려면 배포할 때마다 로컬에서 프론트와 백 코드를 빌드한 후, 각각 이미지로 만드는 과정을 거쳐야 해서, 불편한 점이 이만저만이 아니었다. 로컬에서 빌드를 다시 해야하니 하던 작업도 무조건 멈춰야 했고, doc..
·Infra
들어가기 전에이번 프로젝트는 MSA 구조로 하자!! 라는 말이 나왔을 때 MSA가 뭐야?? 라는 생각부터 들었다. 계속 공부해도 이렇게 모르는게 많다니. 그래도 일단 모르면 공부해서 적용 해야지 뭐 어떡할거야!!! 라는 마인드를 작창했기에, MSA가 무엇인지 부터 낱낱이 파헤져보고자 한다. MSA 란?MSA란 Microservice Architecture 의 줄임말로, 간단히 정의하자면" 하나의 어플리케이션을 다수의 독립적인 서비스들의 집합으로 구성하는 것" 이다. Martin Fowler는 MSA에 대해 다음과 같이 정의하였다.In short, the microservice architectural style is an approach to developing a single application as..
·Spring
언녕하세요 정만입니다~ @Bean과 @Component가 빈을 등록할 때 사용하는걸 알았지만 정확한 차이를 몰라 이번 기회에 정리해보았습니다. 💡 스프링 빈은 스프링 IoC(제어의 역전) 컨테이너가 생성하고 관리하는 객체로 애플리케이션의 구성 요소를 의미합니다. 스프링 IoC 컨테이너는 빈의 생명주기와 의존성을 관리하고 필요할 때 빈을 주입합니다.  @Bean- 주로 @Configurartion이 붙은 클래스내에서 사용합니다.- 특정한 객체의 생성 로직이 필요할 때나 외부 라이브러리의 객체를 빈으로 등록할 때 사용합니다.- 주로 외부 라이브러리나 복잡한 초기화가 필요한 객체에 사용됩니다.- 메서드 레벨에서 수동으로 빈을 정의하고 등록합니다.@Configurationpublic class AppConfi..
·React
useCallback Hook이란 ? useMemo와 마찬가지로 메모제이션 기법을 이용한 Hook으로 함수의 재사용을 위한 Hook이다.리렌더링 간에 함수 정의를 캐싱해준다. 아래의 코드를 보면 첫번째 인자는 리렌더링 간에 캐싱할 함수 정의이고 두번째 인자는 반응형 값들이 들어간다.여기서 반응형 값이 변경(의존성이 변경)되었을 때만 다시 메모제이션된 버전이 변경된다.const memoizedCallback = useCallback( () => { doSomething(a, b); }, [a, b],);   또 다른 예시로 이 코드의 경우 x,y값이 바뀌지않는 경우기존 함수를 계속 반환하고 다음 렌더링 때 기존 함수를 다시 사용한다.만약 이어지는 렌더링에서 의존성을 비교했을 때 전과 달라지면 이..
·TroubleShooting
문제프로젝트를 진행하면서 만났던 무한 렌더링 문제문제의 코드는 다음과 같다.export default function SideBar(){ const [isChat,setIsChat] = useState(true); return ( 채팅 내담자 정보 { isChat? : ..
·Java
코딩 컨벤션이 중요한 이유일관된 형식과 스타일을 유지하게 해주어 가독성이 향상되고, 개발 생산성이 증가합니다.코드는 시간이 지남에 따라 변경되고 확장되기 마련입니다. 일관된 코드 스타일을 유지하면 다른 개발자가 코드를 수정하거나 업데이트 하는 경우 쉽게 접근 할 수 있습니다.어느 컨벤션에 따라야 할까?코딩 컨벤션은 사실 정답이 정해져 있는 것이 아니며, 기업마다 다르고 심지어 팀 단위로도 다르기도 한다. 따라서 사람들이 많이 사용하는 코딩 컨벤션인 구글의 코딩 컨벤션을 적용해보기로 하였으며,일관성을 유지하는 것이 중요합니다.자바에서 쉽게 코딩 컨벤션을 적용하는 방법대부분의 IDE에서는 Auto Formatting을 지원하고 있습니다.vscode에서 eslint와 prettier를 사용하듯 자바를 사용할 ..
·CS
프로세스 동기화란 프로세스들 사이의 수행시기를 맞추는 것을 의미합니다. 여기서 프로세스들 사이의 수행 시기를 맞춘다는 의미는 또 크게 2가지 뜻으로 쓰입니다. 1. 실행 순서 제어를 위한 동기화 : 특정 조건이 충족되어야만 프로세스가 실행을 이어 나간다. writer 프로세스와 reader 프로세스가 동시에 실행 중이라고 가정할 때 두 프로세스는 아무 순서대로 실행 돼서는 안된다. reader 프로세스는 ‘book 안에 값이 존재한다’ 는 특정 조건이 만족 되어야만 실행을 이어나갈 수 있다.2. 상호 배제를 위한 동기화 : 공유 자원에 대한 동시 접근을 방지하는 것.아래 와 같이 프로세스 A,B가 존재합니다.프로세스 A ( 계좌 잔액을 읽음 → 읽어 들인 잔액에서 2만원을 더함 → 더한 값을 저장)프로세..
·Infra
들어가기 전에이번 프로젝트에서 AWS S3를 이용해 이미지를 업로드하고, 그 URL을 DB에 저장하여 이미지를 사용해보았다. 이때 URL을 그대로 사용하면 내 버킷의 이름이 노출되므로, Cloud Front를 이용해 보안을 높여보았다. CloudFront란 AWS에서 제공하는 CDN(Content Delivery Network) 서비스이다.그럼 먼저 CDN이 무엇인지 알아보자.CDN 이란?CDN은 지리, 물리적으로 떨어져 있는 사용자에게 캐싱을 통해 좀 더 빠른 속도로 사용자에게 컨텐츠를 제공하는 시스템이다. 사용자가 원격지에 있는 서버(Origin Server)로 부터 Content를 다운 받을 때 가까이 있는 서버에서 받는 것보다 시간이 오래 걸리기에, 사용자와 가까운 곳에 위치한 Cache Serv..
·CS
웹 요청과 응답의 기본? HTTP! 현대의 웹 요청과 응답에는HTTP라는 HyperText Transfer Protocol 라는 규칙이 적용되어서 사용되고 있습니다.데이터를 전송할 수 있도록 데이터 교환 방법을 정리한 것인데, 이러한 HTTP에는 3가지 특징이 있습니다. 1. 단방향성2. 비연결성3. 무상태성 위 3가지 특징 중, 저는 3번째인 무상태성(Stateless)에 집중해서 설명을 하려고 합니다. 무상태성이라는 말은 그냥 들으면 무슨 말인지 이해가 잘 되지 않기 때문이기도 하고저도 학부시절 여러번 들었지만,그때마다 " 아 그냥 상태를 갖지 않는다는 말이구나 " 라고만 이해하고 넘어갔던 기억이 있기 때문입니다 😂 무상태성(Stateless...?)무상태성은 간단하게 말하면 상태를 유지하지 않는다..
월월월월2
'분류 전체보기' 카테고리의 글 목록 (3 Page)