본문 바로가기

전체 글

(730)
Deep copy 와 shallow copy의 차이점 Deep copy와 Shallow Copy를 알면 코딩 실력이 많이 는다고 해서, 찾아봤다. 쉽게 말하면 이런 개념이다. 해당 객체를 여러군데에서 올려서 복사한다고하면, Deep copy로 하게되면 끊어질수도있다. 예를들어서, Deep copy를 많은 곳에서 사용하면, 끊어지고 디버깅과정이 발생할수 있다. 반대로, 메소드로 값을 변경한 이후에 shallow copy를 하게되면 값이 복사가 잘 안될수도있다. 둘의 차이점에 대해서 좀 상세히 알아보자 메모리 관련되서, 구조를 잘 신경을 안쓰긴 하지만 deep COPY를 하는 경우 메모리가 shallow copy를 할때보다 많이 차지하게 된다. deep copy와 shallow copy의 차이는 무엇일까?? 얕은 복사는 주소값을 같이 참조하여, 복사할때 참조하..
데이터베이스 인덱스란? 데이터베이스의 인덱스란, 추가적인 쓰기작업과 저장공간을 활용하여, 검색 성능을 향상 시키는 방법이다. full scan을 하지않고, 인덱스를 활용하여 데이터가 존재하는 곳의 위치를 빠르게 찾을수 있다. 인덱스를 활용하면, select, update, delete를 빠르게 처리할수있다. 해당 사유는, 해당 작업을 하기 위해 선작업이 되는것이 먼저 select 이기 때문이다. index는 최신의 정렬상태를 유지해야하기 때문에, insert나, delete, update 작업을 할때, index가 걸려있는 것이라면, 추가적인 연사을 해준다. (index 재정렬이 필요하기 때문에) 일단, 구조를 알기전에 장단점을 알자 장점 : 검색속도 향상, 전반적인 시스템 부하를 줄일수있다. 단점 : 인덱스 관리를 위해 db..
트리와 이진트리 쉽게 쓰는, 그리고 많이 접하는 구조.........트리 트리는 알고리즘 테스트에서도 많이 출제하고, 해당 구현, 개념을 알고있는 것이 굉장히 좋다 그러면 트리와 이진트리 , binary tree에 대해서 알아보자 1. 트리 트리는 쉽게 노드,경로 등으로 이루어져 있으며, 해당 트리는 아래와 같은특징을가진다. - 모든 노드들은 연결되어있다. - 노드들에 대한 회신 cycle이 존재하지 않는다. - 임의의 노드에서 다른 노드로 이동하는 경로는 유일하다. 2. 이진 트리 - 자식 노드가 최대 두개로 이루어진 트리이다. 모든 노드는, 공백이나 왼쪽 혹은 오른쪽의 서브노드를 가지고있다. 그러면 2개 이상을 가지는 트리는 어떻게 명명 할까? 바로, b-tree라고 한다. 일단, 이렇게 한가지의 노드에 키값이 있고..
oAuth 의 동작 과정 및 이해 oAuth가 필요한 이유는 무엇일까? 각각의 웹사이트에서는 각기 다른 인증방법을 가진다. 각기 다른 인증방법을 가지게되면, 각각 다르게 개발되어있는 인증 시스템들을 감안하여, id,pw를 쳐서 각각 다르게 들어가야한다. 일단 구조는 아래와 같은 구조를 가진다. 간단하게 oAuth는 인증과 권한을 획득하는 것이다. 각 애플리케이션들이 개인정보에 대한 저장을 각자하게되고, id,pw에 대한 제공을 각 애플리케이션마다 하게되면서, 한가지의 플랫폼을 통해서 로그인하는 방법이 나오게 되었다, 쉽게 말하면, 서비스를 통해서, Oauth를 제공하는 쪽의 로그인을 요청하고, 해당 Oauth에서 권한 코드를 발급한다. 발급함과 동시에, 콜백 url로 리다이렉트 시킨다. 이 url을 기반으로 access토큰을 요청, 및 ..
Docker 사용이유, 장점 Docker는 서버 컨테이너 기술이다. 서버 컨테이너 기술은, application을 환경에 구애 받지 않고, 실행시켜주는 기술이다. 이렇게 만 써져 있으면, 공부를 이제 시작하는 사람이라면, 해당 글을 보고 ?_? 어쩌라는 거지 라고 생각을 하게 된다. 좀 더 구체적으로 예를 들어서, 해당 설명을 해볼까한다. 실제 서비스를 운영하기 위해서는, 여러가지의 서버를 동시에 띄우게 된다. api, data-api등등 다양한 서버들을 띄우게 되고 이서버의 같은 application을 깔더라도, 같이 호환하는 것들에 대한 구성을 같이 할수 없는 경우가 존재한다. 예를 들어서, 어떤 서버를 구성하는 app은 최근이여서 3.4버전을 이전 서버는 2.1 버전을 설치한다고하고 운영중에, 버전차이로인해 다운을 겪었다고 가..
Clean Code의 정의 Clean Code 의 정의란 무엇일까? 클린 코드란, 쉽게 읽기 쉽고 우아한 코드이다. 우아한 코드? 이게 왜 필요함? 우아한 코드 = 클린 코드 = 가독성이 쉬운 코드 를 사용하지 않는다면? 대부분의 개발자들이 운영 개발을 한다고 가정해보자, 대부분 신규 구축하는 프로젝트던 수정하는 프로젝트던, 개선을 하는 프로젝트이던, 개발자는 자신의 개발 이후로 다른 개발자가 자신의 코드를 보고 이해하기 쉽게 코딩을 해야하는 의무가있다. 왜냐하면, 코딩작업이란 0 to 100이 아니기 때문이다. 대부분 작성되어있는 코드를 읽고 이해하여, 수정하는 개발을 하기 마련이다. 작성되어있는 코드를 읽는 작업에 대한 감축 및 이슈 대응시 소스분석을 위해서, 해당 코드를 더럽고어렵게 써놓는다면 주석으로도 커버할수없다. 그래서..
무 중단 배포 , 블루-그린 방식의 배포 내가 다니는 회사, 그리고 대부분의 회사에서는 무중단 배포 시스템을 가질 것이다. 이렇게 무중단 배포를 하기 위해서 가장 많이 사용하는 방식은 블루-그린 방식의 배포 방법이다. 24시간 서비스를 해야하는, 배포가 되어도, 중단이나 다운타임을 가지면 안되는 서비스들에서 가장 많이 가지는 방식이며, 해당 방법에 대해서 알아보도록 하자 무중단 배포가 되기 위해서는 우선 로드 밸런서를 통해 연결된 두개 이상의 인스턴스에서 트래픽을 제어해서 배포하는 것이다. 1) 롤링 배포 롤링 배포는, 한개의 인스턴스를 로드밸런서를 통해, 라우팅 하지 않도록 설정한뒤에, 해당 인스턴스의 버전을 높이고, 다시 라우팅하여, 점진적으로 배포하는 방식으로의 배포이다. 해당 부분은, 배포 중간 롤백에 대해서는 비교적 자유롭지만, 신버전..
Prepared statement와 statement의 차이 Mybatis 로 개발을 진행하다면, 해당 prepared statement와 일반 statement의 차이에 대해서 알아두어야 할 필요가 있다. Mybatis에서 단적인 예로, 쿼리의 파라미터에 대한 방법을 다르게 줄 수 있다. 1. #{storeNo} , ${storeNo}가 있다. mybatis에선 해당 #, $를 다르게 쓸수가 있는데, 해당 방법에 대해서는, 어떤 차이가 있는지 살펴보자, 우선 #{} 과 같은 쿼리문은, 같은 쿼리문을 바인드 변수값만 바꿔서 반복적으로 실행하기 위해 사용하는 prepared statement이다. 해당 방법은 어떻게 동작할까? 우선 Prepared statement를 동작시키면, 해당 쿼리는 ?가 표함된, 쿼리문을 DBMS로 보내게 된다. 해당 DBMS는 해당 쿼리..