2015년 12월 21일 월요일

2015년 12월 3일 목요일

원출처: BIRD BUDDY, FZ님
2차출처: MLBPARK


Java Map Iterator 사용하기

Iterator<String> keys = map.keySet().iterator();
while( keys.hasNext() ){
    String key = keys.next();
    System.out.println( String.format("키 : %s, 값 : %s", key, map.get(key)) );
}
  
for( Map.Entry<String, String> elem : map.entrySet() ){
    System.out.println( String.format("키 : %s, 값 : %s", elem.getKey(), elem.getValue()) );
}
  
for( String key : map.keySet() ){
    System.out.println( String.format("키 : %s, 값 : %s", key, map.get(key)) );
}
당시에 쓰고 싶은 것으로 기분에 맞춰~ 가독성 좋게~

2015년 11월 30일 월요일

DBCP 기본적인 설정값 설명

initialSize : 초기에 풀에 생성되는 커넥션의 개수
maxActive : 유지하는 최대 Active connection의 개수. 서버의 최대 thread 개수등을 고려하여 결정하자.
minIdle : 사용되지 않는데 pool에서 놀 수 있는 최소 connection의 개수. 기본값은 0. 0일 경우 노는 Idle connection이 없어서 바로바로 connection 획득이 안될 수 있다. -1일경우 무제한으로 관리.
minEvictableIdleTimeMillis : 사용하지 않는 커넥션을 추출할때 해당 시간이 지난 connection 만 처리 된다. -1일 경우 영원히 풀에서 제거되지 않는다.
maxIdle : 사용되지 않는데 pool에서 놀 수 있는 최대 connection의 개수. 기본값은 8이며 maxActive와 일반적으로 같거나 약간 적게 설정한다.
maxWait : connection 사용이 급증하여 모든 connection이 사용중일때 대기시간. 기본값은 -1이다. -1은 무한으로 대기함을 의미. 단위는 ms
testOnBorrow : connection pool에서 connection을 가져올때 해당 connection이 유효한지 검사할지 여부. 기본 값은 false. true로 이용시 매번 connection을 가져올때마다 SELECT 1과 같은 검사를 수행해서 약간의 수행 성능 하락은 있다.
testOnReturn : connection pool에 connection을 반납할때 해당 connection의 유효성을 검사하고 pool에 넣는다. 역시 수행성능 하락은 있다.
timeBetweenEvictionRunsMillis : 놀고 있는 connection pool의 connection을 주기적으로 정리하는 시간. 기본값은 -1. -1은 정리하지 않음.
testWhileIdle : 놀고있는 connection을 제거하려고 할때 해당 connection의 유효성을 테스트. 기본값은 false.
validationQuery : connection 유효성 검사에 사용되는 쿼리문. 보통은 SELECT 1

2015년 11월 5일 목요일

WireShark 자주 쓰는 Filter 몇개 정리

기본적으로 사용가능한 비교 연산자는 6개
==(eq), !=(ne), >(gt), <(lt), >=(ge) <=(le)

그다음 논리 연산자는 4개
&&(and), ||(or), ^^(xor), !(not)

출발지 주소 : ip.src
목적지 주소 : ip.dst
출발지 or 목적지 주소 : ip.addr

출발지 포트 :

프로토콜의 포트 : tcp.port
프로토콜의 출발지포트 : tcp.srcport
프로토콜의 목적지포트 : tcp.dstport
프로토콜 플래그 : tcp.flags
프로토콜의 플로그 상세 : tcp.flags.syn (TCP 패킷중 SYN패킷을 필터링)

자주 쓰는 프로토콜

tcp
rtsp
udp
http

Linux 메모리 사용률 확인하기

1. 전체 메모리 중 사용/free 사용량 체크
sar -r 1
free -m
top -n1 | grep Mem:
cat /proc/meminfo | grep Mem

보통 메모리 사용량이 항상 90~98% 나오는데...
이건 linux OS 에서 남는 메모리는 모두 OS용도 cache나 buffer로 사용하기 때문입니다.
위의 명령어들로 나오는 것들 중
buffer 또는 cache 양을 합한게 남는 메모리로 보시면 됩니다.

2. 현재 메모리 사용량 상위 10개 보기
ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11

