CS 11

C언어 동적할당

C언어에는 배열을 선언할 때 그 메모리공간을 직접 할당해줘야한다. 그렇기 때문에 malloc, colloc, realloc함수가 있는데, malloc함수는 고정된 크기의 메모리 할당이고 colloc함수는 malloc과 같지만 메모리를 초기화하는 부분이 추가되어있다. realloc함수는 malloc함수에 고정으로 할당된 메모리를 추가로 늘려줄 수 있지만 할당되었던 주소가아닌 새로운주소로 메모리를 할당하여 덮어쓰기 때문에 temp로 주소값을 백업해두는게 좋다고 한다.  C언어에서 malloc함수가 동적할당이라 하길래 가변적으로 데이터값도 늘어나겠구나 생각을했지만 고정으로 값을 할당하며 realloc으로 더 늘려줘야한다고 chat gpt에서 보았다. 그래서 malloc함수를 통해 5로 메모리할당하고 값을 계속..

CS/C언어 2025.02.05

Samba 설정: 리눅스와 윈도우 간 파일 공유 방법

Samba 설정삼바(Samba)는 마이크로소프트와 인텔에서 개발한 SMB 네트워크 프로토콜을 이용해 윈도우와 유닉스 계열의 운영체제나 다른 시스템 간의 자원을 공유할 수 있도록 만든 프로그램입니다.Samba 전체 작업 순서Samba 서버로 지정할 OS에 Samba 서버 패키지 설치Samba 사용자 추가공유할 디렉토리 권한 설정Samba 설정 파일 수정Samba 서비스 재시작Samba 서버 방화벽(ufw) 설정Samba 클라이언트 OS에서 클라이언트 Samba 패키지 설치마운트A. 리눅스 서버에서 특정 디렉토리를 삼바 공유하도록 설정Samba 설치sudo apt updatesudo apt install sambaSamba 사용자 추가(Samba 사용자 계정 생성 및 암호 설정)sudo smbpasswd -..

CS/네트워크 2024.09.06

Ubuntu와 CentOS 및 Windows에서 NFS 설정 가이드

NFS(Network File System)란?NFS(Network File System)는 네트워크를 통해 파일을 공유할 수 있는 시스템입니다. 서버와 클라이언트 구조로 이루어지며, 서버에서 공유 폴더를 설정하면 클라이언트가 이를 마운트하여 사용할 수 있습니다. 이 글에서는 Ubuntu 22.04에서 NFS 서버를 설정하고, CentOS 및 Windows에서 NFS 클라이언트로 접근하는 방법을 설명하겠습니다.NFS 설정 전체 작업 순서 NFS 서버 패키지 설치 공유할 디렉터리 설정 /etc/exports 파일 설정 설정 적용 방화벽 설정 NFS 클라이언트 패키지 설치 마운트 설정1. NFS 서버 설정 (Ubuntu 22.04)A. 리눅스 서버에서 NFS 서버 설치 및 설정NFS 서버 패키지..

CS/네트워크 2024.09.06

네트워크 Bonding

Bonding본딩은 네트워크 안정성과 대역폭을 늘리는 용도로 한 네트워크에 NIC을 여러개 묶어 포트 이중화를 할 수 있는 기술입니다.본딩은 총 6개의 모드로 구성되어있으며 각각의 모드마다 목적에 따라 기능을 갖추고있습니다.     본딩 모드모드 이름설명스위치 필요여부 사용 사례Mode 0Round robine각각의 NIC를 순차적으로 사용하여 트래픽을 분배합니다.그렇기 때문에 공평하게 할당이 됩니다. 스위치 설정을 통해 부하 분산합니다.O트래픽을 고르게 분산시켜야 하고, 패킷 순서가 중요하지 않은 환경Mode 1Active-backup하나의 NIC이 primary 으로 동작하며 다른 nic은 대기 상태로 있습니다. 동작중인 nic이 문제가 생기면 대기하고있던 nic으로 대체가 되므로네트워크 이중화모드 ..

CS/네트워크 2024.09.06

PDU

