본문 바로가기

분류 전체보기

(644)
[이펙티브 자바 3/E] 아이템9 - try-finally보다는 try-with-resources를 사용하라 - try-with-resources 구조를 사용하려면 해당 자원이 AutoCloseable 인터페이스를 구현해야 한다. try-finally 구조를 사용한 예 static String firstLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } } try-with-resources 구조를 사용한 예 static String firstLineOfFile(String path) throws IOException { try (BufferedReader br = new Buff..
[이펙티브 자바 3/E] 아이템8 - finalizer와 cleaner 사용을 피하라 finalizer와 cleaner - 예측할 수 없고, 느리고, 일반적으로 불필요하다. - 즉시 수행된다는 보장이 없다. => 즉, 제때 실행되어야 하는 작업을 절대 할 수 없다. - 심각한 성능 문제도 동반한다. - finalizer를 사용한 클래스는 finalizer 공격에 노출되어 심각한 보안 문제를 일으킬 수도 있다. - 자바 언어 명세는 finalizer와 cleaner의 수행 시점뿐 아니라 수행 여부조차 보장하지 않는다. ===> 상태를 영구적으로 수정하는 작업에서는 절대 finalizer나 cleaner에 의존해서는 안 된다. finalizer와 cleaner를 대신해줄 묘안 - AutoCloseable을 구현하고, close 메서드를 호출한다.(일반적으로 예외가 발생해도 제대로 종료되도록 ..
[이펙티브 자바 3/E] 아이템7 - 다 쓴 객체 참조를 해제하라 * 다 쓴 참조 : 문자 그대로 앞으로 다시 쓰지 않을 참조 - 가비지 컬렉션 언어에서는 (의도치 않게 객체를 살려두는) 메모리 누수를 찾기가 아주 까다롭다. 객체 참조 하나를 살려두면 가비지 컬렉터는 그 객체뿐 아니라 그 객체가 참조하는 모든 객체(그리고 또 그 객체들이 참조하는 모든 객체...)를 회수해가지 못한다. ===> 해당 참조를 다 썼을 때 null 처리(참조 해제)하면 된다. - 객체 참조를 null 처리하는 일은 예외적인 경우여야 한다. ===> 다 쓴 참조를 해제하는 가장 좋은 방법은 그 참조를 담은 변수를 유효 범위(scope) 밖으로 밀어내는 것이다. 메모리 누수에 주의해야 하는 경우 1. 자기 메모리를 직접 관리하는 클래스 2. 캐시 3. 리스너(listener) 혹은 콜백(cal..
100일차 - HAL Explorer HAL Explorer - 스프링 부트에서 API 테스트 - 심플하고 편리한 UI 제공 의존성 추가 build.gradle implementation 'org.springframework.data:spring-data-rest-hal-explorer' 참고 - UI에서 Edit Headers > Key : accept, Value : application/hal+json(또는 application/json)을 추가한 후 Go!를 눌러주면 Get뿐만 아니라 모든 API 테스트가 가능해진다. - hal explorer 의존성을 추가했다면 rest repositories 의존성은 삭제해도 된다.(99일차 기록 참고)
99일차 - Rest Repositories Rest Repositories - Repository로부터 REST API를 자동으로 만들어주는 기술 - Spring Data REST를 사용한다. - 페이징, 정렬, 리미트를 사용할 수 있다. - QueryDSL Extension을 함께 사용하면 큰 노력 없이 컬럼별 검색 기능까지 사용 가능하다. 실무에서는 많이 사용되지 않는 이유 - 도메인을 직접 API에 노출하는 것을 꺼림 - 복잡한 요구사항에 맞춰 API 설계를 하고 싶은 경우에는 부적합 - 설정을 제대로 하지 않으면 불필요한 API가 노출될 수 있음 - 실무에서 API는 필요에 따라 직접 만드는 편 사용을 고려할 수 있는 상황 - 내부에서 사용하는 애플리케이션을 만들 때 - 도메인이 복잡하지 않을 때 - 요구사항이 복잡하지 않고 심플한 CRU..
98일차 - 스왑 파일 생성, 도커와 MariaDB 등 설치 아래 내용은 모두 아마존 리눅스에서 실행하는 것임 EC2 인스턴스에 스왑 파일 적용 - 루트 파일 시스템에 스왑 파일 생성 $ sudo dd if=/dev/zero of=/swapfile bs=128M count=32 - 스왑 파일의 읽기 및 쓰기 권한 업데이트 $ sudo chmod 600 /swapfile - Linux 스왑 영역 설정 $ sudo mkswap /swapfile - 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 함 $ sudo swapon /swapfile - 프로시저가 성공적인지 확인 $ sudo swapon -s - /etc/fstab 파일을 편집하여 부팅 시 스왑 파일 시작 $ sudo vi /etc/fstab 파일 끝에 아래 텍스트를 새로 추가하고 저장한..
[네트워크/보안] 네트워크 보안 실습 환경 구축 - 네트워크 시뮬레이터를 이용한 네트워크 구성 GNS3 설치 https://github.com/GNS3/gns3-gui/releases Releases · GNS3/gns3-gui GNS3 Graphical Network Simulator. Contribute to GNS3/gns3-gui development by creating an account on GitHub. github.com GNS3-2.2.41-all-in-one.exe 설치 GNS3 설정 - File > New blank project 클릭, 새로운 프로젝트를 생성한다. - Edit > Preferences에서 라우터, 네트워크 스위치, VirtualBox로 구성될 보안 시스템을 추가한다. 라우터 - Dynamips > IOS routers에서 new를 클릭한다. - CISCO I..
[네트워크/보안] 네트워크 보안 실습 환경 구축 - 네트워크 구축, 가상 머신 환경 구축 네트워크 구축 이전 선행되어야 할 것들 1. 사무실의 도면을 간략하게 그린 후 네트워크에 접속할 디바이스(PC, 프린터 등)를 어디에 배치할지 선정한다. 2. 네트워크에 접속하는 디바이스 대수와 향후 증감 여부를 예측하여 랜 케이블 설치 수량을 결정한다. 3. ISP 업체를 선정할 때는 가격, 통신 품질을 고려하고 추가 혜택이 있는지 종합적으로 판단한다. - 네트워크 장비는 사무실에 직접 설치하지 않는 것을 권장하고 통상 기업 내 전원 이중화나 UPS(Uninterruptible Power System(무정전전원장치))와 공조 시설을 갖춘 전산실처럼 직접적인 접근이 제한된 장소에 위치하는 것이 좋다. VirtualBox를 이용한 가상 머신 구축 우분투 설치(GUI 기반 데스크톱 배포판) https://u..