3. 특정 PID의 메모리 사용량 체크
cat /proc/PID번호/status | grep Vm

2015년 11월 4일 수요일

기본적인 SQL 명령어들

사용자 추가/삭제

GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';
username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는 데이타베이스에 대해 모든 권한을 가지고 있다. username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';
위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

특정 권한만 주려면, 아래와 같은 형태로 권한을 나열한다.

GRANT INSERT,UPDATE,SELECT ON dbname.* TO username@'localhost' IDENTIFIED BY 'pwd';
MySQL error 1045(28000): Access denied for user ...에 따르면 '%'란 localhost 를 제외한 모든 호스트를 뜻한다고 한다. 즉, localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.

불필요한 사용자 삭제는

mysql> DLETE FROM USER WHERE USER='username';
mysql> FLUSH PRIVILEGES;
데이터베이스 생성/보기

# 데이터베이스를 생성하고,
mysql> CREATE DATABASE dbname;

# 현재 존재하는 데이터베이스 목록을 보여준다.
mysql> SHOW DATABASES;

# 특정 데이타베이스를 사용하겠다고 선언한다.
mysql> USE dbname;

# 쓸모 없으면 과감히 삭제한다.
mysql> DROP DATABASE [IF EXISTS] dbname;
IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.

테이블 생성/보기

테이블을 생성하고,

mysql> CREATE TABLE tablename (
  column_name1 INT PRIMARY KEY AUTO_INCREMENT,
  column_name2 VARCHAR(15) NOT NULL,
  column_name3 INT
) ENGINE=INNODB;
현재 데이타베이스의 테이블 목록을 보고

mysql> SHOW TABLES;
테이블 구조를 살펴본다.

mysql> EXPLAIN tablesname;
혹은
mysql> DESCRIBE tablename;
이름을 잘못 지정했으면 이름을 변경할 수도 있다.

mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];
필요 없으면 삭제한다.

mysql> DROP TABLE [IF EXISTS] tablename;
현재 상태 보기

mysql> STATUS

--------------
mysql Ver 11.18 Distrib 3.23.58, FOR pc-linux (i686)

Connection id: 26
CURRENT DATABASE: study
CURRENT USER: study@localhost
CURRENT pager: stdout
USING OUTFILE: ''
Server version: 3.23.58
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: euc_kr
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 9 MIN 59 sec

Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 FLUSH TABLES: 1
OPEN TABLES: 1 Queries per SECOND avg: 0.021
--------------
INSERT

mysql> INSERT INTO tablename VALUES(값1, 값2, ...);
혹은
mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);
SELECT

mysql> SELECT col1, col2, ... FROM tablename;
컬럼명을 *로 하면 모든 컬럼 의미.

mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;
컬럼의 이름을 바꿔서 출력.

mysql> SELECT * FROM tablename ORDER BY col1 DESC;
mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;
DESC는 내림차순 ASC는 오름차순.

mysql> SELECT * FROM grade WHERE korean < 90;
결과중 처음부터 10개만 가져오기

mysql> SELECT * FROM grade LIMIT 10;
결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.

mysql> SELECT * FROM grade LIMIT 100, 10;
UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건
DELETE

mysql> DELETE FROM tablename WEHRE 조건
mysql에서 쿼리 결과 세로로 보기

-E 옵션을 줘서 실행한다.

mysql -E -u root -p mysql
mysql에서 발생한 오류나 경고 다시 보기

mysql> SHOW errors;
mysql> SHOW warnings;
show processlist

show processlist
접속한 커넥션의 상태를 보여준다.
SHOW FULL processlist;
SHOW FULL processlist\G;
MySQL 버전 알아보기

SHOW VARIABLES LIKE "%version%";
CREATE TABLE 구문 보기

SHOW CREATE TABLE [테이블이름]\G
테이블/컬럼 정보보기

SHOW TABLE STATUS
-- 전체 테이블 정보를 주석까지 포함해 보여준다.
SHOW TABLE STATUS;

SHOW TABLE STATUS like 'member%'; -- 테이블 이름 매칭 조건

-- 테이블의 컬럼 정보를 주석까지 포함해 보여준다.
SHOW FULL COLUMNS FROM [테이블이름];
테이블/컬럼의 주석(Comment) 지정

