전체 글 363

[PS] 백준 1167 트리의 지름 (c++)

https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 오랜만에 알고리즘 트리 문제를 풀어봤습니다. 이 문제는 트리에서 임의의 두 정점 사이의 가장 긴 거리를 출력하는 문제입니다. 입력의 경우 시작 정점(from)이 주어지고, 시작 정점과 연결된 정점(to)과 두 정점 사이의 거리(dist)를 입력으로 받습니다. 더불어 해당 정점에서 입력을 종료하려면 -1을 입력으로 받아야 합니다. 첫 번째로, 우선 임의의 정점에서 가장 거리가 먼 노..

[Spring] Template Method Pattern, Strategy Pattern, Template Callback Pattern

스프링에서 사용되는 디자인 패턴인 템플릿 메서드 패턴, 전략 패턴, 템플릿 콜백 패턴에 대해 알아보려고 합니다. 이들을 적용하는 이유는 좋은 설계를 위해서입니다. 좋은 설계란 요구 부가 기능(핵심 기능의 보조 기능)을 변경하지 않고 핵심 기능만 변경하게 설계하는 것입니다.(중복된 로직을 변경하지 않고, 변하는 것(비즈니스 로직)만 순수하게 바꾸어주는 것) 우선 좋은 설계에 한 발짝 나아갈 수 있는 템플릿 메서드 패턴에 대해 설명드리고 이와 비슷한 기능을 하고 있지만, 템플릿 메서드 패턴의 단점을 보완할 수 있는 전략 패턴, 전략 패턴에서의 템플릿과 콜백 부분을 강조한 템플릿 콜백 패턴까지 설명드리려고 합니다. GOF 템플릿 메서드 패턴 정의 부모 클래스에서의 템플릿을 정의하고, 일부 변경되는 로직을 자식..

Java/Spring 2023.08.09

2023.08.04 성수동 여행일지

오늘은 향수를 구경하러 성수동에 방문했습니다. 예전에 친구 테싯 이솝향수를 써보고, 너무 향이 좋아서 저도 구매할 겸 겸사겸사 놀러 갔습니다. 날씨가 무지막지하게 더워서 갈 때 너무 힘들었습니다. 거리도 정말 멀고, 큰맘 먹고 갔던 거 같네요. 일단 저는 향수를 구매하러 왔기에, 다양한 향들을 맡아보았습니다. 테싯은 원래 인기가 많은 우디향이라고 직원분께서 설명해주시더라고요. 저는 지속성 측면에서는 테싯이 아쉽다고 설명드렸는데, 직원분이 이더시스가 테싯과 비슷하면서도 많은 사람들이 커스텀해서 사용한다고 말씀해 주셨습니다. 에레미아와 이더시스중에서 둘 중 어떤 걸 구매할지 말지 정말 많이 고민했었는데, 결국 이더시스 향수를 구매했습니다. 거리가 멀어 나중에 또 오기 힘들거 같고, 향수는 한 번 사면 오래 ..

일상/여행 2023.08.05

[Spring] DI, IoC 컨테이너

DI, IoC, 컨테이너와 같은 개념들은 Spring Framework의 가장 기본적인 특징입니다. 1. IoC(Inversion of Control, 제어의 역전) 프로그램의 제어 흐름을 프로그래머가 직접적으로 제어하는 것이 아니라, 외부에서 관리하는 것 프로그래머가 객체를 생성할 때, 직접 생성하는 것이 아니라 스프링 컨테이너에서 생성하고 등록된 객체(Bean)를 가져오는 것입니다. 즉, 제어권을 본인이 아닌, 프레임워크(Spring 컨테이너)에게 넘겨줬기 때문에 IoC라는 개념이 도입됐습니다. 2. DI(Dependency Injection, 의존관계 주입) 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고, 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것 Sprin..

Java/Spring 2023.08.03

[Spring] SOLID 원칙에 대해 알아보자

SOLID 원칙이란 좋은 객체 지향 설계를 하기 위한 5가지 원칙입니다. SRP, OCP, LSP, ISP, DIP 총 5가지가 있는데, 이 원칙에 대해 알아보도록 하겠습니다. 1. SRP(Single Responsibility Principle, 단일 책임 원칙) 한 클래스는 하나의 책임을 가져야 하는 원칙 변경이 있을 때, 변경에 대한 파급효과가 적으면 SRP를 준수하고 있다는 것입니다. 2. OCP(Open/Closed Principle, 개방-폐쇄 원칙) 소프트웨어 요소는 확장에는 열려 있어야 되지만, 변경에는 닫혀 있어야 하는 원칙 (다형성) 다형성은 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있어야 하는 개념입니다. 클라리언트를 변경하지 않으면서, 서버의 구현 기능을 ..

Java/Spring 2023.08.03

[Network] IPsec VPN이란?

