<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발하는중</title>
    <link>https://lejljs.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 6 Jul 2026 20:04:27 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>창자쏟고싶냐</managingEditor>
    <image>
      <title>개발하는중</title>
      <url>https://tistory1.daumcdn.net/tistory/4385150/attach/a258d306b0e043aebf995d77251c3920</url>
      <link>https://lejljs.tistory.com</link>
    </image>
    <item>
      <title>process management</title>
      <link>https://lejljs.tistory.com/127</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커널에 등록되어 관리를 받는 실행중인 프로그램&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemd = pid = 1 = 최상위 프로세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스 관리 블록 = 커널에 등록된 각 프로세스의 대한 정보를 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pcb 저장 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pid, ppid&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;uid, euid, gid, egid&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스 상태, 우선순위, 사용중인 자원 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령의 실행과 프로세스의 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;shell에서 명령을 실행하면 새로운 프로세스가 생성되며 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pstree ? 프로세스 부모 자식 관계를 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;foreground 프로세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉘 프롬프트에서 명령 실행하면 포어그라운도 모드로 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;background 프로세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령의 끝에 &amp;amp;를 추가하여 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jobs -l ? 백그라운드 프로세스 상태 점검 pid 같이 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특수권한&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SetUID ? 설정되어 있는 파일을 실행하면 실행자의 권한이 아닌 파일소유자의 권한 으로 실행&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SetGID ? 설정되어 있는 파일을 실행하면 실행자의 그룹권한이 아닌 파일소유자의 그룹권한 으로 실행 , 주로 디렉터리에 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StickyBit ? 주로 공유 디렉터리에 설정, 누구나 디렉터리에 파일생성 가능하지만 파일의 소유자만 삭제 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ps ? 프로세스의 현재 상태 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ps [options]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ps -ef, ps aux&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--forest 트리 모양으로 출력&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;top ? 현재 실행중인 프로세스의 모니터링과 관리를 위한 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;top [options] -d second ,-p pid ,-u user ,-S&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 cpu사용량 많은 순 으로 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kill ? 프로세스에 시그널 보냄&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;killall ? 특정 프로세스에 한번에 시그널보냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9 = 강제로 즉시 종료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nice, renice&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nice 우선순위 값을 조정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nohup ? hup 시그널과 무관하게 백그라운드 명령이 스스로 종료될때까지 계속 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cron 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지정된 시간에 주기적으로 자동 수행되는 작업을 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;crontab -e 명령을 이용하여 개별 사용자 수행 작업 설정 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>OS/unix_linux시스템</category>
      <category>cron</category>
      <category>Kill</category>
      <category>linux 프로세스</category>
      <category>PID</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/127</guid>
      <comments>https://lejljs.tistory.com/127#entry127comment</comments>
      <pubDate>Fri, 10 Nov 2023 15:19:42 +0900</pubDate>
    </item>
    <item>
      <title>file system management</title>
      <link>https://lejljs.tistory.com/126</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;mount and umount&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마운트 ? 파일시스템을 전체 디렉터리 구조에서 특정 디렉터리를 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/fstab&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 시스템이 부팅될 때 자동으로 마운트할 파일 시스템의 목록 리스트 설정 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mount -a [options] [-t type]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mount [options] [-o mount_options] device|directory&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mount [options] [-t type] [-o mount_options] device directory&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언마운트 ? 디렉터리에 마운트 되어 있는 저장 장치를 해당 디렉터리로부터 해제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;umount -a [-nv] [-t]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;umount [-nv] device | directory&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파티션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리적 저장 장치를 놀리적으로 분할, 자신만의 디바이스 파일을 가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 이유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다수 운영체제 설치하여 멀티 부팅 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 파티션 손상 시 다른 파티션 데이터 보존&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파티션 별로 다른 파일시스템 만들 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/boot 영역을 별도로 파티션 분리 하여 빠른 부팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/루트 영역 가용 공간을 파티션으로 해결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;parted -l, fdisk -l ? 파티션 정보 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;볼륨 ? 크기가 재조정 될 수 있는 파티션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 디스크를 합쳐 하나의 볼륨 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pv 물리 볼륨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vg 여러 물리 디스크를 하나로 묶은 가상 디스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lv 볼륨에서 공간은 논리적으로 나눔&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장 장치를 디렉터리 구조로 조직화하고 파일에 이름을 부여하는 등의 파일의 저장과 검색을 위한 체계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슈퍼블록 ? 파일시스템의 특징을 기록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inode table ? 각파일으 이름을 제외한 모든 정보를 가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 블록 ? 일반 파일은 실제 데이터 저장, 디렉터리의 경우 포함된 파일의 이름과 inode번호와 저장&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mkfs ? 파티션이나 논리 볼륨에 리눅스 파일 시스템 만드는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mkfs [-t fs-type] device&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fsck ? 파일시스템의 무결성을 검사하고 손상된 파일을 고치는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fsck [options] device&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;swap ? 특정 파티션이나 파일을 스왑영역으로 지정하여 사용할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;free 명령으로 스왑 메모리 확인 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;df ? 마운트 되어 있는 파일 시스템의 공간 사용정보 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;df [options] name&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-h -T -i&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;du ? 디렉터리 의 디스크 사용량을 출력 특정 파일도 출력할수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;du [options] directories&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부팅 시 자동으로 마운트되는 파일 시스템의 목록이 /etc/fstab 파일에 기록되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파티션 관리를 위해 parted 또는 fdisk 명령을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개념적으로 논리 볼륨은 기존 파티션과 일치하는데 크기를 조정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inode 테이블에서 한 레코드는 이름을 제외한 개별 파일의 모든 정보를 가지고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 시스템의 종류에 따라 파일 시스템의 용량, 파일 이름의 길이, 파일의 최대 크기와 총수, 파일의 복구&amp;middot;성능&amp;middot;유연성 등이 차이가 난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mkfs 명령을 사용하여 파티션에 다양한 종류의 파일 시스템을 생성할 수 있다.&lt;/p&gt;</description>
      <category>OS/unix_linux시스템</category>
      <category>마운트</category>
      <category>파일시스템</category>
      <category>파티션</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/126</guid>
      <comments>https://lejljs.tistory.com/126#entry126comment</comments>
      <pubDate>Thu, 9 Nov 2023 14:53:21 +0900</pubDate>
    </item>
    <item>
      <title>cpp7</title>
      <link>https://lejljs.tistory.com/125</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;연산자 다중정의&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피연산자의 자료형과 연산자- 동일한 연산자라도 구체적인 처리 방법은 피연산자의 자료형에 따라 다름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cpp에 정의된 연산자를 사용자가 만든 클래스의 객체에 대하여 사용할 수 있도록 정의한것이 연산자 다중정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 연산자 다중정의 대상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스의 객체간 대입 및 이동대입 연산자-포인터 포함의 경우 고려할 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수치형 객체의 산술연산자 다중정의 - 교환 법칙도 함께 고려&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 객체를 비요하기 위한 관계 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스트림 입,출력을 위한 &amp;lt;&amp;lt;,&amp;gt;&amp;gt; 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다중정의 할 수 없는 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멤버 선택 연산자&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멤버에 대한 포인터 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유효범위 결정 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다중정의 위치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스의 멤버로 정의, 클래스 외부에서 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전위 형식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;returnclass classname :: operator 연산자기호 (){}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;후위 형식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;returnclass classname :: operator 연산자기호 (int){}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 꼭 써야하나?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이항연산자 다중정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;returnclass classname:: operator 연산자기호(Argclass arg){}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스트림 출력 연산 다중정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력 &amp;lt;&amp;lt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스에 속하지 않는 외부 별도 연산자로 정의 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 선언한 클래스에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;C++에 정의된 연산자를 의미와 목적에 맞게 다중정의하여 사용&lt;/span&gt;할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;멤버 선택 연산자, 멤버에 대한 포인터 연산자, 유효범위 결정 연산자, 조건 연산자는 다중정의할 수 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;단항 연산자인 ++와 -- 연산자는 전위 표기와 후위 표기 각각에 대해 다중정의&lt;/span&gt;할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이항 연산자의 다중정의는 좌측 피연산자에 해당되는 클래스에서&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;하며, 이때 *this가 좌측 피연산자, 형식 매개변수가 우측 피연산자에 해당된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 클래스에 속하지 않은 연산자 다중정의를 할 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;피연산자가 모두 매개변수를 통해 전달되도록 연산자 다중정의&lt;/span&gt;를 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;필요하다면 피연산자의 private 멤버를 자유롭게 사용할 수 있도록 friend 지정&lt;/span&gt;을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대입연산자=우측 피연산자 데이터를 좌측에 변수에 담음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;std:move = 인수로 전달되는 객체의 rvalue 참조 반환? 복사가 아닌 이동?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a = move(b);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열 연산자[] 다중정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;int&amp;amp; Aclass::operator[](int i) { ... }&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첨자 연산자는 값을 수정하기 위한 연산자와 값을 출력하기 위한 연산자 2개 구현 해야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 길이 구하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tmep = strlen(&quot;abc&quot;);&amp;nbsp; temp = 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 복사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;strcpy(target, copydata);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;strcat(target, connectdata);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;string&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#include &amp;lt;string&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;대입 연산자는 우측 피연산자의 내용을 좌측 피연산자에 복사하고, 이동 대입 연산자는 rvalue인 우측 피연산자를 이동하는 연산자&lt;/span&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;std::move 함수는 인수로 전달되는 객체의 rvalue 참조를 반환&lt;/span&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;첨자 연산자([ ])&lt;/span&gt;는 첨자에 의해 지정되는 객체에 값을 저장하는 용도와 읽기 전용의 용도를 모두 고려하여 정의한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;string은 문자열을 저장하기 위한 표준 C++ 라이브러리의 클래스&lt;/span&gt;로서, 문자열을 저장하고 처리하기 위한 유용한 기능을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;형 변환 연산자&lt;/span&gt;는 값을 제공하는 클래스에서 값을 받는 수신 측 클래스의 이름으로 연산자를 제공하거나, 값을 제공받는 클래스에서 값을 제공하는 클래스의 객체를 인수로 받는 1인수 생성자를 정의하여 만든다.&lt;/p&gt;</description>
      <category>개발하는중/cpp</category>
      <category>연산자 다중정의</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/125</guid>
      <comments>https://lejljs.tistory.com/125#entry125comment</comments>
      <pubDate>Thu, 9 Nov 2023 13:50:00 +0900</pubDate>
    </item>
    <item>
      <title>text editor</title>
      <link>https://lejljs.tistory.com/124</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;편집기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스와 텍스트 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 시스템에서 중요한 설정 정보나 쉘 스크립트가 텍스트 파일로 존재함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집기 종류&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gedit, emacs, vi&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 모드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i = insert&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a = add&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;o = open a line&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c = change&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라인모드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:, /, ?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장 검색 대치 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령모드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q = 나가기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;q! = 수정 무시 나가기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wq = 저장 후 나가기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;esc키 현재 모드 빠져 나감&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/'검색어'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n 다음 방향으로 계속 검색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N 역 방량으로 계속 검색&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;locate? 문자열 패턴이 (기본적으로 /로 시작하는) 파일 이름이 포함될 때 해당 파일의 이름을 출력하는 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;절대 경로 상의 디렉터리나 파일 이름이 문자열이 포함되면 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;locate options pattern&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;find ? 검색 위치에서 조건에 맞는 파일을 찾고 검색된 파일을 대상으로 명령을 수행할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;find pathnames expression&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;find ~ | wc -l 사용자가 가지고 있는 파일의 총 개수 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;find . -type f | wc -l 파일 총갯 수 출력 해당 경로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;grep ? 파일에서 지정된 문자열 패턴을 포함란 라인을 찾아 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 를 사용하여 앞 명령의 결과를 입력 받아 검색할 때 grep을 자주 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;grep options pattern files&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-r 파일 대신 디렉터리가 지정될때 포함된 모든파일 대상 검색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-i 대소문자 구분 하지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi를 사용한 편집 작업은 명령 모드, 입력 모드, 라인 모드의 세 가지 모드로 구분된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령 모드에서 커서 이동, 텍스트의 삭제, 텍스트의 변경, 텍스트의 복사와 붙여넣기를 위한 명령 키가 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라인 모드에서 &amp;lsquo;검색과 대치&amp;rsquo;를 위한 다양한 기능을 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 이름의 일부를 알고 있을 때 locate 명령으로 파일을 찾을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일이 가진 속성으로 파일을 찾고 검색된 파일을 대상으로 특별한 액션을 수행할 때 find 명령을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>OS/unix_linux시스템</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/124</guid>
      <comments>https://lejljs.tistory.com/124#entry124comment</comments>
      <pubDate>Mon, 6 Nov 2023 17:46:59 +0900</pubDate>
    </item>
    <item>
      <title>user management</title>
      <link>https://lejljs.tistory.com/122</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정이 있어야 시스템을 사용할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다중 사용자를 지원하는 운영체제 =&amp;nbsp; linux&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자명 또는 로그인 아이디&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정은 유일한 uid를 가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관리자 입장에서 사용자 계정별로 접근 권한을 통제 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정에 따라 부여된 권한이 다음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 사용자 계정은 자신의 홈 디렉터리를 제외 하고 제한된 권한을 가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 사용자 계정 외에 root(uid = 0), 시스템 계정도 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;su&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자를 전환 시키는 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;su - username&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;root또는 다른 사용자가 되어 명령을 실행하기 위한 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 사용자나 그룹별로 세세한 권한을 부여할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본인의 암호만 필요하며, root계정의 암호를 요구 하지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo -u username command&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-u 옵션 빼면 root 계정으로 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;useradd&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정을 만드는 관리자 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;useradd 'options' username&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-c 계정 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;passwud username = user password 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/passwrd = 사용자 계정에 관한 정보를 가진 텍스트 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/skel = 사용자 홈 디렉터리에 복사되는 파일들을 가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/shadow = 사용자 계정의 암호 정보화 패스워드 에이징 정보를 가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chage&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 비밀번호 만료에 관한 정보를 변경하는 관리자 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chage options username&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;user modify&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;usermod&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정의 정보 수정 관리자 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;usermod options username&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 옵션이 useradd 명령이 유사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userdel&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정 삭제 관리자 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userdel options username&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/passwd 파일에서 해당하는 유저 라인 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;group user management&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹계정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자의 계정들을 모아서 하나의 집합을 이루는 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;groupadd options group&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹을 만드는 관리자 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/gourp&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹 계정의 정보를 가진 텍스트 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자신의 속합 그룹 확인법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;id username&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;groups username&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정과 그룹 및 파일의 접근 권한&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 파일이나 디렉터리를 생성하면 그것의 소유 그룹은 사용자의 주 그룹으로 지정됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자는 0개 이상의 부 그룹에 속할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자는 스스로 다른 그룹의 구성원이 되게 할 수 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gpasswd&amp;nbsp; options group&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹의 관리는 위한 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;groupmod&amp;nbsp; options group&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 그룹의 정보를 수정 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;groupdel group&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹 삭제 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;su 명령을 사용하여 다른 사용자 계정으로 전환할 수 있다.&lt;/li&gt;
