본문 바로가기
반응형

컴퓨터공학 기초55

[데이터베이스] SQL 최적화과정 DBMS는 SQL을 실행하기전에 아래와 같은과정을 거쳐 최적화를 진행한다. 1. SQL파싱 실행할 SQL을 전달받으면 SQL파서가 파싱진행 파싱트리 생성 Syntax체크 : 문법적오류가 없는지 체크 semantic 체크 : 의미상 오류가 없는지 체크 2. SQL최적화 옵티마이저가 실행한다. 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행경로를 생성해서 비교 한 후 가장 효율적인 하나를 선택 3. 로우소스 생성 ※ SQL 옵티마이저란? 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터액세스 경로를 선택해주는 DBMS의 핵심엔진 ※ 옵티마이저 Hint 옵티마이저가 항상 최선의 선택을 하는것은 아니다. DB에 Insert, delete등 연산이 일어날 경우 인덱스를 이상하게.. 2020. 4. 26.
[데이터베이스] org.postgresql.util.PSQLException:CODE[0]STATE[22001]ERROR: value too long for type character varying(1) org.postgresql.util.PSQLException:CODE[0]STATE[22001]ERROR: value too long for type character varying(1) 데이터의 길이가 데이터타입의 길이보다 짧아서 생기는오류 2020. 4. 16.
[기초개념] Session Time설정에 따른 장단점 Session Timeout이 짧을 때 - 사용자가 불편할 수 있다. 이해를 돕기 위해 네이버가 Session Timeout을 5초로 설정했다고 가정하겠다. 메일을 보내려고 네이버에 로그인을 한 후 5~10분에 걸쳐 메일을 작성했다. 그리고 보내려고 보내기를 눌렀더니 권한이 없다고 로그인을 하란다. Session Timeout이 5초기 때문에 로그아웃 처리가 된것이다. 이렇기때문에 자주 로그인을 해야하는 불편함이 있을 수 있다. - Timeout이 길때보다는 보안에 이점이 있을 수 있다. Timeout이 5분이라고 가정하겠다. 은행에서 이체를 해야해서 로그인을 하고 이체를 했다. 10분뒤 어떠한 사람이 우연히 session key를 알게되서 자기의 은행으로 돈을 이체시키려고 시도했다. 하지만 5분이라는 .. 2020. 4. 11.
[데이터베이스] 테이블설계 및 컬럼추가시 주의사항 테이블을 설계할 때 어떠한 데이터가 들어가는지 중요하다. 여기까지만 봤을때는 뭐야? 당연한소리 아니야? 라고 생각할 수 있다. 테이블에 들어가는 데이터가 다른 테이블과 연관이 어떻게 되어있는지, 연관된 테이블의 데이터수는 얼마나 되는지도 매우 중요하다. 큰 서비스일수록 한 테이블의 row수는 어마어마하다. 이런것들을 생각하지않고 A.id 랑 B.a_id랑 연관성있네? 하고 fk를 설정하는 순간 지옥이 시작될 수 있다. 또한 추후 서비스의 방향과 고객의 요청을 예상 해야된다. 대다수의 고객들은 A기능 개발 해주세요!! 하고 요청해서 A기능을 개발해주면 A에 B도 추가시켜 주세요. 라고 한다. 고객들의 입장에서는 편리하고자 사용하기 때문에 당연한 것이다. 그렇기때문에 테이블설계 또는 컬럼추가에 신중 해야한다.. 2020. 4. 8.
[docker] the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty' docker exec -i -t name bash 명령어를 실행할때 이런 오류가 났다. 안내문과같이 앞에 winpty를 붙여 winpty docker exec -i -t name bash 를 실행하면 정상적으로 동작한다. 2020. 4. 6.
[개발자 면접질문] Spring Security 관련 면접질문 1. Spring Security를 적용해보았는가 ? 2. Spring Security의 pricipal에는 어떠한 정보들이 담겨있는가 ? 3. Spring Security의 어노테이션들을 사용해보았는가 ? 4. Spring Security의 UserDetails 객체를 상속하여 커스텀객체를 만들어 보았는가 ? 2020. 3. 23.
[H2 Database] Database "C:/Users/choisangyong/datajpa" not found, either pre-create it or allow remote database creation (not recommended in secure environments) 처음 접속할 때 이런식으로 연결을 하면 파일이 만들어지면서 연결이 되어야한다. 하지만 Database "C:/Users/choisangyong/datajpa" not found, either pre-create it or allow remote database creation (not recommended in secure environments) 이런 오류가 발생 할 수 있다. 해결방법 웹사이트와 콘솔에서 실행을 종료후 콘솔에서 ./h2.bat (window 기준) 으로 다시 실행한다. 그렇게한다면 웹사이트가 새롭게 열릴것이다. 새롭게 열린 웹사이트는 어드민권한을 가지고 있으므로 위의 연결을 다시 시도한다면 정상적으로 동작할 것이다. 2020. 3. 23.
[intellij] 자주쓰는 단축키 (WINDOW) WINDOW 기준 Test Class 생성 : 클래스 이름에 두고 알트 + enter 메소드 결과타입생성 : ctrl + alt + v 오버라이드 목록 : ctrl + o 생성자, Getter, Setter 생성 : alt + insert 변수명 일괄 바꾸기 : 쉬프트 + F6 2020. 3. 22.
[개발자 면접질문] 서버개발자 기초 면접질문 JAVA의 main메소드를 작성해보시오. public static void main(String[] args) main메소드에서 public static을 쓰는이유 main 함수가 실행되기 위해서는 메모리에 올라가 있어야하고 어디서나 접근이 가능해야한다. 어디서나 접근이 가능해야 하기때문에 접근제어자는 public으로 설정을 해야한다. static을 빼게되면 메모리에 올라가있지 않으므로 사용할 수 없게된다. 이 개념을 모르겠다면 static 과 접근제어자를 공부하기를 권장한다. 쿠키와 세션의 차이 쿠키는 클라이언트 측에서 관리하고 세션을 서버에서 관리한다. 그렇기 때문에 쿠키를 사용하게 된다면 보안에 취약한 반면 서버의 부하를 줄일 수 있다는 장점이 있다. 세션은 보안에 강력한 반면 서버에서 한 번에 관.. 2020. 3. 5.
[데이터베이스] RDBMS란 ? RDBMS란 ? DB의 레코드들을 삽입 삭제 수정 탐색 할 수 있도록 해주는 소프트웨어 특징 가장 대중적으로 사용되는 DBMS이고 모든 데이터를 2차원 테이블 형태로 표현하는 관계형 데이터 모델에 기초를 둔 DBMS입니다. 테이블-컬럼형태의 데이터 저장방식을 사용하며 각 열은 특정 종류의 데이터를 수록하며 필드는 속성의 실제 값을 저장합니다. 테이블의 행은 한 객체 또는 엔티티와 관련된 값들의 모음을 나타내며 테이블의 각 행은 기본키로 표시할 수 있고 여러 테이블에 있는행들은 외래키를 사용하여 상호 연결될 수 있습니다. 테이블과 테이블간의 연관관계를 이용하여 필요한 정보를 구하는 방식을 사용합니다. E-R모델을 사용하여 모델링을 하며 테이블끼리 중복정보는 최소화 시킵니다. 보안,권한 트랜잭션 관리와 같은.. 2020. 3. 5.
[JAVA] 클래스변수와 인스턴스 변수의 이해 우와 같은 Class가 있을때 인스턴스변수와 클래스 변수는 아래와같다. 인스턴스 변수 number 클래스변수 x 인스턴스변수와 클래스변수의 공통점으로는 선언위치가 클래스영역이다 그렇다면 차이점은 무엇일까? 바로 생성시기이다. 클래스변수는 클래스가 메모리에 올라갈 때 생성된다. 반면에 인스턴스변수는 인스턴스가 생성될 때 생성된다. 위의 예제를 확인하면 BasicClass.number는 인스턴스가 생성이 되지 않았기때문에 에러가 나지만 BasicClass.x는 클래스가 메모리에 올라갈 때 생성이 되기때문에 정상적으로 실행된다. 그렇다면 위의 코드의 실행결과를 예측해보자. 결과는 아래와 같다 왜 이러한 결과가 발생되는지 아려면 static에 대한 이해가 필요하다. 위에서도 말했다시피 클래스변수(static, .. 2020. 3. 2.
[JAVA] 객체지향언어의 장점 흔히들 객체지향언의 장점으로 아래 3가지를 꼽는다. 1. 코드의 재사용성이 높다 2. 코드의 관리가 용이하다 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 필자는 1,2번은 이해를 했지만 3번은 객체지향언어를 쓰는데 왜 신뢰성이 높아져?? 라는 의문을 품고있었다. 이 의문은 자바의정석을 읽으면서 해결되었다. 신뢰성이 높아지는이유는 제어자와 메소드를 이용하여 데이터를 보호하고 올바른 값을 유지하도록 하고 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있어서이다. 필자는 코드의 중복을 제거하면서 만든 메소드가 항상 같은결과를 반환해주기때문에 올바른 값을 유지하도록 하여 신뢰성이 높아진다고 이해하였다. 출처 : 자바의 정석 3판 (저자 : 남궁성님) 2020. 3. 2.