본문 바로가기

CS study

(47)
SOLID 5원칙에 대해 java에서 항상 나오던 기본 원칙 중 하나인 SOLID를 예시를 들어 설명하고자 한다. 개념 자체는 알고 있지만 구체적인 예시를 떠올려 보다 생각나 포스팅하였다. SRP(Single Responsibility Principle) : 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다는 원칙. 개인적으로 비교적 가장 쉬운 개념이라 생각이 든다. 객체지향적으로 만들어진 모든 Class들은 각각의 역할에 맞는 메서드, 변수, 책임 등을 가져야 한다. 로그인 클래스가 존재한다면 이 클래스는 로그인에 관련된 기능만을 가져야 한다. 수정, 삭제, 확장 역시도 로그인에 관련된 내용일 것이다. OCP(Open - Closed Principle) 개방 - 폐쇄 원칙 기능의 개방(확장)에는 열려 있고, 변경에는 닫혀..
[해시 테이블].. equals와 hashcode를 사용한 객체 비교 탐구(유익) 장장 3.5시간동안 고민하고 찾아봤던 나의 기록을 정리하고자 한다. 알고리즘 문제를 풀던 도중, 의문이 생겨 레퍼런스를 조사하고 정리한 내용이다. 가장 큰 의문의 시발점은 다음과 같았다. "기본형 및 String은 ==나 equals로 참 거짓을 판단할 수 있는데, 내가 만든 Class 객체들도 이걸 사용할 수 있을까?" 결론부터 말하자면 가능하다. Object에서 기본적으로 지원하는 equals 메서드를 자체적으로 Override하면 된다. HashSet -> HashMap -> contains~() -> getNode() -> equals and Hash을 통해 비교하기 때문 내가 궁금했던 HashSet이나 HashMap의 자료구조에서 사용하는 contains도 결국에는 equals와 hashcode..
[JIRA] 지라에 대해 (About Jira) 개요 이번 프로젝트에서 다시 한번 지라를 다루게 되었다. 기존 ssafy의 gitlab과는 달리, jira 공식 사이트에서 계정을 생성하여 운영해 볼 생각이다. (물론 크게 다르지는 않다. 호스팅의 차이만 있을 뿐) 이 과정에서 먼저 지라에 대해 정리해보고자 한다. 내가 사용했던 방법 ( The way I used it) 지라를 사용하는데 공식 방법이나 획일화된 방법이 있는 것은 아니라고 생각한다. 나는 지금까지 이렇게 사용하였다. 지금까지의 지라 사용법은 다음과 같았다. 1. 스프린트 계획 스크럼 방법론을 따라, 주차별 스프린트 계획을 세웠다. 이는 월요일 아침 즈음에 시작해서, 오전 시간을 활용해 회의하고 이번 주차에 해야 할 목표와 세부 사항을 설정하였다. 1. a sprint plan Follow..
인터셉터와 AOP의 차이, 인터셉터의 추가 개념 개요 이번 프로젝터에서 prehandler를 사용하여 인터셉터 기능을 사용했었고, 로그 수집을 위해 포인트컷을 사용하여 AOP(로그 수집)의 기능도 구현해봤다. 문득 드는 생각이 두 기능이 로직상 유사해 보이는데, 똑같은 거 같은데 굳이 인터셉터를 쓰는 이유가 뭘까? 정확히 말하면 인터셉터의 기능을 AOP가 전부 할 수 있지 않나? 싶어 조사해보았다. 그림으로 보는 도식도 일단 필터는 이전에 학습했던 것처럼, 스프링 영역 밖에서 서블릿의 입출력을 관리한다. Dispatcher Servlet의 호출 이전/이후로 인터셉터는 동작한다.AOP의 경우 애플리케이션 전방에 걸쳐 다양하게 작업을 적용할 수 있는 것을 확인할 수 있다. 인터셉터의 주요 메소드 preHandle: 이 메소드는 컨트롤러(핸들러) 메소드가 ..
[GIT] 대용량 파일을 점진적으로 받아올 때. (--depth) https://eunjinii.tistory.com/128 RPC failed; curl 18 transfer closed with outstanding read data remaining 문제해결 방법 문제상황 git clone을 받으려고 하는데 "RPC failed; curl 18 transfer closed with outstanding read data remaining" 라는 문구가 뜨면서 클론이 안 되고 있다. 원인 규모가 큰 레포지토리를 클론하려고 하는데 로컬에 eunjinii.tistory.com 해당 블로깅을 참고하였다. 문제 상황 최종 파일을 정리하고, 발표 대본과 데이터를 넣던 도중 팀원이 최종 브랜치에 많은 양의 대용량 데이터를 넣는 일이 있었다. 이 이후 pull이나 파일을 받아오..
AOP의 개념과 적용하기 개요 https://csg1353.tistory.com/90 위의 포스팅처럼 elasticsearch의 logstash 로그를 수집하기 위해 AOP의 개념을 사용해 로그를 수집해보려 한다. 이를 위해서는 먼저 AOP에 대한 개념을 학습해야 할 것이다. AOP란 (Aspect-Oriented Programming) 정의 공통 기능(예: 로깅, 보안)을 핵심 비즈니스 로직에서 분리하고, 이러한 공통 기능을 필요한 위치에 적용 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 한 것. AOP는 기존 OOP의 객체 지향적인 프로그래밍이 아닌, Aspect(관점)을 기준으로 프로그래밍하는 기법이다. 공통 기능의 관심 사항과 핵심 관심 사항 등, 객체지향으로는 분..
[2주차 스터디 노트] 쓰레드, 멀티 프로세스/쓰레딩, 프로세스 상태 변화 프로세스 상태 프로세스의 수행 상태 변화는 운영 체제의 프로세스 관리의 중요한 부분이다. 운영 체제는 프로세스의 생명 주기 동안 여러 가지 상태를 가지며, 프로세스의 현재 상황과 다음에 수행해야 할 작업을 나타낸다. OS에서는 이 상태를 PCB를 통해 인식하고 관리한다. 새로 생성된 상태 (New) 프로세스가 생성되고 초기화되는 단계이다. 프로세스는 프로세스에 필요한 초기 리소스와 설정을 할당받있지만, 아직 실행 준비가 완전히 되지 않은 상태. -> 프로세스가 필요한 모든 리소스를 할당받고, 실행을 위한 준비가 완료되면 "준비 상태"로 전환된다. 여기서 할당받을 리소스들은 다음과 같다. - 프로세스 식별자 (PID): - 프로세스 제어 블록 (PCB): - 프로세스 실행을 위한 최소한의 메모리 공간 - ..
[2주차 스터디 노트] 프로세스, 프로세스의 메모리 구조, 문맥 교환 프로그램과 프로세스 프로그램은 저장장치에 존재하는 컴파일된 코드의 집합이다. 이것이 실행되기 전까지는 그저 저장장치에 존재되는 데이터에 불과하지만, OS에서 명령을 받아 메모리에 적재하게 되면 그때부터는 운영체제의 관리를 받으며 CPU 자원을 통해 동작하는 '프로세스' 가 된다. 프로세스는 CPU 자원을 사용하고 운영체제의 관리를 받으며, 프로그램 코드를 실제로 실행하는 동적인 개체 이중 눈에 보이지 않는 백그라운드 프로세스를 유닉스 체계의 운영체제에서는 데몬(daemon)이라고 부르고, 윈도우 운영 체제에서는 서비스라고 부른다. 프로그램은 어떤 과정을 거쳐 메모리에 적재되는가? 프로그램이 메모리에 적재되는 일반적인 과정 1. 프로그램 실행 요청: 특정 프로그램을 실행하라는 명령을 운영체제에 전달 2. ..