Java ArrayList Sort

개요

한동안 JS 만 만지다 Java ArrayList를 sort 해야 하는 일이 생김.
DB 에서 이미 ORDER BY 해서 꺼내온 두 개의 List를 merge 한 List 였는데,
요소들은 항적 데이터 { 선박 ID(ship_id), 위치정보(geom), 항적 시간(date(초)) } 로 이루어 져 있고, 시간으로 정렬 해야 했음.

  public class Record {
    String  tbship_id;
    String  geom;
    int     sec;
  }

하도 JS 만 만졌더니 간단한 로직인데 1시간 정도 삽질 했고 블로그에 남기기로 함.

방법 1

Record 객체를 Comparable 상속 받게 한 뒤, compareTo 메소드를 오버라이드, 필요한 곳에서 정렬 메소드를 호출.
compareTo 메소드는 int를 반환해야 하며 오름차순 정렬일 경우, 다음을 반환해야 함.

  • 기준점이 비교대상보다 크다면 양수.
  • 기준점이 비교대상과 같다면 0.
  • 기준점이 비교대상보다 작다면 음수.

Record.java

  public class Record implements Comparable<Record> {
    String  tbship_id;
    String  geom;
    int     sec;

    /* ... */

    @Override
    public int compareTo(Record o) {
      if( this.cal < o.cal ) return -1;
      else if (this.cal == o.cal ) return 0;
      else return 1;
    }
  }

TrackDAOImpl.java

  /* ... */
  Collections.sort(mergedList);

방법 2

정렬이 필요한 곳에서 Comparator 객체를 생성한 뒤, compare 메소드를 오버라이드 후, 정렬 메소드를 호출.
compare 메소드는 int를 반환하며, 앞의 방법과 같이 기준점 대비 비교점으로 짜야함.

  • 기준점이 비교대상보다 크다면 양수.
  • 기준점이 비교대상과 같다면 0.
  • 기준점이 비교대상보다 작다면 음수.
  Comparator<Record> compare = new Comparator<Record>() {

  @Override
  public int compare(Record prev, Record curr) {
    if( prev.getCal() < curr.getCal() ) return -1;
    else if (prev.getCal() == curr.getCal() ) return 0;
    else return 1;
    }
  };

  Collections.sort(mergedList, compare);

방법 3

Collection.sort() 메소드의 두번째 인자로 익명 객체를 넣어 줌..
방법 1, 2를 보면 쉽게 이해할 수 있음.

  Collections.sort(mergedList, (Comparator<Record>) (Record prv, Record cur) -> {
    if( prv.getCal() < cur.getCal() ) return -1;
    else if (prv.getCal() == cur.getCal() ) return 0;
    else return 1;
  });

그 외

개인적으로는 세번째 방법이 낫겠다 싶은데 이유는 객체의 compareTo 메소드에 다른 필드 값 대한 비교가 필요할 경우가 있기 때문.
메소드를 구현 할때, 다른 비교 구분이 필요할 경우가 있기 때문.

728x90
반응형

'Language > Java' 카테고리의 다른 글

[Java] 문자열이 날짜 형식인지 확인하기  (0) 2021.10.18
[Java] 성능을 고려한 try-catch 문  (0) 2020.12.16
[Java] Map 반복문  (0) 2020.12.08
[JAVA] 구 버젼 설치  (0) 2020.11.02

MongoDB 설치하기

NoSQL 을 사용 해보려고 했는데 구글링으로 나오는 방법으론 MacOS Catalina 버전부터는 root 디렉토리가 Read Only 로 바뀌면서 설치 할 수 없게 됬음.
MongoDB의 공식 설명으로 Catalina에서 MongoDB를 설치하려면 다음과 같은 순서로 Terminal 명령을 내리면 됨.
(선수 조건으로 brew가 설치되어 있어야 함.)

