CS

잔디심는 정원사
[Java] String (Array) <-> Int (Array) 변환 정리
·CS/JAVA
1. String Int Array✨ String  ➡️ Int Array1. str.charAt(char) - '0'; String str = "12345"; int[] digits = new int[str.length()]; for(int i=0; i 2. Stream으로 만들기string array을 Stream으로 만들고 mapToInt(Integer::parseInt), toArray()를 이용String str = "12345";int[] digits = Arrays.stream(str.split("")) .mapToInt(Integer::parseInt) .toArray();System.out.println(..
운영체제 0장 - CPU Instruction Cycle (컴퓨터 구성 내용)
·CS/OS
CPU Instruction Cycle명령어 패치(Instruction Fetch)메모리에서 명령어를 명령어 레지스터(IR)로 가져온다실행할 명령어의 주소를 어떻게 알 수 있을까?이는 프로그램 카운터(PC)가 가리키는 주소에서 명령어를 가져온다.디코드(Decode)IR에 있는 명령어의 오퍼레이션 코드(opcode)를 식별한다.오퍼레이션 코드를 식별하기 위해 우리는 무엇을 사용할까?이는 명령어 레지스터(IR)에 저장된 비트 패턴을 분석하여 식별한다.데이터 패치(Data Fetch), MRI 명령어인 경우지정된 “주소”에서 타깃 메모리 위치로부터 데이터를 데이터 레지스터(DR)로 읽어온다.실행(Execute)디코드된 명령어를 실행결과 데이터 저장(Store Result Data)누산기(AC)에서 결과 데이터..
운영체제 0장 (들어가기 앞서)
·CS/OS
Four Components of a Computer System컴퓨터는 크게 하드웨어, 운영체제, 어플리케이션 프로그램, 유저 이 4가지 요소로 구성된다.보편적으로 받아들여지는 운영체제의 정의는 사실 없다. 하지만 굳이 정의를 해보자면, 운영체제는 컴퓨터 상에서 항상 실행되고 있는 프로그램이라고 할 수 있으며, 운영체제의 가장 핵심적인 부분을 커널(kernel) 이라고 부른다.커널에는 시스템 프로그램과 어플리케이션 프로그램이라는 두 가지 타입의 프로그램이 있다.운영체제는 하드웨어를 관리하는 역할을 하며 사용자를 위해 작동한다. 사용자가 컴퓨터 시스템에서 프로그램(소프트웨어)을 구축하거나 실행하고자 할 때 이를 지원한다. 이 시스템은 CPU, 메모리(레지스터, 캐시, 주 메모리 포함), HDD(또는 SS..
Java 자료구조 - Map 정리
·CS/DataStructure
Map키(Key)와 값(value)의 쌍으로 연관지어 이루어진 데이터의 집합이다.값(value)은 중복되서 저장될수 있지만, 키(key)는 해당 Map에서 고유해야만 한다.만일 기존에 저장된 데이터와 중복된 키와 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남게 된다.추상 메서드설명void clear()Map의 모든 객체를 삭제boolean containsKey(Object key)지정된 key객체와 일치하는 객체가 있는지 확인boolean containsValue(Object value)지정된 value객체와 일치하는 객체가 있는지 확인Set entrySet()Map에 저장된 key-value쌍을 Map.Entry타입의 객체로 저장한 Set을 반환boolean equals(Object o)..
Java 자료구조 - Stack, Queue, Deque 정리
·CS/DataStructure
Stack 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 구조 특징이 있는데, 이러한 자료의 구조를 LIFO(Last In First Out) 구조라고 말한다. 또한, 전 게시글에서 봤듯이 자바의 Stack 클래스는 Vector 클래스Visit Website를 상속(extends)받기에 Thread-Safe 하다는 특징을 가지고 있다.Method설명boolean empty()Stack이 비어있는지 알려준다.Object peek()Stack의 맨 위에 저장된 객체를 반환pop과 달리 Stack에서 객체를 꺼내지는 않는다.비어있을 경우 EmptyStackException 발생Object pop()Stack의 맨 위에 저장된 객체를 꺼낸다.비어있을 경우 EmptyStackException발생Objec..
Java 자료구조 - List , Set 정리
·CS/DataStructure
Collection 프레임워크에서 지원하는 자료구조들과 Map은 전부 힙 영역에 저장이 된다.List, Set, Map의 각 노드에는 객체를 가르키는 주소가 저장되어있다. 중복이 허용되는 List와 Map은 A요소와 B요소가 서로 완전히 똑같은 값을 가진 객체가 배정 된다면 하나의 객체를 가르키는 주소값을 서로 공유 하는 형태로 구성된다.  ListList는 중복된 값을 삽입하는 것이 가능하고 인덱스 넘버를 통해 참조하고 관리된다.List 종류특징ArrayList중복된 요소 저장 o 스레드 안전성 x 삽입, 삭제시 인덱스 요소들이 직접 이동 o Vector중복된 요소 저장 o 스레드 안전성 xLinkedList중복된 요소 저장 o 스레드 안전성 x 삽입, 삭제시 인덱스 요소들이 직접 이동 x (just ..
리팩토링
·CS/Design Pattern
리팩토링이란?시스템의 외부 행위는 바뀌지 않고 기능적 요구는 유지한 상태로 시스템의 내부 구조를 개선하는 것이다. 즉, 프로그램이 작성된 후에 설계를 개선하는 것이다. 리팩토링은 처음 한번에 설계가 올바로 되기 어렵다는 것과 프로그램의 요구가 바뀌면 설게도 계속 바뀌어야 한다는 이해가 깔려 있다. 따라서, 설계를 조금식 점증적으로 전환시키는 기술을 제공하는 것이다. 코드의 크기가 줄어들고 혼란스러운 구조가 단순한 구조로 바뀐다는 장점이 있다. Bad Smell 코드1. 기능 산재 (Shotgun Surgery)변경할 때마다 여러 다른 클래스를 수정해야 하는 경우이다. 예를 들어, 로깅 시스템이 여러 클래스에 걸쳐 구현되어 있어 로깅 방식을 변경할 때마다 모든 관련 클래스를 수정해야 하는 상황이 이에 해당..
반복자 패턴 (Iterator Pattern)
·CS/Design Pattern
반복자 패턴이란?반복자 패턴은 자세한 표현방법을 나타내지 않고, 객체 집합의 요소들을 순차적으로 접근하게 하는데 사용한다. 별도의 이터레이터 객체를 반환 받아 이를 이용해 순회하기 때문에, 집합체의 내부 구조를 노출하지 않고 순회 할 수 있다는 장점이 있고, 리스트 객체와 방문하는 프로세스 사이의 결합을 줄인다. 자바의 컬렉션 프레임워크(JCF)에서 각종 컬렉션을 무리없이 순회할수 있는 것도 내부에 미리 이터레이터 패턴이 적용되어 있기 때문이다.반복자 패턴 사용 법Aggregate (인터페이스) : Iterator의 집합체 컬렉션으로, ConcreateIterator 객체를 반환하는 인터페이스를 제공한다.ConcreateAggregate (클래스) : Aggregate를 구현하는 집합체 구현체Iterat..
데코레이터 패턴 (Decorater Pattern)
·CS/Design Pattern
데코레이터 패턴이란?데코레이터 패턴은 대상 객체에 대한 기능 확장이나 변경이 필요할 때 객체의 결합을 통해 서브클래스화를 융통적으로 선택할 수 있게 한다. 재귀적 연관을 이용해 객체 체인을 생성하는데 데코레이터 객체에서 시작해 새로운 기능에 대한 책임들을 추가하고, 오리지널 객체에서 마감을 한다. 데코레이터 패턴을 이용하면 필요한 추가 기능의 조합을 런타임에서 동적으로 생성할 수 있다. 데코레이터할 대상 객체를 새로운 행동들을 포함한 특수 장식자 객체에 넣어서 행동들을 해당 장식자 객체마다 연결시켜, 서브클래스로 구성할때 보다 훨씬 유연하게 기능을 확장 할 수 있다. 그리고 기능을 구현하는 클래스들을 분리함으로써 수정이 용이해진다.데코레이턴 패턴 사용 법Component (Interface) : 원본 객..
커맨드 패턴 (Command Pattern)
·CS/Design Pattern
커맨드 패턴이란?커맨드 패턴은 객체의 메서드(행위)를 클래스로 만들어 캡슐화한 패턴이다. 즉, 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 것이다. 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자 Invoker 클래스와 실제 기능을 수행하는 수신자 Receiver 클래스 사이의 의존성을 제거한다. 따라서 실행될 기능의 변경에도 호출자 클래스를 수정 없이 그대로 사용할 수 있도록 해준다. 또한, 작업 요청 자체가 객체가 되기 때문에, 다른 객체처럼 '작업 요청' 자체를 저장하고, 복구하고, 확장할 수 있다.커맨드 패턴 사용 법Command실행될 기능에 대한 인터페이스실행될 기능을 execute 메서드로 선언ConcreteCommand실제로 실..
minsu20
'CS' 카테고리의 글 목록 (2 Page)