본문 바로가기

컴퓨터150

[Refactoring] 코드를 리팩토링하자!/전략 패턴 적용 코드 리팩토링 KDT 팀단위 프로젝트가 끝나고 약간의 시간이 흘렀다. 프로젝트 중에도 스스로 코드를 너무 더럽게 짰다는 후회가 항상 존재했으나 시간에 쫓기는 일정 때문에(변명이겠지만) 기능만 하는 코드를 대충 작성하고 넘어간 바 있다. 이는 팀원들도 마찬가지였다. 이로 인해 서로의 코드를 리뷰하는 것은 거의 불가능에 가까웠고 이미 구현되어있는 메서드를 팀원이 가져다 쓰는 것에도 위험이 따랐다. 해당 코드의 동작이 한 눈에 들어오지 않으며, 코드가 제대로 작성되었는지, 에러는 없는지 의문이 있기 때문이다. 테스트 코드 안전하지 않은 코드에 대한 문제를 항상 상기하고 있었기 때문에, 드디어 코드를 리팩토링하는 시간을 가지고자 한다. 우선 리팩토링 하기 전 내가 짠 코드의 동작이 일정한 결과를 낳게 하기 위한.. 2023. 11. 16.
[JAVA] 스트림을 사용해보자 자바 스트림을 사용하자! 자바 스트림(Stream)은 자바 8부터 도입된 기능으로, 컬렉션을 함수형 프로그래밍 스타일로 처리할 수 있는 강력한 기능을 지원한다. 스트림은 데이터의 흐름이다. 배열, 컬렉션 등에 여러가지 함수를 적용, 조합하여 원하는 결과를 얻을 수 있게 된다. 스트림의 특징 스트림은 데이터 소스를 변경하지 않는다. 스트림은 데이터 소스로부터 데이터를 읽기만 할 뿐, 데이터 소스를 변경하지 않는다. 스트림은 일회용이다. 스트림은 한번 사용하면 닫혀서 재사용이 불가능하다. 지연 처리(Lazy invocation)_ 스트림의 최종 결과는 최종작업(최종 연산)이 이루어 질 때 계산된다. 즉, 예를 들어 스트림 내부에서 외부의 데이터를 변경했을 경우, 해당 변경하는 함수는 스트림의 최종작업이 이뤄.. 2023. 11. 9.
[Network] DHCP란? DHCP 임대 알아보기 DHCP란? DHCP(Dynamic Host Configuration Protocol)란 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정 등을 클라이언트에게 자동으로 할당해주는 프로토콜이다. 즉 자동으로 컴퓨터에 네임 서버 주소, 게이트웨이 주소, IP주소를 할당해주고 해당 클라이언트는 일정 기간 동안(예 1시간) 해당 요소들을 임대하는 식으로 동작한다. 즉 DHCP는 IP를 필요로하는 컴퓨터에 자동으로 IP를 할당해주고, 해당 IP를 사용하지 않을 경우 반환받아 다른 컴퓨터가 사용할 수 있도록 한다. DHCP서버는 보통 라우터에 탑제된다. 인터넷 공유기도 DHCP 서버 역할을 한다. DHCP장점 고정 아이피에 대비해 IP풀을 유연하게 사용 가능하다. IP가 자동으로 할당되어 IP 충돌을 막을.. 2023. 11. 8.
[Network] TCP와 TCP 세그먼트의 구조 TCP에 대하여 TCP는? TCP는 하나의 프로세스와 하나의 프로세스 간의 통신을 담당한다.(point to point) 신뢰성있고 순서가 있는 방식이다. 즉 데이터가 손실되지 않도록 보장하고 전송되는 데이터는 수신 측에서도 유지된다.(reliable, in-order byte) 한 번에 여러 데이터를 보내게 된다. 데이터 스트림이 세그먼트로 분할되어 전송된다.(pipelined) 두 개의 각 네트워크는 sender와 receiver역할을 모두 하게 된다.(full duplex data) sender는 receiver가 소화 가능한만큼한 세그먼트를 전송한다 내부 네트워크(프로세스 사이)가 받아들일 수 있는 만큼만 세그먼트를 전송한다(congetion control) TCP 세그먼트 구조 TCP는 데이터 .. 2023. 11. 2.