본문 바로가기

java

(9)
[자료구조] HashTable Source import java.util.LinkedList; public class HashTable { //링크드리스트를 저장하는 배열 private LinkedList[] data; // 데이터를 key, value로 저장하는 Node class Node { String key; String value; public Node(String key, String value) { this.key = key; this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } //hashtable의 크기를 미리 선언해둔다 public HashTable(int s..
[JAVA] SHA-256 암호화 하기 1. SHA-256란? SHA-256은 SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256비트로 구성되며 64자리 문자열을 반환합니다. 해시 알고리즘 SHA-2 계열 중 하나이며, 2^256만큼 경우의 수를 만들 수 있습니다. SHA-256 해시 함수는 어떤 길이의 값을 입력하더라도 256비트의 고정된 결과값을 반환합니다. 입력 값이 조금만 변동되더라도 반환값이 완전히 달라지기 때문에 반환값을 토대로 입력값을 유추하는 것이 거의 불가능하다고 합니다. SHA-256은 단방향 암호화 방식이기 때문에 복호화가 불가능합니다. 복호화를 하지 않아도 되기 때문에 속도가 빠르며, 사용 예로 비밀번호의 일치여부 확인이 있습니다. 여기서 단방향 암호화란 평문을 암호화 했을 때, 원래 평문으로 ..
[Java] 자바 정규식 정리 1. 정규 표현식이란 정규표현식이란 선택한 문자열에 특정 패턴 문자들이 있는지 확인하는 표현식입니다. 정규표현식을 이용해서 두가지 작업을 진행할 수 있습니다. 1) 입력된 문자열이 전화번호, 이메일, IP주소, 주민등록번호 등의 형식과 일치하는지 검증할 수 있습니다. 2) 입력된 문자열의 정해진 형식이 있다면 원하는 값을 추출할 수 있습니다. (ex: json, log, html tag 등..) 이번 포스팅에서는 문자열 검증에 대해서 정리해보겠습니다. 2. 정규 표현식 정리 정규 표현식 설명 ^ 문자열의 시작 $ 문자열의 종료 . 임의의 한 문자 * 앞의 문자가 0개 ~ 여러개 있음 ex) [a-z]* 소문자 알파벳을 0개 ~ 여러개 입력 가능 .* 임의의 문자를 0개 ~ 여러개 입력 가능 + 앞의 문자..
[JAVA] 입출력 스트림 (InputStream, OutputStream)란? 1. Stream 이란 프로그램은 외부에서 데이터를 읽거나 외부로 데이터를 출력하는 작업이 빈번하게 일어납니다. 이때 데이터는 어떠한 통로를 통해서 데이터가 이동되는데, 이 통로를 Stream 이라고 합니다. 자바에는 이러한 기능을 수행하기 위해 InputStream와 OutputStream이 존재하며 단일 방향으로 연속적으로 흘러갑니다. InputStream과 OutputStream은 추상 클래스이며 추상 메소드를 오버라이딩해서 다양한 역할을 수행할 수 있습니다. (예 : 파일, 네트워크, 메모리 입출력) 자바에서 기본적으로 제공하는 I/O 기능은 java.io 패키지에서 제공됩니다. InputStream은 외부에서 데이터를 읽는 역할을 수행하고, OutputStream은 외부로 데이터를 출력하는 역할..
[JAVA] 배열 설명 및 초기화 방법 1. 배열이란 메모리 상에 동일한 타입의 데이터를 연속적으로 나열하여 저장하는 자료구조입니다. 2. 배열의 특징 메모리 상에 특정 길이 만큼 메모리 공간을 선언하면, 변경할 수 없다. 배열은 연속된 메모리 공간을 갖고 있다. 배열은 인덱스를 통해서 데이터에 접근할 수 있다. 3. 배열 선언 및 초기화, 출력 public class Main { public static void main(String[] args) { //배열을 초기화하는 3가지 방법 int[] arr1 = new int[10]; int[] arr2 = {1, 3, 4, 5, 6}; int[] arr3 = new int[]{1, 3, 2, 4, 1, 5, 1}; //특정 인덱스에 데이터 삽입 arr3[0] = 500; //배열을 출력하는 방..
[Java] Windows 10 Open-JDK 8 다운로드 및 환경변수 설정 1. Open JDK 8 다운로드 오라클의 OpenJdk https://jdk.java.net/java-se-ri/8-MR3 OpenJdk https://github.com/ojdkbuild/ojdkbuild 위 경로 중 한개를 선택해서 JDK를 설치합니다. 2. JDK 환경변수 등록 내 PC 우 클릭> 속성 > 고급 시스템 설정 > 환경 변수로 이동합니다. 시스템 변수 새로 만들기 변수 이름 : JAVA_HOME, 변수 값 : 다운로드받은 Open-JDK 경로 입력 후 확인버튼 클릭 ( ex : E:\java\java-1.8.0-openjdk-1.8.0.252-2.b09 ) Path 시스템 변수 편집 새로만들기 > %JAVA_HOME%\bin 입력 > 확인 버튼 클릭 환경 변수창의 확인 버튼을 누른 후..
[Java] 람다(Lambda) 란? 1. 람다 함수(Lambda Function)란? 람다 함수는 함수형 프로그래밍 언어에서 사용되는 개념으로 익명 함수라고도 한다. Java 8 부터 지원되며, 불필요한 코드를 줄이고 가독성을 향상시키는 것을 목적으로 두고있다. 2. 람다 함수의 특징 메소드의 매개변수로 전달될 수 있고, 변수에 저장될 수 있다. 즉, 어떤 전달되는 매개변수에 따라서 행위가 결정될 수 있음을 의미한다. 컴파일러 추론에 의지하고 추론이 가능한 코드는 모두 제거해 코드를 간결하게 한다. 3. 람다식 표현 파라미터와 몸체로 구분된다. 파라미터와 몸체 사이에 -> 구분을 추가하여 람다식을 완성시킨다. 몸체 부분이 단일 행일 경우 중괄호와 return문을 생략할 수 있다. ( 파라미터 ) -> { 몸체 } 4. 익명함수를 람다식으로..
[JAVA] Java 란? 1. Java의 역사 Java는 가전제품 내에서 동작하는 임베디드 프로그램을 위한 언어로 썬 마이크로시스템즈사의 제임스 고슬링 팀에 의해 개발 되었습니다. 1991년에 Oak라는 이름으로 시작하여, 1996년에 발표된 1.0.2 버전부터 Java라는 이름을 사용하게 됩니다. 1998년 발표된 J2SE 1.2에서는 웹에서 Java를 실행시킬 수 있게 해주는 Java 애플릿이 추가되면서 웹의 인기와 함께 Java의 인기도 급상승 하게 됩니다. 다양한 기능이 지원되면서 꾸준한 인기를 누리다가 2009년 썬 마이크로시스템즈사가 오라클과 인수 합병되면서 Java의 소유권은 오라클로 넘어갑니다. 2. Java의 특징 1. JVM을 이용해서 운영체제와 상관없이 독립적으로 실행할 수 있습니다. 즉 운영체제 별로 Jav..