MS Word에서 다단계 목록 작업을 할 경우, "Tab"과 "Shift+Tab" 단축키로


다단계 목록 작업을 수월하게 진행할 수 있다.


하지만 표 안에서 다단계 목록 작업을 할 때, "Tab" 단축키를 사용하게 되면 다음 셀로 이동하게 된다.


따라서 표 안에서는


들여쓰기는 Shift + Alt + 오른쪽 화살표


내어쓰기는 Shift + Alt + 왼쪽 화살표


를 사용하면 된다.


실행 쉘스크립트는 nohup가 백그라운드 동작을 이용하여 자바가 실행 될 수 있도록 되어 있다.


또한, 실행된 프로세스에 대한 pid를 pid.file에 내용을 저장하도록 한다.


start.sh

nohup [자바 실행 내용] 1> /dev/null 2>&1 &

echo $! > pid.file



종료 쉘스크립트는 실행 쉘스크립트에서 저장한 pid를 찾아 프로세스를 종료 시키도록 되어 있다.


또한, 프로세스가 종료 명령어 사용 후, pid.file 내용은 초기화 하도록 한다.

stop.sh

filename=pid.file

pid=`cat $filename`

kill $pid

cp /dev/null filename


'Linux' 카테고리의 다른 글

[Linux] Top을 이용한 프로세스 스레드 모니터링  (1) 2016.05.30
[Shell] 메뉴 프로그래밍  (0) 2016.05.20


현재 코드라인에서 지금까지 호출된 함수의 정보를 확인하기 위한 방법이다.


예를 들어,


Class A{


public static void main(String args...){

new B();

}

}


Class B{


public B(){

// 현재 라인에서 현재까지 호출된 정보를 확인하고 싶은 경우 사용

}


}




StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();


를 이용하면 현재 호출까지 되었던 정보들을 스택 구조로 획득할 수 있다.


StackTraceElement에서 획득할 수 있는 대표적인 정보로는


for (StackTraceElement stackTraceElement : stackTrace) {
    stackTraceElement.getClassName();
    stackTraceElement.getFileName();
    stackTraceElement.getLineNumber();
    stackTraceElement.getMethodName();

}


대부분 함수이름만으로 어떠한 정보를 획득할 수 있는지 이해할 수 있다.


다만, getClassName()의 경우 fully qualified name of the Class가 리턴 된다.

(예시 : com.test 패키지 아래에 Temp.java 파일의 경우, com.test.Temp 라는 정보가 리턴된다.)







Log4j에서 Async 방식을 이용하려면 Properties 파일이 아닌 XML 형식으로 작성하여야 한다.


XML 방식을 이용하여 원하는 Append를 Async 방식으로 사용할 수 있게 해준다.


<appender name="asyncAppender" class="org.apache.log4j.AsyncAppender">
 <param name="BufferSize" value="500"/>
 <param name="Blocking" value="true"/>
 <appender-ref ref="something"/>
</appender>


XML 내부 설정 사항을 살펴보면 버퍼 사이즈 지정과 Block을 설정할 수 있다.


코드에서 Log를 사용하게 되면 Log내용을 메모리에 보관하였다가, Async 스레드가 메모리의 내용을


Appender에 전달하게 된다. (AsyncThread는 Log4j에서 자동으로 생성되어 동작함)


logger.info("INFO")

logger.debug("DEBUG")

...

 

 Memory

 AsyncThread


Append(File, Rolling etc..)



이와 같은 방식으로 사용되면, 순간적으로 많은 로그 요청으로 인하여 지정한 메모리 용량보다 많은 내용을


담게 될 수도 있다.


(예시: 웹 서비스에서 로그인 시간을 로그로 남긴다고 가정 하였을때, 버퍼 사이즈보다 많은 동시 접속자가


로그인을 시도하게 된다면, 로그의 버퍼사이즈보다 많은 내용을 순간적으로 가지게 된다.)



이 때, Blocking 설정이 True라면 메모리의 데이터가 해소 될때까지 메모리 용량에 유입을 막게 되고


Blocking 설정이 False라면 메모리가 확보 될떄까지 로그 내용은 버려지게 된다.


Blocking을 설정하지 않을 경우, 기본적으로 TRUE로 설정된다.



엑셀의 꺾은선형 차트 사용 시, 특정한 위치의 데이터를 강조하기 위해서는 "데이터 요소 서식"을 사용




위와 같은 예시 차트에서,


가장 큰 값의 데이터를 강조하기 위하여  가장 큰 데이터의 값에서 오른쪽 클릭을 한다.





위 내용에서, "데이터 요소 서식을 클릭하게 되면 엑셀 창의 오른쪽 사이드바로 데이터 요소 서식 창이 나타나게 된다.






 





이와 같이 데이터 요소 서식 화면에서


"채우기 및 선" 을 클릭한 후,


하단의 "표식"을 클릭하면,

표식 옵션과 채우기 옵션을 확인 할 수 있다.


표식 옵션에서 "기본 제공"을 클릭하여