IPsec(Internet Protocol Security), VPN(Virtual Private Network)은 무엇이고 IPSec VPN은 무엇인지 설명드리겠습니다. IPsec? 인터넷상에서 한 컴퓨터와 다른 컴퓨터가 에서 데이터를 주고받는 방식을 결정하는 인터넷 프로토콜에 암호화와 인증 방식을 추가하여 네트워크에서 안전한 연결을 설정하기 위한 통신 규칙 또는 프로토콜입니다. 또한 VPN 설정을 위해 사용되는데, VPN을 통해 외부 네트워크에서 데이터들을 안전하게 액세스하고 교환할 수 있게 됩니다. VPN? 가상 사설망은 둘 이상의 컴퓨터 간 암호화된 연결입니다. 공용 네트워크를 통해 이루어지지만, VPN을 통해 교환되는 데이터는 암호화가 되어 있습니다. IPsec VPN을 구축하기 위한 2가지 m..

Network 2023.07.13

[Network] Switch 와 Bridge 비교

스위치와 브리지는 Data Link layer (OSI 2계층)에서 작동한다는 부분과 특정 포트에게만 프레임을 전송한다는 부분에서 꽤 비슷합니다. 하지만 이들 간에도 차이가 있는데, 그 차이에 대해 간단하게 알아보려고 합니다. 이들은 모두 송신자/수신자의 물리적 주소(MAC)를 기준으로 프레임을 필터링합니다. 공통된 기능은 동작 방식에서 스위치, 브리지 모두 Store and Forwarding(Frame을 모두 받아들이고 처리 -> 이후 Error 발견시 해당 Frame을 버리고 재전송 요구) 방식을 지원하는 것입니다. 브리지는 순수하게 2계층에서 데이터를 필터링하는 역할을 하지만, 최신 스위치에서는 라우터에 기능도 포함되고 이를 IP 스위치라고 합니다. 이제 최신 스위치(L3)를 제외하고 이들의 차이..

Network 2023.07.13

[Network] Hub(L1), Switch(L2), Router(L3)

3학년 때 네트워크 공부를 하면서 허브, 스위치, 리피터 다양한 개념들을 가볍게 공부했었는데, 이번 세미나를 기회로 확실하게 개념들을 구분 짓고 이들의 기능과 역할에 대해 완벽하게 숙지하기 위해 공부하였습니다. 허브, 스위치, 라우터 모두 다 네트워크 장치들을 연결하기 위한 장비입니다. 각각 다른 방식으로 동작하고 다른 기능을 제공합니다. 이제 차근차근 설명드리겠습니다. Hub 내부 네트워크에서 모든 네트워크 장치를 함께 연결하는 것(장치가 물리적으로 연결된 것만 감지) 네트워크 장치에서 이더넷 연결을 허용하는 여러 포트가 있는 장치 데이터 패킷이 포트 중 하나에 도착하면 다른 모든 포트로 복사(Broadcast) 의도하지 않은 데이터도 전달될 수 있기에 불필요한 트래픽 발생 Switch Hub와 유사..

Network 2023.07.13

[Network] WPS(Wi-Fi Protected Setup)란 무엇인가 ?

오늘은 WPS(Wi-Fi Protected Setup, 와이파이 보호 설정)에 대해서 알아보려고 합니다. WPS이란? 복잡한 보안 설정 없이도 무선 연결 및 보안 설정을 가능하게 하는 표준화된 방법 및 기술 공유기와 연결하려는 기기가 WPS 기능을 지원하면 기기를 연결할 때 간편하게 무선 보안 접속이 가능(프린터, 공유기에서 활용) PC에서 프린터기를 이용하기 위해 무선 드라이버를 설치하는 번거로움 해소 WLAN에 연결하기 위해 새 장치에 암호를 입력하는 불편함을 해소하기 위해 개발(기존에 AP에 접속하기 위해서는 SSID, PW 등을 알고 있어야 했음) WPS를 이용하기 위한 4가지 방법 가장 보편적으로 PIN, PBC(Push Button Connection) 두 가지 방법이 사용되지만, 저는 상세하..

Network 2023.07.13

[Network] WLAN의 네트워크 환경 2가지 mode(Ad-Hoc mode, Infrastructure mode)

WLAN(Wireless LAN)의 네트워크 환경은 크게 두 가지로 분류됩니다. 첫 번째는 Ad-Hoc Mode인데, Ad-Hoc 모드는 Access Point(무선 LAN과 유선 LAN을 연결해 주는 장치) 없이 각각의 Device 끼리 직접적으로 통신하는 환경입니다. 서로 대등한 위치에서 통신을 주고받기에 Peer-to-Peer Network이고, Bluetooth가 하나의 예시가 될 수 있습니다. 두 번째는 Infrastructure Mode 입니다. Infrastructe Mode는 각 device가 Access Point를 거쳐 다른 device와 통신할 수 있는 환경입니다. 상세한 과정은 뒤에 설명드리겠습니다. 1. Ad-Hoc Mode(=Independent Basic Service Set)..

Network 2023.07.09