반응형

전체 글 114

[열거 타입] Enum 공부하다 생긴 의문점 2가지

Enum 클래스 먼저 Enum 클래스의 코드를 살펴보겠습니다 public abstract class Enum implements Comparable, Serializable { private final String name; private final int ordinal; public final String name() { return this.name; } public final int ordinal() { return this.ordinal; } protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; } public String toString() { return this.name; } public fin..

개발 2022.03.02

[SSAFY/싸피] 2월 교육 회고록

한 달 간의 회고 2월 15일에 첫 교육 지원금을 받게 되었습니다. 1월 5일부터 스타트 캠프를 시작했기 때문에 매월 말이 아닌 매월 15일에 지원금을 보내주는 것 같습니다. 1월 한달동안 제 자신을 극한으로 몰아 붙여 공부를 했었고, 그로 인해 2월 한달 동안은 체력적 한계와 더불어 번아웃이 자주 왔습니다. 사실상 자바 스프링을 배우기 시작한 시점이 작년 여름이었는데, 비전공자인 제가 다른 학생들은 4년간 스펙 쌓고 실력도 갖춰서 취업하는 IT 서비스 회사를 목표로 한 것이 그 이유 아닐까 합니다. 그래도 내가 하고 싶은 일, 내가 다니고 싶은 회사에 가기 위해 힘들어도 포기하지 않고 끝까지 공부할 생각입니다. 일주일 전부터 취업 공고가 하나 둘씩 나오고 있는데 최근 알고리즘을 빡세게 준비한 만큼, 코..

교육 2022.03.01

[Google HashCode] 2022 구글 해시코드 참가 후기

결론부터 말하자면.. 전 세계 10177팀 중에서 663등, 한국 54팀 중에서 15등을 했습니다. 첫 출전이고 준비 기간이 2일이었던 것을 생각해보면 정말 좋은 성과를 거두었다고 생각합니다. 대회 소개 Hash Code - Google’s Coding Competitions A team programming competition — you pick your team and coding language to solve an engineering problem. Are you up for the challenge? codingcompetitions.withgoogle.com 구글의 팀 기반 프로그래밍 경연 대회이며, 구글에서 실제로 직면했던 문제들을 간단하게 모델링한 상황을 해결하는 알고리즘을 구성하는 대..

대회 2022.02.25

[제네릭] 타입 안전 이종 컨테이너.. 이거 어디에 사용할까?

궁금증 이펙티브 자바 "아이템 33 - 타입 안전 이종 컨테이너를 고려하라"를 읽으면서 든 궁금증이다. 그래... 다양한 타입을 하나의 컬렉션 등에 넣기 위해, 예를 들어 Map의 key에는 클래스 리터럴 값을 넣고 value에는 Object를 받는다고 치자. 저 map에서 put과 get을 할때 메서드를 직접 구현해서 type.cast() 등을 활용해서 타입 안전하게 여러 타입을 넣을 수 있게 되었다. 교재에서는 이러한 동적 형변환으로 런타임 타입 안전성을 확보하는 방식을 java.util.Collections에 있는 checkedSet, checkedList, checkedMap 같은 메서드를 만들 때 적용했다고 한다. 그래 알겠다.. 이 래퍼들은 제네릭과 로 타입을 섞어 사용하는 애플리케이션에서 클..

개발 2022.02.21

[제네릭] 컬렉션이나 단일 원소 컨테이너에서 매개변수화 되는 대상은 무엇일까?

이펙티브 자바 "아이템 33 - 타입 안전 이종 컨테이너를 고려하라"를 읽는 도중, 한 구문이 이해가 되지 않았습니다. 다음은 이펙티브 자바 198쪽에 나오는 문단입니다. 제네릭은 Set, Map 등의 컬렉션과 ThreadLocal, AtomicReference 등의 단일원소 컨테이너에도 흔히 쓰인다. 이런 모든 쓰임에서 매개변수화되는 대상은 (원소가 아닌) 컨테이너 자신이다. 따라서 하나의 컨테이너에서 매개변수화할 수 있는 타입의 수가 제한된다. 컨테이너의 일반적인 용도에 맞게 설계된 것이니 문제될 건 없다. 예컨대 Set에는 원소의 타입을 뜻하는 단 하나의 타입 매개변수만 있으면 되며, Map에는 키와 값의 타입을 뜻하는 2개만 필요한 식이다. 저는 2번째 줄인 "이런 모든 쓰임에서 매개변수화되는 대..

개발 2022.02.20

[제네릭] 제네릭 메서드에 type parameter section이 존재하는 이유가 무엇일까?

이펙티브 자바 스터디에서 제가 발표한 아이템 31의 내용에 대해 스터디원께서 좋은 질문을 해주셨습니다. 바로 제네릭 메서드에서 type parameter section이 존재하는 이유가 무엇일까? 라는 질문이었습니다. 공식 문서 Generic Methods (The Java™ Tutorials > Learning the Java Language > Generics (Updated)) The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technolo..

개발 2022.02.14

[제네릭] Java에서 배열을 공변(covariant)으로 만든 이유는 무엇인가?

이펙티브 자바 스터디에서 제가 발표한 아이템 28의 내용에 대해 스터디원께서 좋은 질문을 해주셨습니다. 바로 Java에서 배열을 공변(covariant)으로 만든 이유가 무엇일까? 라는 질문이었습니다. 공변과 불공변 질문에 대한 답에 앞서 공변과 불공변에 대해 먼저 알아보도록 하겠습니다. 공변 (covariant) 정의 : 함께 변한다 배열은 공변입니다 Sub가 Super의 하위 타입이라면 배열 Sub[]는 배열 Super[]의 하위 타입이 됩니다 예시 코드 // 런타임에 실패한다 Object[] objectArray = new Long[1]; // 컴파일이 되어 버린다.. objectArray[0] = "Hello"; // 런타임에 ArrayStoreException을 던진다.. 위의 코드에서 배열은 ..

개발 2022.02.14

2강. System Structure & Program Execution

컴퓨터 시스템 구조 CPU와 Memory : Computer Disk와 키보드, 프린터, 모니터 : I/O device CPU 메모리보다 더 빠르면서 정보를 저장할 수 있는 register를 가진다 지금 CPU에서 실행되는 것이 운영체제인지 사용자 프로그램인지를 구분해주는 mode bit을 가진다 CPU가 메모리 접근을 하다가 I/O가 발생하면 이를 I/O device의 device controller에 요청하고 자신은 다음 Instruction을 실행한다. 사용자 프로그램은 직접 I/O 접근을 못하므로 자신의 CPU 제어권을 OS에 넘기면서 이를 요청하는 것이며, OS는 device controller에 의해 I/O가 진행되는 동안 CPU의 제어권을 다른 프로그램으로 넘겨준다 I/O 요청을 받은 해당 ..

1강. Introduction to Operating Systems

운영체제 (Operating Systems, OS) 담당 교수 : 반효경, 이화여자대학교 참고 교재 A.Silberschatz et al., Operating System Concepts, Seventh Edition, John Wiley & Sons, Inc. 2004. (또는 동저자의 Operating System Principles, Seventh Edition, Wiley Asia Student Edition) 강의목표 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 요소 및 그 알고리즘의 핵심적인 부분에 대해 기초부터 학습한다. 운영체제란 무엇인가? 운영체제란? ..

반응형