반응형

효율

    규칙 68 - 스레드보다는 실행자와 태스크를 이용하라.

    여러 쓰레드를 실행해야할 때, 큐에 넣고 작업을 진행하거나 할 수 있으면 더욱 효율적으로 관리 할 수있다. 그래서 자바 1.5부터 자바 플랫폼에는 java.util.concurrent가 추가되었다. 이 패키지에는 Executor Framework가 들어 있는데 이는 인터페이스 기반 task 실행 프레임워크이다. 해당 Executor를 실행하기 위해서는 다음과 같이 입력하면 된다.1234567ExecutorService executor = Executors.newSingleThreadExecutor(); executor. @Override public void run() { System.out.println("test"); }});Colored by Color Scriptercs 그리고 만약 executo..

    규칙 67 - 과도한 동기화는 피하라

    동기화 시에 너무 많은 동기화 블록을 사용할 경우에 데드락이 걸리거나 성능저하 등등 문제를 일으킬 수 있는 소지들이 몇 가지 있다. 특히 동기화 영역안에서 수행되는 작업의 양을 가능한 줄여야 한다. 자바에서는 동기화에 대한 비용처리가 그나마 잘되어있지만 잘 사용해야 하는 이유는 잘못된 동기화 사용은 각 쓰레드들의 메인 메모리 접근에 대한 지연시간을 늘릴 수 있기 때문에 비용이 증가할 수 있다. 또한 클래스 내에서 동기화를 수행하는 것이 외부에서 객체 호출 시 사용하는것 보다 높은 병행성을 달성 할 수 있을 때문 진행해야한다. 다시말하자면 필요할 때 해당 메서드등을 호출하여 동기화를 실행해야지 해당 메서드 자체를 동기화 하는것은 좋지 않다. 예를 들면 기존에는 StringBuffer를 사용하여 내부적으로 ..

    피터 코드의 상속 규칙

    상속의 오용을 막기위해 상속의 사용을 엄격하게 제한한다. 하위에 존재하는 규칙중 하나라도 만족하지 못한다면 상속을 하지 않아야한다. 1. 자식 클래스와 부모 클래스 사이의 '역할 수행' 관계가 아니어야 한다. -> 요리사는 사람이라는 범주를 상속해서는 안된다. -> 요리사라는 것은 사람이라는 속성의 하나이다. 2. 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 없어야 한다. -> 엄마라는 객체는 누군가의 딸이라는 객체가 될 수 있다. -> 이런 속성 변경이 잦을 경우에는 객체의 변환 작업이 필요해서 해서는 안된다. 3. 자식클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다. 4. 자식클래스가 단진 부모클래스의 일부 클래스의 기능을 재사용하기 위한 역할로 클래..

    javascript 기타 팁

    javascript tip 에 대한 좋은 글이 있어서 정리해 보았다. https://m.blog.naver.com/tmondev/221070133735 1. css selector 우선순위 -> css Selector의 적용 우선순위가 있다. 해당 블로그에서 제공하는 자료에 보면 적용 우선순위는 다음과 같다. !important > id > class > tag 2. window.onload와 $(document).ready() 선언 차이 1) cs

    Javascript 성능 저하에 조심 할 부분

    Javascript 성능을 저하시키는 부분에 대한 좋은 글이 있어서 공부해보고 정리해 보았다. => 원본 https://m.blog.naver.com/tmondev/221070295102 1. 전역 변수 및 Element를 캐싱 => 자바스크립트의 전역 변수는 스코프 체인의 마지막에 오게 되므로, 전역 변수 내의 태그 탐색 등의 일을 하게되기 때문에 n*2의 비용이 발생 => 어떤 값을 찾을 때까지 스코프 체인 끝까지 뒤지기 때문에 성능에 문제가 발생할 수 있다는 뜻으로 해석됨. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556/* 사례 1. document라는 java..

반응형