전체 글

초보 개발자의 지식 공유의 장
JavaScript DOM APISelectorsAPI라는 새로운 사양이 구현되면서, CSS 선택자를 이용하여 DOM을 조작할 수 있게 되었다.SelectorAPI는 getElementByTageName 과 getElementById와 같은 DOM의 객체를 취득하는 메소드이다. SelectorAPIquerySelector와 querySelectAll에 CSS셀렉터를 넘겨준다.12345678910111213141516171819202122232425 Document Selector API test class test Id var div1 = document.getElementsByTagName('div'); var div2 = document.querySelectorAll('div'); console.lo..
예외처리 방법1. 예외 복구 => 정상 상태로 돌려 놓는 것. 예외로 인해 기본 작업 흐름이 불가능하다면 다른 작업 흐름으로 자연스럽게 유도해주는 것ex) SQLException (네트워크가 불안해서 발생하는 문제라면)123456789101112int maxRetry = MAX_RETRY;while(maxEntry --> 0){ try{ .. return; // 작업 성공 }catch(SomeException e){ // 로그 출력 및 정해진 시간만큼 대기 }finally{ // 리소스 반납 }}throw new RetryFailedException(); // 최대 횟수를 넘기면 직접 예외 발생cs 2. 예외처리 회피예외처리를 담당하지 않고, 호출한 쪽으로 예외를 던져버리는 것.하지만 무책임한 회피는 금..
예외처리블랙홀 예외처리=> catch블록을 이용해 화면에 메시지를 출력한 것은 예외를 처리한 것이 아니다.예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 한가지다.모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 한다.123456try{ // .. 로직}catch(SQLException e){ e.printStackTrace(); System.exit(1);}cs(그나마 나은 예외처리.. 시스템 종료) 무의미하고 무책임한 throws=> 기계적으로 throws를 던진다면, 결과적으로 적절한 처리를 통해 복구될 수 있는 예외상황도 제대로 다룰 수 있는 기회를 박탈 당한다. 예외의 종류와 특징예외처리에서 가장큰 이슈는 checked Exception(명시적 처..
clearRect()메소드를 이용한 Canvas 화면 지우기Canvas의 Context에는 clearRect()의 메소드가 존재한다.이 메소드는 사각형 영역을 지우는 메소드 인데, 4개의 파라미터를 필요로 한다. => clearRect(x, y, w, h)캔버스안에서 특정 영역을 지울 때 사용하는데, x = 0, y = 0, w = width, h = height로 설정하면 캔버스의 전체영역을 지울 수 있게 된다.12var canvas = document.getElementById("canvas");canvas.getContext("2d").clearRect(0, 0, canvas.width, canvas.height);cs
Map의 Value데이터 기준으로 정렬하기 TreeSet을 이용하면 Key 기준으로 쉽게 정렬할 수 있으나, Value로 정렬해주는 컬렉션은 존재하지 않는다. Value로 map을 정렬을 하려면 Comparator 인터페이스를 이용해야 한다. 밑에 예제는 Value를 기준으로 내림차순으로 정렬을 하고, Value가 같다면 Key를 기준으로 오름차순으로 정렬하는 예제이다. package sort; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; im..
데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질(ACID)Atomicity(원자성)모두 실행되던지 모두 실행되지 않도록 하던지 보장하는 특성트랜잭션과 관련된 작업들이 부분적으로 실행되더가 중단되지 않는 것을 보장하는 능력 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 헎는 작업을 실패해서는 안됨. 원자성은 이와 같이 중간 단계까지 실해오디고 실패하는 일이 없도록 하는 것 Consistency(일관성)트랜잭션이 성공했다면, 데이터베이스는 그 일관성을 유지해야 한다.트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태를 유지하는 것을 의미 Isolation(독립성)트랜잭션 수행 중에 다른 연산작업이 끼어들지 ..
캔버스 요소 HTML의 는 웹페이지에서 그래픽적인 것을 그릴 때 사용된다. src 및 alt 속성이 없다는 점만 제외하면 요소와 비슷하게 보인다. 요소에는 width와 height 두 속성만 존재한다. 요소와 달리, 요소는 닫는 태그 가 필요하다. 렌더링 컨텍스트 요소는 고정된 크기의 드로잉 영역을 생성하며, 그 영역은 보여질 컨텐츠를 생성하고 다루게될 두가지 이상의 렌더링 컨텍스트를 노출시킨다.(2D, 3D) 캔버스는 처음에 비어있으며, 무언가를 표시하기위해서는 어떤 스크립트가 랜더링 컨텍스트에 접근하여 그리도록해야 한다. 요소는 getContext() 메서드를 호출해서, 랜더링 컨텍스트와 그리기 함수들을 사용할 수 있다. var canvas = document.getElementById("test")..
Map 구현체 TreeMap이진검색트리의 형태로 키(Key)와 값(Value)의 쌍으로 이루어진 데이터를 저장한다. 검색과 정렬에 적합한 컬렉션 클래스이다.HashMap이 TreeMap보다 검색에 관한부분은 성능이 더 뛰어나므로 HashMap을 사용하는 것이 좋고,범위검색이나 정렬이 필요한 경우에는 TreeMap이 더 유리하니 TreeMap을 사용하면된다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667public class TreeMapTest { public static void main(String[] args){ Strin..
Map 구현체 HashMapHashtable과 HashMap은 Vector와 ArrayList와 같은 관계이다. (새로운 버전인 HashMap을 사용할 것을 권장하고 있다.)Map의 특징, 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다는 특징을 갖고있다.그리고 해싱(hashing)을 사용하기 때문에 데이터검색에 뛰어난 성능을 보인다. 12345678public class HashMap extends AbstractMap implements Map, Cloneable, Serializable{ transient Entry[] table; static class Entry implements Map.Entry{ final Object key; Object value; }}Col..
Set 구현체 TreeSetTreeSet은 이진검색트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진검색트리는 정렬, 검색, 범위검색(range search)에 뛰어난 성능을 보이는 자료구조이며, '레드-블랙 트리'로 구현되어 있다.(이미지 출처) 이진 트리(binary tree)는 링크드리스트처럼 여러 개의 노드가 서로 연결된 구조로, 각 노드에 최대 2개의 노드를 연결할 수 있으며 '루트(root)'라고 불리는 하나의 노드에서부터 시작해서 계속 확장해 나간다.이진트리의 노드를 코드로 표현하면 다음과 같다.12345Class TreeNode{ TreeNode lfet; // 왼쪽 자식노드 Object element; // 객체를 저장하기 위한 Tre..
깡냉쓰
평범한 개발자 노트