no image
[Spring] Spring Security
Spring Security Spring 기반의 애플리케이션 보안을 담당하는 스프링 하위 프레임워크 💡 Warm Up Principal : 리소스에 접근하는 대상 Authentication : 인증 - 사용자가 본인이 맞는 지 확인 who are you? Authorization : 인가 - 사용자가 리소스에 접근할 수 있는지 확인 what are you allowed to do? Web Security 클라이언트는 애플리케이션에 요청을 보내고 컨테이너는 요청 URI의 경로를 기반으로 어떤 필터와 서블릿을 적용할 지 결정한다. 세부적으로는 위와 같은 구조로 매핑되는 데, Spring Security의 내부 필터의 사용에 대해서 프로그래머가 관여할 필요는 없다. 애플리케이션내 모든 @Bean 에 Sprin..
2022.05.19
no image
[Java] 웹 개발 개론
Web HTTP(Hypertext Transfer Protocol) HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜 URI(Uniform Resource Identifier) 특정 리소스를 식별하는 통합 자원 식별자 HTML(Hyper Text Markup Language) 하이퍼 미디어를 표현하기 위한 언어 REST(Representational State Transfer) Client - Server Client : 데이터를 사용자에게 표시하거나 이에 대한 후속 작업을 처리한다. Server : 데이터를 저장 및 조작하고 효율적인 방식으로 클라이언트에게 제공한다. Stateless 모든 정보는 요청을 통해서만 이루어지며 요청에 대한 정보는 서버에 저장하지 않는다. Cach..
2022.05.17
no image
[Java] 객체 지향과 디자인 패턴
객체 지향의 4대 특성 1. 캡슐화 객체의 속성을 보호하기 위해 사용 Method 설계 속성이 선언되었다면 해당 속성을 변경하는 method는 반드시 선언해야한다. Getter / Setter Method CRUD Method Business Logic Method 인스턴스 생명 주기 처리 Method 인스턴스 영구성 관리 Method 무결성 캡슐화 코딩 : 변수는 private 로 선언하고 메서드는 public으로 선언한다. Getter / Setter 를 제외하고는 매개변수를 Validation 한 후에 메서드를 수행한다. 2. 상속 속성의 상속이 아닌 하위 개체로 내려갈수록 구체화된다. 프로그램 구조 이해도 최상위 클래스의 구조를 통해 하위 클래스의 동작을 이해할 수 있다. 재사용성 및 유지보수성 ..
2022.05.09
no image
[Mac/Linux] Mac에서 SSH 접속 편하게 하기
Mac에서 ssh 접속 방법 일반적인 명령어 형식 ssh -i {키 파일 경로} ec2-user@{ec2 퍼블릭 IPv4 주소 or 퍼블릭 IPv4 DNS} ssh 명령어의 옵션들 ssh [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-..
2022.05.04
[Spring] DI(Dependency Injection)
💡 클린코드 작성 원칙 응집도는 높이고 결합도는 낮춘다. 응집도(Cohesion) : 모듈 내부) 구성요소 간의 연관도 응집도가 낮다? → 각 모듈이 모두 따로 놀고 있으며 단순히 모두 다른 역할을 수행하는 모듈들을 한데 모아놓기만 함 결합도(Coupling ) : 모듈 외부) 모듈간의 상호의존성 결합도가 높다? → 각 모듈이 비슷한 기능을 수행할 가능성이 높음 DI(Dependency Injection) 의존성 주입 class Feed() { ... } class Meet extends Feed { ... } class Bone extends Feed { ... } class Puppy { private Feed feed; public Puppy() { this.feed = new Meet(); // ..
2022.05.04
no image
[Java] 자료 구조
자료구조(Data Structure) 효율적인 로직을 짜기 위한 기본 토대 개발하려는 시스템에 가장 효율적인 자료구조를 선택하는게 중요하다. 선형 자료구조 배열(Array) 자료의 물리적 위치와 논리적 위치가 같다. 인덱스 연산에 의해 배열 내 요소를 바로 꺼낼 수 있다. 산술적 연산이 빠르다. 배열의 개수에 의존성을 갖는다. 연결 리스트(Linked List) 노드가 필요할 때마다 메모리를 할당 받고 자료는 링크를 통해 연결된다. 자료의 물리적 위치와 논리적 위치가 다를 수 있다. 자료뿐만 아니라 다음 요소를 가리킬 링크를 가진다. Ex. C, C++ 의 포인터 데이터 수정에 따라 링크 연결만 생성 또는 해제해주면 되기 때문에 배열에 비해 수행속도가 적게 든다. 스택(Stack) Last In Firs..
2022.05.03
no image
[Java] 객체 지향 프로그래밍(3)
상속 (extends) 이미 구현된 클래스보다 더 구체적인 기능을 구현할 때 사용 protected 접근제어자를 이용하여 하위 클래스에서도 상위 클래스의 멤버 변수에 접근이 가능하도록 한다. 하위 클래스에서 상위 클래스를 상속받으면 하위 클래스 생성자에서 먼저 상위 클래스 생성자를 호출한다. 상속을 이용한 멤버십 시나리오 구현 | 📄 Customer.java /** * 일반 고객 클래스 */ public class Customer { // protected : 하위 클래스 접근가능 protected int customerId; protected String customerName; protected String customerGrade; int bonusPoint; double bonusRatio; pu..
2022.04.26
no image
[Java] 객체 지향 프로그래밍(2)
Static 변수 힙 메모리 : 필요할 때마다 allocation 받아서 처리하는 동적 메모리 영역 스택 메모리 : 함수가 호출될 때마다 함수 내에서 사용하는 지역 변수 메모리 영역 데이터 메모리(constant) : 프로그램이 로드 될 때부터 공유되어 사용되는 메모리 영역 | 📄 Employee.java public class Employee { public static int serialNum = 1000; private int employeeId; private String employeeName; private String department; // 사원이 한명 추가될 때마다 사번 증가 public Employee() { serialNum++; employeeId = serialNum; } pub..
2022.04.19
no image
[알고리즘 일기 - 파이썬] 235. 곱셈
1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net Baekjoon 1629. 곱셈 [파이썬(python) - 분할정복] 자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. 출력 첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다. 입력 예시 10 11 12 출력 예시 4 ❧ 정답 🔎IDEA) 분할정복 완전탐색 풀이 : 시간초과 발생 짝수 일 경우..
2022.04.17