&lt;li&gt;sudo를 사용한 명령의 실행은 /etc/sudoers 파일에 기록된 권한 설정에 근거한다.&lt;/li&gt;
&lt;li&gt;사용자 계정을 생성할 때 필요한 기본 설정은 /etc/login.defs 파일과 /etc/default/useradd 파일에 정의되어 있다.&lt;/li&gt;
&lt;li&gt;관리자가 사용자 계정의 &amp;lsquo;패스워드 에이징&amp;rsquo; 정보를 변경할 때 chage, useradd, usermod, passwd 명령 등을 사용할 수 있다.&lt;/li&gt;
&lt;li&gt;사용자 계정은 1개의 주 그룹과 0개 이상의 부 그룹에 속해 있으며, 소속된 그룹에 부여된 권한을 가진다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>OS/unix_linux시스템</category>
      <category>Linux</category>
      <category>사용자</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/122</guid>
      <comments>https://lejljs.tistory.com/122#entry122comment</comments>
      <pubDate>Sun, 5 Nov 2023 16:28:43 +0900</pubDate>
    </item>
    <item>
      <title>cpp6</title>
      <link>https://lejljs.tistory.com/121</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디폴트(default constructor) 생성자?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매개변수가 없는 생성자, 또는 매개변수에 디폴트 인수가 지정된 생성자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일러시 생성자 선언 안한경우 디폴트 생성자 자동 생성됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복사(copy constructor) 생성자?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일 클래스의 객체를 복사하여 객체를 만드는 생성자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목시적 복사 생성자 : 객체의 데이터 멤버들을 그대로 복사하여 객체를 만들도록 묵시적으로 정의된 복사 생성자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rvalue참조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선언&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;amp;기호로 선언하는 lvalue 참조와 달리 rvalue 참조는 &amp;amp;&amp;amp;기호로 선언&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이동(move constructor) 생성자?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rvalue 참조로 전달된 같은 클래스의 객체의 내용을 이동하여 객체를 만드는 생성자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static 데이터멤버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스에 속하는 모든 객체들이 공유하는 데이터 멤버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 생성과 관계없이 프로그램이 시작되면 메모리에 할당됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static 멤버 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 객체에 대한 처리를 하는 것이 아니라 소속 클래스 단위 작업을 수행 하는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static 멤버함수는 객체가 정의 되지 않아도 사용할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;디폴트 생성자는 인수를 지정하지 않고 객체를 생성할 수 있게 하며, 생성자를 명시적으로 선언하지 않으면 아무런 처리도 하지 않는 디폴트 생성자가 묵시적으로 정의&lt;/span&gt;된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;복사 생성자는 기존의 동일 클래스 객체를 복사&lt;/span&gt;하여 새로운 객체를 만들 수 있게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;rvalue 참조는 이동을 할 수 있는 대상을 참조&lt;/span&gt;하는 용도로 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이동 생성자는 매개변수로 전달된, 앞으로 더 이상 필요하지 않을 객체의 내용을 &amp;lsquo;이동&amp;rsquo;하여 새로운 객체를 생성하기 위해 사용&lt;/span&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;클래스에 속하는 모든 객체가 공유하는 데이터 멤버는 static 멤버로 선언&lt;/span&gt;하며, 객체 생성과 무관하게 프로그램을 시작할 때 생성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;클래스의 static 멤버함수는 특정 객체가 아닌 소속 클래스 단위의 작업을 수행하는 함수&lt;/span&gt;이며, static 멤버함수 안에서는 static 멤버만 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스택 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stack? 데이터를 저장하는 자료구조의 하나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스택의 기본연산&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;push&amp;nbsp; 데이터 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pop 마지막으로 저장한 데이터를 꺼내는 연산&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;class&amp;nbsp;CharStack&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;enum&amp;nbsp;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;size&amp;nbsp;=&amp;nbsp;20&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;top;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;buf[size];&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;public:&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CharStack()&amp;nbsp;:&amp;nbsp;top{&amp;nbsp;size&amp;nbsp;}&amp;nbsp;{}&amp;nbsp;//&amp;nbsp;생성자&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool&amp;nbsp;chkEmpty()&amp;nbsp;const{&amp;nbsp;//&amp;nbsp;stack&amp;nbsp;null&amp;nbsp;true&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;top&amp;nbsp;==&amp;nbsp;size;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool&amp;nbsp;chkFull()&amp;nbsp;const{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;stack&amp;nbsp;full&amp;nbsp;true&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;!top;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool&amp;nbsp;push(char&amp;nbsp;ch);&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;pop();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;};&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;iostream&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;CharStack.h&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;using&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;std&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;bool&lt;/span&gt;&amp;nbsp;CharStack::push(&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&amp;nbsp;ch)&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;if&lt;/span&gt;(chkFull()){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;cout&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;stack&amp;nbsp;is&amp;nbsp;full&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;endl&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;-&lt;/span&gt;top]&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;ch;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&amp;nbsp;CharStack::&lt;span style=&quot;color: #4be6fa;&quot;&gt;pop&lt;/span&gt;()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;if&lt;/span&gt;(chkEmpty()){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;cout&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;stack&amp;nbsp;is&amp;nbsp;null&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;endl&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;buf[top&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;];&amp;nbsp;&lt;span style=&quot;color: #999999;&quot;&gt;//&amp;nbsp;데이터&amp;nbsp;반환&amp;nbsp;후&amp;nbsp;top&amp;nbsp;+&amp;nbsp;1&amp;nbsp;후위연산&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position: relative !important; overflow: auto;&quot;&gt;
