목록전체 글 (60)
랩터
Process실행된 프로그램을 의미ps -ef: 리눅스에서 실행 중인 프로세스를 확인하는 명령어e : 모든 사용자들이 구동 시킨 모든 프로세스들을 보여줌f : 상세 정보 출력출력 결과 해석UID : 소유자 idPID : 프로세스 idPPID : 부모 프로세스 idC : cpu 사용량(요즘 잘 안씀)STIME : 프로세스 시작시간TTY : 프로세스가 연결된 터미널, ? -> 백그라운드 실행TIME : CPU를 사용한 시간CMD : 프로세스 이름 or 명령어 사용 정보특수 PIDPID1 : /sbin/initPID0 : 스케줄러, 프로세스를 관리하고 어떤 프로세스를 구동시킬지 스케줄링 담당-> file / sbin/initpstree프로세스를 트리구조로 확인하는 명령어프로세스끼리 부모와 자식의 관계를 가짐s..
폰노이만 아키텍처CPU의 역할0과 1로 구성된 명령어를 하나씩 수행하는 장치CPU가 동작할 명령어들을 HDD에 저장 -> 한줄씩 가져가서 CPU에 수행이런 방식의 문제점: CPU의 효율이 너무 떨어진다DISK와 CPU의 속도 차이로 인한 효율 문제 발생 -> 명령어가 도착될때까지 놀고있음이 문제의 해결 방안 => 폰노이만 아키텍처프로그램 내장방식을 통해 메모리가 필요하다고 주장메모리빠른 성능, 저장장치 처럼 저장하는 기능을 갖지만, 전원을 끄면 모두 소멸되는 장치명령어들을 대신 전달해주는 역할Load작업메모리의 명령어 Load(적재)작업저장장치에서 저장된 0과 1명령어가 메모리에 한꺼번에 복사프로그램 전체를 불러오기 떄문에 시간이 걸림Disk대신 메모리가 CPU에게 전달되기 때문에 빠름.이러한 원리를 폰..
리눅스 시스템 프로그래밍시스템 프로그래밍은 컴퓨팅 시스템에서의 SW개발을 의미1.시스템 프로그래밍 1-1. 시스템 프로그래밍 1-2. 네트워크 프로그래밍 1-3. 커널 프로그래밍 시스템의 이해목표시스템이란 무엇이고, 컴퓨팅 시스템과 임베디드 시스템의 차이시스템 프로그래밍이란 무엇인지시스템이란구성 요소들이 상호 작용하는 집합체를 시스템이라 한다 컴퓨팅 시스템: CPU, 기억장치,입출력장치 등이 상호작용을 하는 집합체임베디드 시스템: 컴퓨팅 시스템 중, 전용 기능을 수행하도록 만들어진 시스템(PC와 달리 특정 목적을 가짐)ex)firmware 컴퓨팅 시스템 구성1.HWHWCPU메모리페리퍼럴(Peripheral, 주변장치)저장장치그래픽카드입출력장치랜 카드USB Interface 등등CPU,메모리 외 모든..
Tree/Graph/DFS 트리: 특정 노드에서 특정 노드까지 갈 수 있는 경로가 단 하나 1.이진 트리 종류 2.heap 구조 / complete binary tree + "밸런싱" 3.priority queue + heap 구조 [binary tree] -자식 노드가 최대 2개인 트리 -자식 노드는 좌우를 구분한다. [이진 트리 종류] -1.Full Binary Tree 자식노드의 개수가 0개 or 2개인 이진 트리 - 2.Perfect Binary Tree 모든 노드의 자식 노드개수가 0이거나 모두 채워져 있는 형태 모든 leaf 노드의 depth가 서로 같은 트리 -3. Complete Binary Tree 자식 노드의 개수가 최대 2개 왼쪽 자식노드 부터 채운다. [Priority Queue] ..
/*Dijkstra최단 경로 알고리즘 중에 하나- 특정 시작점을 기준으로 다른 모든 노드까지 최단경로를 구하는 알고리즘특징: 현실세계에 적용하기 좋다-Navigation: 출발 노드 > 도착점(여러개)-Social Network : Meta, instagram "알수도 있는 친구" -BFS:A -> 모든 노드까지 최단 경로(무가중치) -Dijkstra : A -> 모든 노드까지 최단 경로(유가중치, 음수 안됨) -Bellman-Ford : A -> 모든 노드까지 최단 경로(유가중치, 음수 됨) -Floyd-Warshall : 모든 -> 모든 노드까지 최단 경로-BFS vs Dijkstra-visited 배열 처리-Queue PriorityQueue1.visited배열 ( 정답 배열) 최단거리가 ..
문제링크https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.예를 들어, t="3141592"이고 p="271"인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나..
1. 원격 변경사항을 로컬에 합치기 git pull origin main --allow-unrelated-histories--allow-unrelated-histories 옵션을 주면, 서로 연관 없는 두 히스토리도 병합가능 만약에 충돌날 경우 에디터에서 수정git add .git commit -m "Merge remote main" 정상적으로 진행되면 pushgit push -u origin main이제 로컬 변경분과 원격 README가 합쳐져서 정상 푸시됨.2. (원격 내용 무시) 강제 푸시원격에 특별히 중요한 내용이 없다면, 로컬 히스토리로 덮어쓰기할 수 있음.주의: 원격의 모든 커밋이 사라집니다.git push -u origin main --force
대개 Service 패키지를 구성할 때, Service interface와 ServiceImpl 구현 클래스로 구분하여 작성하곤 합니다.서비스 레이어를 인터페이스와 구현체로 분리하는 이유는 뭘까요? 유연한 확장과 대체 가능성인터페이스를 통해 서비스의 계약(API) 을 정의해 두면, 실제 로직을 바꾸거나 다른 구현체를 추가할 때 클라이언트(컨트롤러 등)는 전혀 수정할 필요가 없습니다.예) UserService 인터페이스만 그대로 두고, 구현체를 UserServiceImplV2 로 교체하거나, 캐싱·트랜잭션 처리 등을 덧붙인 프록시 구현체를 만들 수 있습니다.테스트 용이성 (단위 테스트/모킹)인터페이스를 활용하면 테스트 시 목(mock) 프레임워크(e.g. Mockito)로 손쉽게 가짜 구현체를 주입해, 의..
이번에 진행하게 될 카카오톡 메신저 토이 프로젝트에서 어떤 db를 쓸지 고민을 하고 장단점에 대해 알아보았다 항목 MySQL PostgreSQL트랜잭션/동시성• InnoDB는 ACID 지원• 높은 읽기 처리량(Read-heavy)에 강함• 동시성 제어는 간단한 잠금 기반• MVCC 기반으로 복잡한 동시성 처리에 강함• 장시간 트랜잭션에도 영향 적음JSON 지원• JSON 타입 제공 (5.7+)• 인덱싱·검색 기능 제한적• JSONB 타입 제공• GIN 인덱스 통한 빠른 JSON 검색·조작 가능확장성 & 파티셔닝• 파티셔닝 기능 있음(5...
1.StringBuilder 개요StringBuilder는 Java에서 가변(mutable)한 문자열(sequence of characters)을 다룰 때 쓰는 클래스입니다.java.lang 패키지에 속하며, JDK 1.5부터 도입되었습니다.String이 불변(immutable)인 반면, StringBuilder는 내부 버퍼(buffer)를 늘리며 문자를 추가·수정·삭제할 수 있습니다.// String vs StringBuilderString s = "Hello";s += " World"; // 매번 새 String 객체를 만든다.StringBuilder sb = new StringBuilder("Hello");sb.append(" World"); // 기존 버퍼에 바로 추가 → ..