본문 바로가기
반응형

IT/Knowledge272

백트래킹 저번 시간에 DFS, BFS 에서 다뤘는데 이들은 모든 노드를 참조한다는 그런 탐색 방법이다. 하지만 이미 조건에서 벗어난 경우에도 나머지 노드들을 탐색을 계속해서 진행해야할까? 그럴경우엔 괜히 자원 낭비가 될수가 있다. 이럴때 사용하는것이 백트래킹 기술이다. 백트래킹(Backtracking)즉, 코딩에서는 반복문의 횟수까지 줄일 수 있으므로 효율적입니다.일반적으로, 불필요한 경로를 조기에 차단할 수 있게 되어 경우의 수가 줄어들지만, 만약 N!의 경우의 수를 가진 문제에서 최악의 경우에는 여전히 지수함수 시간을 필요로 하므로 처리가 불가능 할 수도 있습니다. 가지치기를 얼마나 잘하느냐에 따라 효율성이 결정되게 됨 이를 가지치기라고 하는데, 불필요한 부분을 쳐내고 최대한 올바른 쪽으로 간다는 의미 해를 .. 2022. 8. 5.
알고리즘 BFS 와 DFS 알고리즘 공부 해봤다면 그래프에서 모든 노드를 탐색하기 위한 기법으로 BFS와 DFS 를 들어봤을 것이다. 둘의 공통 목적으로는 다음과 같다.그래프의 탐색의 목적은 하나의 정점에서 시작하여 그래프의 모든 정점들을 한 번씩 방문(탐색)하는 것이다.그래프의 데이터는 배열처럼 정렬이 되어 있지 않다.그래프에서 원하는 자료를 찾으려면, 하나씩 모두 방문하여 찾아야 한다.탐색 방법은 아래 그림과 같다.모든 노드를 들려야해서 효율이 떨어질순 있지만 이부분은 백트래킹으로 해결이 가능하고 백트래킹에 대한 내용은 다음포스팅에 이어서 다뤄볼 예정이다. 특징BFS 에 대한 특징BFS 는 재귀적으로 동작하지 않는다.이 알고리즘을 구현할 때 가장 큰 차이점은 그래프 탐색의 경우 어떤 노드를 방문했었는지 여부를 반드시 검사해야한.. 2022. 8. 4.
변수명 짓기 꿀팁 프로그래밍을 하다보면 상당시간을 낭비하는 부분이 있다. 바로 변수명을 짓기 위함이다. 만약 간단한 코딩테스트나 심심풀이 코드라면 int i; String result; int sum; 등 사용을 하겠지만 만약 이렇게 간단한 단어가 아니라 업무상 필요한 언어나 프로젝트에서 사용되는 단어라면 작명하는것도 만만치 않다. 이런 부담을 좀 덜어주기 위한 사이트가 있다. https://www.curioustore.com/#!/ Curioustore 변수명 짓기, 컬럼명 짓기, 영어약자, 変数名 つけ方, カラム名建てる, 英語の略語, 命名变量, 命名该列, 英文缩写 www.curioustore.com 변수명을 지어주는 사이트로 들어가서 아무 단어를 입력해보면 추천 변수명이 나온다. 다양한 방법으로 변화가 되니 심심풀이로.. 2022. 7. 20.
변수명 표기법 다양한 프로그래밍 언어들이 존재하지만 그들의 공통점들 중 하나는 변수를 사용한다는 것이다. 그럼 여기서 변수를 어떻게 표기하느냐. 이것도 중요한 문제이다. 물론 어떻게 쓰든 요즘엔 한글로 써도 되는정도의 다양한 인코딩방식과 표기법들이 존재한다. 하지만 Code Convention 상에서 정해진 룰, 규칙이라는것이 있다. 혼자 개발을 하고 취미로 개발을 한다면 자기 맘대로 변수명이나 클래스 명 등을 사용해도 무방하지만 여러명과 협업을 하거나 다른사람에게 알려주기 위한 코드로써는 정해진 틀에서 변수명을 사용하는것을 '권장' 한다. 프로그래밍 언어마다 조금은 차이가 있을순 있고 현재 포스팅은 자바 프로그래밍 언어의 기준으로 작성을 할것이다. 클래스명일 경우엔 첫글자는 대문자, 그리고 띄어쓰기나 언더바 구간은 .. 2022. 7. 18.
API Gateway란? 요즘 인기있는 디자인 아키텍쳐 중에 가장 많이 언급되고 있는 MSA 를 알고 해당 포스팅을 보는것을 추천한다. 만약 MSA 에 대한 개념을 모른다면 아래 참고포스팅을 한번 보고 해당 포스팅을 읽어보는것을 추천한다. 다양한 서비스에 따라, 유저의 호출에 따라 불러와야할 서버들이 그림과 같이 다르다. 그럴 경우 api gateway는 중간에 껴서 적절한 서버를 request, response 해주는 역할을 한다. 물론 각각 요청별로 RESTTemplete 를 만들어도 되고 프록시 등 다양한 방법이 있지만 apigateway를 사용하게 되면 장점은 다음과 같다. 클라이언트의 요청을 일괄 처리 전체 시스템의 부하 분산 시키는 로드밸런서 역할 동일 요청에 대한 불필요한 반복작업을 캐시로 수행 시스템상을 오고가는 .. 2022. 7. 14.
Inbound, Outbound 개념 방화벽을 사용하게 될때 많이 접하는 단어이고 들어오는, 나가는 이라는 의미로도 쓰이는 Inbound 와 Outbound 이다. 이둘을 서로 비교해보면서 알아볼 것이다. 인바운드 아웃바운드 내부를 향하는 것 바깥으로 향하는 것 서버 내부로 들어오는 것 서버 바깥으로 나가는 것 서버 또는 네트워크 내부로 인입 서버 또는 네트워크 존 외부로 송출 클라이언트 -> 서버 서버 -> 클라이언트 클라이언트가 업로드 할 때 클라이언트가 다운로드 할 때 인바운드 규칙 아웃바운드 규칙 Window 방화벽 기본 설정 : 모든 접속 차단 Window 방화벽 기본 설정 : 모든 접속 허용 자신의 컴퓨터로 들어오기 시작하는 네트워크 데이터 자신의 컴퓨터에서 나가기 시작하는 네트워크 데이터 2022. 7. 13.
UPS 란? 시스템 장애의 원인으로 특히 많은것이 전원장애이다. 전원장애는 예기치 못한 정전이나 낙뢰 등으로 인한 과전압등 급격한 전원 환경의 변화에 서버가 대처하지 못함으로써 발생한다. 이런 전원 장애로부터 서버를 보호하는 기구가 UPS(무정전 전원 장치) 이다. UPS는 정전시에 서버를 안전하게 시스템 종료 시키거나 외부 전원과 서버 사이에 들어가 전원 환경을 조정하는 등 전원에 관한 여러가지 역할을 담당하고 있다. 정상적으로 서버가 종료되지 않으면 데이터가 파손되거나 하드웨어가 망가지는 경우를 방지할수 있고, 예비 배터리 역할을 하면서 문제가 발생시에 직원이 얼른 가서 조치를 취한다면 서버의 종료가 없이 계속해서 running 을 할수 있을 정도 예비 전력을 공급 함으로써 다양하게 전원 장애에 대한 방지를 대비.. 2022. 7. 12.
SSL server 지금은 일상생활의 일부가 된 인터넷이지만 언제 어느때보다 보이지 않는 위험이 항상 옆에 있다는것을 인지해야한다. 언제 누가 데이터를 훔쳐보거나 변조할줄 모른다. 그럼 위협으로부터 데이터를 보호하기 위한 프로토콜이 SSL(Secure Sockets Layer) 이다. SSL은 데이터를 암호화하거나 통신 상대를 인증함으로써 데이터를 보호한다. https://로 시작하는 URL 에서 HTTPS 는 HTTP over SSL 의 약자로 HTTP 를 SSL 암호화한 프로토콜이다. 대표적인 SSL서비스를 제공하는 서버 소프트웨어로는 오픈소스인 OpenSSL이나 윈도우 서버에 표준 내장되어있는 IIS 가 있다. OpenSSL은 일반적으로 웹서버인 Apache에 모듈을 인스톨 하여 Apache와 연계시켜 사용한다. 한편.. 2022. 7. 11.
라우팅 이란? 이더넷으로 만든 네트워크와 네트워크를 연결할 때 사용하는 네트워크 기기가 라우터 라고 한다. 라우터는 미리 만들어 놓은 라우팅 테이블을 이용하여 패킷을 전송한다. 라우터가 수행하는 패킷 전송을 라우팅 이라고 한다. 라우팅 테이블은 목적지 네트워크와 목적지 네트워크로 가기 위해 보내야 할 곳의 IP주소로 구성되어있다. 라우터는 패킷을 받으면 해당 패킷의 목적지 IP주소와 라우팅 테이블의 목적지 네트워크를 대조 한다. 목적지 IP주소가 목적지 네트워크에 있으면 넥스트 홉의 IP 주소로 패킷을 전송하고 없으면 파기 한다. 라우팅 테이블을 만드는 방법으로는 정적 라우팅과 동적 라우팅이 있다. 정적라우팅은 수동으로 라우팅 테이블을 만드는 방법으로, 목적지 네트워크와 넥스트 홉을 하나하나 설정한다. 동적라우팅은 인.. 2022. 7. 10.
반응형