전체 글
-
[Java] java.util.function 패키지란?Java 2022. 1. 22. 00:01
java.util.fuction 패키지란? JDK8부터 지원하며 자주 사용되는 함수형 인터페이스를 제공합니다. 함수형 인터페이스란? 1개의 추상 메서드를 갖고 있는 인터페이스로 익명 클래스나 람다식을 통해 사용할 수 있습니다. https://junuuu.tistory.com/65 java.util.function 패키지가 제공하는 인터페이스에 대해 알아보겠습니다. 가장 기본이 되는 함수 인터페이스 표만 보아서는 이해가 잘 안 될 수도 있습니다. T, R 등 제네릭스도 포함되어 있기 때문에 살짝 거부감도 들었습니다. Predicate 함수형 인터페이스를 예시를 통해 어떻게 사용되는지 살펴보겠습니다 Predicate isEmptyStr = s -> s.length() == 0; String str = "";..
-
클린 코드 - 주석클린 코드(Clean Code) 2022. 1. 21. 00:01
주석이란 무엇일까? 주석 또는 코멘트는 프로그래밍에 있어 소스 코드를 더 쉽게 이해할 수 있게 만드는 것이 주목적으로 내용을 메모하는 것입니다. 하지만 부정확한 주석은 아예 없는 주석보다 훨씬 나쁘게 작용하며 일반적으로 주석을 추가하는 경우는 우리의 코드로 의도를 표현하지 못해 실패를 만회하기 위해 주석을 사용합니다. 1. 주석은 거짓말을 많이 한다. 프로그래머들이 코드를 변화시키고 진화시키는 과정들 사이에서 주석이 언제나 같이 변화하고 진행하는 것이 아니라 코드에서 점점 분리되는 사례가 너무 흔하게 발생합니다. 2. 주석보다는 코드를 먼저 정리해보자 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문입니다. 지저분한 모듈에 주석을 달기보다는 가독성이 높은 코드로 만드는 것이 좋습니다. 3. 의미 ..
-
[Java] 래퍼 클래스(Wrapper Class)란?Java 2022. 1. 20. 00:01
Optional에 대해 알아보고자 했을 때 래퍼 클래스라는 개념이 나와 알아보게 되었습니다. 래퍼 클래스(Wrapper Class)란? 간단하게 본론부터 말하자면 래퍼 클래스란 기본 타입을 객체화 클래스화 하여 클래스의 장점을 갖게 합니다. Wrapper는 번역해보면 포장지, 싸개 등의 의미를 가집니다. 의미 해석함으로써 통해 포장을하는 클래스? 어떤 것을 감싸는 클래스?라고 추측할 수 있습니다. 기본 타입이란? 자바의 자료형은 기본 타입과 참조 타입으로 나누어 집니다. 기본 타입 : byte, short, char, int, long, float, double, boolean 참조 타입 : class, interface,... 여기까지 이해하셨다면 래퍼 클래스는 int, float, double, bo..
-
[백준]16236번 : 아기 상어 - 자바(JAVA)알고리즘/백준 2022. 1. 19. 00:01
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 문제 해석 N x N 크기의 공간에 물고리 M마리와 아기 상어 1마리가 있다.(N x N 크기이므로 2차원 배열 사용 추측) 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 자연수의 크기를 가지고 있다. 처음 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동할 수 있다. (반복문을 돌면서 time 1씩 증가) 아기 상어는 자신보다 크기가 ..
-
클린 코드 - 함수 (+ 추상화 수준이란?)클린 코드(Clean Code) 2022. 1. 18. 00:01
1. 작게 만들어라 함수를 만드는 첫 번째 규칙은 '작게!'이며, 두 번째 규칙은 '더 작게!'입니다. if문, while문으로 인한 들여쓰기 수준이 작을수록, 함수가 작을수록 이해하기 쉽습니다. 2. 한가지 일만 해야 한다. 한 가지 일만 하는척하면서 몰래 부수적인 효과를 일으키면 안 됩니다. 예를 들어 사용자의 정보를 검증하는 UserValidator함수에서 ID와 Password를 검사하는 기능을 수행하고 있습니다. 이때 함수에서 Session을 초기화하는 기능을 수행해버린다면 부수 효과가 숨겨져 있기 때문에 큰 혼란을 야기할 수 있습니다. 명령과 조회를 분리해야 합니다. public boolean set(String attribute, String value); 위의 함수는 이름이 attribut..
-
[Java]람다식(Lambda expression)이란?Java 2022. 1. 17. 00:01
우선 자바에는 큰 변화가 두 번 있었는데 처음은 이전 시간에 다루었던 JDK1.5부터 추가된 제네릭스의 등장이며 또 한 번은 JDK1.8부터 추가된 람다식(Lambda expression)의 등장입니다. 자바는 객체지향 언어입니다. 하지만 람다식을 활용한다면 기존의 자바를 거의 변경하지 않고 함수형 언어의 기능까지 갖추게 해 줍니다. 람다식(Lambda expression)이란? 람다식(Lambda expression)은 메서드를 하나의 '식(expression)'으로 표현한 것입니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환 값이 없어지므로, 람다식을 '익명 함수'라고도 합니다. '식(expression)'을 사용하여 하나의 메서드 인터페이스를 나타내는 명확하고 간결한 방법을 제공합니다. 람다..
-
RDBMS와 NoSQL 정리(+ 차이점, 언제 무엇을 사용해야 할까)CS/데이터베이스 2022. 1. 16. 00:01
RDBMS란? RDBMS란(Relational DataBase Management System)의 약자로 관계형 데이터베이스를 수정하고 관리할 수 있는 소프트웨어입니다. 관계형 데이터베이스란 무엇일까요? 데이터를 열(Column)과 행(row)으로 구성하여 하나 이상의 테이블로 정리하며 고유 키(Primary key)가 각 행(row)을 식별합니다. 또한 이러한 테이블끼리 서로 연관되어 있어 효율적으로 데이터를 저장, 구성 및 관리할 수 있습니다. 또한 사용자가 관계형 데이터 베이스를 사용하기 위해 표준 검색 언어인 SQL을 사용하여 데이터를 조회, 수정 등을 할 수 있습니다. MSSQL, MySQL, Oracle이 RDBMS의 몇 가지 예시입니다. 위의 그림은 관계형 데이터베이스의 학생 릴레이션의 예시..
-
클린 코드 - 의미 있는 이름클린 코드(Clean Code) 2022. 1. 15. 00:01
소프트웨어에서 이름은 어디에서나 쓰입니다. 변수와 함수, 인수와 클래스 패키지 나아가 소스코드까지 여러 가지 도처에 사용됩니다. "의도를 분명하게 이름을 지어라" 라고 말하는 건 쉽습니다. 의미 있고 좋은 이름을 짓기 위해서는 어떻게 해야할까요? 존재 이유, 수행 기능, 사용 방법에 대한 질문에 답할 수 있어야 합니다. 1. 그릇된 정보를 피하라 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하면 안 됩니다. 여러 계정을 그룹으로 묶을 때 실제 List가 아니라면 accountList라고 명명하면 안 됩니다. 프로그래머에게 List라는 단어는 특수한 의미이며 실제 자료구조가 List가 아니라면 그릇된 정보를 제공합니다. 또한 특정 문화에서만 사용하는 언어보다는 모두가 아는 단어를 사용하는 게 ..