목록전체보기 (117)
마이의 개발 블로그
쓰레드와 프로세스는 각각 OS 교과서의 한 챕터씩을 차지할 정도로 다루어야할 내용이 많아 간단히 정리하기에는 어려운 면이 있다. 여기서는 일단 이 둘의 개념과 역할에 대해 간략하게 다루어보고자 한다. 프로그램(program) - 컴퓨터에서 특정 작업을 수행하기 위한 명령어들의 집합 (코드의 모음) - 보조기억장치에 저장되어있으나 메모리에는 올라가있지 않은 정적인 상태임 프로세스(process) - 실행중인 프로그램(program in execution)을 말함 - 프로그램은 OS로부터 필요한 메모리(code, stack, heap, data)를 할당받아 프로세스가 됨 (동적인 상태) - 하나의 프로세스에 문제가 발생하더라도 해당 프로세스만 종료된다는 특징이 있음 Process Control Block (..
배경 백준 1715번: 카드 정렬하기(그리디 알고리즘) 문제를 ArrayList로 풀다가 시간 초과가 뜨길래 문제를 해결하던 중 우선순위 큐를 적용해야만 한다는 걸 알게되었다. 처음에는 List 클래스의 sort() 메서드 사용 시 오름차순 정렬을 했기 때문에 연산이 완료된 값을 삭제할 때 배열이 전체 이동되어 시간이 많이 소요되는 거라고 생각했다. 그래서 내림차순 정렬로 바꾸고, ArrayList의 끝부분에서 삽입 삭제 시에 배열의 전체 복사나 이동이 없게끔 코드를 변경했는데, 여전히 시간초과가 뜨길래 결국 다른 사람들의 풀이를 검색할 수 밖에 없었다. //ArrayList를 사용한 예시 - 시간초과 while(list.size() > 1) { list.sort(Comparator.reverseOrde..
배경 - 자바 컬렉션 프레임워크의 컬렉션데이터 그룹 3가지 : List, Set, Map - List 인터페이스 구현 클래스 4가지: ArrayList, LinkedList, Stack, Vector - 여기서 대표적으로 많이 사용되는 ArrayList와 LinkedList를 비교하고자 함 List 인터페이스 공통점 - 값의 중복을 허용하며 저장순서가 유지된다는 공통점이 있음 ArrayList - 기존 Vector 클래스를 개선한 클래스로, 구현원리와 기능은 동일하나 가급적 ArrayList를 사용하는 것이 좋음 - Object 타입으로 선언되어 모든 종류의 객체가 사용가능함 - 이름에서도 알 수 있듯 배열과 유사한 구조를 가지며, 내용 추가/삭제/정렬 등의 메서드를 제공함 - 데이터의 추가와 읽기에는 ..
배열 (array) - 다수의 데이터를 하나의 이름으로 묶어 관리하기 위한 자료구조로 인덱스와 값으로 구성됨 - 인덱스를 통해 데이터에 접근함 (random access 가능) - 논리적 저장 순서와 물리적 저장 순서가 일치함 (연속적 메모리 공간 차지) - 정적 할당으로 크기 변경이 불가능함 (삽입, 삭제시에도 빈 공간은 유지됨) 리스트 (list) - 메모리 공간 활용이 제한적인 배열의 단점을 극복하기 위해 만들어진 자료구조 - 포인터를 통해 데이터에 접근함 (포인터를 위한 추가 메모리 공간 필요) - 논리적 저장 순서와 물리적 저장순서가 다름 (불연속적 메모리 공간 차지) - 동적 할당으로 크기가 가변적임 (삽입, 삭제시 메모리 재할당) 배열과 리스트 비교 (속도 기준) 작업 탐색 삽입 및 삭제 속..
한 마디로 말하자면, '찝찝하다'. 과연 이게 나의 최선이었을까 싶다. 나는 학부에서 컴퓨터 공학을 전공했으나 바로 개발자의 길을 가지 않았고, 전공과 관련없는 분야에서 약 2년여간의 업무경험을 쌓은 후에 이와 관련한 석사과정에도 진학한 바 있다. 그러던 와중에 코로나 상황과 맞물려 진로고민을 하다가 개발자의 길로 다시 돌아오게 되었다. 그러나 바로 취업 시장에 뛰어들기에는 우선 해결해야 할 두 가지 질문이 내 발목을 잡았다. 1. 최신 트렌드와 기술에 대한 이해가 부족한 상황에서 독학만으로 취업시장에 뛰어들어도 될까? 2. 이 길이 나의 길이 정말 맞는가? (내가 개발자로서 롱런할 수 있을까? / 도피가 아닐까?) 이러한 점들을 보완하기 위해 국비과정을 선택했는데, 그 이유는 이게 나에게는 유일한 선택..