일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 트랜잭션
- Transaction
- http
- spring boot
- 인터셉터
- MYSQL
- 스프링 시큐리티
- java
- network
- RestControllerAdvice
- aop
- mybatis
- aspect
- Spring Security
- OOP
- proxy pattern
- 스프링부트
- response
- 관점지향프로그래밍
- git
- request
- Interceptor
- Filter
- 객체지향프로그래밍
- 자바
- SQL
- exception
- Spring
- 스프링
- 디자인패턴
- Today
- Total
목록java (18)
장쫄깃 기술블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cOaE5t/btrzQGT4dY9/kkY2JWGueybpnXro9pGd6K/img.jpg)
Java 현재시간 측정 함수 Java에서 기본적으로 제공하는 함수중 System.currentTimeMillis 함수를 이용하면 현재 시간을 밀리세컨드 단위로 출력할 수 있다. System.java 클래스에 있는 함수 설명을 보면 1970년 1월 1일 UTC 시간 기준으로 현재까지의 시간 차이를 밀리 세컨드 단위로 출력한 값이다. Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond, the granularity of the value depends on the underlying operating system and may be larger. For exam..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cMWxlr/btrzMvTdNsU/a4HNiyXvQ5M36TZDqUb900/img.jpg)
다형성(Polymorphism)이란? 다형성이란 프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 또는 여러 형태를 받아들일 수 있는 성질, 상황에 따라 의미를 다르게 부여할 수 있는 특성 등으로 정의를 하기도 한다. 정리하면 다형성이란 하나의 타입에 여러 객체를 대입할 수 있는 성질로 이해하면 될 것이다. 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 주입만으로 수정이 일어나게 할 수 있다. 또한 상속을 사용한다면 중복되는 코드까지 제거할 수 있으므로 더욱 객체 지향 설계와 가까워질 수 있다. 다형성을 구현하는 방법 다형성을 구현하는 여러 방법 중 대표적으로 알려져있는 오버로딩, 오버라이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cbULO1/btrzN06lvp8/9JcYfKRKNkGUrQ9xZ0Y8CK/img.jpg)
상속(Inheritance)이란? 상속은 객체들 간의 관계를 구축하는 방법이다. 상속은 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것이다. 하위 클래스들에서 사용할 공통된 메소드를 상위 클래스가 제공해주고, 하위 클래스들은 상위 클래스에서 없는 기능을 추가하거나 재정의한다. 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것 상속의 장점 1. 코드를 재사용할 수 있다. 하위 클래스들이 공통으로 사용할 기능을 상위 클래스에 적용하고, 하위 클래스는 필요할 때 기능을 추가하거나 재정의 하면 되기 때문에, 공통 코드를 재사용할 수 있다. public class Bird { public void fly() { System.out.println("푸드덕 푸드덕"); }..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzSKaQ/btrzMJKVziW/UKcPOKkSTk2VTwDUgFgEj0/img.jpg)
캡슐화(Encapsulation)란? 객체의 속성(data fields)과 행위(methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. 캡슐화는 객체 내부의 속성이나 행위를 외부에서 직접 접근할 수 없게 하는 것이다. 흔히 은닉과 혼동하는 경우가 많은데, 은닉화란 캡슐화를 통해 얻어지는 '실제 구현 내용 일부를 외부에 감추는 효과'이다. 객체의 속성과 행위를 묶으면 응집도가 올라가므로 자율적인 객체가 된다는 장점이 있다. 자율적인 객체가 되면 다른 객체의 영향을 덜 받기 때문에 자신의 상태를 스스로 잘 처리할 수 있게 된다. 그런데 이 상황에서 캡슐화가 이루어지지 않으면 외부에서 내부 속성에 접근하여 사용할 수 있기 때문에 결합도가 높아지고 응집도가 낮아지게 된다. 이렇게 되면 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cgjyAW/btrzMa9L0Ia/bbh1ckl7dzOt5zWh1rMNa1/img.jpg)
추상화(Abstraction)란? 컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것을 말한다. 추상화는 이처럼 구체적인 사물들 간의 공통점을 취하고 차이점을 버리는 일반화를 사용하거나, 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것을 말한다. 핵심은 불필요한 코드를 제거하고 중요한 부분을 살려 단순하게 만드는 것이다. 추상화 예제 추상화란 공통적인 부분을 취하고 차이점을 버리는 것이라고 했다. 예를 들어 SuperCar, SnowCar, FastCar가 있다고 하자. public class SuperCar { public void move() { System.out.println("슈퍼하게 달립니다."); } } ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/I8ylc/btrzKsXgTtG/Bz1JGxSFnvcw933KGYpi3k/img.jpg)
객체 지향 객체 지향이란 현실 세계의 객체 모델을 바탕으로 프로그램을 구조화하고 개발하는 프로그래밍 기법을 말한다. 전통적인 프로그래밍 언어는 크게 객체 지향 프로그래밍 언어(Object Oriented Programing Language; OOP)와 절차 지향 프로그래밍 언어(Procedure Oriented Programming Language; POP)로 구분된다. 이는 과거 프로그래밍 언어의 구조적 특징에 따른 분류이며, 최근에 널리 쓰이고 있는 프로그래밍 언어들은 기본적으로 객체 지향에 기반을 두고 있다. 자바의 경우 JDK8에서부터 이러한 최신 경향을 반영하기 시작했다. 절차 지향은 순서대로 진행되며 순서가 틀려서는 안되고 어느 한 부분이 오류가 나면 그다음부터 전체적으로 마비가 되는 순차적인..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bOpAVq/btrzpiMvs2J/bMBEpoG1Qyb8ABGdnZjW4K/img.jpg)
public String getClientIP(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if (ip == null) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (ip == null) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null) { ip = request.ge..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bw9Kib/btrzjn2Bdv6/QKiA6ECH3PpiiL3se2SyK1/img.jpg)
예외(Exception) 란? 예외(Exception)란 입력 값에 대한 처리가 불가능하거나, 프로그램 실행 중에 참조된 값이 잘못된 경우 등 정상적인 프로그램의 흐름을 어긋나는 것을 말한다. 그리고 자바에서 예외는 개발자가 직접 처리할 수 있기 때문에 예외 상황을 미리 예측하여 핸들링할 수 있다. 이러한 예로는 RuntimeException, SQLException, IOException 등이 있다. 한편, 에러(Error)는 시스템에 무엇인가 비정상적인 상황이 발생한 경우에 사용된다. 주로 자바 가상머신에서 발생시키는 것이며 예외와 반대로 이를 애플리케이션 코드에서 잡으려고 하면 안 된다. (사실 잡아도 방법이 없다.) 에러의 예로는 OutOfMemoryError, ThreadDeath, StackO..