본문 바로가기

장생농

(139)
자바/JAVA 스트림(Stream) 스트림을 람다식을 이용해 배열, 컬렉션을 다루는 기술(클래스)이다. 스트림을 사용하면 자료의 대상과 상관없이 동일한 연산을 수행할 있다.(자료의 추상화) 배열, 컬렉션의 원소들에 대해 동일한 연산을 수행할 수 있다. 또한 스트림 객체는 한번 생성되면 다시 재사용할 수 없기 때문에, 재사용을 위해선 새로운 스트림 객체를 생성해야 한다. 배열의 스트림 생성 java.util.Arrays의 stream() 메소드로 생성. int[] arr = {1,2,3,4}; Arrays.stream(arr); 컬렉션의 스트림 생성 스트림을 변수에 담으려면 java.util.stream.Stream에 담는다. List strLIst = {"토르","로키","퀵실버","완다"}; strList.stream(); // 스트림을..
자바/JAVA 람다식 람다식은 자바에서 함수형 프로그래밍을 구현하는 방식이다. 함수형 프로그래밍 순수 함수를 구현하고 호출하는 방식이다. 매개 변수만을 사용하도록 만든 함수로 외부 자료에 부수적인 영향이 발생하지 않도록 한다. 입력 받은 자료만으로 기반으로 수행되기 때문에 외부에 영향을 미치지 않아 병렬처리가 가능하다. 안정적인 확장성 프로그래밍 방식이다. 자바 8부터 함수형 인터페이스를 지원하고 있다. 함수형 프로그래밍을 사용하면 클래스를 생성하지 않고도 함수의 호출만으로 기능을 수행할 수 있다. 람다식 문법 매개 변수를 -> 식으로 함수에 대입한다. 자료형은 생략할 수 있다. 매개 변수 하나인 경우 괄호 생략 가능(두개인 경우는 괄호를 생략할 수 없음) str -> {System.out.println(str);} 중괄호 ..
자바/JAVA 내부 클래스 전에 중첩클래스/중첩인터페이스에 대해 적은 글이 있지만, 이번엔 조금 더 자세하게 적는다. 내부 클래스는 클래스 내부에 구현된 클래스이다. 클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스이다. 주로 내부에서만 사용하기 때문에 이름을 따로 정하지 않고 익명으로 사용한다. 내부 클래스의 유형 종류 구현 위치 사용할 수 있는 외부 클래스 변수 생성 방법 인스턴스 내부 클래스 외부 클래스 멤버 변수와 동일 외부 인스턴스 변수 외부 전역 변수 외부 클래스를 먼저 만든 후 내부 클래스 생성 정적 내부 클래스 외부 클래스 멤버 변수와 동일 외부 전역 변수 외부 클래스와 무관하게 생성 지역 내부 클래스 메소드 내부에 구현 외부 인스턴스 변수 외부 전역 변수 메소드를 호출할 때 생성 익명 내부 클래스 메소드 내부..
HashTable 해쉬테이블 + 직접 구현해보기 엔지니어대한민국 채널의 영상을 보고 적는 글입니다. : www.youtube.com/watch?v=Vi0hauJemxA HashTable : 검색하고자 하는 key값을 입력 받아 hash 함수에 전달해서 hashcode를 반환받고 그것을 배열의 index로 환산해서 value(데이터)에 접근하는 방식의 자료구조이다. HashTable에는 key와 그것에 해당하는 value를 저장한다. 여기서 key는 숫자, 문자열, 파일 데이터 등등이 들어올 수 있다. Hash 함수는 특정한 해쉬 알고리즘을 이용해 key 값으로 HashCode를 만든다. HashCode를 저장하려는 배열의 크기로 나눈 나머지를 index로 사용해서 value를 저장한다. 따라서 HashCode는 key의 식별자이면서 배열의 인덱스이기도..
scope scope는 범위, 영역 같은 뜻을 같는데, 프로그래밍을 할 때는, 변수(객체)의 범위의 의미를 갖는다. WAS 내에 서블릿이나, jsp에서 변수(객체)를 사용하다보면 한 서블릿 내에서 사용을 끝내는 변수가 있기도 하고, 다른 서블릿 forward하는 변수, 세션이 종료될 때까지 갖고 있는 변수 등 변수의 사용 범위는 다양하다. WAS에서는 사진과 같이 Scope를 4가지로 나눌 수 있다. Page - 서블릿이나 jsp 처럼 한 페이지 내에서만 지역변수같이 사용되는 객체 Request - WAS가 HTTP 요청을 받고 응답을 보낼 때까지 사용되는 객체 Session - 세션 객체가 생성되고 소멸될 때까지 사용되는 객체 Application - 웹 애플리케이션이 시작되고 종료될 때까지 사용되는 객체. 각각..
자바/JAVA Class 클래스 자바의 모든 모든 클래스, 인터페이스는 컴파일 후에 class 파일이 생성된다. class 파일에는 객체의 정보(필드, 메소드, 생정자 등)가 있다. Class 클래스는 class 파일에서 객체의 정보를 가질 수 있다. 다음과 같은 방법 Class 인스턴스를 얻을 수 있다. // 1. 생성된 인스턴스에서 class 정보 갖고 오기 String name = new String(); Class classTest = name.getClass(); // 2. 이미 컴파일 된 클래스에서 class 정보 갖고 오기. 객체가 생성되지 않아도 가져올 수 있다. Class classTest = String.Class; // 3. Class의 forName() 메소드로 동적로딩 하기 Class classTest = Cla..
redirect, forward + servlet, jsp 먼저 서블릿과 JSP에 대한 글을 읽고 오면 이해하기 쉽다 servlet : jang-sn.tistory.com/49 jsp : jang-sn.tistory.com/50 redirect 리다이렉트는 HTTP로 정해진 규칙이다. 클라이언트가 서버에게 요청을 하면, 응답으로 새롭게 요청할 특정 URL을 전달해서 새로운 요청을 하게 한다. 이것을 리다이렉트라고 한다. 이때 서버의 응답에는 상태 코드 302와 헤더 내 Location 값에 리다이렉트 할 URL을 추가한다. 클라이언트는 상태코드가 302인 리다이렉트 응답을 받으면 Location의 값으로 재요청을 한다. -> 새로운 요청을 하게 된다. 그래서 URL 주소가 바뀌게 된다. 리다이렉트 하는 서블릿(JSP)는 리다이렉트를 하기 위해 HttpServle..
프로그래머스 메뉴 리뉴얼 2021 카카오 문제 + 삽질과 유용한 라이브러리 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제: 단품 메뉴들로 코스요리를 만들 건데, 손님이 같이 주문하는 메뉴들로 조합을 해서 만든다. 코스 요리를 구성하는 메뉴의 개수는 정해져 있다. 예를 들어 단품 메뉴 3개로 구성된 코스 요리를 만든다면, 3개 이상 주문한 조합에서 가장 많이 주문된 조합을 코스 요리로 만든다. 주문 횟수가 같다면 둘 다 추가한다.(자세한 규칙, 설명은 사이트에서) 많이 어려운 문제는 아니었지만, 좋은 메소드, 라이브러리를 몰라 삽질을 했다. 문제 풀이 요약 1. 조합되야 하는 메..