-- 테이블의 주석 변경
ALTER TABLE [테이블이름] COMMENT = '테이블설명';

-- 컬럼의 주석 변경
ALTER TABLE [테이블이름] CHANGE COLUMN [컬럼이름] [새컬럼이름] ...여러 속성... COMMENT '새 주석';

2015년 11월 1일 일요일

CeotOS mariaDB설치

1. maria-DB repo 추가
https://downloads.mariadb.org/mariadb/repositories/

# MariaDB 5.5 CentOS repository list - created 2015-08-06 01:33 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

vi /etc/yum.repos.d/MariaDB.repo


2. 기존 mysql 삭제
service mysqld stop
yum -y remove mysql-server mysql

3. Maria-DB 설치
yum -y install mysql-server mysql
yum -y install mysql-devel
service mysql start
mysql_upgrade
mysql

4. 비밀번호 설정(비번이 123456 일때)
/usr/bin/mysqladmin -u root password 123456

4-1. 이미정한 비번을 다시 바꿀때
/usr/bin/mysqladmin -u root -p password 654321
Enter password: 123456(엔터)

5. 포트확인
netstat -anp | grep 3306

6. 부팅시 자동시작 확인(default 가 자동시작)
chkconfig mysql on
chkconfig --list mysql
mysql           0:off 1:off 2:on 3:on 4:on 5:on 6:off

7. 접속 시도(비번이 123456 일때)
mysql -uroot -p123456

8. 외부 접속 허용 (모든 아이피에 대해서)
MariaDB [(none)]> grant all privileges on {데이터베이스명}.* to {아이디}@'%' identified by '{패스워드}' with grant option;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

VI 에서 문자열 바꾸기

1. Vi 에서 문자(열) 바꾸기는 콜론 모드에서 's'를 입력하여 시작한다. 'S'ubstitute 의 앞자인듯.

:(시작줄),(끝줄)s/찾을패턴/바꿀스트링/옵션

시작줄, 끝줄 : 바꾸기를 할 범위를 행번호나 정해진 keyword로 지정.
"."는 현재 커서가 있는 line을 의미
"$" 는 제일 마지막 line을 의미
"%"는 전체 문서를 의미
앞에 '찾을패턴'은 정규식( [] list나 '.'점자등등)이 사용가능하다. 뒤쪽은 String만 가능

옵션 :
g : global - 한라인의 여러번 등장하는 모든 문자열에 대해 일괄 치환한다. (제일 자주 사용) / 이걸 안쓰면 제일 첫 검색패턴만 치환된다
i : ignore case - 대소문자 구분을 하지 않고 바꾼다.
c : confirm - 검색된 모든 문자열에 대해서 바꿀지 말지를 물어본다.

예:
:1,100s/aaaa/bbbb  1~100번줄까지 각 line의 첫aaaa를 bbbb로 바꾼다
:.,.+100s/aaaa/bbbb/c 현재line 부터 현재line+100line까지 첫 aaaa 를 bbbb로 바꾼다. 이때 사용자에게 바꿀지 말지 물어본다.
:%s/aaaa/bbbb/g  전체 문서의 aaaa를 bbbb로 바꾼다.

2015년 10월 27일 화요일

Centos 설치후 초기 설정

1. X window 자동 로그인
# vi /etc/gdm/custom.conf

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=root

2. 공유폴더 설정
# vi /etc/profile
mount -t vboxsf shared_centos /shared

3. DNS / network 설정
# vi /etc/resolv.conf
  nameserver 8.8.8.8 (예:구글)

# vi /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=hostname   
  GATEWAY=192.168.0.1

#vi /etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0
  BOOTPROTO=dhcp (or static)
  NM_CONTROLLED=yes
  ONBOOT=yes
  NETMASK=255.255.0.0
  GATEWAY=192.168.0.1
  DNS1=8.8.8.8
  IPADDR=192.168.0.200

#service network restart

4. 기본 developtool 설치
# yum -y install kernel sources
# yum -y install kernel-devel
# yum -y install make
# yum -y install gcc
# yum -y groupinstall "Development tools"
# yum -y update boost-devel

5. Centos 시간 동기화 설정
# yum install ntp
# /etc/init.d/ntpd start
# /sbin/chkconfig ntpd on
# ntpdate -d 0.centos.pool.ntp.org
# date