일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- linux
- MySQL
- Oracle
- elasticsearch
- it
- tool
- 맛집
- Gradle
- JPA
- php
- 요리
- ubuntu
- Spring
- laravel
- springboot
- javascript
- Web Server
- redis
- Design Patterns
- AWS
- jsp
- java
- jenkins
- Spring Boot
- docker
- ReactJS
- devops
- IntelliJ
- Git
- db
- Today
- Total
목록Java/Java (103)
아무거나
스트래티지 패턴(Strategy Pattern) 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴 스트래티지 패턴 예시 [요구사항] 신작 게임에서 캐릭터와 무기를 구현해보자. 무기는 두 가지 종류가 있다. 칼 검 먼저 무기 인터페이스를 생성한다. [Weapon.java] package com.bkjeon.strategy; public interface Weapon { public void attack(); } 그 다음 칼과 검의 클래스를 생성한다. [Knife.java] package com.bkjeon.strategy; public class Knife implements Weapon { @Override public void attack() { System...
어댑터 패턴(Adapter Pattern) 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 어댑터 패턴은 이름대로 어댑터처럼 사용되는 패턴이다. 220V 를 사용하는 한국에서 쓰던 기기들을, 어댑터를 사용하면 110V 를 쓰는곳에 가서도 그대로 쓸 수 있다. 이처럼, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해주는 패턴이 어댑터 패턴이라고 할 수 있겠다. 이를 위해 어댑터 역할을 하는 클래스를 새로 만들어야 한다. 기존에 있는 시스템에 새로운 써드파티 라이브러리가 추가된다던지, 레거시 인터페이스를 새로운 인터페이스로 교체하는 경우에 코드의 재사..
Strategy Pattern 개념 Strategy Pattern이란 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. Strategy를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 즉, 동적으로 알고리즘을 교체할 수 있는 구조를 말한다. 먼저 Duck이라는 슈퍼클래스와 각각의 오리별 클래스인 MallardDuck, RedheadDuck를 구현해보자. 위의 구조를 설명하자면 Duck 클래스에선 모든 오리들이 소리를 내고 헤엄을 칠 수 있어 quack(), swim() 메소드를 구현했고 오리들의 모양이 각각 다르기 때문에 display() 메소드는 추상 메소드이다. 그 외에도 다른 유형의 오리들이 Duck 클래스로부터 상속을 받는다. 여기서 만..
[iterator vs foreach] 자바 1.5부터 지원하고 있는 향상된 for문 (일명 for-each문)은 일반 배열과 Collections 객체에 대해 이용할 수 있다. Collections를 향상된 for문으로 돌리면 컴파일러가 Iterator를 이용하는 방법으로 바꿔서 컴파일한다. (즉, 명시적으로 Iterator를 이용하는 것과 동일하다.) 일반 배열의 경우에는 성능차이가 많이 날 수 있다.
[JAVA 네트워크] JAVA는 다른 언어에 비해 네트워크 기능이 뛰어난다. 그 외에도 다양한 API가 많은 고수준의 언어이다. 1. InetAddress -> 호스트의 IP주소를 비롯한 네트워크상의 정보를 얻어오는 클래스 입니다. ex) [MainClass.java] public class MainClass { public static void main(String[] args) { new InetAdressEx(); } } [InetAdressEx.java] import java.net.InetAddress; import java.util.Scanner; public class InetAdressEx { Scanner scanner; public InetAdressEx() { System.out.pr..
[JAVA 그래픽] JAVA GUI(Graphic User Interface)란 아이콘처럼 사용자가 사용하기 편리하게 그래픽 요소를 가미하여 컴퓨터를 사용하기 쉽게 만들어 놓은 것입니다. 반대의 개념으로 CUI(Character User Interface)가 있다.(ex-dos) 1. AWT 컴포넌트 -> AWT는 JAVA에서 그래픽 요소를 만들기 위한 컴포넌트들 이다. 예를 들어 버튼, 체크박스 등 입니다. container { 버튼, 텍스트필드, 체크박스, container {버튼, 텍스트필드....} } 2. Button 컴포넌트 ex) [MainClass.java] public class MainClass { public static void main(String[] ages) { MakeBtn ..
[JAVA 스레드] 멀티 프로세스 : 컴퓨터가 여러 가지 일을 동시에 하고 있는 것을 뜻함. 스레드(멀티스레드) : 위에서 말한 하나의 프로세스에서 다시 여러 가지 일을 하는 것을 뜻 합니다. 예를 들어 파일을 전송하면서 채팅을 하고 있다. 동일한 채팅프로그램에서 파일전송과 채팅을 동시에 하고 있는 것 입니다. 채팅 프로그램 프로세스 -> 파일전송 스레드 -> 채팅 스레드 JAVA는 기본적으로 멀티스레드를 지원 하고 있습니다. 스레드는 두 가지 형태로 존재 합니다. 방식1) 객체 하나를 n개의 스레가 공유 하는 방식 스레드0 -> 스레드1 -> 객체0 스레드2 -> 방식2) 객체 하나당 하나의 스레드가 존재하는 방식이다. 스레드0 -> 객체0 스레드1 -> 객체1 스레드2 -> 객체2 # 멀티 스레드 문..
[입출력(I/O)] I/O란 입력(input)과 출력(Output)을 뜻합니다. 컴퓨터한테 입력하는 것은 input이며, 컴퓨터가 어떤 것을 출력하는 것을 output이라고 합니다. input : 파일 데이터를 읽는다, 키보드의 데이터를 읽는다, 네트워크상의 데이터를 읽는다. output : 파일에 데이터를 쓴다, 모니터에 데이터를 쓴다(출력), 네트워크상에 데이터를 쓴다(전송) [InputStream, Reader & OutputStream, Writer] # InputStream, OutputStream : 1byte 단위 (실제로 많이 쓰임) -> 이미지, 동영상등의 데이터에 주로 사용 # Reader, Writer : 2byte 단위 -> 문자열에 주로 사용 1. InputStream - Inpu..
[JAVA Collections] 컬렉션이란, 우리말로 쉽게 말해서 자료구조 입니다. 더 쉽게 말하면 배열입니다. 어려운 자료구조형의 내부를 공부할 필요 없이 그냥 편하게 사용하면 된다. JAVA에서는 다양한 자료구조형을 제공하고 있다. 다양한 자료구조형이 제공되는 이유는 데이터의 성질에 따라서 데이터를 관리(정리)해야 하는 방식이 다르기 때문입니다. 여기서 한가지 중요한 것은 자료구조형안에서는 객체의 레퍼런스만을 관리한다. 1. List계열 컬렉션 클래스 -> 자료구조중 아마도 가장 많이 사용되고 쉽게 사용할 수 있는 자료구조형이 List계열이 아닐까 합니다. List는 배열과 비슷하지만, 배열의 단점을 보완 하였습니다. List는 처음 만들 때 크기를 고정하지 않아도 됩니다. * arrayList랑 ..
[예외처리] 몇 달 동안 실험을 기울여 만들어 놓은 프로젝트가 단순한 어떤 이유로 작동을 하지 않는다면 문제가 됩니다. 그러므로 예외의 필요서이 필요한데 그것은 어느 한 부분에서 예외가 발생하더라도 계속해서 프로그램이 동작되도록 하는데 목적이 있습니다. 1. try ~ catch try { // 문제가 발생할 수 있는 로직을 기술 } catch (Exception e) { // Try{}안에서 문제가 발생했을 때 대처방안을 기술 } * catch문에 예외처리를 여러 개 할 수 도 있다. try { } catch (ArrayIndexOutOfBoundsException a) { } catch (NumberFormatException n) { } catch (Exception e) { } * 또한 try ~..