본문 바로가기
728x90

전체 글249

[이펙티브자바]item8.finalizer와 cleaner 사용을 피하라. finalize? 가비기컬렉션의 수행될 때 실행되는 메소드를 정의할 수 있다고 한다. leak 을 방지하기 위한 기술이였던거 같다. cleaner? finalize 의 대안책으로 덜 위험하지만, 예측할 수 없고, 느리고, 일반적으로 불필요하다. --- 사용안하는 이유 즉시 수행된다는 보장이 없음.(가비지 컬렉터 알고리즘에 따라 다름) 성능문제 정말 필요한 상황이 아니라면 쓰지말자. 자원의 close 가 필요한 상황에 안전망 같은 경우에 사용은 가능하지만 안쓰는게 나을듯. 추후 업데이트 하겠지만, 잘 쓰지 않은 부분이라 크게 와닿지 않은 부분. 그래서 어떻게? item9 에서 나오겠지만 try with resources 를 사용하면 될듯하다. 2023. 1. 17.
MAC 사용중인 포트 찾기, Kill 하기 터미널 열고 lsof -i :포트번호 ex: lsof -i :12345 kill 하기 kill -9 pid ex: kill -9 7417 2023. 1. 16.
mysql 인덱스 확인, mysql 실행계획, 테이블 데이터 용량 확인 쿼리가 너무 느린부분이 있어 실행계획을 살펴보다 또 볼 날이 있을 듯 하여 올림. === 명령어. 인덱스 확인: SHOW INDEX FROM ; ex:SHOW INDEX FROM stop_orders; 인덱스 추가: //인덱스 정렬은 8.0부터 가능하다. CREATE INDEX ON ( 칼럼명1, 칼럼명2, ... ); 또는 ALTER TABLE ADD INDEX (칼럼명1, 칼럼명2, ...); ex: ALTER TABLE stop_orders ADD INDEX index_stop_orders_on_order_id (order_id desc); 인덱스 삭제: ALTER TABLE DROP INDEX ; ALTER TABLE stop_orders DROP INDEX index_stop_orders_on_.. 2023. 1. 16.
L3, L4 스위치(Switch) 등 간략히 - 네트워크 보다보면 l3, l4 스위치라는 말을 자주하게되는데 간략히 알아보자. - 스위치? - 영어단어 그대로 바꾸는걸 말한다. 패킷을 어느쪽으로 보내주는 역할(스위치 장비) - 여러 장비를 연결하고 데이터 통신을 중재, 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비. - 네트워크 7계층을 나눠보면 각 계층을 하나하나의 layer 라 부르기도 한다. - l7 스위치 - l7 즉 layyer 7 애플리케이션 계층, 로드밸런서라고도 함(서버 부하 분산 기기) 정직적인 헬스체크를 이용하고 감시함 - l7, l4 스위치 차이 - 로드밸런서는 l7, l4 스위치도 존재, l4 스위치는 인터넷 계층을 처리하는 기기로 스트리밍 관련 서비스에서는 사용할 수 없다. - l4 는 ip.. 2023. 1. 15.
TCP/IP 4계층, 3 way handshake, 4 way handshake - 네트워크 - 노드와 링크가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미 - 처리량 - 링크를 통해 전달되는 단위 시간당 데이터양 - 단위: bps(bits per second) 초당 전송, 수신되는 비트 수 - 대역폭 - 네트워크 연결을 통해 흐룰 수 있는 최대 비트 수 - RTT(Round Trip Time) 또는 latency - 두 장치를 왕복하는 데 걸린 시간 - 네트워크 토폴로지와 병목 현상 - network topology 는 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태 - 버스토폴로지 - 중앙 통신 회서 하나에 여러개의 노드가 연결되어 공유하는 네트워크 구성 - 설치비용 적고, 신뢰성 우수, 노드 추가 삭제가 쉽다. - 스푸핑이 가능한 문제점 - 스푸핑: L.. 2023. 1. 15.
네트워크 토폴로지 그리고 LAN, MAN, WAN 간략히 네트웤크 토폴로지 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태 - 버스토폴로지 - 중앙 통신 회서 하나에 여러개의 노드가 연결되어 공유하는 네트워크 구성 - 설치비용 적고, 신뢰성 우수, 노드 추가 삭제가 쉽다. - 스푸핑이 가능한 문제점 - 스푸핑: LAN 상에서 송신부 패킷을 송신과 관련 없는 디른 특정 노드에 악의적으로 패킷이 오도록 하는 행위. - 중앙회선에 문제가 생기면 전부다 문제가 됨. - 스타 토폴로지 - 중앙 노드에 모두 연결된 네트워크 구성 - 노드추가 삭제 쉽다, 패킷 충돌 가능성 낮음. 에러발생을 쉽게 캐치가능 - 중앙노드에 장애가 발생하면 전체 네트워크 사용불가, 비용이 고가이다. - 트리 토폴로지 - 트리구조 - 추가 삭제가 보통(leaf 쪽은 쉬울지몰라도 중.. 2023. 1. 13.
[이펙티브자바]item7.다 쓴 객체 참조를 해제하라. 자바는 가비지컬렉터가 다 쓴 자원을 자동적으로 회수해 가지만 무조건 적인건 아니다 예외적인 상황 stack 클래스 왜? 스택 클래스는 왜 메모리 누수에 취약할까 스택이 자기 메모리를 직접 관리하기 때문. 객체를 담는 elements 배열로 저장소 풀을 만들어 원소들을 관리한다. 활성 역역에 속한건 사용하고 비활성은 사용하지 않는다. 이를 가비지컬렉터가 알 길이 없다. 그래서 다 쓴 원소는 nul 처리를 하자. 캐시 역시 메모리 누수를 일으키는 주범 캐시 생성 후 메모리를 잘 정리하자 조만간 업데이트 예정 리스너(listener) 혹은 콜백(callback) 이것도 조만간 업데이트 예정 WeakHashMap 사용하지 않는 객체를 가비지컬렉터가 자동으로 삭제해 주는 맵 주의점: key 를 만들경우 레퍼런스 .. 2023. 1. 13.
[이펙티브자바]item6.불필요한 객체 생성을 피하라 재사용이 많다면 캐싱를 고려해보자. 꼭 필요한 상황이 아니라면 박싱된 기본 타입보다는 기본 타입을 사용하고, 의도하지 않은 오토박싱이 일어나지 않게 한다. 2023. 1. 13.
[이펙티브자바]item5.자원을 직접 명시하지 말고 의존 객체 주입을 사용하라. 하나의 클래스에서 여러 리소스를 사용하려면 아래와 같은 코드는 KoreanDicationary 만 사용할 수 있게 코드가 박혀있으니, public class SpellChecker { private Lexicon dictionary; public SpellChecker(Lexicon dictionary) { this.dictionary = dictionary; } private SpellChecker(){} public boolean isValid(String word) { return true; } public List suggestions(String typo) { throw new UnsupportedOperationException(); } public static void main(String[.. 2023. 1. 13.
728x90