전체 글 188

라이브러리? 프레임워크? what is that?

일반적으로 코딩을 하게 되면 많은 라이브러리와 프레임워크를 접하게 된다. 라이브러리와 프레임워크는 쉽게 보면 누가 만들어 놓은 코드 혹은 기능들을 가져다 쓰는것인데, 뭔가 비슷한 느낌을 가지고 있으면서도 또 서로 다른 이번 기회를 통해 라이브러리가 무엇이고, 프레임워크가 무엇인지 정확하게 짚고 넘어가자. 우선 단도직입적으로 라이브러리와 프레임워크의 차이점을 문장으로 정리하자면 다음과 같다. 'Who is Controlling?' 누가 누구를 컨트롤 하냐의 문제인데, 2가지가 있다. 1. 내가 코드를 컨트롤한다 2. 누군가의 규칙을 따라 코딩을 한다. 라이브러리? 라이브러리의 가장 좋은 예시는 JQuery이다. 제이쿼리는 웹사이트에 동적인 요소를 넣을 수 있는데, 내가 웹 서비스를 만들고 있을 때 코딩을 ..

1. 소프트웨어 설계

참고서적 : 수제비 (2022) 올해는 대학교를 졸업하는 과정에 있다. 휴학을 할 수도 있지만, 왠만하면 올 해 졸업하려고 한다. 졸업을 하기 위해선 다양한 조건이 있는데 그 중 하나가 정보처리기사 자격 취득이다. 오늘 기준으로 6일이 남았기에, 최근에는 다른 개발공부에 집중하지 못하고 기사 자격증에 집중했다. 그래서 개념과 기출문제를 학습한 내용을 바탕으로 노트에 정리 후 암기하면서 블로그에 한번 더 정리해보려고 한다. (정리한 내용은 기출문제 및 과거에 나왔던 문제들을 기반으로 할 것이다.) * 플랫폼 성능 특성 측정 항목 = 경과시간, 사용율, 응답시간, 가용성 * 요구사항 분석 기술 -분석절차-1. 요구사항 분류 2. 개념 모델링 및 생성 및 분석 3. 요구사항 할당 4. 요구사항 협상 5. 정형..

자격증 2022.02.27

스프링 부트의 테스트 코드(부제 : JUnit), 책: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

결국 테스트 코드를 작성하는 이유는, 기능이 잘 동작하는지 확인을 하기 위함이다. 테스트 코드는 내가 작성한 로직이나 기능들을 테스트 코드를 통해 잘 동작하는지 확인해보는 것이다. 테스트 코드 작성 전 개발 방식은 보통 1. 코드의 작성 2. 프로그램 실행 3. 테스트 도구를 통해 HTTP 요청 (Postman) = 브라우저를 통해 서버에 접속하고 테스트 대상 메소드를 동작시키는 요청 4. 요청 결과를 System.out.println()을 통해 눈으로 확인. 5. 결과가 이상하면 프로그램 실행을 중지하고 코드를 수정 이런 방식으로 많이 진행 되었는데, 테스트 코드를 작성하게 되면, 1. 코드를 작성 2. 테스트 코드의 작성 후 실행 3. 결과에 따른 동작(코드를 수정한다, 정상 작동하니 다음 로직을 개..

스프링/백엔드 2022.02.10

Compile과 implementation의 차이점

현재 인프런이라는 강의 서비스에 CTO로 계신 김동욱님의 책인 '스프링부트와 AWS로 혼자 구현하는 웹 서비스' 라는 책을 통해 다시 웹 백엔드 부분을 공부하고 있다.(유툽에서 분명히 많이 본 이름이였는데, 아 그분? 하면서 얼굴이 떠올랐다. 그분이 그 분인거 같다....) 책에서는 인텔리제이와, JPA, JUnit테스트, Gradle, 소셜로그인, AWS 인프라로 무중단 배포까지를 망라해 책을 공부하는 독자들에게 지식을 전수해준다. 이 책이 끝판왕 개발 서적은 아니지만 더 깊은 내용을 공부하고 싶다면 다른 책을 찾아봐야한다. (인프런의 김영한-JPA수업 추천) 해당 책은 이미 서버 개발자(주니어 급)를 꿈꾸는 학생 또는 취준생이라면 한 번쯤은 봤거나, 접해볼 만한 책일 것이다. 내가 여기서 얻고자 하는..

스프링/백엔드 2022.01.30

람다식(Lambda)과 함수형 인터페이스(fuctional interface)

1) 람다 표현식(lambda expression) 메소드를 하나의 식으로 표현한 것으로 익명 함수(anouymous fuctions)를 지칭하는 용어이다. 일반적으로 사용하는 함수를 단순하게 표현하는 방법이다. 2)람다의 특징 람다식은 익명 함수의 특징으로 이름을 가질 필요가 없다. 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다식으로 단순화 가능하다. 람다식으로 선언된 함수는 1급 객체이기 때문에 Stream API의 매개변수로 전달이 가능해진다. 3) 람다의 장점과 단점 장점 단점 1. 코드의 간결함 및 가독성 증가. 람다를 통해 불필요한 코드를 삭제할 수 있으며 이로 인해 단순하게 코드를 표현할 수 있음. 2. 지연연산 수행 람다는 지연연산을 수행 함으로써 불필요한 연산을 최..

