지네릭스(Generics)란? 지네릭스는 JDK1.5에서 처음 도입된 문법으로 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 자바는 객체 지향 개념 중 하나인 다형성이란 개념이 있다. 이 다형성을 자바에서는 형변환으로 크게 지원하고 있는데, 이 형변환은 프로그래머에게 큰 편리함을 주지만 컴파일러에게는 큰 약점이 된다. 컴파일러는 변수 안에 담겨 있는 실제 값을 확인하지 않는다. 단지 참조 변수의 타입을 보고 문법적 오류가 있는 지를 판단한다. 이것이 컴파일러의 한계인데, 다형성에서 이로 인한 런타임 에러가 발생할 수 있다. 하나의 예시를 들어보자. import java.util.ArrayList; public class GenericsTest { pub..
Goals 람다식(Lambda expression)이란? 함수형 인터페이스(Functional Interface) java.util.function 패키지 람다식(Lambda expression)이란? JDK1.8부터 추가된 람다식(Lambda expression)은 메서드를 하나의 식(expression)으로 표현한 것이다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 ‘익명 함수(anonymous function)’이라고도 한다. 람다식 작성 방법 람다식은 메서드에서 이름과 반환 타입을 제거하고, 매개변수 선언부와 몸통 {} 사이에 ->를 추가한다. 예를 들어 두 값 중 큰 값을 반환하는 메서드 max가 있다고 하자. int max(int a, int b) { retur..
최근에는 Java와 Spring을 공부하고 있습니다. Spring Boot 프로젝트에 MariaDB 드라이버를 추가하려고 검색을 하다가 Maven 저장소에서 드라이버를 선택하면 Gradle 설정 방법을 보여주는 것을 보았습니다. 두 도구가 의존성을 관리하는 방법에 차이가 있음을 한 눈에 알 수 있었지만, 설명하라면 어떻게 해야 할지 잘 모르겠었습니다. 그래서 이번 기회에 두 도구의 차이점을 정리하기로 했습니다. 이전에도 이와 관련하여 공부를 했지만, 그 때는 Maven만 사용해보았고 Gradle은 사용해보지 않았기 때문에 잘 이해되지 않았습니다. 지금은 둘 다 조금씩 이라도 사용해보았기 때문에 다시 한 번 찾아보게 되었습니다. 그러나 아직도 깊이 있는 이해에는 부족함이 있으므로 최대한 쉽게 설명하고자 노..
모든 일은 많은 사람들에 의해 수 차례 반복되고, 연구되면서 여러가지의 방법론이나 원칙이 성립된다. 그 중에서 가장 효율적이고 합리적인 방법론이 정립되고, 그 일을 수행하는데 일반적으로 적용하는 대표 방법론 또는 원칙이 된다. 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 방법이나 원칙이 존재한다. 로버트 C. 마틴(Robert C. Martin)이 2000년대 초반 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙으로 제시한 것을 마이클 페더스(Michael Feathers)가 두문자어로 소개한 SOLID다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Lisk..
Java는 대표적인 객체지향 프로그래밍 언어다. 객체지향언어는 기존의 프로그래밍 언어에 몇 가지 새로운 규칙을 추가한 보다 발전된 형태의 것이다. 이러한 규칙들이 바로 객체지향적인 특징들이다. 그렇다면 객체 지향적이라는 말은 무엇일까? 세상은 객체(object)들로 이루어져 있다. 여기서 객체는 눈으로 보는 것, 머릿속으로 상상되는 모든 것이 될 수 있다. 즉, 사람이 세상을 인지하는 방식대로 프로그래밍하는 것이 객체 지향의 출발이다. 따라서 객체 지향은 이전의 방식(구조적 프로그래밍)보다 사람 지향적인 방법론이라고들 한다. 객체 지향의 대표적인 4대 특성은 아래와 같다. 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) 위 객체..
변수의 종류 Java에서 변수의 종류를 결정짓는 중요한 요소는 ‘변수의 선언된 위치’다. 인스턴스 변수(Instance variable) 인스턴스를 생성할 때 만들어지며, 독립적인 저장 공간을 가진다. 인스턴스마다 고유한 값을 가질 수 있다. 인스턴스를 생성해야 사용할 수 있다. 클래스 변수(class variable) 인스턴스 변수 앞에 static을 붙이기만 하면 되므로 스태틱 변수라고도 한다. 클래스가 메모리에 로딩될 때 생성되어 프로그램이 종료될 때 까지 유지된다. 모든 인스턴스가 공통된 저장공간을 공유하므로 한 클래스의 모든 인스턴스들이 공통적인 값을 유지한다. 인스턴스를 생성하지 않아도 사용할 수 있다. 지역 변수(local variable) 메서드 내에 선언되어 메서드 내에서만 사용 가능하며..
본 내용은 책 "자바의 신" (로드북) 을 보고 공부한 내용 중 개인적으로 도움될 부분들을 적은 것입니다. 잘못된 점이 있다면 언제든지 지적해 주세요 ! 자바 프로그램의 실행 원리 일반 다른 프로그램들은 기본 적으로 운영체제 위에서 작동하므로 운영체제의 영향을 받을 수 밖에 없다. sound나 graphic적인 부분 등 여러 부분을 운영체제에서 빌려오기 때문이다. 따라서 만약 자바가 아닌 다른 프로그래밍 언어로 윈도우 위에서 소스코드를 작성했다면, 그 프로그램을 리눅스나 맥에서 실행시키고 싶으면 소스코드를 그에 맞게 수정해야 하는 일이 발생한다. 즉 우리가 만든 프로그램이 운영체제에 의존적이게 된다. 하지만 자바는 다르다. 자바 프로그램은 JAVA Virtual Machine 위에서 동작한다. 이 자바 ..
- 리버싱
- jsp
- 스프링 테스트
- 버퍼오버플로우
- shell code
- 운영체제 반효경
- 선형 회귀
- Spring Boot
- BOF
- 프로그래머스
- 스프링
- 김영환
- spring mvc
- Spring
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- JPA
- 쉘 코드
- JUnit
- 쉽게 배우는 운영체제
- Thymeleaf
- Gradle
- 방명록 프로젝트
- 파이썬 for Beginner 연습문제
- 생활코딩 javascript
- Computer_Networking_A_Top-Down_Approach
- 파이썬 for Beginner 솔루션
- 지옥에서 온 git
- Spring Data JPA
- Python Cookbook
- 패킷 스위칭
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- Total
- Today
- Yesterday