본문 바로가기

전체 글221

[Java API] Iterable, Iterator 인터페이스 Java에서 Iterable과 Iterator는 컬렉션을 순회하기 위해 사용하는 두 가지 중요한 인터페이스이다. 이 두 인터페이스는 밀접하게 연관되어 있으며, 각각의 역할에 따라 순회를 수행한다. 이번 글에서는 Iterable과 Iterator의 차이점과 그 사용법에 대해 자세히 설명하겠다. 1. Iterable 인터페이스Iterable은 Java에서 반복 가능한 객체를 나타내는 인터페이스이다. Iterable을 구현한 클래스는 for-each문을 사용하여 요소를 순회할 수 있다. Java의 대부분의 컬렉션 클래스(List, Set, Queue 등)가 Iterable을 구현하고 있어, 이러한 클래스들은 손쉽게 for-each문으로 순회할 수 있다. [주요 메서드]- Iterator iterator() :.. 2024. 10. 25.
[UNIX/Linux] ep8+) 시그널 함수 실습 ex1. 자신에게 SIGUSR1 시그널을 보내는 프로그램을 작성하시오. 시그널을 보낸 후 출력문을 넣어 출력이 되는지, 프로그램을 실행하면 어떤 메시지가 출력되는지 확인하시오 (kill을 사용)kill (getpid(), SIGUSR1);#include #include #include #include int main() { printf("Send SIGUSR1 Signal to me.\n"); kill(getpid(), SIGUSR1); printf("After SIGQUIT Signal.\n"); return 0;}   ex2. SIGILL 시그널의 기본 처리는 코어 덤프이다. SIGILL 시그널을 처리하는 시그널 핸들러를 작성해 실행하면 코어 덤프가 발생하지 않는지 확인하시오 (.. 2024. 10. 24.
[ps 팁] 문제의 입력 제한값으로 알고리즘 유추하기 https://claremont.tistory.com/entry/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-ep1-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EA%B8%B0%EB%B3%B8-%EC%A7%80%EC%8B%9D%EB%93%A4 [자료구조] ep1) 자료구조 기본 지식들ㅇ다차원 배열- 3차원 배열 - 4차원 배열   ㅇ빅오(Big O) 표기법: 연산의 횟수를 대략적(점근적)으로 표기"최악의 case 실행시간을 고려한다" [예시](1) 7n-2: O(n)(2) 3n^3 + 20n^2 + 5: O(n^3)(3) 3log(n) + logclaremont.tistory.com   일반적으로 연산을 10^8 번 하면 1초다10^8 = 1초이 원리를 이용해.. 2024. 10. 23.
[UNIX/Linux] ep8) 시그널 https://claremont.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-ep4-CPU%EC%99%80-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8 [컴퓨터 구조] ep4) CPU와 인터럽트컴퓨터의 두뇌 CPU == 프로세서에 대해서 자세히 알아보자ㅁCPU(Central Processing Unit) = ALU + 제어장치 + 레지스터  ㅇALU(Arithmetic Logic Unit) 산술연산장치 ALU는 플래그를 내보낸다 아래의 표를 보자 claremont.tistory.com우리가 흔히 사용하는 ctrl + c 가 바로 비동기적 인터럽트 명령이고, 더 자세히 들어가면 SIGINT 시그널을 보내 프로그램에.. 2024. 10. 23.
[UNIX/Linux] ep7+) 프로세스 생성과 실행 함수 실습 (ex1_argc.c 파일)#include #include #include #include #include char* usage = "Usage : Directory Suffix\n";int my_double_ls(const char*, char*);int match(const char*, const char*);int main(int argc, char** argv) { if (argc != 3) { fprintf(stderr, usage); exit(1); } my_double_ls(argv[1], argv[2]); exit(0); return 0;}int my_double_ls(const char* name, char* suffix) { st.. 2024. 10. 22.
[UNIX/Linux] ep7) 프로세스 생성과 실행 (복습) ㅁUNIX 계열의 프로세스 생성 기법 - fork와 exec로 복제와 옷 갈아입기 - 부모 프로세스: fork() 자신의 복사본을 자식 프로세스로 생성(복제) - 자식 프로세스: exec() 자신의 메모리 공간을 새로운 프로그램으로 덮어씀(옷 갈아입기) ※ fork를 통해 복사된 자식 프로세스도 fork를 할 수 있다 https://claremont.tistory.com/entry/ep2-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4process [운영체제] ep2) 프로세스(process)ㅁ프로세스(process): 실행 중인 프로그램 (실행/스케줄링의 단위 및 자료구조)보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간, 그 프로그램은 프로세스가 된다그리고 이.. 2024. 10. 21.
[MAVLink 메시지 → JSON] 파싱 후 Flask 서버 전송 코드 https://mavlink.io/ko/messages/common.html 메세지 (공통) · MAVLink Developer Guide mavlink.ioMAVLink 메시지 타입과 필드값 공식 문서 https://claremont.tistory.com/entry/Nodejs-MQTT-MAVLink-JSON-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC [Node.js] MQTT, MAVLink, JSON 라이브러리ㅁMQTT 라이브러리: 구독(subscribe) / 발행(publish) 설정 설치 명령어npm install mqttNode.js import문const mqtt = require('mqtt');  ㅁMAVLink 라이브러리: MAVLink 메시지의 각.. 2024. 10. 20.
[Node.js] MQTT, MAVLink, JSON 라이브러리 ㅁMQTT 라이브러리: 구독(subscribe) / 발행(publish) 설정 설치 명령어npm install mqttNode.js import문const mqtt = require('mqtt');  ㅁMAVLink 라이브러리: MAVLink 메시지의 각 필드를 추출설치 명령어npm install mavlinkNode.js import문const { MAVLink } = require('mavlink'); ㅁJSON 라이브러리: 추출한 필드를 JSON 형식으로 변환JavaScript 내장 라이브러리이므로 별도의 설치나 import가 불필요하다 2024. 10. 20.
가상 환경(Virtual Environment) (참고) 자바(Java)에서의 의존성 관리가상 환경과 유사한 개념자바에서는 파이썬의 가상 환경과 직접적으로 동일한 개념은 없지만, 빌드 도구(e.g. Maven, Gradle)를 사용하여 프로젝트별로 의존성을 관리하고, 특정 JDK(Java Development Kit) 버전을 지정할 수 있다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ   가상 환경(Virtual Environment)은 주로 파이썬(Python)에서 프로젝트별로 독립적인 패키지와 의존성을 관리하기 위해 사용되는 개념이다. 자바(Java)나 자바스크립트(JavaScript)와 같은 다른 프로그래밍 언어에서도 유사한 목적을 달성하기 위한 도구와 방법들이 존재한다. ㅁ가상 환경(Virtual Enviro.. 2024. 10. 17.