PDU란 Power Distribution Unit의 약자이며 전원 분배 장치이고 데이터센터나 서버룸과 같은 환경에서 전기적으로 요구되는 여러 장비들에 전원을 공급하고 분배하기 위해 사용됩니다. 전력모니터링, 원격관리, 고장 탐지 및 보고 기능이 있습니다. 1.Basic PDU (기본 PDU) Basic PDU는 가장 기본적인 형태의 전원 분배 장치입니다. 이는 단순히 전원을 여러 장비에 분배하는 역할만 수행하고있습니다. 2.Switched PDU Switched PDU는 전원을 개별적으로 제어할 수 있는 기능을 제공합니다. 이를통해 원격 위치의 장비들에 대한 전원 사이클링 및 재부팅 수행가능 또한 전력 소비량을 모니터링하고 제어할 수 있습니다. 3.단상 및 3상 단상 단상은 전기시스템에서 단일의 전기 ..

CS/하드웨어 2024.04.19

TCP/IP 계층

컴퓨터와 컴퓨터가 통신할 때 이때 발생하는 네트워크의 일련과정을 기능별로 나눈것을 OSI 7계층이라고한다. 이렇게 계층을 나누게 되면 통신이 이루어지지 않았을 시 정확히 어떤계층에 문제가 발생했는지 파악하고 해당 계층에만 조치를 취해 문제를 해결할 수 있기 때문 1.물리 계층 비트단위로 통신이되며 물리적인 통신으로 통신이 됩니다. 장비로는 허브 리피터가 있습니다. 소프트웨어적이아닌 하드웨어적으로 통신을 합니다. 2.데이터 링크 계층 물리계층에서 받았던 비트데이터들을 프레임단위로 변환하여 통신하고 받았던 데이터의 신뢰성 등 데이터가 잘 들어왔는지 체크 후 다음계층으로 보내게됩니다. 장비로는 스위치,브릿지 등이 있습니다. 3.네트워크 계층 네트워크계층부터는 패킷으로 통신이 되고 각 노드들에 노선을 찾는 과정..

CS/네트워크 2023.09.28

dx, dy 테크닉

dx, dy 테크닉을 사용하는 이유 특정 방향에 대해 이동하는 경우 비슷해보이는 코드가 반복되면 dx, dy 테크닉을 많이 사용하게 된다. 예를 들어 E,W,S,N 순으로 동,서,남,북이라 했을 때 x , y 의 좌표는 이렇게 나타 낼 수 있다. 동쪽 : x = +1 , y = 0 서쪽 : x = -1 , y = 0 남쪽 : x = 0 , y = -1 북쪽 : x = 0 , y = +1 이부분을 배열에 저장하여 쓰게되면 코드가 간결해지고 명확해지기 때문에 효율적으로 방향을 이동할 수 있다. int[] dx = new int[] {1, -1, 0, 0} int[] dy = new int[] {0, 0, -1, 1} 이런식으로 저장하게 되면 dx[0] dy[0] = 동쪽 dx[1] dy[1] = 서쪽 dx[..

CS/알고리즘 2023.08.31

그리디알고리즘(탐욕 알고리즘)

그리디 알고리즘은 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘입니다. 수행과정 1.해 선택 : 현재 상태에서 최선이라고 생각되는 해를 선택 2.적절성 검사 : 현재 선택한 해가 전체 문제의 제약 조건에 벗어나지 않는지 검사 3.해 검사 : 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사 (전체 문제를 해결하지 못하면 다시 1로 돌아가 같은 과정 반복) 주의할점:그리디 알고리즘은 반례가 있기 때문에 문제를 잘 파악하여 사용하여야한다. 큰값으로 먼저 대입하여 방법을 찾기 때문에 반례가 있을 수 있어서 문제에 큰 값부터 적용할 수 있는 조건이 있으면 사용하자. 백준 11047 동전 0 그리디 알고리즘을 적용해서 풀어보았습니다. 먼저 오름차순으..

CS/알고리즘 2023.05.10

구간 합

구간 합은 합 배열을 이용하여 시간복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘입니다. A에서 B 까지의 수가 있다면 인덱스마다 더해진 값을 주입하는게 합배열입니다. 합배열 정의 구간 합 공식 구간합 적용해본 코드 import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] strArr = br.readLine().split(" "); int N = Integer.parseInt(strArr[0]); i..

CS/알고리즘 2023.05.10