프로그래밍 공부/Java

    [JAVA] JVM이란?

    1. JVM이란? JVM이란 JAVA Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다 (가상머신은 프로그램 실행을 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것.) 자바 애플리케이션은 클래스 로더를 통해 읽어들여 자바 API와 함께 실행한다. 자바 바이트 코드를 실행할 수 있는 주체다. Bytecode는 클래스 단위(.class)로 생성되므로, 프로그램의 수정이 일어나더라도 전체 소스코드를 다시 컴파일할 필요가 없다. Java가 OS에 구애받지 않고 재사용 가능하게 해준다. (중개자의 역할) 메모리 관리, Garbage Collection을 수행한다. 스택 기반의 가상 머신 2. 왜 자바 가상머신을 알아야 하는가? 한정된 메모리를 효율적으로 사용하여 최고의 성..

    [Java] Stream API

    1. Stream API란 스트림이란 자바 8 API에 새롭게 추가된 기능이다. JDK8부터 Stream API와 람다식, 함수형 인터페이스 등을 지원하면서 Java를 이용해 함수형으로 프로그래밍할 수 있는 API 들을 제공해주고 있다. 그 중에서 Stream API는 데이터를 추상화하고, 처리하는데 자주 사용되는 함수들을 정의해두었다. 여기서 데이터를 추상화하였다는 것은 데이터의 종류에 상관 없이 같은 방식으로 데이터를 처리할 수 있다는 것을 의미하며, 그에 따라 재사용성을 높일 수 있다. 이번 로또 과제를 하면서 개인적으로 Stream API의 사용에 대해서 리뷰어분께 질문을 해봤고,대체러 Stream을 사용한다는 이야기를 들을 수 있어, 한번 정리하면서 공부를 진행해보려고 한다. 위의 예제에서 나와..

    [OOP] 객체지향 프로그래밍

    1. OOP란? OOP란 객체지향 프로그래밍 (Object Oriented Programming)의 약자로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 취급하여 프로그램에 반영하고, 순차적으로 프로그램이 동작하는 것과는 다르게 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다. 객체를 연결시켜 프로그래밍하면 상속, 캡슐화, 다형성을 이용해 코드 재사용을 증가시키고, 높은 유지보수성과 더불어 객체들끼리 서로 메시지를 주고받으며 동작할 수 있게 된다. 2. OOP의 장단점 2.1 장점 코드 재사용이 용이 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다. 쉬운 유지보수 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면..

    [Regex] 정규식이란?

    1. Regex, 왜 필요하지? 프리코스 3주차에서도 Regex와 관련된 포스팅을 한 적이 있는데, (그때는 배웠던 내용중의 일부로 넣었었다.) 이번에도 피드백을 받는 과정에서 정규식과 관련된 이야기들이 나와서, 정규식을 조금 더 정리해보려고 한다 정규식에서 입력받는 부분등에 있어 늘 if문으로 처리하면 조건이 까다롭고, 엄청나게 많은 if문이 필요하게 된다. 이런 상황에서 효과적으로 사용할 수 있는 것이 바로 regex, 즉 정규표현식이다. 2. Regex란? 정규 표현식은 줄여서 정규식이라고도 하며, 영어로는 Regular Expression, 줄여서 regex, regexp라고도 한다. 초반에는 편집기의 패턴매칭을 시작으로 사용되었으며, 수학적인 의미에서 시작되었다고 하며, 특정한 규칙을 가진 문자..

    [JUnit5] 테스트 기초 알아보기

    우테코를 하며... 처음으로 말로만 들어보던 "TDD" 를 시작했다. 프리코스에서도 최대한 적용해보려고 했으나... 못했던 부분이기에 최대한 서치와 공부를 하며 기초적인 부분을 쌓았던 부분을 정리하고자 한다. 아직 앞으로 공부할게 잔뜩이다. 화이팅!!!! 1. JUnit5 5란? 테스트를 위한 프레임워크로, Java 8 이상의 버전에서 적용된다. JUnit5의 세부 모듈은 Jupiter, Vintage, JUnit Platform 으로 구성되어있다. JUnit Platform JVM에서 테스트 프레임워크를 실행하는데 기초를 제공한다. TestEngine API를 제공해 테스트 프레임워크를 개발할 수 있다. Jupiter & Vintage Jupiter와 Vintage는 JUnit Platform이 제공하..