캔버스 요소 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..
Set 구현체 HashSetSet인터페이스를 구현한 가장 대표적인 컬렉션으로, Set의 특징대로 중복된 요소를 저장하지 않는다.HashSet의 특징을 이용하면, 컬렉션 내의 중복된 요소들을 쉽게 제거할 수 있다.(이미지 출처) ArrayList와 같이 List 인터페이스를 구현한 컬렉션과 달리 HashSet은 저장순서를 유지하지 않으므로 저장순서를 유지하고자 하면 LinkedHashSet을 사용해야 한다.123456789101112131415161718192021public class HashSetTest { public static void main(String[] args){ Integer[] intArr = {4, 4, 5, 6, 1, 1, 1, 2, 2, 3, 3, 7, 8,}; // HashSe..
Base64 인코딩Base64 인코딩은 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식이다. (64개의 문자를 이용하여 바이너리 데이터를 아스키 텍스트 데이터로 표현하기 위해 사용)(이미지 출처)8bit의 데이터를 6bit의 크기로 표현하기 때문에24bit 단위로 하여 3개의 문자에서 4개의 문자를 얻게 된다.위의 예를 보면 이해하기 쉬운데, abc의 문자열을 base64인코딩을하면 YWJj의 문자열을 얻을 수 있다.=> 8bit를 6bit로 쪼개서 Base64색인표를 참고하여 문자열을 보여준다. 만약에 인코딩할 문자가 24bit단위가 아닌 경우에는, '='이라는 문자를 사용한다.'='는 bit 수를 맞추기 위한 특수한 문자이며, bit수를 맞춰주기 위해 0으로 채워지는 패딩을 ..
대화May I help you?* 무엇을 도와드릴까요?I'm looking for The lliad* 일리아스라는 책을 찾고 있어요. 문장Can you check this book for me? * 이 책이 있는지 확인해 주세요.Just a minute. It's in the reading room on the second floor* 잠시만요. 그 책은 2층 열람실에 있어요Who is the author?* 저자의 이름을 말씀해 주세요.Can you tell me where the non-fiction section is?* 비소설은 어느 코너에 있어요?Where is the librarian?* 사서는 어디에 있어요?I'm sorry. They're all out* 죄송해요. 현재 대출 가능한 책이 ..
블록 암호 운용 방식(block cipher modes of operation)암호학에서 블록 암호 운용 방식은 하나의 키에서 블록 암호를 반복적으로 안전하게 이용하게하는 절차를 말한다. 블록암호는 특정한 길이의 블록 단위로 동작하기 때문에, 가변 길이 데이터를 암호화하기 위해서는 먼저 이들을 단위 블록들로 나누어야 하며, 그 블록들을 어떻게 암호화할지 정해야 하는데, 이때 블록들의 암호화 방식을 운용 방식이라 부른다. 초기화 벡터IV(Initialization vector)첫 블록을 암호화할 때 사용되는 값(1단계 앞의 암호문 블록이 존재하지 않으므로 대신하는 비트 블록을 의미) => CBC모드에서 사용암호화 때마다 다른 랜덤 비트열을 이용하는 것이 보통 패딩(padding)마지막 블록이 블록의 길이와..
스트림 암호(Stream Cipher)스트림 암호는 대칭키 암호의 구조 중 하나로, 유사난수를 연속적(스트림)으로 생성하여 암호화하려는 자료와 결합하는 구조를 가진다.일반적으로 스트림 암호는 유사난수를 1비트 단위로 생성하고, 생성된 값과 암호화하려는 각 값을 XOR 하여 1비트의 암호화된 자료를 얻는다.하드웨어 구현이 간편하며 속도가 빠르기 때문에 무선통신의 환경에서 주로 사용된다.대표적인 알고리즘으로는 RC4가 있다.※ 유사난수 : 난수를 흉내내기 위해 알고리즘으로 생성되는 값을 가리킨다. 이때 유사난수를 생성하는 알고리즘을 유사난수 생성기(PRNG)로 부른다. 종류난수열을 암호화할 입력값과 독립적으로 생성하는 경우를 동기식(synchronous)스트림 암호입력값이 난수열 생성에 영향을 끼치는 경우 ..
암호화 알고리즘 종류 암호화에서 사용하는 표현 평문(PlainText) - 암호화 하기전의 메시지 암호문(CipherText) - 암호화된 메시지(해독 불가능) 암호화(Encryption) - 평문을 암호문으로 변환하는 과정 복호화(Decryption) - 암호문을 평문으로 변환하는 과정 암호화는 다음과 같이 분류할 수 있다. 대칭키 암호화 방식[Symmetric Encryption] - 암호화할 때 사용한 키와 복호화할 때 사용한 키가 같은 암호 방식 - 가장 보편적으로 사용하는 알고리즘은 AES 알고리즘이며, 128 ~ 256bit의 키를 사용한다. - 전에는 DES알고리즘을 사용하였으나 취약점이 발견되어 AES암호화 방식을 사용한다. 비대칭키 암호화 방식[Asymmetric Encryption] -..