Overview TCP 프로토콜에서 3way Handshake 4way Handshake가 언제 발생하고, 어떻게 동작하는지 알아봅니다. TCP 프로토콜이란? 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로, 신뢰성있고 연결지향적인 프로토콜 신뢰성 : 패킷 손실, 중복, 순서바뀜 등이 없도록 보장합니다. 연결지향적 : 같은 전송계층의 UDP가 비연결성인 것과는 달리, 연결지향적인 프로토콜. 이와 관련되어 연결 관리를 위한 연결설정 및 연결해제가 필요한데 아래 연결방법에 대해 설명합니다. TCP Control FLAG FLAG설명URG(Urgent)긴급 시 URG를 1로 설정함 (순서와 상관없이 먼저 송신됨)ACK(Acknowledge)패킷을 받았다는 확인응답으로 1로 세팅 시 확인번호 유효함, 0으로..
Overview SpringBoot 프로젝트에 Sentry과 logback을 적용하고, Slack으로 에러를 알림으로 받아보려고 합니다. Sentry에는 4가지의 과금정책이 있는데, Developer, Team, Business, Enterprise에서 Team Plan 이상을 써야 Slack으로 알림을 받을 수 있나봅니다.. 무료로 사용할 수 있는 Developer Plan는 메일로 알림을 받을 수 있습니다. Sentry 웹 콘솔에서 프로젝트를 만들면 DSN(Client Key)가 발급이 됩니다. Alert Rule, Platform 등 해당 Sentry 프로젝트의 설정을 세팅한 후, 발급 된 DSN을 우리가 적용할 어플리케이션에 Client Key로 호출해주면 됩니다. Sentry 프로젝트 생성하기 ..
Overview 최근 진행한 프로젝트에서 Netty 프레임워크를 사용하여 대외기관과 소켓통신을 할 일이 있어서, 패킷들을 분석한 일이 있었다. TCP 패킷을 dump하고, 해당 파일을 WireShark 툴로 분석을 해보려한다. TCP dump란? linux의 manual 명령어를 통해 알아보자. > man tcpdumpNAME tcpdump - dump traffic on a network네트워크의 트래픽을 덤프한다라고 매뉴얼에서 말해준다. tcp dump는 해당 서버에서 네트워크를 통해 송/수신되는 패킷들을 확인할 수 있는 명령어이다. TCP dump 명령어 TCP 기본 명령어 SYNOPSIS tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ] [ ..
Overview 세 클래스는 전부 Java에서 String(문자열)을 저장하고 관리하는 클래스이다. Java 프로그래밍을 할 때 문자열을 가장 많이 사용하는데, 자주 사용되는 클래스들의 쓰임새를 잘 알고 효율적으로 사용하는 것이 바람직해 보여 포스팅을 한다. 불변성(immutable) : 객체의 값이 할당된 Heap 영역의 값을 변경할 수 없다. 주소가 재할당 됩니다. 가변성(mutable) : 객체의 값이 할당된 Heap 영역의 값이 변경 가능합니다. 주소는 그대로 사용하고 값을 변경합니다. String String은 immutable(불변성) 합니다. 객체가 생성되면 할당된 메모리공간에 변화가 일어나지 않습니다. @Test public void testString(){ String originText..
Overview 클린코드 책을 읽고, 짧은 후기를 써보려한다. 목표 클린코드에 대해 쉽게 생각하기 실무에서 클린코드 잘 적용하기 이름을 잘짓자 의도를 분명히 밝혀라 나쁜예 int a; int b; 좋은예 long batchStartTime; long batchEndTime; long elapsedTimeInDays; 길어도 좋으니 형용사 + 명사를 조합하여 변수명에 작성자의 의도를 명확히 드러내자. 단 루프(for문..)에서는 전통적으로 한글자 변수를 사용함( i, j, k , 단! l, o 는 안됨! 숫자랑 헷갈림 ㅎ ) 애매한 단어나 프로그램 단어는 되도록이면 피하자 애매한 작명은 피하자 나쁜예 int O = 0; int l = 0; if(O == 0) if(l == 1) 프로그램에서 통용되는 용어로..
개발환경 OS : RedHat Linux was : jboss 7.0 dbms : oracle 12c java : 1.8 Issue jboss에서 쿼리가 15초이상 수행될 때 발생한 에러이다. 웹기반 프로젝트를 진행중에 사용자가 어드민 화면에서 통계성 자료를 확인하는 화면이 있다. 주로 헤비한 통계성 쿼리를 수행할 때 발생하였다. was로그에서 GlobalTransaction error가 발생한다. acquire-timeout 옵션을 주지않으면 default가 15초인가보다. 문제해결 컨테이너의 standalone.xml을 수정해야함. - path : /sw/jboss/servers/컨테이너명/configuration
개발환경 OS : AIX 7.2.0.0 java : 1.8.0_171 Issue crontab에서 java 실행 시 java.lang.UnsupportedClassVersionError 가 발생함. crontab을 등록한 user와 실행시키는 user가 참조하는 PATH가 다름. 문제 해결 java PATH를 확인해보자. crontab을 실행하는 user의 참조하는 PATH가 컴파일버전보다 낮다면, sh을 실행시킬 때 PATH를 재지정 해줬음 해당 sh의 owner로 접속하여 실행 시에 정상작동하던 .sh이 동일 계정에서 crontab에 등록하여 실행 시에 에러가 발생하였다. 에러 메세지는 다음과 같다. java.lang.UnsupportedClassVersionError jar를 컴파일한 java버전보..
리눅스 명령어 모음 설치wget [URL] : URL에 있는 파일을 다운로드 받는다.rpmrpm -Uvh [rpm] : 패키지를 설치하거나, 업그레이드 한다.rpm -qi [rpm] : 패키지가 설치 되어있는지 확인한다.rpm -e [rpm] : 패키지를 삭제 한다.yum(의존성이 있는 패키지 그룹 단위)yum -y install [패키지] : 패키지를 설치한다.yum -y erase [패키지] : 패키지를 삭제한다.yum list : 설치 가능한 패키지 목록.yum list updates : 업데이트가 가능한 패키지 목록.yum list installed : 설치된 패키지 목록.yum update [패키지] : 패키지명이 없으면 전체 업데이트 있으면 해당 패키지만 업데이트makeconfigure : 컴..