Language/Java 2022.01.23

추상 클래스(abstract class)와 인터페이스(interface)

1. 추상 클래스(abstract class) 추상 클래스는 클래스의 공통된 부분을 뽑아 별도의 클래스인 추상 클래스로 만들어놓고 이것을 상속해서 사용한다. 앞서 클래스를 설계도에 비유했는데, 추상 클래스는 미완성 설계도에 비유가 가능하다. 미완성 클래스로 완성된 제품을 만들 수 없듯이 추상 클래스로 인스턴스는 생성할 수 없다. 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상 클래스의 특징은 다음과 같다. 1. 멤버 변수를 가진다. 2. 추상클래스를 상속하기 위해선 상속 키워드인 extends를 이용한다 3. 추상 메서드를 가지며 상속한 클래스에서 반드시 구현해야 한다. 4. 일반 메서드를 가질 수 있다. 5. 일반 클래스와 마찬가지로 생성자도 있다. 추상 클래스 자체로는 클래스로서의 역할을 ..

Language/Java 2022.01.23

내부 클래스(inner class)

1. 내부클래스(inner class) 내부 클래스는 클래스 내에 선언된 클래스로 두 클래스가 서로 가까운 관계가 있을 때 내부 클래스를 사용한다. 이로인해 멤버에 쉽게 접근할 수 있으며, 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다. (크게 중요하지 않음.) 1) 내부 클래스의 예시 class A{ //외부 클래스 class B{ // 내부 클래스 } } 2) 내부 클래스의 선언 class Outer{ int iv = 0; // 인스턴스 변수 static int cv = 0; // 클래스 변수 void myMethod(){ int iv = 0; //지역 변수 } } 같은 위치에 선언뿐만 아니라 멤버 변수와 같은 성질을 갖는다. 따라서 내부 클래스가 외부 클래스의 멤버와 같이..

Language/Java 2022.01.22

상속(Inheritance)

상속은 기존의 클래스를 재사용해 새로운 클래스를 작성하는 것인데, 적은 양의 코드로 새로운 클래스의 코드를 작성할 수 있고 코드를 공통적으로 관리해 코드의 추가 및 변경이 매우 용이하다. 상속의 장점 1. 코드의 재사용성 증가 2. 중복된 코드의 제거로 인한 생산성의 향상 및 유지보수가 편해짐. 1) 상속의 예시 class Child extends Parent{ // 내용 } 상속받고자 하는 클래스의 이름 뒤에 extends와 상속 받을 클래스 이름을 적는다. 상속은 부모에서 선언과 정의를 모두 하며 자식은 메서드와 변수를 그대로 사용이 가능해 오버라이딩을 따로 할 필요가 없다. (단일상속 = 하나의 클래스에 하나만 상속이 가능하다) 상속을 해주는 클래스를 '조상 클래스' 상속을 받는 클래스를 '자손 클..

Language/Java 2022.01.21

생성자(Constructor)

메서드처럼 클래스 내에 선언되는 '생성자'는 메서드와 유사한 구조를 가지고 있으나 리턴값이 없다는 점이 다르다. 그럼 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 그래서 인스턴스 변수의 초기화 작업에 주로 사용된다. 생성자의 조건은 2가지가 있다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 1) 생성자 예시 class Card{ Card(){//매개변수가 없는 생성자.} Card(String k, int num){// 매개변수가 있는 생성자.} } 2) 생성자 분석 클래스 이름(타입변수 명, 타입변수 명 ***){ // 인스턴스 생성 시 수행될 코드, // 주로 인스턴스 변수의 초기화 코드를 적음. } 생성자도 오버로딩이 가능해 하나의 ..

Language/Java 2022.01.21

오버로딩(overloading)

자바에서는 메서드도 변수와 마찬가지로 같은 클래스 내에 서로 구분이 가능해야한다. (그럼 계속해서 이름을 다르게 사용해야하나?) 정답은 그렇지 않다. 같은 이름이라도 매개변수의 개수, 타입이 다르면 같은 이름을 사용해 메서드를 정의할 수 있다. 이렇게, 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '오버로딩'이라고 한다(중복 메서드) 보면 한 클래스 내에 같은 이름으로 3개의 getInfo가 정의된 것을 볼 수 있는데, 각자 변수의 개수 및 타입이 다르다. 이렇게 오버로딩의 조건은 크게 2가지이다 1. 메서드의 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 그럼 오버로딩의 장점은 무엇일까? 생각을 해보자. 오버로딩? 우선 효율적일 것이다. 굳이 여러 개의 메서드를 ..

Language/Java 2022.01.20