일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UnBuffered channel
- golang
- apollo router
- Kubernetes
- Intellij
- 오블완
- GoF
- 배포 프로세스
- Logrus
- 디자인패턴
- 사설 ip
- 윈도우키보드
- go
- System Design
- goland
- http 413
- body size
- Infra
- intellij ide
- 티스토리챌린지
- Buffered channel
- 컴포지트패턴
- AWS
- GoF 디자인패턴
- 배포 파이프라인
- Golines
- gitops
- 대규모 시스템 설계
- elasticsearch
- notification system
- Today
- Total
목록프로그래밍언어/Java (13)
Fall in IT.
안녕하세요. 오늘은 Base64에 대해서 알아보겠습니다. Base64란?컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다. Base64 동작방식base64는 8bit의 데이터(바이너리)를 6bit의 크기로 표현합니다. 따라서 24bit를 단위로 하여 3개의 문자에서 4개의 문자를 얻게 되는 것입니다. 위와 같이 abc를 base64 인코딩 하여 YWJj를 얻을 수 있게 됩니다. 여기서 6bit의 이진수는 아래의 base64 table을 이용하여 문자로 바꿔줍니다. base64 인코딩 24bit 단위인데 인..
안녕하세요. 오늘은 자바에서 많이 사용되는 this와 super에 대해서 알아보겠습니다.this와 this() 그리고, super와 super()는 맥락은 같지만 조금씩 쓰임새는 다른데요, 이에 대해 알아보도록 하겠습니다. this란?현재 클래스의 인스턴스를 의미합니다.즉, 현재 클래스의 멤버변수를 지정할때 사용합니다.this 사용예제아래와 같이 현재 클래스(ParentClass)의 클래스 변수 mother와 동일한 이름의 파라미터(setMother 메소드)가 들어올 경우, 명확히 구분해 줄 수 있습니다. this()란?현재 클래스에 정의된 생성자를 부를때 사용됩니다. this() 사용예제아래와 같이 ParentClass의 생성자가 2개 있을 경우, 생성자 값이 들어오지 않을 경우 this()메소드를 사..
안녕하세요. 오늘은 스트래티지 패턴(Strategy Pattern)에 대해서 알아보고, 간단한 예제에 적용해 보도록 하겠습니다. 스트래티지 패턴이란?스트래티지 패턴은 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙 등의 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴입니다. (예를들어, 게임 프로그래밍을 할때 게임 캐릭터가 자신이 사용하는 무기를 상황에 따라 변경하고 싶을때 유용합니다.)스트래티지 패턴 설계스트래티지 패턴의 기본 설계는 아래와 같습니다. 스트래티지 패턴의 핵심 전략은 무엇이 변화되었는지를 찾은 후에 이를 클래스로 캡슐화 하는 것입니다. 간단한 요구사항로봇 만들기 - 아톰, 태권V, 선가드 로봇들을 만들어본다. - 각각의 로봇들은 기본적으로 이동기능과 공격기능을 가지고 있다...
안녕하세요. 오늘은 싱글톤패턴(Singleton Pattern)에 대해서 알아보고, 간단한 예제에 적용해 보도록 하겠습니다. 싱글톤패턴이란?싱글톤 패턴을 통해서 하나의 인스턴스만을 생성하고, 사용할 수 있다. (하나의 객체만 생성하고 사용해야 할때, 적용할 수 있는 패턴.) 싱글톤패턴 설계싱글톤 패턴의 기본 설계는 아래와 같습니다. 간단예제) 요구사항시스템에서 스피커에 접근하는 클래스를 개발한다. 스피커 클래스는 하나만 존재한다. 예제 소스Main 클래스 public class Main { public static void main(String[] args) { Speaker speaker1 = Speaker.getInstance(); Speaker speaker2 = Speaker.getInstance..
스프링부트를 사용하여 프로젝트를 만든 후, 실행을 했는데 아래와 같은 에러가 발생했습니다. Exception in thread "main" java.lang.UnsupportedClassVersionError: com/chat/SyChatAppApplication: Unsupported major.minor version 52.0at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader..
안녕하세요. 오늘은 자바에서 Map객체를 정렬하는 방법에 대하여 알아보겠습니다. Map은 기본적으로 key, value로 구성되어 있습니다. key에 의한 정렬과 value에 의한 정렬 두가지를 알아보도록 하겠습니다. Key에 의한 정렬 TreeMap을 사용한다. - TreeMap 은 중복을 허용하지 않고 Key 값을 기준으로 정렬을 해주는 자료구조 입니다. (HashMap 은 내부 hash 값에 따라 키순서가 정해지므로 특정 규칙없이 출력됩니다.)역 정렬 또한 가능합니다. Sample code //메인메소드에서 구현Map hashMap = new HashMap();hashMap.put(1.1,99);hashMap.put(2.2,70);hashMap.put(13.3,89);hashMap.put(7.7,7..
오늘은 java에서 디렉터리 또는 파일 생성하는 방법에 대해서 알아보겠습니다. java.io.File 클래스 사용. 디렉터리 생성boolean mkdir(); //상위의 디렉터리가 존재하지 않을 경우, 디렉터리 생성 못하고 false를 반환 합니다.boolean mkdirs(); //상위의 디렉터리가 존재하지 않을 경우, 상위 디렉터리까지 모두 생성합니다. sample codeFile file = new File("/opt/test/");file.mkdir(); file.mkdirs(); 파일생성boolean createNewFile(); 같은 이름의 파일이 존재하면 false, 존재하지 않고 파일이 생성되면 true를 반환 합니다. 파일 경로가 존재하지 않을 경우 IOException 발생. No su..
오늘은 static 을 잘 활용하는 방법에 대해서 알아보겠습니다. 자주 사용하고 절대 변하지 않는 변수는 final static 으로 선언합니다. - 템플릿 성격의 객체도 static으로 선언하는 것이 성능 향상에 도움이 됩니다. config 파일 정보도 static으로 관리합니다. - 자바 개발을 할때, 무수히 많은 config 정보들이 있는데 매번 객체를 생성할때 호출 하는 것은 매우 비효율적 입니다. static으로 선언하여 클래스가 로딩될때 한번만 값을 가져오도록 해야합니다. 값이 동시에 변경되는 변수의 경우 static 변수로 사용하면 안됩니다. - 동시에 QuerySample의 query변수를 접근할 경우, 데이터가 꼬이는 현상이 발생할 수 있습니다. public class QuerySampl..
오늘은 StringBuffer와 StringBuilder의 차이점에 대해 아주 간단한 내용만 알아보도록 하겠습니다. String 클래스의 특징 불변하는 클래스이다. 즉, 한번 생성되어지면 변할 수 없다. String 클래스의 메소드 subString(), concat() 등 모두 새로운 객체를 생성하여 만들어진다. StringBuffer 클래스의 특징 변하는 클래스이다. append(), insrt(), delete() 등의 메소드를 통하여 StringBuffer 객체가 가지고 있는 문자열을 변경 할 수 있고, 새로운 객체를 생성하지 않고 기존의 문자열을 변경한다.동기화를 지원한다. 즉, 멀티스레딩 환경에서 동기화가 가능하다. (코드를 보면, 각 메소드 별로 synchronized 키워드가 존재한다.)/..
오늘은 jdk 1.5에서 추가된 enum에 대해 알아보겠습니다. enum의 정의 배열 : 서로 연관된 값들의 집합열거형(enumerated type) : 서로 연관된 상수들의 집합 enum의 특징코드가 단순해진다. 인스턴스 생성과 상속을 방지한다. - enum 객체를 new를 통해 인스턴스를 생성을 막아주고, 생성자의 접근제어자를 private으로 설정 하지 않을 시 컴파일 에러가 발생한다. 의미를 명확히 할 수 있다. - class 대신 enum을 사용함으로써 구현 의도를 명확히 나타낸다. 자바의 enum은 C언어의 열거형보다 더 향상된 개념의 열거형으로 값뿐만 아니라 타입까지 관리하기 때문에 컴파일시 오류를 줄일 수 있다. - 아래의 School.MIDDLE 값과 Level.SILVER 를 비교할 경..