&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin: 0; padding: 0; border: none; background-color: #272727; border-radius: 4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border-right: 2px solid #4f4f4f;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; word-break: normal; text-align: right; color: #aaa; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;1&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;2&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;3&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;4&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;5&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;6&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;7&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;8&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;9&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;10&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;11&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;12&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;13&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;14&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;15&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;16&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;17&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;18&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;19&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;20&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;21&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;22&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;23&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;24&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;25&lt;/div&gt;
&lt;div style=&quot;line-height: 130%;&quot;&gt;26&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 6px 0; text-align: left;&quot;&gt;
&lt;div style=&quot;margin: 0; padding: 0; color: #f0f0f0; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height: 130%;&quot;&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;iostream&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #0086b3;&quot;&gt;#include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;CharStack.h&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;using&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;namespace&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;std&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&lt;span style=&quot;color: #4be6fa;&quot;&gt;int&lt;/span&gt;&amp;nbsp;main()&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;{&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CharStack&amp;nbsp;chStack;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&amp;nbsp;str[&lt;span style=&quot;color: #c10aff;&quot;&gt;20&lt;/span&gt;];&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;cout&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;write&amp;nbsp;english&amp;nbsp;word&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;cin&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;str;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;char&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;&amp;nbsp;pt&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;=&lt;/span&gt;&amp;nbsp;str;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;while&lt;/span&gt;(&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;pt){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chStack.push(&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;*&lt;/span&gt;(pt&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;+&lt;/span&gt;));&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;cout&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #ffd500;&quot;&gt;&quot;english&amp;nbsp;word&amp;nbsp;reverse&amp;nbsp;output&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;while&lt;/span&gt;(&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;!&lt;/span&gt;chStack.chkEmpty()){&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;cout&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;chStack.&lt;span style=&quot;color: #4be6fa;&quot;&gt;pop&lt;/span&gt;();&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;cout&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #aaffaa;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #ff3399;&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4be6fa;&quot;&gt;endl&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ff3399;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c10aff;&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;padding: 0 6px; white-space: pre; line-height: 130%;&quot;&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a style=&quot;color: #4f4f4ftext-decoration:none;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;vertical-align: bottom; padding: 0 2px 4px 0;&quot;&gt;&lt;a style=&quot;text-decoration: none; color: white;&quot; href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: #4f4f4f; color: white; border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;복소수 클래스&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;복소수(complex number) ?&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;실수부(real part)와 허수부(imaginary part)로 구성되는 수&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;복소수 표현 = a + jb&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;a = 실수부의 값, b = 허수부의 값, j는 허수의 단위로 j2승 = -1임&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;켤레복소수(complex conjugate)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;허수부의 부호가 반대인 복소수&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;a + jb의 결레복소수는 a-jb&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위임 생성자 의 선언 *cpp 11이후&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;멤버 초기화 리스트에 클래스의 다른 생성자를 사용하여 새로운 생성자를 선언&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;push와 pop 연산을 이용하여 데이터를 저장하고 인출할 수 있는 자료구조&lt;/span&gt;로서, 나중에 저장된 데이터가 먼저 인출될 수 있는 특성(LIFO: Last In, First Out)을 갖는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;배열과 top을 이용하여 스택을 구현&lt;/span&gt;할 수 있다. push는 top을 1 감소시킨 후 배열의 top 위치에 값을 저장하고, pop은 top 위치의 값을 반환하며 top을 1 증가시킨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;실수부와 허수부의 값을 저장하는 데이터 멤버와 사칙연산 등 필요한 연산을 멤버함수로 정의&lt;/span&gt;하여 복소수 클래스를 구현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;생성자를 직접 호출하는 형식의 연산&lt;/span&gt;은 해당 클래스의 임시 객체를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;어떤 클래스의 객체가 필요한 위치에 그 클래스의 생성자의 형식 매개변수에 해당되는 값을 사용하면 묵시적 형 변환을 통해 그 클래스의 객체로 변환&lt;/span&gt;된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;위임 생성자는 클래스에 선언된 다른 생성자를 이용하여 선언되는 생성자&lt;/span&gt;로서, 코드 중복을 줄일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;std::initialize_list는 지정된 자료형의 값을 임의 개수 나열한 리스트를 만드는 데 사용&lt;/span&gt;되며, 첫 번째 매개변수가 std::initializer_list&amp;lt;Type&amp;gt;인 생성자를 초기화 리스트 생성자(initializer-list constructor)라고 한다.&lt;/p&gt;</description>
      <category>개발하는중/cpp</category>
      <category>static</category>
      <category>디폴트생성자</category>
      <category>복사생성자</category>
      <category>이동생성자</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/121</guid>
      <comments>https://lejljs.tistory.com/121#entry121comment</comments>
      <pubDate>Sat, 4 Nov 2023 21:50:26 +0900</pubDate>
    </item>
    <item>
      <title>cpp5</title>
      <link>https://lejljs.tistory.com/120</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체? 소프트웨어 시스템 안의 어떠한 대상을 표현 한 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스? 객체의 설계도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체가 포함할 데이터 멤버의 선언과 멤버함수의 정의를 포함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래서 선언&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;형식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;class classname{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캡슐화(encapsulateion)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 내부의 상세한 구현 부분과 외부 사용자의 관점을 분리함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;형식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;classname objname;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;classname objname1, objname2;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 사용 형식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 이름에 멤버선택 연산자 '.' 를 사용하여 객체의 멤버에 접근함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자(constructro)?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체가 생성될 때 수행할 잡업을 정의하는 특수한 멤버함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자에 인수를 전달할 수 있도록 매개변수를 선언할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자를 여러 개 다중 정의 할수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스의 이름을 사용하여 선언&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자 머리에 반환 자료형을 표기하지 않으며, return 명령으로 값을 반환 할수 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자를 public으로 선언해야 클래스 외부에서 객체를 생성할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;class A{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; public :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A( parameters ){// 생성자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기화 리스트?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자 머리에 데이터 멤버를 초기화하는 값들을 나열한 리스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소멸자(destructor)?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체가 소멸될 때 수행할 잡업을 정희하는 특수한 멤버함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스 이름에 ~를 붙여 선언&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소멸자 머리에 반환 자료형을 표기하지 않으며, return 명령 으로 값 반환 불가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매개변수가 없으며, 클래스 하나의 소멸자만 정의할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;public으로 선언하는 것이 일반적&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상속을 통해 파생 클래스를 정의하는 경우 virtural을 지정하여 가상함수가 되도록 하는 것이 좋음&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;class A{&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; public :&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A(parameters){// 생성자&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~A(){ // 소멸자 // 매개변수 사용 불가능&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;};&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;클래스는 프로그램이 표현하고자 하는 대상(객체)이 어떠한 속성(데이터 멤버)을 저장하고 있어야 하고, 어떤 행위(멤버함수)을 할 수 있는가를 선언&lt;/span&gt;한 것이다.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;클래스에 해당되는 실제 사례(instance)를 객체(object)라고 한다.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;객체는 고유한 속성값(데이터 멤버의 값)을 가지며, 이를 바탕으로 클래스에 정의된 행위를 할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;가시성 지시어 private, public, protected는 클래스의 멤버가 공개되는 범위를 지정하기 위해 사용&lt;/span&gt;되는데, 정보은닉을 위해 private을, 외부에 제공할 인터페이스를 공개하기 위해 public을 사용한다.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;클래스에서 데이터 멤버의 값을 변경하지 않는 멤버함수는 const 멤버함수로 정의&lt;/span&gt;한다.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;생성자는 객체가 생성될 때 수행할 작업을 정의하는 특수한 멤버함수&lt;/span&gt;로서, 클래스 이름과 동일한 이름으로 선언하며, 일반적으로 객체를 초기화하는 작업을 수행한다.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;소멸자는 객체가 소멸될 때 수행할 작업을 정의하는 특수한 멤버함수&lt;/span&gt;로, 클래스 이름과 동일한 이름에 앞에 &amp;lsquo;~&amp;rsquo;를 붙여 선언하며, 객체가 가지고 있는 자원을 반납하는 등의 처리를 담당한다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>개발하는중/cpp</category>
      <category>객체</category>
      <category>생성자</category>
      <category>소멸자</category>
      <category>클래스</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/120</guid>
      <comments>https://lejljs.tistory.com/120#entry120comment</comments>
      <pubDate>Sat, 4 Nov 2023 20:54:54 +0900</pubDate>
    </item>
    <item>
      <title>자료구조 연결리스트</title>
      <link>https://lejljs.tistory.com/118</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리스트의 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의미&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일정한 순서의 나열&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 정의에 의해서 결정된 논리적인 순서의 나열&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트의 순서는 데이터가 저장되는 물리적인 위치와 상관없이 사람들의 머리속에 인식되는 논리적인 순서 혹은 리스트에 나타나는 원소들 간의 의미적인 순서를 의미함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열은 인덱스로 표현되는 추상적 순서가 배열 원소의 메모리 공간에서의 물리적인 위치와 일치함 하지만 리스트의 순서 개념은 어떤 정의에 의해서 결정된 논리적인 순서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원소들의 물리적인 저장 순서나 위치와는 무관하게 원소들 간의 논리적인 순서만 유지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원소의 메모리 공간의 물리적인 위치를 순서적으로 결정하는 특징&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열의 순서는 메모리 공간에서 저장되는 원소값의 물리적 순서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열을 이용한 리스트의 구현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포인터를 이용한 리스트의 구현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드의 구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드 = 리스트의 원소값 + 다음 원소를 가리키는 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포인터 변수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결 리스트의 삽입과 삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트의 원소 삭제 연산 단계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제할 노드의 선행 노드의 링크 필드를 삭제할 노드의 후행 노드를 가리키게 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제할 노드의 메모리 반환&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트의 원소 삽입 연산 단계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리 공간을 할당받고 삽입할 내용을 저장하여 삽입할 x노드를 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x 노드의 링크부분이 후행 노드가될 j노드를 가르키게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삽입된 x노드의 선행 노드가 될 i노드의 링크 필드가 x 노드를 가르키게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결 리스트의 여러가지 연산&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;리스트의 &amp;lsquo;순서&amp;rsquo;는 데이터가 저장되는 물리적인 위치와 상관없이 사람들의 머릿속에 인식되는 &amp;lsquo;논리적인 순서&amp;rsquo;, 혹은 리스트에 나타나는 원소들 간의 &amp;lsquo;의미적인 순서&amp;rsquo;를 의미합니다.&lt;/li&gt;
