본문 바로가기
[java] 메소드 안에서 제어문 없는 중괄호 {} 의 쓰임 메소드 안에서 다음과 같이 쌩뚱맞은 중괄호 블락이 보인다면, 이는 변수의 유효 범위(scope)를 제한하기 위함이다. 1 2 3 4 5 6 7 8 9 public void methodA(){ { int a = 0; } int a = 2; return b; } cs 3번째 라인의 a 변수는 { } 안에서만 유효한 지역변수이며, 위와 같이 a 변수를 6번라인에서 선언해도 문제 되지 않는다. * 변수 유효범위를 제한하여 코딩할 때 사용하나, 드물게 사용된다. 2020. 9. 7.
URL 직접 접근 막기 : referer 헤더정보 사용 URL에 직접 접근할 수 없도록 처리 : header 에서 referer 정보를 확인하여 직접 접근 여부 판별이 가능하다. referer 는 변조가 가능하여 직접 접근을 완벽히 막는 방법이라고 할 순 없을 듯 하나, 보통은 이정도만 처리해도 될 듯 하다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String .. 2020. 8. 12.
[Java] Stream 스트림 문법 정리 자바 8부터 람다와 함께 사용되는 스트림. 아직 자바 8 환경에서 개발해 볼 경험이 없었지만 정리를 미리 해둔다. 스트림은 아래와 같은 파이프라인으로 작성한다. 객체집합.스트림생성().중개연산().최종연산() 1. 스트림 생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 private static void construct() { //1. Collection으로 스트림 생성 //collection.stream(); List names = Arrays.asList("pyo", "sue"); names.stream(); //2. 배열로 스트림 생성 //array.stream(); int[] arr = {1, 2, 3}; Arrays.stream(arr); //3. 스트림 직접 생성 //S.. 2020. 4. 29.
Error 와 Exception의 차이, Unchecked Exception 과 Checked Exception의 차이 [ Error vs Exception ] Error: An Error indicates serious problem that a reasonable application should not try to catch. > 애플리케이션이 잡지 말아야 할 심각한 에러(핸들링이 어려운 에러) Exception: Exception indicates conditions that a reasonable application might try to catch. > 애플리케이션이 잡을 수 있는 에러(핸들링이 할 수 있는 에러) [ ClassNotFoundError vs NoDefClassFoundError ] ClassNotFoundException is an exception that occurs when you try.. 2020. 3. 26.
HttpUrlConnection 모듈 (리펙토링) : 빌더패턴과 프록시패턴 사용 아래는 1년전 쯤 개발했던 httpUrlConnection 모듈이다 https://developyo.tistory.com/10?category=688588 시간이 지날 수록 소스는 누더기가 되어가고.. 디자인패턴을 공부하고, 객체지향스러운 개발을 위해 이책 저책(클린코드 도서 등) 읽고나니 위 코드가 리펙토링이 필요하다는 것을 느껴 리펙토링을 해보았다. 상황] 1. 연동되는 서버가 계속해서 늘어났다. 2. 각각의 연동 서버에 맞춰야 되는 예외상황들이 늘어났다. (ex: timeout, charset, retry, responsecode..) 3. 예외상황들을 처리 하기 위한 파라미터들을 받기 위해 메소드의 인자값이 늘어났다. 4. 오버로딩되는 메소드가 늘어났다. 방향] 1. 객체를 받도록 처리하자. : .. 2020. 2. 21.
[Java] java reflection 예제를 위한 클래스 1. ExampleSuperClass : 부모클래스 1 2 3 4 5 package Java.reflection; public class ExampleSuperClass { } Colored by Color Scripter cs 2. ExampleClass : 예제 클래스 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 package Java.reflection; public class ExampleClass extends ExampleSuperClass { private static final String CONSTANT_FIELD = "constant_field"; public int i = 1; publi.. 2020. 2. 20.
[Java] lambda 람다 2 (메소드참조) 람다의 메소드 참조 메소드 참조는 매개변수의 정보 및 리턴 타입을 알아내어 람다식에 불필요한 매개 변수를 제거하기 위함 [기본문법] https://developyo.tistory.com/190 [메소드참조] 1. static 메소드참조 public static int abs(int a){} //Math class 내의 abs() Math::abs //위와 같다 Math.abs(..)와 같은 static 메소드를 Math::abs 로 표현 할 수 있다. ※ Math::abs()와 같이 ()를 붙이지 않는것을 주의. 위와 같은 람다의 static 메소드 참조를 사용하여 인터페이스를 구현할 경우 아래와 같이 static 메소드를 리턴하도록 구현 할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 1.. 2020. 1. 17.
[Java] lambda 람다 1 (기본문법) jdk 1.8 이상부터 지원. 함수형 프로그래밍을 가능케 함. 1회용 익명 클래스가 필요할 때 람다를 사용하여 코드를 줄일 수 있음. [기본 문법 1 : 인수가 없는 경우] 접근제한자, 리턴타입 생략 가능 public void method(){ } () -> { } * @FunctionalInterface : 추상메소드가 한개만 존재하는 인터페이스 * lambda는 Functional Interface 에만 사용이 가능 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 package Java.Lamda.basic; public class Main1 { public static void main(String[] .. 2020. 1. 15.
[Java] Generic 제네릭 [Generic (제네릭)] 클래스 내부에서 사용할 데이터 타입을 인스턴스 생성시 확정하는 것을 제네릭이라 한다. 제네릭은 다양한 타입의 객체를 다루는 메소드 및 컬렉션 클래스를 컴파일 시, 타입 체크를 해주는 기능을 한다. 객체 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄인다. ※ ArrayList 같은 컬렉션 클래스는 다양한 종류의 객체를 담을 수 있지만, 보통 아래와 같이 한 종류의 객체를 담는 경우가 더 많다. 또한 꺼낼 때 마다 타입체크를 하고 형변환 하는 것은 아무래도 불편할 수 밖에 없는데, 제네릭이 이와 같은 불편함 들을 해소해준다. List list = new ArrayList(); list.add(new Person("영심이")); list.a.. 2019. 12. 28.
[Java] Compile 일반 프로그램은 하드웨어 위에서 하드웨어를 제어하기 위한 OS 동작, OS 위에서 프로그램이 실행. 그래서 프로그램을 OS 마다 다르게 제작. 윈도우에서 동작하는 프로그램, 리눅스에서 동작하는 프로그램. 반면 자바는 OS 위에 JVM(java virtual machine) 존재하여 jvm 위에서 프로그램이 실행되기 떄문에 운영체제에 의존적이지 않음. 운영체제 상관없이 자바 프로그램 실행이 가능 일반 프로그램 hardware > OS(operating system) > program 자바 프로그램 hardware > OS(operating system) > jvm > java program 컴파일 과정 : 개발자가 작성한 자바 코드를 컴파일러가 기계어인 자바 바이트 코드(.class)로 변환, 변환된 코드.. 2019. 12. 22.