'전체 글'에 해당되는 글 17건

  1. 2019.11.03 IntelliJ 초기설정
  2. 2019.11.03 맥북 상단 메뉴 바 어플
  3. 2018.10.30 C++ virtual 키워드, virtual table
  4. 2018.10.30 Baekjoon 3146
  5. 2018.10.30 Segment tree, Lazy approch

2019. 11. 3. 23:19 개인

IntelliJ 초기설정

Preference( ⌘,) / Editor / Editor Tabs

Show tabs in one row 체크 해제

✔Open declaration source in the same tab

 

 

Meterial Theme UI plug in 설치
⌘⇧A + Material Theme Wizard 실행
✔ Material Darker Theme
✔ High Contrast
Accent Color: F44336, ✔ Accent Mode
Finish
Accent Color는 다음과 같은 방법으로도 설정 가능 ( ⌘ ⇧A + Accent Tomato)

 

 

Preference( ⌘,) / Editor / Color Scheme

Scheme: High Contrast

 

Preference( ⌘,) / Editor / Color Scheme / General

Identifier under caret

Background: F64436

Error stripe mark: FF0D25

Identifier under caret (write)

Background: F64436

Error stripe mark: FF0D25

 

Rainbow Brackets plug in 설치

 

 

그 외 유용한 Plugins

Java Bean to Json

Lombok

 

---------------------------------

2020.07.17 위의 설정을 다 때려치우고 Material Theme UI의 Dracular 기반에다가 엑센트 설정을 조금 바꿔준 세팅을 업로드.

settings.zip
0.01MB

 

'개인' 카테고리의 다른 글

맥북 상단 메뉴 바 어플  (0) 2019.11.03
Posted by 홍쌍

RunCat: CPU, Memory, 디스크 상태를 간략히 알려주는 앱

App Store에서 다운로드 가능

 

Runner:

✔Parrot

Settings:

✔Show CPU Usage

✔Show Memory Usage

✔Flipped Horizontally

 

                                                                                                                                                                                                                         

 

itsycal: 달력, iCloud 달력과 연동 가능

https://www.mowglii.com/itsycal/ 에서 다운로드 가능

 

Appearance:

✔Use outline icon

✔Show month in icon

✔Show day of week in icon

✔Theme: Dark

✔Show event dots

    ✔Use colored dots

✔Show event location

✔Show calendar weeks

✔Use larger text

 

                                                                                                                                                                                                            

 

Shazam: 현재 들리는 음악 검색

App Store에서 다운로드 가능

 

                                                                                                                                                                                                            

 

Karabiner: 키 매핑 기능 제공, 외부 키보드 사용중일 때 유용하다

https://pqrs.org/osx/karabiner/ 에서 다운로드 가능

RealForce 사용중인 현재 세팅
RealForce 사용중인 현재 세팅, 펑션키

 

 

ps. 키를 누르고 드래그 하면 메뉴바 상의 위치 수정 가능

'개인' 카테고리의 다른 글

IntelliJ 초기설정  (0) 2019.11.03
Posted by 홍쌍

'소멸자는 왜 virtual 키워드를 가져야 하는가?'


한창 취업 준비중인 요즘, 모사의 면접에 가서 들은 질문이다. 그리고, C 스타일의 코드를 써놓고 C++을 써봤다고 우겨왔던 나는 제대로 답하지 못헀다.

같은 면접장에 있던 다른 지원자의 말을 들을 순 있었지만, 아무래도 긴장때문인지 이해가 잘 안됐고, 집에 와서 직접 찾아보고서야 알 수 있었는데, 예시와 함께 보도록 하자.


class A {
public:
	void test() {
		printf("A");
	}
};

class B: public A {
public:
	void test() {
		printf("B");
	}
};

int main() {
	B b;
	A& a = b;
	a.test();
}

다음의 경우 출력 결과가 어떻게 돼야 하고, 어떻게 될까?

레퍼런스 a가 가진 인스턴스는 클래스 b의 객체이고, test 함수는 오버라이딩 되었으므로, 결과로 "B"가 출력되어야 하지만, 아쉽게도 "A"가 출력이 된다.


이는 함수 주소값들이 모두 정적으로 바인딩되어, 레퍼런스 a가 가진 인스턴스의 타입에 상관없이 레퍼런스 a의 타입인 클래스 A의 test 함수를 호출하였기 때문이다. 이런 문제를 피하기 위해 virtual 키워드가 존재한다.

virtual 키워드를 가진 함수가 클래스 내에 존재할 경우, 해당 클래스 인스턴스 생성시 인스턴스들은 모두 virtual function table 포인터를 가지며, virtual 키워드를 가진 함수가 호출되었을 경우 정적으로 바인딩된 함수주소를 참조하여 호출하지 않고, virtual function table을 살펴 (동적으로 바인딩 된)함수를 호출하게 된다.


자, 여기서 소멸자가 virtual 키워드를 가져야 하는 이유를 알 수 있는데, 부모 클래스 타입의 레퍼런스 또는 포인터가 자식 클래스의 인스턴스를 가지고 있는 상태에서 소멸자를 호출할 경우, 해당 자식 클래스의 소멸자가 호출되지 않고 부모 클래스의 소멸자가 호출된다. 만약 자식 클래스에서 따로 할당된 메모리가 있을 경우 해당 메모리의 할당 해지가 이루어지지 않아 메모리 누수가 발생하는 것이다.


추가로, 자바에선 virtual 키워드를 어떻게 처리할까?

public class A {
    public A() {
        System.out.println("A created");
    }

    public void test() {
        System.out.println("A test called");
    }
}

public class B extends A {
    public B() {
        System.out.println("B created");
    }

    public void test() {
        System.out.println("B test called");
    }
}

public class Main {
    public static void main(String[] args) {
        A a = new B();
        a.test();
    }
}

이 경우 B test called가 호출된다. 자바는 모든 함수가 virtual 키워드를 갖는다.


무엇이 이 두가지 차이를 만든것일까?

자바는 객체지향 언어이고, C++는 객체지향의 성격을 갖는 언어이다. 자바는 객체지향 언어이므로 다형성에서 오는 문제들을 언어 스스로 처리할 수 있어야 했지만, C++는 그보다는 성능에 초점을 두어(virtual fuction table 참조에 의한 성능저하?), 프로그래머들이 직접 이를 정하게 하였다... 라고 봐도 될까?



SyntaxHighlighter를 분명 제대로 설정해놨다고 생각했는데 잘 작동하지 않는다. 쓰기도 영 불편하고, 다른 방법을 찾아봐야겠다.

'프로그래밍 언어' 카테고리의 다른 글

Java Generic  (0) 2018.09.30
Posted by 홍쌍

문제(Baekjoon)


내 코드(Github)


작성예정

'알고리즘&자료구조 > 푼 문제' 카테고리의 다른 글

Baekjoon 10565  (0) 2018.10.01
Backjoon 10227  (0) 2018.09.20
Baekjoon 7644  (0) 2018.09.19
Posted by 홍쌍


'알고리즘&자료구조 > 이론' 카테고리의 다른 글

Hasse diagram  (0) 2018.09.30
Min-max heap  (0) 2018.09.29
부분합  (0) 2018.09.24
그래프의 표현  (0) 2018.09.24
트리의 지름  (0) 2018.09.24
Posted by 홍쌍
이전버튼 1 2 3 4 이전버튼

블로그 이미지
홍쌍

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.6
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

최근에 올라온 글

최근에 달린 댓글

글 보관함