개발자의 공부방/자바 27

자바] 함수형 인터페이스 및 람다 표현식

자바를 오랜만에 하니깐 개짜증납니다. 맥으로 인텔리제이를 하니깐 더 짜증납니다. 단축키의 노예인데 윈도우로만 작업했다가 간만에 맥으로 하려니 너무 짜증납니다람쥐 항상 자바스크립트를 이용하면서 함수형 프로그래밍에 익숙해지고 있는 와중에 다시 자바를 하려니깐 기억이 잘 안나서 기초적인 부분을 다시 학습하고 있습니다. 그 중에 하나인 람다 표현식을 간단하게 알아보려고 합니다. 아래는 뻔하디 뻔한 인터페이스와 추상 메서드입니다. 이녀석을 이용한 익명 클래스를 한번 만들어볼까 합니다. public interface FunctionalTest { void dodo(); } 보통 아래와 같은 형태를 사용하고는 합니다. 하지만 자바8의 기능인 람다를 사용해서 간결하게 표현해보도록 하겠습니다. import java.ut..

자바] 디자인 패턴, 싱글톤 패턴

1. 개요 일단 정처기 공부하면서도 나왔던 것 같은데 어쨌든 면접 질문에 빡쳐서 또 공부한다. 🤬 생각할 수록 빡친다. 디자인 패턴 1 싱글톤 패턴을 먼저 시작해본다. 예를 들어서 3명의 클라이언트가 있다고 가정한다. 각각의 클라이언트는 어떤 어플리케이션을 실행한다. 이때 이 어플리케이션 내부의 서비스 로직 중 어떤 것이 호출되는데 3명이 실행하고 호출하면 당연히 3번의 서비스 로직의 인스턴스가 생성되고 호출된다. 그럼 만약 100명이 호출한다면? 싱글톤 패턴은 이런 무분별한 인스턴스의 메모리 낭비를 방지하기 위해서 나온 것이다. 이제 코드를 통해 알아본다. 2. 본론 1) 싱글톤 패턴 코드 package hello.core.singleton; public class SingletonService { p..

JVM 메모리 구조

1. 개요 면접 보고 JVM 구조 질문이 있었다. 면접 끝나고 나서 갑자기 짜증이 났다. 아니 xx 이거 알아서 뭐 어쩌라는건데? 한글의 자음 모음의 첫 시작은 뭐고 그 구조는 언어학적으로 어떤지 모르면 한국어 못하는건가? 라는 이런 뜬금없는 생각이 났고 질문에 어버버 거리면서 머뭇거리는 상황이 떠올라서 갑자기 짜증이 확났다. 그래서 공부한다. 그리고 정리해본다. 2. 본론 자바 프로그램의 실행 단계 JAVA CODE (.java) ➡️ JAVAC Compiler ➡️ Byte Code (.class) ➡️ JVM ➡️ Windows or LINUX ➡️ Mac 그래서 자바코드를 갖고 개발할 때 JAVA를 다운받는 것이고 그 안에는 JDK(개발키트), JRE(런타임 환경)가 있는 것이다. 🎱 JRE는 J..

자바기초] JAVA10 var란?

자바스크립트에서 항상 봐왔던 var를 java에서 써본다. java10 부터 생긴 타입추론형 var는 어떻게 생겨먹은건지 한번 알아본다. var는 말그대로 타입추론형이다. java10 이전에 사용하는 기본타입은 타입이 무엇인지 아주 명확하게 드러난다. //예를 들어..기본타입인 int에서 //아래와 같이 사용이 된다면 int a; a = 11; //var 에서는... var b; b = 11; //이렇게 쓰는게 불가능하다. //이유는? 당연히 타입추론형이라서 변수에 값을 넣지 않으면 추론이 불가능하다. //즉, 리터럴에 의한 타입을 추론할 수 없기 때문이다.

JAVA] MVC 계층 구조

