분류 전체보기

· JAVA
제네릭이란? generic : 일반적인 클래스에서 사용하는 변수의 자료형이 여러개 이며 메소드는 동일한 경우, 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정 할 수 있도록 선언한다. 컬렉션 프레임워크에서 많이 사용되고 있다. 제네릭은 타입에러의 발생을 방지한다. 런타임에서 타입 에러가 발생하는 것보다 컴파일 시에 미리 타입을 체크하여 에러를 사전에 방지하는 것이 좋다. 그렇다면 왜 굳이 제네릭을 사용해야 할까? 클래스의 멤버를 Object로 선언하여 모든 타입을 담을 수 있게 만들면 되지 않는가? Object는 문제점이 하나 존재한다. 필요에 의해 타입을 변환해줘야 한다는 점이다. 제네릭은 타입 변환을 제거한다. 코드에서 불필요한 타입 변환을 제거하여 프로그램 성능을 향샹 시킨다. ..
· CS/OS
Process 프로세스는 특정 OS에서 태스크라고도 불린다. 과거에는 job이라고 불렸다고 한다. 일반적으로 프로세스는 OS에 의해 관리된다. 프로그램이 메인 메모리에 로딩되어 실행된다면 프로세스다. (실행중인 프로그램을 프로세스라 한다.) 프로그램은 디스크에 저장되어 있는 수동적인 실행가능 파일이다. 프로그램이 메모리에 로드(마우스 클릭, CLI등을 통해 실행)되면 프로세스가 된다. 프로그램 측면에서 프로세스를 본다면, 프로세스는 프로그램의 인스턴스이다. 프로세스는 업무 수행을 위해 자원(CPU, 저장장치, 입출력장치, 파일 초기화 자료 ,,, )이 필요하다. 이 자원은 OS가 할당해준다. 종합해보면 하드디스크에 저장되어 있는 프로그램이 메인메모리에 로드되고, 운영체제에서 할당받은 자원을 사용하여 동작..
· JAVA
ArrayList는 List인터페이스를 구현한 클래스입니다. AbstractList를 상속받고 아래와 같은 필드를 가집니다. public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable { @java.io.Serial private static final long serialVersionUID = 8683452581122892189L; private static final int DEFAULT_CAPACITY = 10; // 디폴트 용량 private static final Object[] EMPTY_ELEMENTDATA = {}; private static final Obj..
· 일기
언어에 대한 이론적인 공부를 계속 진행하며 조금 나태하진 느낌이 들었다. 스스로 학습을 시작한 6개월 전의 모습에 비해 열정이 줄어든 것이 확연하게 보였고, 부트캠프에 들어와서 요즘은 반 강제적으로 공부를 하는 느낌도 들었다. 근데 어느정도 강제성이 있어야 더 열심히 공부하는 게 맞는 거 같긴 하다. 부트캠프는 나와 잘 맞는 거 같다. 사실 요즘 심적으로 조금 힘들다. 살면서 심적으로 힘들다고 생각해 본 적이 거의 없어서 조금 낯설다. 왜 힘든지 잘 모르겠다. 그래서 나 스스로에게 질문을 해보았다. “나는 개발을 좋아하나?” 좋아하는 것 같다. 사실 새로운 개발 지식을 알게 되면 빨리 코드로 구현해서 프로그램을 만들어보고 싶다는 생각에 엉덩이가 들썩거린다. '객체지향의 사실과 오해'라는 책을 읽는 와중에..
· 일기
이 책을 읽으니 왜인지 좋은 객체지향적인 프로그램을 설계할 수 있을 것 같다는 근거없는 자신감이 솟아 오른다. ‘유일하게 변하지 않는 것은 모든 것이 변한다는 사실 뿐이다’ - 헤라클레이토스 소프트웨어 분야에서 예외가 없는 유일한 규칙은 요구사항이 항상 변경된다는 것이다. 지금까지 객체지향적으로 설계하는 것에 어려움이 있었던 이유는 이 책에서 찾아볼 수 있었다. 나는 어떠한 협력 관계에서 필요한 행동을 정의하고 객체를 생성하는 것이 아닌 객체가 필요한 상태와 객체를 먼저 정의하고 그 상태에 필요한 행동을 결정했었다. 항상 개발하다보면 캡슐화가 깨지는 거 같은 느낌이 드는 이유가 여기에 있었다. 책에서는 이렇게 말한다. 객체의 상태를 먼저 결정할 경우 캡슐화가 저해된다. 상태에 초점을 맞출 경우 상태가 객..
자는 call by reference를 지원하지 않는다. 자바는 값을 복사해서 전달하기 때문이다. 값을 복사한다는 의미는 아래의 실험에서 확인할 수 있다. public class Person { private int age; public Person(int age){ this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class Test { public static void main(String[] args) { Person john = new Person(20); System.out.println(john.getAge()); // 20 changeAge(jo..
constant pool을 조사할 때 나를 너무나 헷갈리게 만들었던 존재 String pool,, 도대체 너는 누구냐 약 30개 이상의 블로그 포스팅, 스택오버플로우 글등을 찾아보았다. 사람들 사이에서 String Constant Pool, String Pool 등의 이름으로 불리는 이녀석은 사실 다른 메모리 공간이다. 당신이 알고있던 String Pool이 Method 영역의 그것이라면 당신은 잘못된 지식을 가지고 있다. String Constant Pool 이는 틀린 표기법이다. Run-Time Constant Pool이 올바른 표기법이다. Each run-time constant pool is allocated from the Java Virtual Machine's method area (§2.5..
· JAVA
메소드를 호출할 때 파라미터를 전달하는 방법에는 두 가지가 있다. call by value: 메소드의 파라미터로 값을 넘겨주는 방식이다. call by reference: 메소드의 파라미터로 참조(주소)를 직접 넘겨주는 방식이다. Call by Value Call by Value는 메소드가 파라미터로 받은 값을 복사하여 처리하는 방식이다. 따라서 호출된 메소드 안에서 인자 값이 변경되어도, 호출한 쪽에서는 영향이 없다. 당신은 복사가 되는 마법 사과를 가지고 있다. 당신은 나에게 그 사과를 복사해서 주었다. 나는 그 사과를 맛있게 먹었다. 당신의 사과는? 그대로 일 것이다. 다음과 같은 코드가 있다고 가정해보자. public class CallByValueExample { public static voi..
· 일기
백준, 프로그래머스에서 해결한 문제를 깃허브 레포지토리에 자동으로 push해준다. GitHub - BaekjoonHub/BaekjoonHub: 백준 자동 푸시 익스텐션(Auto Git Push for BOJ) 백준 자동 푸시 익스텐션(Auto Git Push for BOJ). Contribute to BaekjoonHub/BaekjoonHub development by creating an account on GitHub. github.com 문제를 해결하면 지정한 레포지토리에 문제 내용과 소스코드가 push된다. 설치 및 연동 1. 백준 홈페이지에 로그인한 후, solved.ac 권한을 설정해준다. 2. solved.ac 에서 백준 아이디로 로그인 한다. solved.ac 알고리즘 문제해결 학습의 이정..
hyunsb
'분류 전체보기' 카테고리의 글 목록 (15 Page)