ALL Post 202

Servlet

📚 자바 웹을 다루는 기술을 정리한 내용입니다. Servlet이란? 이전에 정적인 웹을 너머서 동적 웹 프로그래밍을 위한 자바 클래스다. 클라이언트 요청에 따라 서버에서 동적으로 서비스를 제공하는 클래스 서블릿은 일반적인 자바와 달리 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다. 서블릿의 동작 과정이다. 클라이언트가 요청하면 web server는 WAS에 위임한다. WAS는 각 요청에 해당하는 서블릿을 실행한 다음 결과를 반환하여 클라이언트에게 전송한다. 특징 서버 쪽에서 실행되면서 기능 수행 정적 웹 문제를 보완하여 동적 기능 제공 쓰레드 방식으로 실행 컨테이너에서 실행 Servlet API 계층 구조 두 인터페이스 Servlet, ServletConfig를 추상클래스 GenericServl..

Servlet-JSP 2020.09.10

Hassing & HashFunction

잘못된 내용이 있을 수 있습니다.해싱과 해시함수 해싱이란 해시함수를 이용해서 데이터를 헤시테이블에 저장하고 검색하는 기법이다. 해시함수는 데이터가 저장되어 있는 곳을 알려주므로 다량의 데이터 중에서도 원하는 데이터를 빠르게 찾을 수 있다. 해싱을 구현한 클래스로 HashSet, HashMap, Hashtable 등이 있다. Hashtable은 컬렉션프레임웍 도입(JDK1.8)이후 HashMap으로 대체 되었다. 해싱의 자료 구조 HashMap을 이용해 아주 복잡한 이름을 가진 모델명과 제조사를 묶어서 데이터를 보관해둔다고 하자. 나는 이 복잡한 이름의 모델명을 가진 제품의 제조사를 자주 구분해야 할 필요가 있다. 중복되지 않는 모델명을 key로 두고 언제든 key를 이용해 value에 접근할 수 있게 만..

Java 2020.09.10

예외처리

예외 Exception 이미지 출처 예외 클래스 다이어그램 자바에서 에러는 크게 두 갈래로 나눌 수 있다. error exception 예외exception는 처리할 수 있지만, 에러는 손 쓸 방법이 없다. Exception은 RunTimeException과 그 외 Exception 두 갈래로 다시 나뉜다. 다이어그램을 자세히 보면 RuntimeException은 Unckecked, 그 외 Exception은 Checked라고 표시되어 있다. checked - unchecked check : 컴파일러가 예외 체크 (Exception클래스) unchecked : 컴파일러가 예외 체크 x (RuntimeException) 언체크드 예외인 RuntimeException은 선택적으로 처리할 수 있다. 그러니까 ..

Java 2020.09.10

람다Lambda

📚 자바의 정석을 정리한 내용입니다. ▪ 람다식Lambda Expression 자바는 두 번의 큰 변화가 있었다. JDK1.5의 지네릭스. JDK1.8의 람다. 람다의 등장으로 객체지향언어를 너머 함수형 언어가 가진 기능까지 갖추게 되었다. 말하자면 비로소 호모 사피엔스의 길에 접어든 것일까? 람다식이란 간단히 메서드를 하나의 식으로 표현한 것이다. 함수를 간략하면서도 명확한 식으로 편할 수 있다. 메서드를 람다식으로 표현하면 반환 값이 없어진다. 그래서 익명 함수라고 부르기도 한다. 그래서 어떻게 쓰는 거냐면. int max(int a, int b) { return a > b ? a:b; } 두 값을 입력받고 큰 값을 반환하는 max라는 메서드가 있다. 이것을 람다로 변환하면 이렇게 쓸 수 있다. (i..

Java 2020.09.09

와일드카드

참고 : 자바의 정석 와일드 카드 기호 '?' 표현하는데, 와일드카드는 어떤 타입도 될 수 있다. 아래 코드를 보자. package com.javaex.generics; import java.util.ArrayList; import java.util.List; public class FruitsBoxEx3 { public static void main(String[] args) { FruitBox fruitBox = new FruitBox(); FruitBox appleBox = new FruitBox(); fruitBox.add(new Apple()); fruitBox.add(new Grape()); appleBox.add(new Apple()); System.out.println(Juicer.make..

Java 2020.09.09

제네릭 클래스Generics Class

자바의 정석을 참고했습니다. Generics 컬렉션 클래스 컴파일 시 타입 체크를 해주는 기능. 장점 타입 안정성을 높여서, 의도하지 않은 타입의 객체가 저장되는 것을 막는다. 지네릭 클래스 class Box { T item; void setItem(T item) { this.item = item; } T getItem() { return item } } Box에서 T를 타입 변수라고 한다. 타입변수는 꼭 T가 아니라도 상황에 맞는 다른 알파벳을 지정할 수 있다. 위에서 정의한 제네릭 클래스 Box의 객체를 생성한다고 했을 때, 가 무슨 타입인지 지정해야 한다. Box box = new Box(); new Box void add(Fruit item) fruitBox.add(new Fruit()); fru..

Java 2020.09.09

TreeMap

이미지 출처 : https://adrianmejia.com/data-structures-for-beginners-trees-binary-search-tree-tutorial/ 트리구조. TreeMap 이미지 출처 : https://www.java8net.com/2020/02/treemap-in-java.html TreeMap은 이름에서 알다시피 이진검색트리 형태에 key와 value 쌍으로 이루어진 데이터를 저장한다. 검색과 정렬에 적합한 컬렉션 클래스다. 범위 검색은 TreeMap이 성능이 좋지만, 그게 아니라면 검색 부분에서는 HashMap 성능이 더 좋다. TreeMap의 메서드 method 설명 TreeMap(Comparator c) 지정한 Comparator를 기준으로 정렬하는 객체 생성 Tre..

Java 2020.09.09

HashMap

HashMap 출처 : https://medium.com/tanay-toshniwal/count-distinct-elements-in-input-sequence-using-java-hashmaps-373a58697dd2 HashMap은 Hashtable의 페이스리프트 버전이다. Map을 구현한 클래스의 특징은 아래와 같다. key, value를 묶어서 하나의 데이터entry로 저장한다. key는 유일unique해야 한다. value는 중복 가능 해싱hassing을 사용하므로 많은 양의 데이터를 검색할 때 뛰어난 성능을 보인다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { transient Entry[]..

Java 2020.09.09