&lt;li&gt;배열을 이용한 리스트의 구현은 실제 IT 서비스 환경에서는 자주 사용되지 않고 있습니다. 자료의 삽입과 삭제가 빈번히 발생하는 상황에서, 리스트를 배열로 구현하는 것은 빈번한 자료 이동으로 인한 비효율적인 컴퓨팅 성능을 유발합니다.&lt;/li&gt;
&lt;li&gt;포인터를 이용하는 방법은 원소의 자리에는 원소값을 저장하고, 다음 원소를 가리키는 정보의 자리에는 다음 원소가 저장될 위치의 주소값을 저장합니다. 조금 더 &amp;lsquo;프로그램&amp;rsquo;스럽게 설명하자면, 리스트의 원소 자리와 다음 원소를 가리키는 정보의 자리를 합쳐서 노드(node)라고 합시다. 노드에는 데이터 요소(원소)와 리스트의 다음 원소를 지시하는 포인터(pointer, 주소)를 가진다고 생각하면 됩니다. 이 포인터는 링크(link)라고도 부릅니다.&lt;/li&gt;
&lt;li&gt;포인터의 &amp;lsquo;메모리 주소값&amp;rsquo;이라는 것은 메모리에 저장되는 값의 위치라고 생각하면 됩니다. 메모리에 저장되는 값(데이터)은 저장 위치에 대한 주소를 가지며, 이 저장 위치를 이용해서 리스트의 원소값을 찾아갈 수 있습니다.&lt;/li&gt;
&lt;li&gt;다양한 데이터형의 변수를 하나의 상자 안에 넣어서 선언하거나 사용하는 C 프로그래밍 문법이 구조체(struct)입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결리스트의 변형&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순연결, 이중연결, 단순 원형 연결, 이중 원형 연결 리스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순연결 리스트의 문제점&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 링크만 있고 각가의 노드의 링크는 후행 노드만을 가리키는 구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중연결리스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선행 노드를 가리키는 링크와 후행 노드를 가리키는 링크를 가짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 노드에서 선행 노드와 후행 노드의 직접적으로(간단한 프로그램 코드를 통해)접근할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원형 연결 리스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결 리스트를 보면 가장 마지막 노드의 링크 필드는 언제나null 값이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트의 마지막 원소 뒤에는 아무 원소도 없기 때문에 연결 리스트의 마지막 노드 링크 필드는 언제나 null값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 마지막 노드의 링크 필드를 활용하면서도 프로그램 성능에 도움이 되도록 하기 위해서 원형 연결 리스트 제안됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원형 연결 리스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결리스트의 마자막 노드의 링크 필드를 활용하면서도 프로그램 성능에 도움이 되도록 하기 위해서 원형 연결 리스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;typedef struct ListNode { // 원형 연결 리스트의 노드 구조 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; int data,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; struct ListNode* link;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;} listNode;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;typedef struct{ // 원형 연결 리스트의 헤드 노드 구조 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; listNode* head;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;} linkedList h;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linkedList_h* createLinkedList_h(void) {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; linkedList_h* H;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; H = (linkedList_h*)malloc(sizeof(linkedList_h));&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; H -&amp;gt; head = NULL;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; return H;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중연결 리스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 연결 리스트의 단점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 노드를 찾은 경우, 그 특정 녿의 후행 노드는 쉽게 찾을 수 있었지만, 어떤 특정 노드의 선행 노드를 찾으려면 복잡한 방법이 필요함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양쪽 방향으로 순회할 수 있도록 링크 필드 두 개 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작점(head)도 두개 링크 필요 (Lhead, Fhead) 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중연결 리스트의 노드 구조 = 두 개의 링크필드(Llink, Rlink)와 한개의 데이터 필드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;typedef struct ListNode { // 이중 연결 리스트의 노드 구조 정의&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; struct ListNode* Llink;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; int data,&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; struct ListNode* Rlink;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;} listNode;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;typedef struct{ // 이중 연결 리스트의 헤드 노드 구조 정의&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; listNode* Lhead;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; listNode* Fhead;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;} linkedList h;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;linkedList_h* createLinkedList_h(void) {&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; linkedList_h* H;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; H = (linkedList_h*)malloc(sizeof(linkedList_h));&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; H -&amp;gt; Lhead = NULL;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; H -&amp;gt; Fhead = NULL;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; return H;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 연결 리스트 = 링크부분이 하나만 있고, 각각의 노드는 후행 노드만을 가르키는 구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중 연결 리스트 = 특정 노드에서는 선행 노드와 후행 노드에 대해 간단한 프로그램 코드를 통해 접근할 수 있는 구조&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원형 연결 리스트 = null값을 가즌ㄴ 마지막 노드의 링크 부분을 활용하면서도 프로그램 성능에 도움을 주기 위해 제안 되었으며 한 방향으로 모든 노드가 원형으로 계속 연결되어 있기 때문에 한 노드로부터 어떤 노드로도 접근이 가능 한 구조&amp;nbsp;&lt;/p&gt;</description>
      <category>개발하는중/자료구조</category>
      <category>단순연결리스트</category>
      <category>연결리스트</category>
      <category>원형연결리스트</category>
      <category>이중연결리스트</category>
      <category>자료구조</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/118</guid>
      <comments>https://lejljs.tistory.com/118#entry118comment</comments>
      <pubDate>Fri, 3 Nov 2023 15:04:14 +0900</pubDate>
    </item>
    <item>
      <title>모델링과 시뮬레이션</title>
      <link>https://lejljs.tistory.com/116</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;시스템과 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시뮬레이션 모델의 이용 범주&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명적 장치 : 시스템이나 문제를 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분석 도구 : 한계적 구성요소를 결정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설계평가도구 : 제안된 해결 방안을 종합하고 평가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예측 도구 : 미래의 개발계획을 예측&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템(system) ? 어떤 목적을 위하여 하나 이상 서로 관련된 구성요소들이 결합된 집합 -&amp;gt; 모델(model)? 시스템을 서술한 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;model design&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용이한 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-물리적 규칙이 이용가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-도형적 표현이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-입력,출력,구성요소의 변화가 통제 가능하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어려운 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-기본 규칙이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-표현하기 어려운 많은 절자적 요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-random 구성 요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-정량화가 어려운 정책적인 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-인간의 의사결정이 큰 영향을 주는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과정(모델링)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구성요소들 간의 관계 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델작성 목적 수립&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 영역 확정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 상세성 확정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평가척도 및 재설계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시뮬레이션 모델의 종류&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-결정적 모델과 확률적 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-정적 모델과 동적 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-이산 모델과 연속 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-물리적 모델과 수리적 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몬테칼로 시뮬레이션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: center;&quot;&gt;&amp;pi;(파이)&lt;/span&gt; 를 구하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반지름의 길이 = 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원의면적&amp;nbsp; =&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: center;&quot;&gt;&amp;pi;&lt;/span&gt; * 1&amp;sup2;&amp;nbsp; =&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: center;&quot;&gt;&amp;pi;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시뮬레이션 특징과 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시뮬레이션 장점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-실체 구축없이 예측 평가 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-해석적 방법이 불가능 한 경우 실험적 대안/실 시스템은 매우 복잡하여 공식화 하기 어려움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-비용이 높고 위험한 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-다양한 환경 설정과 반복실험 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-장(경제시스템), 단시간 시스템 연구가 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-개발에 많은 비용과 소요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-프로그래밍 연습이라는 인상을 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-과잉의 신뢰를 주는 경향이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-확률적 시뮬레이션은 추정량을 산출할 뿐이다/비교 평가에는 적합, 최적화에는 부적합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;3080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfCKQQ/btszDC6jpTC/MDmNAq2uUgCMwDLL8OVGFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfCKQQ/btszDC6jpTC/MDmNAq2uUgCMwDLL8OVGFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfCKQQ/btszDC6jpTC/MDmNAq2uUgCMwDLL8OVGFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfCKQQ%2FbtszDC6jpTC%2FMDmNAq2uUgCMwDLL8OVGFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1078&quot; height=&quot;3080&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;3080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>공부/시뮬레이션</category>
      <category>모델링</category>
      <category>시뮬레이션</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/116</guid>
      <comments>https://lejljs.tistory.com/116#entry116comment</comments>
      <pubDate>Fri, 3 Nov 2023 13:27:37 +0900</pubDate>
    </item>
    <item>
      <title>linux start and end</title>
      <link>https://lejljs.tistory.com/115</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제 부팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. rom bios의 펌웨어 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. mbr에 있는 부트 로더 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 커널 이미지와 initramfs를 로드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 커널 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 하드웨어 점검하고 초기화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. / 파일 시스템을 마운트하고 검사&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 커널은 /lib/systemd/systemd 프로그램을 실행시키고 제어 넘김&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기화 데몬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전통적 init 데몬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;System V init 데몬 이라고도 함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;런 레벨에 따라 실행되어야 또는 중단되어야 하는 서비스가 정해짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간이 오래 걸리며 복잡한 초기화 스크립트로 인해 새로운 하드웨어나 서비스의 등장에 효율적 대처가 어려움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Upstart init 데몬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 기반으로 서비스를 실행하는 ㅂ아식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 스크립트가 간단한 설정 파일로 대체됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemd 프로세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커널이 실행시키는 첫 번째 사용자 프로세스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 사용자 프로세스의 최상위 조상 프로세스 pid = 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지 부팅 과정 즉, 시스템 초기화 작업을 실행 함, 이후 계속 수행되며 시스템 운영을 관리하고 셧다운까지 처리함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유닛&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemd가 관리하는 시스템 자원이나 서비스와 같은 시스템 구성요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유닛의 동작, 의존성, 실행 옵션 등은 유닛설정파일에서 설정 항목으로 제어됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유닛파일이 존재하는 디렉토리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/usr/lib/systemd/system/ = 소프트웨어 패키지를 설치할 때 함께 설치된 유닛 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/run/systemd/sysytem/ = 런타임시 만들어진 유닛 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/etc/systemd/system/ =systemctl enable을 이용해 만들어진 유닛 파일 우선순위가 가장 높은 디렉터리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 타깃과 런레벨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본타깃(부팅 모드 또는 런레벨)을 확인 또는 변경하는 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl get-defautl 또는 systemctl set-default &amp;lt;name.target&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 런레벨은 0 또는 6이 되어서는 안 됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 타깃을 다른 타깃 유닛으로 바꾸는 관리자 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl isolate &amp;lt;name.target&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;telinit = 런레벨을 바꾸는 관리자 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;runlevel = 이전 런레벨과 현제 런레벨을 확인하는 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 서비스의 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과거 서비스 수행을 위한 초기화 스크립트는 서비스 유닛으로 대체됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관리자는 systemctl 명령을 사용하여 시스템 서비스의 상태보기, 시작, 멈춤, 재시작, 활성화 및 비활성화 작업을 수행할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl [option] command [units] / systemctl start serviceName&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 명령 start, stop, reload, restart, status, enable, disable, is-active&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 콘솔 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 브라우저를 이용해 리눅스 서버를 관리하고 모니터링하기 위한 도구&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cockpit 패키지 설치 후, 서비스를 활성화/시작시키고, 방화벽 설정을 확인 9090&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저 http://localhost:9090 -&amp;gt; root로 로그인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 종료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전원 관리 명령&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호환상의 이유로 shutdown 명령을 계속 사용할 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가급적으로 systemctl 명령을 사용 권장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;shutdown = 시간을 정해 시스템을 안전하게 종료하는 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-r 재부팅, -c 예정된 shutdown 취소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;now 즉시 종료&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;shutdown -h now&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 일시중단&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl supend = 현재 시스템 상태를 ram에 저장하고 저전력 상태로 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl hivernate = 시스템 상태를 하드디스크에 저장하고 전원을 끔&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl hybrid-sleep = 메모리 외에 디스크에 소 시스템 상태를 저장함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데스크톱&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;gui를 제공하는 사용자 환경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분 데스크톱은 x윈도우 시스템에 기반을 둠&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시각적으로 다양한 스타일의 데스크탑 존재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;부트 로더는 운영체제 커널을 메모리에 로드하고 커널은 부팅 작업을 시작한다.&lt;/li&gt;
&lt;li&gt;커널은 초기화 데몬을 통해 부팅 과정을 마무리하고 사용자 환경을 준비하게 한다.&lt;/li&gt;
&lt;li&gt;&amp;lsquo;systemd 데몬&amp;rsquo;은 서비스의 병렬 시작을 통한 부팅 속도 증가, 자원 사용의 효율화, 보안 강화를 통한 안정적이고 신뢰성 있는 시스템 관리 기능을 제공한다.&lt;/li&gt;
&lt;li&gt;기본 타깃 또는 초기 부팅 모드는 /etc/systemd/system/default.target이 가리키는 대상으로 설정되며, 대개 그래픽 사용자 환경과 다중 사용자 모드를 지원하는 graphical.target으로 설정되어 있다.&lt;/li&gt;
&lt;li&gt;&amp;lsquo;systemd 초기화 데몬&amp;rsquo;은 시스템 자원과 서비스를 나타내기 위해 유닛 개념을 도입하였으며, 유닛은 &amp;lsquo;유닛 설정 파일&amp;rsquo;로 표현된다.&lt;/li&gt;
&lt;li&gt;시스템 서비스의 관리와 시스템의 전원 관리를 위해 systemctl 유틸리티를 사용한다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>OS/unix_linux시스템</category>
      <category>linux 시작</category>
      <category>linux 종료</category>
      <author>창자쏟고싶냐</author>
      <guid isPermaLink="true">https://lejljs.tistory.com/115</guid>
      <comments>https://lejljs.tistory.com/115#entry115comment</comments>
      <pubDate>Thu, 2 Nov 2023 16:03:20 +0900</pubDate>
    </item>
  </channel>
</rss>