Install

    sudo chown -R $(whoami) $(brew --prefix)/*
    brew tap mongodb/brew
    brew install mongodb-community@4.2

세 줄이면 설치가 되는데.. 한참 헤매고 있었음.
뭔가 설치가 안될 땐 공식 문서를 확인 하도록 하자.

구성 파일

설정 파일 /usr/local/etc/mongod.conf
log 파일 /usr/local/var/log/mongodb
저장 경로 /usr/local/var/monogb

(추가) Run MongoDB Community Edition

Run

    brew services start mongodb-community@4.2

Stop

    brew serveced stop mongodb-community@4.2

컴퓨터 실행시 MongoDB 자동 실행 설정

    mongod --config /usr/local/etc/mongd.conf --fork

자동 실행을 중지 시키려면 mongod 에 연결해서 shutdown을 실행하라는데 한두번 테스트 하고 지울거니 패스.
설치하면서 생성된 /usr/local/etc/mongod.conf 파일로 구성 옵션을 설정할 수 있다고 함.

MongoDB가 실행중인지 확인 하려면

    PS AUX | grep -v grep | grep mongod

실행중인 MongoDB에 접속, Mongo Shell을 실행하려면

    mongo
728x90
반응형

'Database' 카테고리의 다른 글

[DBeaver - cubrid] DBeaver Cubrid UTF-8 문제  (1) 2020.12.07
[SQL] 계층 쿼리  (0) 2020.10.19
[SQL] TIMESTAMP TO MILLIS  (0) 2020.04.09
[PostgreSQL] 랜섬웨어  (0) 2020.03.03
[PostgreSQL] sysdate 쓰는법  (0) 2020.02.14

OS 프로세스

  • 학습 개요

    • 프로그램을 실행시키면 운영체제로부터 프로그램이 동작하는 데 필요한 자원을 할당받아 동작을 시작한다.
      이처럼 실행 상태에 들어간 프로그램을 프로세스라고 한다.
      프로세스의 동작은 CPU가 그 프로세스의 명령들을 실행하는 것이다.
      이때 CPU도 기억장치나 입출력장치와 마찬가지로 프로세스가 동작하는 데 필요한 자원이다.
      운영체제는 실행할 준비가 된 프로세스들이 적절히 CPU를 배정받아 효율적으로 작업을 처리할 수 있도록 관리해야 한다.
      운영체제의 핵심적인 구성 요소 중 하나인 프로세스에 대한 기본적인 이해와 함께 쓰레드의 개념을 학습하고, 스케줄링의 정책에 대하여 살펴보자.
  • 학습 목표

    1. 프로세스의 개념을 설명할 수 있다.
    2. 프로세스와 쓰레드의 관계를 설명할 수 있다.
    3. 스케줄링의 필요성과 정책을 설명할 수 있다.
  • 요약

    • 프로세스는 실행 중인 프로그램을 의미하며, CPU, 메모리, 입출력장치, 파일 등 실행에 필요한 자원이 할당된다.
    • 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작한다.
    • 프로세스 제어 블록(PCB)은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.
    • 쓰레드란 하나의 프로그램 내에서 제어의 단일 순차적 흐름으로 정의되며, 하나의 쓰레드 내에서는 하나의 실행점만이 존재하며, 각 쓰레드는 수행에 필요한 최소한의 정보만으로 구성된다.
    • 하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어 쓰레드를 생성하여 프로세스 내에서 다중처리를 할 수 있다.
    • 프로세스의 스케줄링을 위해 상위단계, 하위단계 및 중간단계 스케줄러가 사용된다.
    • 스케줄링 기법 중 어떤 프로세스도 CPU를 빼앗길 수 없는 경우를 비선점이라 하며, 그렇지 않으면 선점이라고 한다.

프로세스 개요

프로세스

  1. 프로세스는 실행 중인 프로그램을 의미
    • 프로그램 : 동작을 하지 않는 정적이며 수정적인 개체.
    • 프로세스 : 동작을 하는 능동적인 개체.
  2. 프로세스에는 실행을 위해 필요한 컴퓨터의 자원이 할당됨.
    • CPU, 주기억장치, 파일, 입출력 장치 등.
  3. 프로세스의 동작은 CPU가 그 프로세스의 명령들을 실행하는 것.
  4. 운영체제는 프로세스들을 생성시키고 종료시키기 위한 다양한 작업과 프로세스들을 실행시키기 위한 스케쥴링 작업을 처리.

프로세스의 상태 변화

  1. 프로세스의 5-상태
    • 생성 : 처름 프로세스 생성 상태
    • 준비 : CPU 할당을 기자리는 상태
    • 실행 : 프로세스가 처리되는 상태
    • 대기 : 특정 자원의 할당이나 입출력 작업의 종료 때까지 보류되는 상태
    • 종료 : 모든 처리가 완료된 상태
  2. 프로세스의 상태 전이
    • 생성 -> 준비 : 프로세스 생성이 완료된 경우.
    • 준비 -> 실행 : 스케쥴러에 의해 선택된 경우, (Dispatch)
    • 실행 -> 준비 : 할당시간 만료 또는 보다 높은 우선순위의 프로세스가 오는 경우.
    • 실행 -> 대기 : 페이지 교환, 입출력 등의 작업이 필요한 경우.
    • 대기 -> 준비 : 페이지 교환, 입풀력 등의 작업이 완료된 경우.
    • 실행 -> 종료 : 프로세스를 성공적으로 긑마친 경우.

프로세스 제어 블록

  1. 프로세스 제어 플록 (PCB)
    • 프로세스 관리를 위해 해당 프로세스의 정보를 보관.
    • 프로세스 진행에 따라 정보의 변경도 발생.
  2. 프로세스 제어 블록 내 주요 정보
    • 프로세스 상태 : 프로세스의 현재 상태.
    • 프로세스 번호 (PID) : 프로세스의 구분 기준.
    • 프로그램 카운터 : 프로세스 수행을 위한 다음 명령의 주소.
    • 레지스터 : 실행상태에서 다른 상태로 전이되는 경우 CPU의 레지스터 정보를 이곳에 저장.
    • 메모리 : 프로세스 저장 주소, 가상주소와 실주소의 사상 정보, 메모리 경계 정보 등.

프로세스 생성과 종료

  1. 부모 프로세스와 자식 프로세스
    • 부모 프로세스 : 프로세스 생성 시스템 호출을 이용하여 다른 프로세스를 생성한 프로세스.
    • 자식 프로세스 : 부모 프로세스가 생성한 새로운 프로세스.
  2. 프로세스 생성
    • 프로세스의 이름(PID)이 지정되고 프로세스 제어블록이 만들어지며, 준비 큐에 삽입.
    • 부모 프로세스와 자식 프로세스 사이의 상호작용을 위해 자원을 공유할 수 있음.
  3. 프로세스의 종료
    • 처리할 작업을 마치면 실행 결과를 부모 프로세스에 되돌려 주며 종료.
    • 연속적 종료 : 부모 프로세스가 종료되면 그 자식 프로세스들도 모두 종료.

프로세스 간의 관계

  1. 독립적 프로세스
    • 실행 중인 다른 프로세스의 영향을 받지도 않고 주지도 않는 프로세스.
    • 프로세스의 상태는 다른 프로세스와 공유되지 않음.
    • 프로세스의 실행은 결정적 : 실행 결과는 입력에 의해서만 결정됨.
    • 프로세스의 실행은 재생 가능 : 실행 결과는 같은 입력에 대해 항상 동일함.
    • 타 프로세스와 무관하게 중단되거나 재시작될 수 있음
  2. 유기적 프로세스
    • 실행 중인 다른 프로세스와 영향을 주고 받으며 동작하는 프로세스
    • 프로세스의 상태는 다른 프로세스와 공유됨.
    • 프로세스의 실행은 비결정적 : 실행 결과는 실행 순서에 좌우됨.
    • 프로세스의 실행은 재생 불가능 : 실행결과는 같은 입력에 대해 항상 동일하지는 않음.

쓰레드

  1. 전통적인 프로세스
    • 처리의 기본 단위.
    • 자원 소유의 단위 + 디스패칭의 단위.
    • 단일 프로세스 내에서는 동시 처리 불가능.
  2. 스레드
    • 프로세스 내에서의 다중처리를 위해 제안된 개념.
    • 프로세스는 자원 소유의 단위로, 쓰레드는 디스패칭의 단위로 구분.
    • 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재.
    • 하나의 쓰레드 내에서는 하나의 실행점만 존재
    • 쓰레드는 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유함.
    • 다중 쓰레드
      • 멀티 CPU 혹은 멀티 코어 시스템에서는 병렬 처리 가능.
      • 처리 속도 별로 쓰레드가 나워진 경우 효율적인 처리 가능.

스케쥴링

스케쥴링의 단계

  1. 상위단계 스케쥴링
    • 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비 큐에 전달하는 역할.
    • 선택 기준 : 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것.
    • 입출력 중심 작업과 연산 중심 작업을 균형있게 선택
  2. 하위단계 스케쥴링
    • 사용 가능한 CPU를 준비상태의 어느 프로세스에 배당할지를 결정.
    • 이 결정을 통하여 CPU를 배당 받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨.
    • 수행 주체 : Dispatcher
  3. 중간단계 스케쥴링
    • 프로세스를 일시적으로 메모리에서 제거하여 중지 시키거나 다시 활성화 시켜서 시스템에 대한 단기적인 부하를 조절.

스케쥴링 정책

  1. 스케쥴링의 기본 목표
    • 공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함.
    • 균형 : 시스템의 자원들이 충분히 활용될 수 있게 함.
  2. 일괄처리 운영체제의 스케쥴링 목표
    • 처리량의 극대화.
    • 반환시간의 최소화.
    • CPU 활용의 극대화.
  3. 대화형 운영체제의 스케쥴링 목표
    • 빠른 응답 시간.
    • 과대한 대기 방지.
  4. 실시간 운영체제의 스케쥴링 목표
    • 처리 기한을 맞춤.
  5. 선점 스케쥴링(Preemptive) 정책
    • 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케쥴링 전략.
    • 높은 우선순위의 프로세스를 긴급하게 처리하는 경우 유용.
    • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용.
    • 문맥 교환에 따른 오버헤드 발생.
      • 문맥(Context) :
        CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태.
      • 문맥 교환 (Context Switching)
        • CPU가 현재 샐행하고 있는 프로세스의 문맥을 PCB에 저장하고, 다음 프로세스의 PCB로부터 문맥을 복원하는 작업.
        • 운영체제는 문맥 교환이 매우 빠르게 실행되도록 만들어져야 함.
  6. 비선점 스케쥴링(Nonpreemptive) 정책
    • 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨.
    • 모든 프로세스가 공정하게 순서에 따라 실행되도록 관리됨(응답 시간 예측 가능)
    • 짧은 프로세스가 긴 프로세스를 기다리게 되는 경우가 발생할 수 있음.
728x90
반응형

'OS' 카테고리의 다른 글

[OS] 운영체제  (0) 2020.04.24

OS 운영체제

  • 학습 개요
    • 운영체제는 컴퓨터를 사용하기 위해 반드시 필요한 소프트웨어 중 하나이다.
      컴퓨터가 사용자에게 제공하는 서비스가 다양해지고 편리해지는 만큼 사용자를 위해 컴퓨터 내에서 이루어져야 하는 자원의 관리나 활용이 효율적으로 동작해야하는데, 운영체제는 그 근간을 이루는 핵심적인 시스템 소프트웨어이다.
      운영체제에 대한 기본적인 이해와 운영체제를 구성하는 기본적인 요소인 프로세스 관리자, 메모리 관리자, 장치 관리자, 파일 관리자의 역할에 대하여 개략적으로 학습하고, 운영체제의 유형과 발전 과정을 살펴보자.
  • 학습 목표
    1. 운영체제가 사용자에게 제공하는 서비스를 설명할 수 있다.
    2. 운영체제의 기본적인 구성요소들의 역할을 설명할 수 있다.
    3. 운영체제의 운영 방식 및 커널의 형태에 따른 유형을 분류할 수 있다.
    4. 운영체제가 ICT 환경 변화에 따라 어떻게 발전하고 있는지 설명할 수 있다.
  • 요약
    • 운영체제는 컴퓨터 시스템의 자원을 관리하고 컴퓨터 프로그램이 동작하기 위한 서비스를 제공하는 시스템 소프트웨어이다.
    • 응용 프로그램은 하드웨어 자원을 직접 액세스할 수 없으며, 시스템 호출이라는 절차를 통해 필요한 서비스를 운영체제에게 요청하여야 한다.
    • 커널은 응용 프로그램과 하드웨어 수준의 처리 사이의 가교 역할을 하는 운영체제의 핵심 요소로, 대표적인 두 가지로 일체형 커널과 마이크로 커널이 있다.
    • 운영체제의 주요 구성 요소에는 프로세스 관리자, 메모리 관리자, 장치 관리자, 파일 관리자가 있다.
    • 운영체제의 유형은 크게 일괄처리 운영체제, 대화형 운영체제, 실시간 운영체제, 그리고 하이브리드 운영체제로 분류된다.

운영체제의 개요

운영체제의 역할

  1. 컴퓨터 시스템의 운영
    • 컴퓨터 시스템의 자원의 제어 및 관리.
    • 응용 프로그램들의 실행을 도와주는 소프트웨어.
  2. 사용자 지원
    • 사용자의 명령을 해석하여 실행.
    • 사용자와 하드웨어 사이의 매개체 역할 수행.

컴퓨터 시스템과 운영체제

  1. 하드웨어와 응용프로그램 사이에 위치.
    • 하드웨어에 대한 제어는 운영체제만 함.
    • 응용 프로그램은 운영체제를 통해서만 하드웨어를 제어.
  2. 슈퍼바이저 모드 (커널 모드)
    • 운영체제의 커널이 동작되는 모드.
    • 하드웨어를 직접 제어할 수 있는 CPU 명령어 사용 가능.
  3. 보호모드 (사용자 모드)
    • 응용 프로그램이 종작되는 모드
    • 하드웨어를 직접 제어할 수 있는 CPU 명령어 사용 불가능.
  4. 시스템 호출
    • 응용 프로그램이 운영체제에 서비스를 요 청하는 메커니즘.

커널

  1. kernel
    • 운영체지의 핵심 요소
    • 응용프로그램과 하드웨어 수준의 처리 사이의 가교 역할
  2. 일체형 커널 (monolithic kernel)
    • 운영체제의 모든 서비스가 커널 내에 포함됨.
    • 커널 내부요소들이 서로 효율적으로 상호작용을 할 수 있음.
    • 한 요소에 있는 오류로 인해 시스템 전체에 장애가 발생할 수 있음.
    • UNIX와 LINUX 운영체제들이 일체형 커널.
  3. 마이크로 커널 (micro kernel)
    • 운영체제의 대부분의 요소들을 커널 외부로 분리.
    • 커널 내부에는 메모리 관리, 멀티 태스킹, 프로세스 간 통신 (IPC) 등 최소한의 요소들만 남겨 놓음.
    • 새로운 서비스를 추가하여 운영체제를 확장하기 쉬움.
    • 커널 외부 요소의 문제는 커널 자체에 영향을 주지 않으므로 유지보수가 용이, 안정성이 우수.
    • 커널 외부 요소들 사이는 프로세스 간 통신을 통해야 하므로 성능 저하가 발생함.

운영체제의 구성

  1. 프로세스 관리자
    • 프로세스를 생성, 삭제, CPU 할당을 위한 스케쥴 결정.
    • 프로세스의 상태를 관리하며 상태 전이를 처리.
  2. 메모리 관리자
    • 메모리 (주기억장치) 공간에 대한 요구의 유효성 체크.
    • 메모리 할장 및 회수.
    • 메모리 공간 보호.
  3. 장치 관리자
    • 컴퓨터 시스템의 모든 장치를 관리.
    • 파일 접근 제한 관리.
    • 파일을 열어 자원을 할당하거나 파일을 닫아 자원을 회수.
  4. 파일 관리자
    • 컴퓨터 시스템의 모든 파일 관리.
    • 파일의 접근 제한 관리.
    • 파일을 열어 자원을 할당하거나 파일을 닫아 자원 회수.

운영체제의 유형

응답시간의 속도, 데이터 입력의 방식에 따라 분류함.

  1. 일괄처리 (batch processing) 운영체제
    • 작업을 모아서 처리.
    • 사용자와 상호작용 없이 순차적으로 실행.
    • 주어진 시간 안에 처리된 작업의 수(처리량)와 반환시간으로 효율성 평가.
      • 효율성 평가 : 처리량, 반환시간.
        • 처리량 : 주어진 시간 안에 처리된 작업의 수.
        • 반환 시간 : 작업의 생성 시점부터 종료 시점까지의 소요시간.
    • EX: OMR card reader.
  2. 대화형 (interactive) 운영체제
    • 시분할 운영체제라고도 함.
    • 일괄처리 운영체제보다 빠르지만 실시간 운영체제보다 느린 응답시간.
    • 이용자에게 즉각적인 피드백 제공.
      • 응답시간 : 요청한 시점부터 반응이 시작되는 시점까지의 소요시간.
  3. 실시간 (real-time) 운영체제.
    • 가장 빠른 응답시간
    • 처리의 결과가 현재의 결정에 영향을 주는 환경에서 사용.
    • 우주선 비행 시스쳄, 미사일 제어, 증권 관리 시스템, 은행 출입금 시스템 등.
  4. 하이브리드 운영체제
    • 일괄처리 운영체제와 대화형 운영체제의 결함.
    • 이용자는 터미널을 통해 접속하고 빠른 응답시간을 얻음.
    • 대화형 작업이 많지 않을 경우 백그라운드에서 배치 프로그램 실행.
    • 현재 사용되고 있는 대부분의 대형 컴퓨터 시스템은 하이브리드 운영체제.

운영체제의 역사

  • 1940 : 초기 전자식 디지털 컴퓨터
  • 1950 : 단순 순차처리 및 단일 흐름 일괄처리
  • 1960 : 멀티프로그래밍
  • 1970 : 멀티모드 시분할
  • 1980 : 분산 네트워크
  • 1990 : 병렬처리 및 분산처리
  • 2000 : 모바일 및 임베디드
728x90
반응형

'OS' 카테고리의 다른 글

[OS] 프로세스  (0) 2020.04.24

SQL에서 Timestamp 값을 꺼내 와서 시간 값 계산을 해야 할 경우 초나 밀리초로 연산을 하는게 편하다.

다음 쿼리는 Timestamp 형의 값을 초로 변환하여 꺼내오는 쿼리이다.

    SELECT EXTRACT(EPOCH FROM 컬럼명 AT TIME ZONE 'UTC') FROM 테이블;

만약 밀리세컨드로 시간 비교를 해야한다면 1000을 곱해주면 된다.

    SELECT EXTRACT(EPOCH FROM 컬럼명 AT TIME ZONE 'UTC') * 1000 FROM 테이블;

SQL에서 시간 조건을 걸어야 할 경우,
다음과 같이 타임스탬프로 비교 조건을 걸어주면 Query의 속도가 빠르게 나온다.

    AND
          Timestamp컬럼
            BETWEEN TO_TIMESTAMP( '2020-04-08 00:00', 'YYYY-MM-DD HH24:MI' )
            AND     TO_TIMESTAMP( '2020-04-08 23:59', 'YYYY-MM-DD HH24:MI' )
728x90
반응형

'Database' 카테고리의 다른 글

[SQL] 계층 쿼리  (0) 2020.10.19
[MongoDB] 설치하기 (MacOS)  (0) 2020.05.18
[PostgreSQL] 랜섬웨어  (0) 2020.03.03
[PostgreSQL] sysdate 쓰는법  (0) 2020.02.14
[PostgreSQL] Windows에서 Data Directory 변경하기  (0) 2020.01.09

새벽에 PostgreSQL 랜섬웨어를 당했음.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

겨우 10만원이긴 한데 안에 있는 데이터가 별로 중요한게 아니라 돈을 주진 않았음.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 후에 DB 로그 보니까 작업 열심히 하고있을 때 그사람도 열심히 공격 준비하고 있었음 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

DB만들때, 계정 이름, 비밀번호 포트 번호는 꼭 Default 값으로 만들지 말자!

 

 

728x90
반응형

'Database' 카테고리의 다른 글

[MongoDB] 설치하기 (MacOS)  (0) 2020.05.18
[SQL] TIMESTAMP TO MILLIS  (0) 2020.04.09
[PostgreSQL] sysdate 쓰는법  (0) 2020.02.14
[PostgreSQL] Windows에서 Data Directory 변경하기  (0) 2020.01.09
[SQL] SET OPERATOR  (0) 2019.12.27

PostgreSQL 에서 sysdate 쓰는법

PostgreSQL에서는

    SELECT SYSDATE()

라는 쿼리문으로 현재 시스템의 시간이 출력되지 않는다.
(오라클에서는 FROM DUAL이 필요하지만 PostgreSQL에서는 필요하지 않다.

PostgreSQL에서 현재 시간을 알기 위해서는

    SELECT NOW();

의 쿼리를 사용하면 된다.

시간의 형식도 가져 오고 싶다면

    TO_CHAR( NOW(), 'YYMMDD')::NUMERIC

와 같이 ::(두개의 세미콜론)과 변환할 타입을 선언해 준다.

728x90
반응형

'Database' 카테고리의 다른 글

[SQL] TIMESTAMP TO MILLIS  (0) 2020.04.09
[PostgreSQL] 랜섬웨어  (0) 2020.03.03
[PostgreSQL] Windows에서 Data Directory 변경하기  (0) 2020.01.09
[SQL] SET OPERATOR  (0) 2019.12.27
[SQL] JOIN  (0) 2019.12.27

Eclipse 최적화 설정

  1. eclipse.ini 파일 설정.
     

    [Eclipse] eclipse.ini 파일 설정

    eclipse.ini 주요 설정 값 Eclipse 실행시 eclipse.ini 파일에 설정된 옵션으로 실행됨. 이 설정 파일은 windows 에서는 eclipse.exe 파일이 있는 설치 폴더에, MacOS 에서는 Eclipse.app > Contents > MacOS 폴더..

    jeaha.dev

  2. 인코딩 설정.
     

    [Eclipse] 인코딩 설정

    이클립스 인코딩을 UTF-8로 설정해 줘야 하는데, 설정해야 할 곳이 은근 많다. Windows > Preferences > General > Content Types > Java Class File > Default Encoding Windows > Preferences > General > Edit..

    jeaha.dev

  3. 메모리 사용 상태 표시.
    • Windows > Preferences > General > Show Heap Status 체크.
  4. Spell Checking 해제.
    • Windows > Preference > General > Editors> Text Editors > Spelling > Enable Spell Checking 체크 해제.
  5. 실행/종료 속도 개선.
    • Windows > Preferences > General> Startup and Shutdown에서 디폴트 플러그인 중 불필요한 플러그인 체크 해제.
  6. 자동 업데이트 해제
    • Windows > Preferences > Install/Updates > Automatic Updates 체크 해제.
  7. 불필요한 플러그인 삭제.
    • Windows > Preferences > Install/Update Uninstall or Update 창 열어서 불필요한 플러그인 삭제.
  8. 코드 자동완성 기능 해제.
    • Windows > Preferences > Java > Editor > Content Assist - Auto Activation - Enable Auto Activation 체크 해제.
    • Windows > Preferences > JavaScript > Editor > Content Assist - Auto Activation - Enable Auto Activation 체크 해제.
    • Windows > Preferences > HTML > Editor > Content Assist - Auto Activation - Enable Auto Activation 체크 해제.
    • Windows > Preferences > XML > Editor > Content Assist - Auto Activation - Enable Auto Activation 체크 해제.
  9. JSP 유효성 체크 해제.
    • Windows > Preferences > Web > JSP Files > Validation > Validate JSP Fragments 체크 해제.
  10. 자동 빌드 기능 해제.
    • Windows > Preferences > General > Workspace > Build Automatically 체크 해제.
    • BUT 이 설정은 Spring Project를 진행할 때 없으면 귀찮아 지므로 해제하지 않는다.

 

 

728x90
반응형

eclipse.ini 주요 설정 값

Eclipse 실행시 eclipse.ini 파일에 설정된 옵션으로 실행됨.
이 설정 파일은 windows 에서는 eclipse.exe 파일이 있는 설치 폴더에, MacOS 에서는 Eclipse.app > Contents > MacOS 폴더 안에 있다.
주요 설정 값들을 알아보자.

  • vm
    • jdk의 경로를 직접 지정. 보통은 신경 쓸 필요는 없으나 jdk를 여러개 설치하고 작업한다면 직접 위치를 지정하여 사용할 수 있음.
    • vmargs 라인 이전에 설정.
  • -Dosgi.requiredJavaVersion=1.8
    • 사용할 자바 버전.
  • -Xverify:none
    • 초기 실행시 클래스의 유효성 검사의 여부.
  • -XX:UseParallelOldGC
    • 병렬 GC 사용
  • -XX:+AggressiveOpts
    • 컴파일러의 소수점 최적화 기능 작동 설정.
  • -XX:-UseConcMarkSweepGC
    • 병행 Mark-Sweep GC를 수행하여 이클립스 GUI의 응답 최적화 설정.
  • -XX:PermSize=1024m
    • JVM 클래스와 메서드를 위한 공간.
    • OutOfMemoryError:PermGenspace 발생시 이 설정값을 늘려야 한다.
  • -XX:MaxPermSize=1024m
    • 최대값은 8번의 최소값 이상이여야 함.
  • -XX:NewSize=256m
    • 새로 생성된 객체들을 위한 공간
  • -XX:MaxNewSize=256m
    • 상기 동일
  • Xms2048m
    • 최소 Heap 메모리 크기.
  • Xmx4096m
    • 이클립스가 사용하는 최대 Heap 메모리 크기, 보통 내장된 메모리의 4분의 1을 최대 Heap 메모리로 설정하여 사용.

항상 설정 파일을 수정할 땐 원본 백업을 해 두도록 하자.

eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar
--launcher.library
C:\..\.p2\pool\plugins\org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1100.v20190907-0426
-product
org.eclipse.epp.package.jee.product
-showsplash
C:\..\.p2\pool\plugins\org.eclipse.epp.package.common_4.14.0.20191212-1200
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
C:/Program Files/Java/jdk1.8.0_241/bin
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.dataAreaRequiresExplicitInit=true
-Xverify:none
-XX:UseParallelOldGC
-XX:+AggressiveOpts
-XX:-UseConcMarkSweepGC 
-XX:MaxPermSize=1024m
-XX:MaxNewSize=1024m
-Xms2048m
-Xmx4096m
--add-modules=ALL-SYSTEM
-Declipse.p2.max.threads=10
-Doomph.update.url=http://download.eclipse.org/oomph/updates/milestone/latest
-Doomph.redirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/

WAS 메모리 설정

실행할 서버 > Open Launch Configuration > Arguments > VM arguments 설정

-XX:MaxPermSize=256M
-Xms1024m
-Xmx1024m
728x90
반응형

이클립스 인코딩을 UTF-8로 설정해 줘야 하는데, 설정해야 할 곳이 은근 많다.

  1. Windows > Preferences > General > Content Types > Java Class File > Default Encoding
  2. Windows > Preferences > General > Editors > Spelling > Encoding
  3. Windows > Preferences > General > Workspace > Text File Encoding
  4. Windows > Preferences > Web > (CSS, HTML, JSP) > Encoding
  5. Windows > Preferences > XML > XML Files > Encoding
728x90
반응형

+ Recent posts