목록전체 글 (140)
종식당
평문을 암호화하고 복호화하는 경우 키를 사용할 수 있다. 이때, 암복호화에 사용하는 키가 동일한 경우 대칭키 암호화 (Symmetric Key Cryptography)라고 하며, 암복호화에 사용하는 키가 서로 다른 경우를 비대칭키 암호화 혹은 공개키 암호화 (Asymmetric Key Cryptography)라고 한다. 대칭키 암호화는 비대칭키 암호화에 비해 속도가 빠르다고 알려져 있다. 하지만, 대칭키를 교환하는 과정에서 탈취 위험성이 존재할 수 있다. 또한, 대칭키 암호화 방식에서는 각 통신 참여자 쌍마다 다른 키가 필요할 수 있는데, 이 경우 통신 대상이 많아질수록 대칭키의 수가 많아지므로 키 관리가 복잡해질 수 있다. 비대칭키 암호화에는 공개키와 개인키가 존재한다. 일반적으로 이 방식에서는 송신자..
GC(Garbage Collection)는 자바의 메모리 관리 방법의 하나이며, JVM의 힙 영역에서 동적으로 할당했던 메모리 중에서 필요 없어진 객체를 주기적으로 제거하는 것을 의미한다. GC는 특정 객체가 사용 중인지 아닌지 판단하기 위해서 도달 가능성(Reachability)이라는 개념을 사용 한다. 특정 객체에 대한 참조가 존재하면 도달할 수 있으며, 참조가 존재하지 않는 경우에 도달할 수 없는 상태로 간주한다. 이때, 도달할 수 없다는 결론을 내린다면 해당 객체는 GC의 대상이 된다.도달 가능성은 어떻게 판단하나요? 🤓힙 영역에 있는 객체에 대한 참조는 4가지 케이스가 존재하는데, 힙 내부 객체 간의 참조, 스택 영역의 변수에 의한 참조, JNI에 의해 생성된 객체에 대한 참조(네이티브 스택 ..

🤠 TDD (Test Driven Development)테스트 주도 개발은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스이다. 개발자는 먼저 요구상항을 검증하는 자동화된 테스트 케이스를 작성한다. 그 이후에는 테스트 케이스를 통과하기 위한 최소한의 코드를 생성하고, 작성한 코드를 리팩토링하는 과정을 반복한다.테스트 주도 개발 사이클에는 다음과 같이 몇 가지 의식할 부분들이 존재한다.일단 간단하고, 해보기 쉬운 것을 먼저 시도한다.실패하는 테스트를 통과하기 위해서는 최소한의 코드를 작성해야 한다.테스트를 점점 구체화할수록 프로덕션 코드는 점점 범용적으로 된다. (커버 가능한 케이스가 점점 많아진다.)실패하는 테스트가 있을 때만 프로덕션 코드를 작성한다.실패를 나타내는 데 충분한 정도의 테스..

🥇 응집도 (Cohesion)응집도는 모듈에 포함된 내부 요소들이 연관되어 있는 정도를 나타낸다. 🥈 결합도 (Coupling)결합도는 의존성의 정도를 나타내며, 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는 지를 나타낸다. 응집도와 결합도는 변경과 관련이 깊으며, 일반적으로 좋은 설계란 높은 응집도와 낮은 결합도를 가진 모듈로 구성된 설계를 의미한다. 객체의 행동에서 객체가 알고 있는 모든 정보를 사용하거나, 변경이 존재하는 경우 특정 모듈만 수정되면 응집도가 높다고 판단할 수 있다. 또한, 특정 모듈을 변경하는 경우에 다른 모듈도 변경해야 하는 상황에서는 결합도가 높다고 판단할 수 있다.캡슐화는 무엇인가요? 😀객체 내부의 세부적인 사항을 감추는 것을 캡슐화라고 한다. 캡슐화의 목적은 변경하기 ..

CAP 정리는 분산 데이터베이스 시스템이 CAP 중 2개의 속성만을 제공할 수 있다는 이론이다. CAP정리에 따르자면, 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance)등 3가지 속성을 모두 만족하는 분산 데이터베이스 시스템은 존재하지 않는다.각 속성에 대해서 설명해 주시겠어요? 🤔일관성 Consistency일관성은 모든 클라이언트 요청은 어느 노드에 연결되어도 같은 데이터를 볼 수 있음을 의미한다.가용성 Availability가용성은 노드 일부에 문제가 발생하여도 시스템은 클라이언트의 모든 요청에 유요한 응답을 전해줄 수 있어야 한다.분할 내성 Partition Tolerance분할 내성은 노드 사이에 통신이 불가능한 상황에서도 시스템이..