본문 바로가기

컴퓨터/프로그래밍 언어

(7)
단방향 알고리즘(SHA256) 그리고 양방향 알고리즘(AES256) 단방향 해시 알고리즘(SHA256)특징주어진 입력에 대해서 고정길이(256Bit)의 해시값을 출력주어진 입력에 대해서 고정길이(256Bit)의 해시값을 출력SHA256으로 암호화된 해시 값은 복호화 할수없으며 원본 데이터를 알 수 없습니다해시값 생성속도는 매우 빠른편이며, 작은 데이터에 대해서 효율적이게 처리사용처평문 데이터를 안전하게 저장할때 사용하며, 대표적으로 사용자의 비밀번호를 저장할때 주로 사용됩니다파일이나 데이터가 변경되지 않았는지 확인할때 사용 (ex. 다운로드 한 파일의 해시값과 서버에서 제공한 해시값 비교)  Java에서는 MessageDigest 클래스를 이용해서 SHA-256 암호화 방식을 지원합니다 public class SHA256Example { public static v..
프로그래밍 패러다임(Programming Paradigm) 개발자들은 항상 고민한다 ' 어떻게 하면 좀더 좋은 프로그래밍을 할수있을까? '여기에서 부터 시작된 프로그래밍 패러다임은 프로그래밍을 하나의 관점과 방식으로 꾸려나가는것을 프로그래밍 패러다임 이라고 합니다 사실 우리는 알게모르게 프로그래밍 패러다임을 접목시켜서 개발하고있습니다바로 절차지향 프로그래밍과 객체지향 프로그래밍이 두가지 패러다임을 가장 흔하게 사용할것입니다우리는 여기에 함수형 프로그래밍을 추가시켜 3가지의 프로그래밍 패러다임의 특징을 보고 장단점을 확인하며, 우리가 소프트웨어 개발에있어서 어떤 패러다임을 적용시킬지, 아니면 내가 좀더 편하게 잘할수있는 방법을 알아갔으면 좋겠습니다 여러 관점의 프로그래밍을 보기전에 우리는 크게 2개의 프로그래밍을 알아볼것인데 첫번째로 명령형 패러다임, 그뒤에 선언..
함수형 인터페이스와 람다식, 스트림 우리가 이전에는 선언형 프로그래밍과 명령형 프로그래밍에 대해서 알아보았는데각각 해당 프로그래밍 기법에는 뭐가있고, 장단점, 특징 같은것을 대충 훑어보았다이번에는 선언형 프로그래밍에서 자주쓰이는 람다식과 스트림 그리고 함수형인터페이스에 대해서 알아볼것인데 먼저 장단점을 서술하고 해당 특징들에 대해서 이해하면서 배워보도록 하자 해당 게시물에서는 람다식이나, 함수형 인터페이스에 대해서 깊게 다루지는않고 어떤의미인지에 대해서만 알아보도록 할것이다      람다식(Lambda Expression), 스트림(Stream) 과 함수형 프로그래밍먼저 결론적으로 말해서 람다식이 등장하게 된 이유는 불필요한 코드를 줄이면서, 가독성을 높이기위해서 나왔다고 생각하면 될것이다 람다식으로 표현하게되면 메소드의 이름이 따로 없기..
자바의 제네릭스(Generics) 장단점 과 특징 메서드, 클래스, 인터페이스 등 여러가지 타입들이 담길수있는곳에 컴파일 시 타입체크를 해주는 기능이 제네릭스(Generics)라고 부른다 주로 List, Set, Map 컬렉션에서 흔하게 볼수있으며 제네릭스를 사용시 얻을수있는 장점과 단점 그리고 특징에 대해서 알아보도록 하자   제네릭스(Generics)의 특징 List list = new ArrayList();Map map = new HashMap();  제네릭스는 안에 타입을 명시함으로써 해당타입이외에 다른 타입이 들어오지 못하게 컴파일 시점에 타입체크를 한다즉 list 안에는 String 타입만 들어올수있으며, Map에는 String과 Integer타입이 들어올수있다. 물론 만들어진 객체를 넣는것도 가능하다 클래스 및 인터페이스는 제네릭스를 사용..
System.out.println 보단 Log를 사용해야하는 이유 프로그래밍 입문자들이라면 Hello World!라는 문자를 System.out.println으로 찍어본경험 다들한번씩 있을것이다.또한 개인 프로젝트나 팀 프로젝트를 처음 만드는 사람들은 데이터의 흐름을 파악하기위해 println을 통해서 문자를 찍고제대로 값이 출력되나 확인하는 사람들이 많은텐데 어디선가 표준출력대신에 로깅을 하는것이 더 좋다고 들었던것같다하지만 간편하게 println으로 그냥 출력하고 확인하면 되는데 굳이 왜 로깅을 하라고하는것일까? SLF4J나 Logback같은 로깅 프레임워크를 통해서 왜 로깅하는게 더좋은 차근차근 알아보자그리고 그 과정을통해서 println의 한계점(단점)과 로깅에 장점에 대해서 비교해보록 하겠다      System.out.println()의 특징첫번째 특징으로는..
기본형 변수와 참조형 변수 기본형 변수(원시형 변수)에 대해서 우선 JAVA에서 쓰이는 기본형 변수타입은 8가지가 존재한다아마 우리가 자주써봤고 익숙하게 와닿을만한 변수들인데 boolean, char, byte, short, int, long, float, double 이렇게 8가지의 기본형 타입들이 존재한다이 8가지를 제외한 모든 변수는 참조형이라고 보면 된다 위에 8가지를 좀더 정리해보자면  논리형  boolean 문자형  char 정수형  byte, short, int, long 실수형 float, double   논리형은 true(참), false(거짓)을 저장할수있는데 1과 2를 비교하는 문법이있을때 저장타입은 논리형으로 주게되면1 == 2 일경우 false를 반환하고 1 != 2 일경우에는 true 반환하는..
객체지향 5원칙(SOLID)은 무엇일까? 객체지향 5원칙(SOLID)은 무엇일까? 우리가 객체지향 프로그래밍을 할때 알아두면 좋은 5가지 원칙에 대해서 알아보겠다우선 이글을 보기전에 기본적인 프로그래밍 문법에 대해서 알고있어야 이해하기 편하니 이점 주의해주길 란다 첫번째로 S는 SRP(Single Responsibility Priciple) 단일 책임 원칙으로써,이게 무슨말이냐면 하나의 클래스는 하나의 기능만 담당해야 한다는 의미를 말한다하나의 기능.. 어디서부터 어디까지 하나의 기능이라고 정의하기 애매한 말인데 이걸쫌 다르게말해보면 만약 어떤 기능을 손봐야할 이유가 생기면 해당하는 클래스는 그 기능에대한 책임만 가진다는 의미로 받아들이면 될꺼같다 예를들어 하나의 클래스가 A와 B라는 책임을 가진다고 가정해본다면만약 사용자의 피드백에 따라서 A..