본문 바로가기

전체 글621

객체지향 (S: SRP / O : OCP) 2023.05.27 - [Engineering WIKI/Docs] - SOLID 5가지 설계 원칙 2021.01.17 - [Engineering WIKI/Docs] - 객체지향 (LID) S → SRP (단일 책임 원칙) 한 클래스는 하나의 책임만 가져야 한다. → Single Responsebility Principle 책임이란? 객체가 할 수 있는 것과 해야 하는 것으로 나뉜다. 즉, 객체는 자신이 할 수 있는 것과 해야하는 것만 수행 할 수 있도록 설계되어야 한다는 법칙. SRP를 지켜야 하는 이유? 고전적 설계개념인 응집도와 결합도 응집도 → 한 프로그램 요소가 얼마나 뭉쳐있는가를 나타내는 척도. 결합도 → 프로그램 구성 요소들 사이가 얼마나 의존적인지를 나타내는 척도. SRP가 필요한 코드 pu.. 2021. 1. 17.
Socket 통신 (Http 통신과의 차이점) 소켓 이란? 소켓 → 프로토콜, ip주소, 포트넘버로 정의 됨. 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스 역할. 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어 진다. 소켓의 역할에 따라 클라이언트 소켓, 서버소켓으로 구분된다. 소켓 통신의 흐름 서버 클라이언트 소켓의 연결 요청을 대기하고, 연결요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다. socket()함수를 이용하여 소켓 생성 bind()함수로 ip와 port 번호 설정 listen()함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정. accept()함수를 사용하여 클라이언트와의 연결을 기다림. 클라이언트 실제로 데이터 송수신이 일어나는 것은 클라이언트 .. 2021. 1. 17.
[Java] 랜덤번호 이용한 인증번호 기능 생성 회원가입에 필요한 숫자 OR 문자 인증번호와 임시 비밀번호를 생성하여 제공하기 위해 간단한 함수를 만들어 보았습니다. 만든 기능은 총 3가지입니다. 1. 숫자 인증번호 생성 2. 문자+숫자 인증번호 생성 3. 임시 비밀번호(문자+숫자+특수문자 포함) 생성 전반적으로 임의의 랜덤한 값을 생성하기 위해 Random Class를 사용하였고, 중복 방지를 위해 생성자에 System.currentTimeMillis()를 넣었습니다. 1. 숫자 인증번호 생성 기본적으로 숫자 인증 번호를 6자리로 생성하였고, setter을 통해서 자리수 변경이 가능합니다. 인증번호 자리수를 제곱하여 range를 구하고 자리수의 -1을 하여 10을 다시 제곱하여 trim값으로 설정하였습니다. import java.util.Random.. 2020. 12. 23.
[Python] 소요시간 측정방법 import datetime start_time = datetime.datetime.now() # ( 측정을 하고자 하는 코드 ) end_time = datetime.datetime.now() elapsed_time = end_time - start_time 여기서 얻은 elapsed_time을 활용하여 millesecond 단위, microsecond 단위, second 단위로 결과 값을 얻을 수 있다. microsecond 단위 micro_elapsed_time = elapsed_time.microseconds millisecond 단위 ( 1 millisecond == 1000 microsecond ) ms_elapsed_time = elapsed_time.microseconds / 1000 sec.. 2020. 12. 9.
[Python] Coding Test Tip N개 Array 생성 → 다이나믹 프로그래밍이나 개수 제한 문제 풀 경우 n = 100 memo = [0] * n 2진수, 8진수, 10진수, 16진수 문제 'a'를 10진수로 변환 해주는 예제 i = 'a' print(int(i, 16)) → 10 10진수 8을 8진수로 변환 해주는 예제 print(oct(8)) → 0o10 10진수를 16진수로 formatting print('{0:X}'.format(11)) → B Formatting 8을 입력하면 08로 나오게 하는 포메팅 print('{0:02d}'.format(8)) →08 소수점 2번째 자리까지 나오는 포메팅 print('{0:.2f}'.format(9)) → 9.00 Split해서 list에 넣기 i = input() # i = '7 4 2.. 2020. 12. 9.
[Java] 소켓 통신이란? [자바 코드 포함] 소켓 이란? 소켓 → 프로토콜, ip주소, 포트넘버로 정의 됨. 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스 역할. 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로가 만들어 진다. 소켓의 역할에 따라 클라이언트 소켓, 서버소켓으로 구분된다. 소켓 통신의 흐름 서버 클라이언트 소켓의 연결 요청을 대기하고, 연결요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다. socket()함수를 이용하여 소켓 생성 bind()함수로 ip와 port 번호 설정 listen()함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정. accept()함수를 사용하여 클라이언트와의 연결을 기다림. 클라이언트 실제로 데이터 송수신이 일어나는 것은 클라이언트 .. 2020. 12. 6.