반응형

전체 글 216

[ TCP/IP ] TCP/IP 개요

통신 프로토콜 컴퓨터끼리 데이터를 주고 받을 떄는 기종이나 통신방식과 같은 차이가 문제가 된다. 따라서 송신측과 수신측은 정해진 매뉴얼에 따라 보내야한다. 이 매뉴얼을 프로토콜이라고한다. TCP/IP 만약 전 세계적으로 공통된 통신 프로토콜이 있다면 아주 편할 것이다. 그래서 현재 전 세계 공통 통신 프로토콜로 채택된 것이 TCP/IP이다. 데이터를 주고받는데는 여러개의 프로토콜이 필요하기 때문에 TCP/IP에는 여러 프로토콜이 들어있다. 5계층 TCP/IP에서는 송수신과 관련된 작업들을 몇 개의 단계로 나눠서 수행한다. 이 단계를 layer, 층 이라고 한다. 계층이 나뉘면 각 계층은 독립적으로 자신의 할일만 하면된다. 각 층에는 다양한 프로토콜이 존재한다. 애플리케이션 층 : HTTP, SMTP, T..

공부/TCP IP 2023.02.06

[ 컴퓨터구조 ] 메모리와 캐시메모리

1. RAM의 특징과 종류 1.1 RAM의 특징 RAM은 전원을 끄면 내용이 사라지는 휘발성 저장장치이다. RAM에는 보통 실행할 대상을 저장한다. CPU는 실행하고 싶은 프로그램이 있다면 RAM으로 복사하여 저장한 뒤 실행한다. 1.2 RAM의 용량과 성능 RAM이 작다면 실행할 프로그램이 있을때마다 복사하여 저장해야하지만 RAM의 용량이 크다면 여러개의 프로그램을 저장해놓고 사용할 수 있다. 하지만 RAM이 큰수록 무한으로 성능이 좋아지는것은 아니다. 1.3 RAM의 종류 DRAM DRAM는 Dynamic RAM 의 준말이다. 이는 저장된 데이터가 동적으로 변하는 RAM을 의미한다. DRAM은 시간이 지나면 데이터가 사라지기 때문에 소멸을 막으려면 일정 주기로 데이터를 다시 저장해야한다. 우리가 일반..

[ 컴퓨터구조 ] CPU 성능 향상 기법

1. 빠른 CPU를 위한 설계 기법 1.1 클럭 컴퓨터 부품들은 클럭신호에 맞춰 움직인다. 그렇기 때문에 클럭 속도가 높은 CPU는 일반적으로 성능이 좋다. 클럭 속도는 헤르츠(Hz) 단위로 측정한다. 이는 1초에 클럭이 몇 번 반복되는지를 나타난다. 보통 클록의 속도는 일정하지 않고 고성능리 필요할 때는 클럭속도를 높이고 그렇지 않을 때는 유연하게 속도를 낮춘다. 1.2 코어와 멀티코어 클럭속도를 아무리 올려도 CPU의 성능을 올리기엔 한계가 있다. 이에 대한 해결방법으로 CPU의 코어와 스레드 수를 늘리는 방법이 있다. 지금까지는 한 CPU에 1코어만 있다고 생각했지만, 요즘에는 '명령어를 실행하는 부품'을 코어라고 부르고 CPU에는 이 코어가 여러개 있기도하다. 이렇게 코어를 여러개 포함하고 있는 ..

[ TCP/IP ] TCP/IP의 기본

1. 컴퓨터 네트워크 네트워크란 '망'이라는 의미를 갖고 있는데 실제로는 '어떤 자산을 서로 주고받을 수 있는 상태' 이다. 컴퓨터끼리 네트워크가 연결되어 있다면 데이터를 주고받을 수 있다. 즉, 컴퓨터 네트워크란 컴퓨터끼리 연결하여 데이터를 주소받을 수 있는 상태로 되어있는 것을 말한다. 컴퓨터 네트워크는 규모에 따라 아래와같이 나뉜다. LAN(local area network) : '랜'이라고 읽고 기업과 같이 비교적 좁은 공간에 있는 기기끼리 연결한 네트워크를 의미한다. WAN(wide area vetwork) : '완'이라고 읽고 회사의 지점 간 지리적으로 떨어진 장소에 있는 기기를 연결한 대규모의 네트워크를 말한다. 인터넷 : 여러개의 LAN이나 WAN을 연결한 전 세계 규모의 네트워크이다. 지..

공부/TCP IP 2023.01.30

[ C++ ] #1012 유기농 배추

이번에는 몇모둠이 있나?에 대한 문제이다. 1을 찾아서 BFS를 진행하고 또 1을 찾아서 BFS를 하고 이런식으로 반복하면 금방 개수를 알 수 있지 않을까? 하는 생각이 들었다. 코딩해보자~! 우왕!! 한번에 맞았다. 디테일이 부족해서 계속 while문을 돌아 여러번에 디버깅이 필요햇지만 그래도 크게 어려움을 겪지 않고 성공했다! #include #include #include using namespace std; int farm[50][50]; int dx[4] = { 1,0,-1,0 }; int dy[4] = { 0,1,0,-1 }; int main() { int a, num = 0,N, M ,K, x, y, flag = 0,sx,sy; cin >> a; for (int i = 0; i < a; i+..

