반응형
제육's 휘발성 코딩
반응형
[MSA] Spring Cloud란? 등장 배경 및 구성도
🔷 Spring/MSA 2022. 10. 24. 02:10

Spring Cloud 란? https://spring.io/projects/spring-cloud Spring Cloud Spring Cloud is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project. Go here to r spring.io 스프링 클라우드란 프록시, 서비스 검색, 서비스간 호출 등 여러 공통 패턴을 분산 시스템에서 동작할 수 있도록 ..

JWT 장단점 정리
CS/네트워크 2022. 10. 23. 23:53

JWT란? JWT 사이트 주소 : https://jwt.io/ JWT는 Json Web Token으로 JSON 객체의 정보를 토큰 기반의 인증 시스템을 이용하여 안전하게 정보를 전송하는 방법이다. JWT는 Base64로 인코딩되는 구조를 갖고 있다. 정리에 앞서 Base64 인코딩에 대해서 다뤄보자. Base64 인코딩 Base64는 말 그대로 64진법으로, ASCII 문자들을 표시할 수 있는 가장 큰 진법이다. (참고로 ASCII 코드에서 화면에 표시되는 문자는 128개가 되지 않는다.) 즉, Binary 데이터를 Text로 변환하는 인코딩 기능 중 하나로, 공통 ASCII 영역의 문자로 이루어진 문자열로 변환해주는 기능이다. 인코딩된 문자열은 알파벳 대소문자와 숫자, 그리고 기호 64개로 이루어지며 ..

[Algorithm] 14890 - 경사로 (JAVA)
🔷 Java/Algorithm 2022. 10. 3. 21:00

https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 성능 요약 메모리: 13116 KB, 시간: 120 ms 알고리즘 분류 구현(implementation) 문제 설명 크기가 N×N인 지도가 있다. 지도의 각 칸에는 그 곳의 높이가 적혀져 있다. 오늘은 이 지도에서 지나갈 수 있는 길이 몇 개 있는지 알아보려고 한다. 길이란 한 행 또는 한 열 전부를 나타내며, 한쪽 끝에서 다른쪽 끝까지 지나가는 것이다. 다음과 같은 N=6인 경우 지도를 살펴보자. 이때, 길은 총 2N..

article thumbnail
[이펙티브자바] 아이템19 : 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라
Book/Effective Java 2022. 8. 7. 18:16

상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야 한다. 클래스의 API로 공개된 메서드에서 클래스 자신의 또 다른 메서드를 호출할 수도 있다. 또한 그 메서드가 재정의 가능 메서드(protected, public 중 final이 아닌 모든 메서드)라면 그 사실을 호출하는 메서드의 API 설명에 적시해야 한다. API 문서의 메서드 설명 끝에 종종 Implementation Requirements로 시작하는 절이 있다. 이 절은 그 메서드의 내부 동작 방식을 설명하는 곳이다. 이 절은 메서드 주석에 @implSpec 태그를 붙여주면 자바독 도구가 생성해준다. 해당 설명에 따르면 iterator 메서드..

article thumbnail
[이펙티브 자바] 아이템 18 : 상속보다는 컴포지션을 사용하라
Book/Effective Java 2022. 7. 29. 17:08

상속보다는 컴포지션을 사용하라 상속은 코드를 재사용하는 강력한 수단이지만, 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 된다. 같은 프로그래머가 통제하는 패키지 안에서 상속한다면 안전할 수 있지만, 다른 패키지의 구체 클래스를 상속하는 것을 위험하다. (인터페이스 상속이 아닌 클래스 상속) 상속의 문제점 상속은 상위 클래스의 설계에 따라 캡슐화를 깨뜨리는 등의 하위 클래스에 문제를 일으킬 수 있다. 예를 들어 HashSet을 사용하는 프로그램에서 성능을 높이기 위해 처음 생성된 이후 원소가 몇개 더해졌는지 등의 기능을 추가했다고 생각해보자. import java.util.Collection; import java.util.HashSet; import java.util.List; public cla..

article thumbnail
[이펙티브 자바] 아이템 17 : 변경 가능성을 최소화하라
Book/Effective Java 2022. 7. 27. 17:56

변경 가능성을 최소화하라 String, BigInteger, BigDecimal 등은 자바 플랫폼 라이브러리에서 불변 클래스로 정의 된다. 불변 클래스란 인스턴스 내부 값을 수정할 수 없는 클래스를 의미한다. 불변 클래스는 가변 클래스보다 설계 및 구현이 쉬우며, 오류가 생길 여지가 적고 훨씬 안전하다. 불변 클래스 생성 규칙 객체의 상태를 변경하는 메서드(Setter)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 상속을 막는 대표적인 방법은 클래스를 final로 선언하는 것이며, 다른 방법도 있다. 모든 필드를 final로 선언한다. 시스템이 강제하는 기능을 이용해 설계자의 의도를 드러낸다. 새로 생성된 인스턴스를 동기화 없이 다른 스레드로 건네도 문제없이 동작하게끔 보장하는 데도 필요하다. ..

article thumbnail
[이펙티브 자바] 아이템 16 : public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라
Book/Effective Java 2022. 7. 27. 17:55

public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 class Point { public double x; public double y; } 다음과 같은 클래스 설계는 퇴보한 클래스이다. 이런 클래스는 데이터 필드에 직접 접근할 수 있기 때문에 캡슐화의 이점을 제공하지 못한다. API를 수정하지 않고는 내부 표현을 바꿀 수 없고, 외부 접근이 가능하기 때문에 불변식을 보장할 수 없으며, 외부에서 필드에 접근할 때 부수 작업을 수행할 수도 없다. class Point { private double x; private double y; public Point(double x, double y) { this.x = x; this.y = y; } // Getter & Setter } Ge..

article thumbnail
[이펙티브 자바] 아이템 15 : 클래스와 멤버의 접근 권한을 최소화하라
Book/Effective Java 2022. 7. 27. 14:41

클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트는 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 잘 숨긴 컴포넌트이다. 모든 내부 구현을 완벽히 숨기고, 구현과 API를 깔끔히 분리하는 것이 중요하다. 이를 정보 은닉 혹은 캡슐화라고 한다. 정보 은닉의 장점 여러 컴포넌트를 병렬로 개발할 수 있기 때문에 시스템 개발 속도를 높인다. 디버깅과 교체에 용이하여 시스템 관리 비용을 낮춘다. 다른 컴포넌트에 영향을 주지 않기 때문에 제작 난이도를 낮추고 성능 최적화와 SW 재사용에 도움을 준다. 접근 제어자 자바에서는 정보 은닉을 위해 접근을 제어하는 메커니즘을 제공한다. public : 모든 곳에 접근할 수 있다. (공개 API - 영원한 관리 필요) protected : package-pri..

반응형
반응형