본인이 원하는 도형과 크기를 설정하고,



색상을 설정하고 싶다면,

"채우기"에서 단색채우기로 색상을 선택하면 된다.
















최종적으로 아래와 같은 화면을 볼수 있다.










이클립스 사용 시, System.out을 사용하면 이클립스 콘솔 창에 결과가 출력이 된다.


하지만 필요에 따라, 콘솔이 아닌 파일로 출력해야 되는 경우에 간단한 방법으로 콘솔에서 파일로 출력 할 수 있다.



File file = new File("output.txt");
FileOutputStream fos = new FileOutputStream(file);
PrintStream ps = new PrintStream(fos);
System.setOut(ps);


위와 같은 방법을 사용하면, 해당 코드 이후로 System.out을 사용한 출력 결과는 output.txt 파일에 저장이 된다.



만약 파일에서 다시 콘솔로 출력해야된다면,


PrintStream console = System.out;
System.setOut(console);


위와 같이 사용하여, 파일에서 콘솔 출력으로 변경 할 수 있다.



INSERT INTO TABLE_NAME VALUES('COLUMN_1','COLUMN_2','COLUMN_3');


일반적인 INSERT문을 사용하면서 COLUMN_1에 자동으로 증가하는 값으로 INSERT를 해야되는 경우,



먼저,


SELECT MAX(COLUMN_1) FROM TABLE_NAME



위와 같이 컬럼의 최대값을 획득하면서 +1 하면서 입력이 되어야 한다.


따라서, 최종적으로


INSERT INTO TABLE_NAME

VALUES ( (SELECT MAX(COLUMN_1) FROM TABLE_NAME) + 1

             , 'COLUMN_2'

             , 'COLUMN_3');


위와 같은 형태로 입력하여, COLUMN_1에 자동으로 최대값을 입력하면서 INSERT가 된다.







Top으로 특정 프로세스의 스레드 모니터링

top -H -p (pid)


+


프로세스 이름으로 PID 검색

ps -ef | grep (process name) | grep -v grep | awk '{print $2}'



두가지 명령을 조합하여, 프로세스 이름으로 PID를 검색 한 후, top에서 해당 프로세스의 스레드를 모니터링


top -H -p (ps -ef | grep (process name) | grep -v grep | awk '{print $2}')



수정 사항

댓글에 오타에 대해서 알려주셔셔 감사합니다.


top -H -p $(ps -ef | grep (process name) | grep -v grep | awk '{print $2}')






CPU 사용율 확인


Linux에서 Top 명령어를 사용하여 프로세스의 CPU 사용율을 확인하게 되면


(코어 * 사용율)로 표기가 되므로 실제 30% 이용 시, 4코어라면 top에서 120%로 표기된다.


따라서 최대치가 100%인 CPU 사용율을 표기하려면,


top 화면에서 Shift + i 를 누르게 되면 irxi mode가 되며


CPU는 코어 개수와 상관없이 100%가 최대치인 CPU 사용율을 표기해준다.




'Linux' 카테고리의 다른 글

[Shell] Java 실행 및 종료 Shell Script  (0) 2016.10.19
[Shell] 메뉴 프로그래밍  (0) 2016.05.20


메뉴 형식의 프로그래밍이며, 메뉴입력 후 추가적으로 다시 상세 항목이 입력이 필요한 경우,


CASE문에서 상세 항목을 다시 입력받아 처리하도록 한다.


만약 콘솔창에 입력 항목들이 남아있는 것이 싫다면,


clear 명령어를 추가하여 화면에 메뉴 내용만 출력하도록 한다. (현재 clear 부분은 주석처리)



#!/bin/bash

while :
do
        #clear
        echo "1: Menu1"
        echo "2: Menu2"
        echo "3: Exit"

        read OPT

        case $OPT in
                1) echo "Menu1"

                ;;
                2) echo "Menu2"
                    echo "INPUT DETAIL INFORMATION"

                    read DETAIL

   echo $DETAIL


                ;;
                3) echo "Exit"
                    exit
                ;;
                *) echo "Input wrong option, Check option"
        esac
        #clear
done


Hikari Connection Pool 사용하기


Hikari Download




HikariCP Class 구현


public class HikariConnectionPool {
    private static HikariConnectionPool instance = null;
    private HikariDataSource ds;

    public HikariConnectionPool() {
        HikariConfig config = new HikariConfig();
        config.setDriverClassName("DRIVERCLASS");
        config.setJdbcUrl("JDBCURL");
        config.setUsername("USER");
        config.setPassword("PASSWORD");
        ds = new HikariDataSource(config);
    }

    public Connection getConnect(){
        Connection connection = null;
        try {
            connection = ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    public static HikariConnectionPool getInstance(){
        if ( instance == null ){
            instance = new HikariConnectionPool();
        }
        return instance;
    }
}


HikariCP Driver Class Name은

https://github.com/brettwooldridge/HikariCP#popular-datasource-class-names

참조하여 사용.