목록IT tech (14)
코딩항해기
인덱스 [리뷰/우아한테크] 데이터베이스 INDEX인덱스색인 기능을 수행한다. 색인은 쉽게 찾아볼 수 있도록 일정한 순서에 따라 놓은 목록을 의미한다. 인덱스 없이 저장된 데이터는 기준이 없어 select 할 때 모든 데이터를 비교해야하므로 느minibcake.tistory.com 인덱스 사용 이유DB에서 성능 최적화는 디스크 I/O와 관련된 것이 많다. 조회 성능을 개선한다는 것은 디스크 I/O를 줄이는 것이 핵심이다. 하드디스크의 I/O는 메모리 I/O에 비해 속도가 현저히 느리다. 다만 인덱스는 조회에서는 좋지만 수정, 삭제 등에서는 성능이 저하된다는 단점이 있다. 그러나 일반적인 웹사이트에서 R CUD의 비율은 8:2에서 9:1정도 조회가 많기 때문에 조회에서 성능이 좋아진다면 약간의 저하가 있..
인덱스색인 기능을 수행한다. 색인은 쉽게 찾아볼 수 있도록 일정한 순서에 따라 놓은 목록을 의미한다. 인덱스 없이 저장된 데이터는 기준이 없어 select 할 때 모든 데이터를 비교해야하므로 느리지만 데이터가 특정 기준으로 정렬되어 있다면 select를 빠르게 할 수 있다.즉, 인덱스란 데이터베이스 테이블에 대한 검색 성능을 향상시키는 자료 구조이며 WHERE절 등을 통해 활용된다. 인덱스는 항상 최신의 정렬상태를 유지하며, 인덱스도 하나의 데이터베이스 객체이다. 데이터베이스 크기의 약 10%정도의 저장공간을 필요로 한다. 인덱스 알고리즘Full Table Scan페이지가 여러 개 있어도 순차적으로 데이터에 접근하는 특징이 있다. 접근 비용이 감소한다. 적용 가능한 인덱스가 없거나, 인덱스의 처리 범위가..
Gradle2012년 출시된 Groovy를 기반으로 한 오픈소스 빌드 도구로 거의 모든 타입의 소프트웨어를 빌드할 수 있는 빌드 자동화 시스템이다. 빌드소스코드를 컴파일, 테스트, 정적분석 등을 실행해 실행 가능한 애플리케이션으로 만들어주는 과정 다양한 라이브러리가 등장하며 라이브러리를 다운로드 및 추가해야하는 문제, 버전관리 문제, 다운로드 받은 jar파일의 보완 위험 문제점이 부각되었다. 이런 문제를 해결하기 위한 도구로 빌드 도구가 생겨났다. 빌드 도구계속해서 늘어나는 라이브러리를 자동 추가 및 관리해주며 버전을 쉽게 동기화해준다. Gradle은 이러한 빌드 도구 중 하나로 빌드 과정을 편하게 해준다. GroovyJVM 상에서 실행되는 스크립트 언어로 Java와 유사한 문법 구조를 가지며, 호환성..
태그 사용처검색 엔진 인덱싱구글, 네이버 등에 검색을 하면 인터넷에서 정보를 크롤링해서 인덱싱하고 검색 결과를 사용자에게 응답한다. 이 때 meta 태그 설정에 따라 검색결과를 노출할지, 하지 않을지를 결정할 수도 있다. (robot => User-aget:* Disallow:) name과 content 속성을 통해 해당 페이지 정보에 대한 분류를 기입해 검색 시 세이프 서치에 걸리게 하거나 걸리지 않게 할 수도 있다. name 속성에 desctiption을 작성하고 content에 자동완성 원하는 값을 작성하면 자동완성을 이용할 수도 있다. PWA 이름 설정크롬에서 설치 가능한 경우 url창에 설치 아이콘이 뜨며 앱 설치를 진행할 수 있게 되는데 이를 PWA라고 한다. 이 때 어플 이름을 meta 태그..
z-indexz-index 속성은 위치 지정 요소와 자손 또는 하위 플렉스 아이템의 z축 순서를 지정한다. 즉, 요소가 쌓이는 순서를 제어하는 속성을 의미한다. (값이 적을수록 아래에 쌓이게 된다.) 위치 지정 요소position 속성으로 relative, absolute. sticky, fixed 등이 지정되어 있는 요소를 뜻한다. z-index 동작방식쌓임 맥락 Stacking Context쌓임 맥락이란 가상의 Z축을 사용한 HTML 요소의 3차원 개념화이다. 웹페이지는 단순한 평면 구조가 아니라 x,y,z축으로 이루어져있다. (레이어 개념과 유사) 이 때 Z축을 통해 요소의 우선 순위를 결정하게 된다. (어떤 요소가 위에 올라갈지) 웹페이지는 이러한 3D개념을 가지고 있기 때문에 엣지 개발자도구를..
[10분 테코톡] 주디의 Garbage Collector GC (Garbage Collector)C,C++에서는 코드레벨에서 메모리를 할당 받고, 해제하는 작업이 필요했다. 실수하면 Memory Leak가 발생할 수 있고, 번거로운 일이었다. 반면 JAVA에서는 GC가 Heap 메모리에서 unreachable한 객체를 삭제해 관리한다. 코드레벨의 메모리 관리에서 벗어났기 때문에 직접 관리할 필요가 없어 편리하다. GC 장단점장점Memory Leak 발생할 일이 없다.휴먼 에러 발생 가능성을 낮춘다. (해제된 memory에 접근, 또는 이중 해체 등이 있다)단점성능 저하가 있다. (어떤 메모리를 해제해야하는지 검사하고 삭제하는 과정 또한 자원과 메모리를 필요로 한다.)개발자가 언제 메모리가 해제되는지 ..
IoCInversion of Control 제어의 역전역전이 일어나기 전에는 직접 객체를 생성해 코드를 제어했다. 즉, 직접 관리하는 것을 의미한다. 제어의 역전이란 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다. IoC 필요성직접 객체를 생성해 내부에서 관리하게 되면 변동이 생길 때마다 코드에 큰 변화가 생기게 된다. 그러나 외부에서 관리하게 되면, 제어의 역전이 일어나게 되면 외부에서 객체를 관리하므로 값이 변동되어도 코드에는 변화가 생기지 않는다. 객체 지향의 원칙을 잘 지키기 위해 필요하며, 역할과 관심을 분리해 응집도를 높이고 결합도를 낮추며, 이에 따라 변경이 유연한 코드를 성할 수 있는 구조가 되기 때문이다. 할리우드 법칙 Hollywood Principl..
1. 코드 안에 하드코딩은 줄이고 매개변수를 이용한다.function timer(){ setTimeOut(()=>{ alert("time done"); }, 3000); //3초 기다렸다가 alert창을 띄운다.}//만약 다른 곳에서는 시간 대기가 필요하다면?// -> 재사용성이 떨어지는 코드이다.function timer(time){ setTimeOut(()=>{ alert("time done"); }, time); //time만큼 기다렸다가 alert창을 띄운다.} 2. 기본값 반환은 재사용성을 해칠 수 있다.function setPreferFont(font){ if(font) return font; //인자로 들어온 font가 있다면 해당 폰트를 return Font.ARIAL; //없다면 AR..
로그인 API를 사용할 때 OAuth가 많이 나와 어떤 개념인지 알기 위해 기초 이론 영상을 정리한다. ⁂Authorization code Grant 타입으로 정리됨(Spring) 인가 프레임워크 OAuth 2.0OAuth는 정보를 제공하는 서비스 프로바이더들 측에 사용자 인증에 대해 정보를 받아오는 서버(Client)가 알지 못하도록 하고 인가 처리를 대신해주는 형식이다. 사용자(Resource Owner)가 로그인요청을 하게되면 Client는 여러가지 정보를 넘기게 되는데, 이때 필요한 정보를 보내게된다. 이후 인가페이지로 요청되고 스코프를 설정하고 응답해서 콜백을 한다. 이때 별도의 코드를 발급받게 되는데 이는 어떤 정보를 인가했는지를 나타내는 임시발급코드다. 이 코드를 통해 정보를 제공해..
디버깅 : 자바 애플리케이션에서의 디버깅 도구디버깅버그를 제거하는 과정버그를 찾는 과정 자체를 디버깅한다고 표현하기도 한다.⇒ 프로그램의 문제가 무엇인지를 찾고 해결하는 과정을 말한다.디버깅 툴효과적인 디버깅을 위해 활용할 수 있는 도구들IDE DebuggerStrackTrace(Log, Profiler, Test code 등)디버깅 툴이 중요한 이유툴을 효과적으로 사용해 빠르게 문제를 찾을 수 있고 해결할 수 있다. IDE Debugger(인텔리제이 기준)보통 중단점을 찍고 단계 별로 진행시켜 프로그램의 흐름을 확인하는데 사용된다. 프레임 : 실행된 메서드의 실행 당시의 로컬 변수, 파라미터 값등이 저장된다.(주의사항) 메서드 실행이 완료되면 해당 프레임이 스택에서 제거된다. Variable Tab ..