Java
자바 [JAVA] - Comparable 과 Comparator의 이해
자바 [JAVA] - Comparable 과 Comparator의 이해
2021.04.29아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객체, 클래스, 인터페이스 등을 배우면서 같이 학습하다보니 혼란스럽게 느껴지기도 하고, 도대체 무엇이 다른지에 대한 이해를 하기가 어렵기도하다. 안그래도 필자의 경우 자료구조와 백준 문제를 풀이하며 포스팅을 하고 있는데, 자료구조의 경우 Heap(PriorityQueue), 백준에서는 정렬문제에서 많이 받은 질문 중 하나여서 이 참에 한 번 정리하고 가는 것이 여러분이 필자가 올리는 글을 이해하는데 더욱 수월할 것 같아 포스팅을 해보고자 한다. 일단 글은 다음과 같은 순서로 진행 할 것이다. 먼저 Co..
자바 [JAVA] - 제네릭(Generic)의 이해
자바 [JAVA] - 제네릭(Generic)의 이해
2020.10.19정적언어(C, C++, C#, Java)을 다뤄보신 분이라면 제네릭(Generic)에 대해 잘 알지는 못하더라도 한 번쯤은 들어봤을 것이다. 특히 자료구조 같이 구조체를 직접 만들어 사용할 때 많이 쓰이기도 하고 매우 유용하기도 하다. 잠깐 그럼 제네릭(Generic)이란 무엇인지에 대해 알고 가보도록 하자. 제네릭(Generic)은 직역하자면 '일반적인'이라는 뜻이다. 음.. 한 번에 이해가 가진 않는다. 조금 더 부연설명을 하자면 '데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법'이다. 우리가 흔히 쓰는 ArrayList, LinkedList 등을 생성할 때 어떻게 쓰는가? 객체 객체명 = new 객체(); 이렇게 쓰지 않는가? 즉, 아래와 같이 여러 ..
패스워드의 암호화와 저장 - Hash(해시)와 Salt(솔트)
패스워드의 암호화와 저장 - Hash(해시)와 Salt(솔트)
2020.05.23[읽기 전에] 더보기 이 번 주제 같은 경우 어디까지나 비밀번호를 어떠한 원리로 저장하게 되는지 그 과정을 살펴보기 위한 글이다. 읽다보면 구현 소스코드들이 나올텐데 실제로는 이후 나오는 코드처럼 구현하지는 않는다. 각 프레임워크, 언어별 혹은 내규에 의해 웹서버 혹은 앱을 구현 할 때 일반적인 구현 방침이 있다. 이는 이후 여러분들이 개발을 해나가면서 자연스레 접하게 될 것이다. 또한 이 포스팅의 목적은 언어만 알거나 패스워드 저장 원리에 대해 호기심이 있는 분들을 대상으로 하기 때문에 내용이 실제 개발함에 있어 쓰이는 것과는 차이가 많이 날 것이다. 그렇다고 너무 깊게 들어가게 되면 포스팅의 목적과도 다르므로 이 점 참고하시기를 바란다.. 어디까지나 과정을 이해하기 위해 구현 된 아주아주 간소화 된 ..
자바 [JAVA] - 스캐너(Scanner) 클래스와 입력
자바 [JAVA] - 스캐너(Scanner) 클래스와 입력
2020.05.07자바를 처음 배울 때 아마 대부분은 키보드로 입력받기 위해 Scanner 라는 클래스를 썼을 것이다. 자바 외에도 다양한 언어들은 각각의 입력방식이 있고, 각 언어별로 대표하는 대중적인 입력방식이 하나씩 있다. 예로 들면 C언어의 경우 scanf() 가 있을 것이고 파이썬의 경우 input(), C++ 은 cin, C# 은 Console.readLine() 등이 있다. 자바에서도 여러가지 입력방법이 입력방법이 있는데, 그중 가장 쉬우면서도 대중적인 입력 중 대표적인 것이 바로 Scanner 클래스를 이용한 입력이다. 이번 포스팅에서는 Scanner 의 사용 방법에 대해 자세하게 알아보자. Scanner 클래스의 특징 기본적인 데이터 타입들을 Scanner 의 메소드를 사용하여 입력받을 수 있다. 예로 들..
JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]
JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]
2020.02.24이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고 싶은 분들도 있겠다 싶어 작성해보자 마음먹고 쓰기로 했다. (사실 고민하다간 똥 된단 소리를 워낙 많이 들어와서..) 그래서 입력에 대한 구조를 살펴보면서 자바에 대한 지식을 하나 더 추가해보자. 그리고 이 글을 보기 전에 여러분들이 기본적으로 알고 가야할 것이 있다. 바로 JAVA 의 인코딩에 대한 것이다. Java는 String 을 처리할 때 내부(메모리 상에서)에서는 UTF-16 BE 인코딩으로 문자열을 저장하고, 송수신에서는 직렬화가 필요한 경우 변형된 UTF-8 (modified UTF-8) 을 사용하며 ..