비즈니스 = Manager 예) 종업원이 고객의 요구를 전달해주면, 재료를 이용해 요리를 만드는 요리사? 퍼시스턴트 = DAO 퍼시스턴트 : 데이터처리를 담당하는 계층. CRUD 예) 주방장이 사용할 재료를 담당하는 재료 담당자 DAO : data Access Object의 약자로 Database의 data에 접근을 위한 객체. 프레젠테이션 = Command 예) 식당에서 손님이 접하게 되는 메뉴판과 전달될 음식을 차려놓는 식탁. UI layer 라고도 한다. 직접적인 jsp JSP 가 최종목적지. command => 최종목적지. manager => command. DAO => manager. 참고 https://help.sap.com/doc/saphelp_nwpi711/7.1.1/en-US/7e/d1a..

[JAVA] JDK 환경변수와 시스템변수의 차이는??

안녕하세요 오늘은 추석입니다! 오늘 포스팅하려고 하는 건 환경변수와 시스템 변수에 대한 것 입니다. 데스크탑을 포맷하고 JDK를 설치하려고 하는 중 어떤 블로그에서는 환경변수를 설정할 때 '사용자에 대한 변수' 에 하는 분도 계시고 혹은 '시스템 변수' 에 하고 계시는 분들도 있습니다. 과연 이 두 차이는 뭘까요??? 1. 사용자변수 사용자변수는 말그대로 로그인을 한 사용자에 대한 변수를 얘기합니다. 내가 윈도우에 user1 이라고 로그인을 했을 시 cmd 창에서 java -version 을 입력하면 자바 버전의 정보가 출력됩니다. 하지만 user2 로 로그인을 해서 java -version 을 입력하면? 당연히 되지 않습니다. 즉, 모든 사용자가 아닌 하나의 사용자(계정)에게만 권한을 준다 라고 생각하..

자바 기초] 컬렉션

컬렉션이란? 컨테이너라고도 하며, 여러 원소를 하나의 그룹으로 묶어 관리 해주는 객체. Java Collection Framework (JCF) 컬렉션을 표현하고 다루기 위한 통합된 프레임워크 다양한 방식으로 저장, 검색, 수정, 관리하는 도구를 제공 컬렉션을 일관된 방법으로 다룰 수 있음. - 인터페이스 : 컬렉션의 기능을 표현. - 어떻게 표현되는가와 상관없이 일관성 있게 다룬다. (추상 자료형) - 클래스 : 인터페이스를 구현한 클래스를 제공 (자료 구조) JCF의 구조 JCF의 인터페이스 Set : 순서는 의미가 없으며 중복을 허용하지 않는 자료구조 List와 Queue : 중복을 허용하고 순서에 의미가 있으며 Queue는 FIFO 방식 Map : 원소가 의 형태이며 키는 유일해야 함. Colle..

Call by Value 와 Call by Reference

자바기초 Call by value, Call by Reference - Call by Reference : 매개 변수의 원래 주소에 값을 저장하는 방식. 클래스 객체를 인수로 전달한 경우 - Call by Value : 인수로 기본 데이터형을 사용. 주어진 값을 복사하여 처리하는 방식. method 내의 처리 결과는 method 밖의 변수에 영향을 미치지 않는다. 1) Call by Value public class CallBy { //call by value (값에 의한 호출.) static void print(int a) { a = 20; System.out.println(a + ">>>"); } public static void main(String[] args) { int a = 10; print..

자바 기초] 배열 (진행중)

배열 1. 배열의 개념배열은 같은 자료 형들끼리 모아두는 하나의 묶음이다.자바에서 하나의 배열은 하나의 객체로 인식된다.동일 자료형이 여러 개 반복될 때 이를 하나의 변수명으로 관리하며, 각각의 구분은 순차적인 첨자를 사용한다.reference 자료형 4Byte 2. 1차원 배열선언 : int[] 배열명; 또는 int 배열명 [];초기화 : 배열명 = new 자료형 [개수] 또는 배열명 = {값1, 값2, 값3};new 에 의해서 할당되면 자동초기화 된다.ex) int a[] = new int[3]; 실행예제 12345678910111213141516171819202122232425public class Arr_Ex01 { public static void main(String[] args) { char..