포스트464 [Linux] Bash 스크립트에서 따옴표 제거 Bash 스크립트를 작성할 때 쌍따옴표(")로 둘러쌓인 값에서 쌍따옴표만 제거하고 싶을 때가 있다. "Hello" 라는 값에서 쌍따옴표만 제거하고 Hello 라는 값만 추려내고 샆은 경우가 이에 해당한다. 이 경우 Bash의 매개변수 치환(Parameter Substitution)을 이용하면 된다. 예를 들어 $ VAR="\"TEST\"" $ echo $VAR "TEST" "TEST"라는 문자열이 변수에 저장되어 있을 때, 앞뒤에 있는 쌍따옴표만 제거하기 위해서는 $ temp="${VAR%\"}" $ temp="${temp#\"}" $ echo "$temp" TEST 이런 식으로 입력하면 된다. ${VAR%\"} 를 실행하면 VAR 데이터에 저장되어 있는 값에서 뒤쪽에 오는 쌍따옴표가 제거된다. ${te.. 2021. 6. 17. [Java] 문자열 생성 클래스 - String, StringBuffer, StringBuilder 차이점 자바에서 문자열은 독특한 특성을 가지고 있다. 바로 불변(Immutable)이라는 특성이다. String 타입의 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않는다. '+' 연산이나 concat 등의 메소드를 이용해서 문자열을 수정할 때, 기존에 존재하는 String 객체의 데이터가 수정되는 것이 아닌 연산의 결과로 만들어지는 문자열을 이용해 새로운 String 객체를 생성하는 형태로 동작한다. 문제는 '+' 연산이나 concat() 등의 메소드를 이용해 문자열을 수정할 때마다 새로운 String 객체가 생성된다는 점이다. 예를 들어 다음과 같은 코드가 있다고 생각해보자. String str = "String"; for (int i = 0; i < 100; i++) { str = str + i; }.. 2021. 6. 17. [Linux] 리눅스 시스템 로그 파일들 정리 리눅스 서버를 운영하다보면 다양한 형태의 장애 상황을 만나게 된다. 갑자기 CPU 사용률이 100%를 친다던가 네트워크 대역을 전부 소모해버린다던가, 메모리 사용량이 폭증하는 등의 이벤트가 발생할 수 있다. 이 경우 리눅스에서 남기는 다양한 로그 정보들을 열어보면서 문제를 분석할 수 있다. 리눅스의 로그들은 주로 /var/log 디렉토리에 저장된다. 이 디렉토리에는 다양한 시스템 로그 파일들이 기록된다. /var/log/messages 시스템에 문제가 생겼을 때 가장 먼저 확인해보는 로그 파일이다. syslog.conf 설정 파일에 로그를 남기지 않도록 지정된 내용을 제외한 모든 항목들이 기록된다. 많은 항목들이 기록되기 때문에 일반적으로 grep 명령어를 통해서 확인한다. /var/log/secure .. 2021. 6. 16. [Java] LinkedHashMap 사용법 및 예제 - HashMap과 차이점 LinkedHashMap Map 인터페이스를 구현한 클래스 중에 TreeMap과 HashMap은 매우 단순해서 많이 사용된다. 그 외에 조금 특이한 Map 클래스들이 있는데 LinkedHashMap이 그 중 하나다. LinkedHashMap은 Map에 입력된 순서를 기억하는 자료구조다. LinkedHashMap에 저장되는 키와 값은 Map.Entry 클래스를 구현한 Node 클래스에 저장된다. Node 클래스에는 before, after 멤버가 있는데, LinkedHashMap에 입력된 순서에 따라 연결 리스트 구조를 형성한다. LinkedHashMap 사용법 LinkedHashMap은 기본적으로 HashMap이다. 사용법은 HashMap과 동일하다. HashMap에 대해서 정리해 놓은 포스트를 참고하자.. 2021. 6. 16. [Java] TreeMap 사용법 및 예제 TreeMap TreeMap은 이진트리를 기반으로 Map 인터페이스를 구현한 컬렉션 클래스다. HashMap과 마찬가지로 키와 값(Key-Value) 쌍을 저장한다. HashMap은 키의 해시값을 기반으로 해시테이블을 구축하는 반면 TreeMap은 키 값을 이용해서 이진트리를 구축하고, 이진 트리의 노드에 값을 엔트리(Entry) 형태로 저장한다. 이진트리를 구축했기 때문에 키 값에 따라 정렬된 상태로 저장한다. TreeMap이 키와 값을 내부에 저장하는 이진트리는 '레드-블랙트리(Red-Black Tree)'로 구현되어있다. 일반적인 이진트리의 성질에 균형잡힌 트리(Balanced Tree)의 특성을 부여한 이진트리로 노드들이 트리의 전반에 걸쳐 고르게 분포된다. (이는 곧 Skew 되지 않음을 의미하.. 2021. 6. 14. [Java] HashMap 사용법 및 예제 HashMap 자바에서 제일 많이 사용되는 컬렉션 객체 중 하나가 바로 HashMap 일 것이다. HashMap은 Map 인터페이스를 구현한 대표적인 클래스로 Map의 특성을 그대로 이어받았다. HashMap은 키와 값으로 구성된 엔트리(Entry) 객체를 저장하는 자료구조로 키 객체의 해시코드를 이용해서 해시테이블을 탐색, 값을 가져오는 동작을 한다. HashMap에서 동일한 키에 대응되는 값은 하나만 저장할 수 있다. 따라서 동일한 키에 대응되는 값을 여러번 put() 메소드로 추가하면, 기존의 값은 덮어쓰여지고 마지막에 추가한 값이 살아남게 된다. HashMap은 이름에서도 알 수 있듯이 해시코드를 이용해서 값을 탐색한다. 따라서 특정 키에 해당하는 값을 빠르게 찾아올 수 있다는 장점이 있다. Ha.. 2021. 6. 10. [Linux] 명령행(터미널)에서 메일 보내기 - sendmail, mail(mailx) 명령 사용법 및 예제 모니터링 스크립트를 작성하고 crontab을 이용해서 주기적으로 실행하도록 설정하는 경우, 문제가 생겼을 때 메일을 통해서 원격으로 리포트를 받아보길 원할 때가 있다. 리눅스에서는 이런 경우 메일 전송을 해주는 유틸리티를 이용해서 모니터링 결과를 메일로 전송할 수 있다. sendmail 설치 CentOS 기준 yum을 이용해서 sendmail을 설치해준다. $ sudo yum install sendmail sendmail-cf -y 그리고 sendmail 서비스를 실행해준다. $ sudo systemctl start sendmail.service $ sudo systemctl enable sendmail.service mailx 설치 CentOS 기준, yum을 이용해서 mailx를 설치해준다. $ su.. 2021. 6. 9. [Linux] mktemp 명령 사용법 및 예제 - 임시 파일 만들기 Bash 스크립트를 작성하다가 임시로 파일을 만들어서 사용하고 싶은 경우가 있다. 특정 파일 경로를 사용하면 스크립트를 동시에 실행할 경우 파일의 내용이 덮어쓰여지게 된다. 따라서 현재 실행 중인 프로세스에서만 접근할 수 있는 임시 파일을 생성할 필요가 생길 수 있다. 이럴 때 mktemp 명령을 사용하면 편하다. mktemp 사용법 mktemp 명령은 다음과 같이 사용할 수 있다. $ mktemp /tmp/tmp.Jgx8ybtklqk mktemp 명령을 실행하면 /tmp 디렉토리에 임의의 파일이 생성되고 생성된 파일의 이름이 리턴된다. 스크립트 내에서 임시로 사용할 파일을 생성할 때, 이 명령을 사용하고 출력되는 파일 이름을 사용하면 된다. -d 옵션을 이용해서 임시 디렉토리도 생성할 수 있다. $ m.. 2021. 6. 8. [Java] TreeSet 사용법 및 예제 TreeSet TreeSet 클래스 역시 Set 인터페이스를 구현한 클래스다. Set 인터페이스를 구현했기 때문에 데이터에 대한 중복 저장을 하지 않으며, 저장된 순서를 유지하지 않는다. 해시코드를 이용해서 내부 해시 테이블에 데이터를 저장하는 HashSet과 다르게 TreeSet은 내부에 데이터 저장을 위한 RB-Tree(Red/Black Tree) 자료구조를 가지고 있다. RB 트리는 이진탐색트리(Binary Search Tree)의 일종으로 저장된 값들이 트리 전체에 고루 저장되도록하여 비정상적으로 트리의 높이가 높아지는 현상이 없게 만든 균형트리(Balanced Tree)다. 아무튼 내부에 RB 트리를 이용해서 값을 저장하기 때문에 현재까지 저장된 값들 중 최소 값 혹은 최대 값을 출력할 수 있으.. 2021. 6. 4. 이전 1 ··· 35 36 37 38 39 40 41 ··· 52 다음