본문 바로가기

전체 글

(74)
[Daily] 3월 31일 데일리 과제 Q. 프로세스와 스레드의 차이에 대해 설명해 주세요 A. 프로세스(Process)와 스레드(Thread)는 컴퓨터에서 실행되는 여러 작업들을 관리하기 위한 용어입니다. 프로세스는 운영체제로부터 자원을 할당받아 실행 중인 프로그램의 인스턴스를 의미합니다. 즉, 프로그램을 실행하기 위한 메모리, CPU 시간, 파일, 네트워크 연결 등의 시스템 자원을 할당받고, 각각 독립된 메모리 영역을 가지고 실행됩니다. 프로세스는 다른 프로세스와 독립적으로 실행되며, 프로세스 간 통신(IPC)을 통해 서로 통신할 수 있습니다. 반면에 스레드는 프로세스 안에서 실행되는 작은 실행 단위를 의미합니다. 즉, 스레드는 프로세스 내에서 동시에 실행되는 작업 단위입니다. 스레드는 부모 프로세스의 자원을 공유하며, 프로세스 내에서 다..
[Daily] 3월 30일 데일리 과제 Q. List, Set, Map, HashMap의 차이에 대해서 설명해주세요. A. 네개의 타입 모두 컬렉션 프레임워크에 속하는 인터페이스와 클래스입니다. 첫번째 List부터 말씀드리자면 List는 순서가 있는 데이터의 집합으로 데이터의 중복을 허용합니다. List는 인덱스를 사용하여 요소에 접근할 수 있으며 List의 종류에는 ArrayList, LinkedList, Vector등이 List 인터페이스를 구현합니다. 두번째로 Set에 대해서 말씀드리자면, Set은 순서가 없는 데이터의 집합으로서 데이터의 중복을 허용하지 않습니다. Set은 값의 존재 유무를 판별하기 위해 equals()와 hashCode() 메서드를 사용합니다. Set의 종류로는 HashSet과 TreeSet등이 Set의 인터페이스를 ..
[Daily] 3월 29일 데일리 과제 Q. MSA(Microservice Architecture)란? A. 소프트웨어를 작은 독립적인 단위인 "마이크로 서비스"로 분할하는 아키텍처 스타일입니다. 마이크로 서비스는 자체 데이터 저장소, 비즈니스 로직 및 인터페이스를 가지며, 독립적으로 배포 될 수 있습니다. 이는 더욱 높은 확장성과 유연성을 제공하며, 애플리케이션의 일부가 많은 부하를 처리하는 경우 해당 마이크로 서비스만 수평적으로 확장시킬 수 있습니다. 따라서 마이크로 서비스 아키텍처는 애플리케이션의 유지 보수성과 확장성을 향상 시킬 수 있고 개발자들은 자신이 담당하는 서비스에 집중할 수 있으므로 빠른 개발 및 배포가 가능합니다. 그러나 아키텍처를 구현하는 것은 매우 복잡하고 서비스 간의 통신과 일관된 데이터 관리등의 극복해야하는 과정이 따..
[Daily] 3월 28일 데일리 과제 Q. DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요. A. 의존성 주입은 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로, 객체 간의 결합도를 낮추어 유지보수성과 확장성을 높일 수 있습니다. 의존성 주입은 크게 3가지 방식으로 구현할 수 있습니다. 첫 번째는 생성자를 이용한 방식으로, 생성자를 통해 의존하는 객체를 주입하는 방식입니다. 두 번째는 setter 메소드를 이용한 방식으로, setter 메소드를 통해 의존하는 객체를 주입하는 방식입니다. 마지막으로는 인터페이스를 이용한 방식으로, 인터페이스를 구현한 클래스를 주입하여 객체 간의 결합도를 낮추는 방식입니다. Q. DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요? A. 첫번째 이점은 검..
[Daily] 3월 27일 데일리 과제 Q. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. (알고있는 원칙이나 키워드를 언급해주세요) A.프로그래밍 패러다임 중에 하나로, 현실 세계의 개념들을 프로그래밍에 반영하여 코드의 재사용성과 유지보수성, 확장성 등을 개선하고자 하는 목적을 가지고 있습니다. OOP에서는 프로그램을 객체 단위로 분해하여 각 객체가 데이터와 메서드를 포함하는 캡슐화된 독립적인 개체로서 작동합니다. 객체는 클래스를 통해 정의되며, 클래스는 객체를 생성하기 위한 템플릿으로서 객체의 공통적인 속성과 동작을 정의합니다. 그러나 OOP는 코드의 재사용성과 유지보수성을 높이는 장점이 있기는 하지만 객체 간의 상호작용이 많아 질 수록 복잡도가 증가 할 수 있습니다. 따라서 적절한 객체 설계와 디자인 패턴의 적용이 반드시 필요하다고 ..
[TIL] 나의 마흔 일곱 번째 회고록 1. fetch조인 2. static 리포트? 3. 프로젝션? 4. 영속성컨텍스트(벌크연산후에는 영속성컨텍스트 초기화 무조건) 5. 싱글톤 6. 멀티쓰레드 7. Builder 의 역할 오늘은 김영한님 강의를 들으며 쿼리 dsl에 대해서 배웠다. 위에 적어놓은 것들은 강의를 들으면서 한번 찾아봐야겠다 싶은 키워드들만 뽑아보았고 내일은 김영한님 강의를 기반으로 실제 팀프로젝트를 복사해 여러 시도를 해봐야겠다고 생각했다.
[WIL] 나의 열번째 회고록 최종 프로젝트까지 얼마 남지 않았기 때문에 심화 프로젝트에서 부족한 점을 보강하면서 쿼리 DSL이나 jpa심화강의를 다시 들으려고 한다. 내배캠에서 지원해주는 강의 이외에도 요즘 대원들 사이에서 유명한김영한 강의를 개인 사비로 결제했다. 다음 프로젝트에서 부리더 지원을 했기 때문에 팀원들에게 하나라도 도움이 되기 위해서 기본적으로 더 많이 노력해야겠다 싶다. 최종프로젝트 아이디어, 기획 부분을 최소 1주일 이상 잡아먹을텐데 그 시간을 단축하기 위해서 남은 일주일동안 혼자서 아이디어를 여러개 생각해봐야겠다.
[TIL] 나의 마흔 여섯번째 회고록 오늘은 통합 테스트와 단위 테스트에 대한 강의를 들었다. 이번 심화프로젝트 할때도 느꼈지만 생각보다 코드를 작성해서 빌드하고 테스트하는 과정을 반복하는 것이 꽤나 시간을 잡아 먹는 것을 느꼈다. 그러나 이러한 시간을 단축시켜주는 게 CI/CD이다. 테스트의 종류에는 단위테스트/ 통합테스트가 있는데 테스트도 나의 의도에 맞게 쪼개서 진행할 수가 있다. 단위 테스트 : 가장 작은 단위의 테스트 방식. 메서드 단위로 테스트를 수행하고, 의도한 결과값이 나오는지 확인하는 수준 (ex: controller, service, repository… 격리해서 따로따로) 통합 테스트 : 어플리케이션이 정상적으로 동작하는지 확인. 여러모듈을 함께 테스트 (ex: controller 메소드를 호출하면 controller →..