BOJ/[ BOJ ] C++ 2023.01.29

[ Pandas ] 웹, API를 활용하여 데이터 수집하기

1. 웹을 활용해서 데이터 수집하기 1.1 HTML 웹 페이지에서 표 속성 가져오기 read_html() 함수는 HTML 웹 페이지에 있는 태그의 데이터를 모두 찾아서 데이터 프레임으로 변환한다. 표 데이터들은 별도의 데이터 프레임으로 변환되기 때문에 여러개의 데이터 프레임을 원소로 갖는 리스트가 반환된다. 웹페이지의 정보를 parsing하기 위해서는 read_html() 함수 인자에 url이나 html파일을 넣어주면 된다. 1.2 웹 스크래핑 BeautifulSoup 과 같은 웹 크롤링 도구로 수집한 데이터들을 데이터프레임으로 정리하는 방법을 알아보자. 먼저 스크래핑한 내용들을 파이썬 리스트, 딕셔너리 등으로 정리한 뒤, DataFrame() 함수에 리스트나 딕셔너리 형태로 전달하여 데이터 프레임으로 ..

[ C++ ] #1697 숨바꼭질

이는 좀 특이하게 1차원 BFS문제이다. 2차원에서는 상하좌우로 BFS를 진행했다면 이 문제에서는 앞으로 뒤로 2배앞으로 이렇게 세개로 진행하면 된다. 이렇게 배열을 찾아가다가 동생 위치에 숫자가 써지면 답이 된다! 코드로 짜보자! 코드는 금방짰다! 1차원 배열에서 BFS는 처음이라 낯설었지만 이해하고 나니 코드가 어렵지는 않았다. #include #include using namespace std; int road[100001]; int main() { ios::sync_with_stdio(0); cin.tie(0); int N, K; cin >> N >> K; road[N] =1; queue Q; Q.push(N); while (road[K] == 0) { int a= Q.front(); Q.pop(..

BOJ/[ BOJ ] C++ 2023.01.27

[ C++ ] #4179 불!

흠..쉬울것같았는데 은근 고민스럽다..! 일단 미로문제니까 BFS로 풀자! 먼저 진호의 위치와 불의 위치를 파악하고, 진호의 위치로부터 가장자리로 가는 최단거리를 구한다. 최단거리를 구하는 방법은 check판에 이 자리까지 오는데 걸린거리를 기록하면서 나중에 최대값을 찾으면 될 것 같다. 불이랑 만나는지는 최단거리 루트를 구하고 생각할지, 아니면 BFS하면서 같이 구할지 고민하다가 fire배열을 만들어서 BFS업데이트할때 같이 업데이트해가면서 비교해봐야겠다고 생각했다. 계속 어떤 케이스는 되고 어떤케이스는 안되고 해서 오류를 하나하나 고쳐나갔다. 근데 이제 웬만하면 모든케이스가 다 되는데... 너무 억울한데..도대체 뭐때문에 안되는지 모르겠다ㅠㅠ 일단 내 코드는 차차 고민해보는걸로하고..! 다른 아이디어..

BOJ/[ BOJ ] C++ 2023.01.26

[ spring ] 예제 - 회원관리 : 웹 MVC 개발

저번에는 멤버 컨트롤러와 의존관례를 설정했다. (아래링크) https://haena02.tistory.com/167 [ spring ] 예제 - 회원 관리 : 도메인, 리포지토리, 서비스, 테스트케이스 1. 비지니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소(DB)가 선정되지 않음(가상의 시나리오) 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 서비스의 핵심 비지 haena02.tistory.com https://haena02.tistory.com/172 [ spring ] 스프링 빈과 의존관계, 예제 - 회원관리 : 의존관계 설정 스프링 빈을 동록하고, 의존관계 설정하기 리포지토리랑 서비스를 다 만들고 화면을 붙이고 싶다면 컨트롤러와 뷰 템플릿이 필요하다. 멤버..

[ 운영체제 ] CPU 스케줄링 개요

1. CPU 스케줄링 개요 운영체제는 CPU를 프로세스들에게 공정하고 합리적으로 배분해준다. 이를 CPU 스케줄링이라고 한다! 1.1 프로세스 우선순위 프로세스는 각각 우선순위를 갖고있다. 우선순위가 높을수록 빨리 처리해야한다는 의미이다. 대표적으로 우선순위가 높은 프로세스에는 입출력작업이 많은 프로세스가 있다. 입출력작업을 할동안은 CPU는 다른 프로세스를 실행시킬 수 있으므로 입출력작업을 먼저 실행시키는 것이 좋다! 비디오 재생이나 디스크 백업작업을 담당하는 프로세스와 같이 입출력이 많은 프로세스를 I/O bound process라고 하고 수학연산, 컴파일, 그래픽 처리와 같이 CPU작업이 많은 프로세스들을 CPU bound process라고 한다. *CPU를 이용하는 작업을 CPU burst 입출력..

공부/운영체제 2023.01.25
반응형