어느 분하고, LinkedList 문제에 대해서 이야기를 나누다가, jvm 관련 이야기까지 나왔던 기억이 납니다. 그에 대해서, 어딘가에 정리한다 해 놓고, 깜빡 잊었는데요. 이제서야 정리해 봅니다. 저는 jdk8에서 프로그램을 실행하였습니다. jvm의 gc 로그를 출력하기 위해서는 option을 만져야 합니다. Run에서 Edit Configurations에 들어가 보겠습니다. 창이 하나 뜨는데요. 여기서 add Run Option을 눌러 보겠습니다. add VM options에 체크해 주겠습니다. 그리고 -verbose:gc를 옵션으로 주겠습니다. 해당 옵션은 gc event를 출력하는 옵션입니다. 이 옵션을 주고 실행시킬 프로그램은, 해시맵 hm에 Dog 객체 30만개를 넣고, 새롭게 생성되는 Do..
코딩 검색 결과
java 강의에서 == 연산자에 대해, 이 글에서 언급을 했었습니다. 그런데, 질문을 받고 답변을 하다 보니, 헷갈리는 점이 있었습니다. 객체에서 다른 객체를 참조하는데 a == b인 경우가 있을까? 사실, 이에 대한 답은 문서에 있습니다. Object 클래스에 있는 equals 메서드에 나와 있는데요. 다른 부분은 없고, 초록색 부분과 노란색 부분만 읽어보시면 됩니다. x와 y가 같은 오브젝트를 참조한다를 명제 Q, Object 클래스의 equals 메소드가 true를 리턴한다를 명제 P라 합시다. if and only if는 필요 충분 조건을 나타냅니다. 즉, 저 메소드가 참 값을 리턴했다는 것은, x와 y가 같은 객체를 참조했다는 것입니다. 이런 경우에만 참이 된다는 소리입니다. x == y인데 다..
c, c++에서 제가 꽤 많이 쓰던 것 중 하나는 삼항 연산자였습니다. 파이썬에는 없을까요? 예를 들어, a의 절댓값을 구하는 mabs 메서드를 생각해 보겠습니다. 이것은 아래와 같이 쓸 수 있습니다. a가 0보다 작으면, -a를 리턴합니다. 그렇지 않으면, if문에 걸리지 않으니 4번째 줄을 수행합니다. a를 돌려주는데요. 7번째 줄에 -1을 인자로 넣어서 mabs를 호출합니다. 실행 결과는 위와 같습니다. -1의 절댓값은 1이니, 의도한 결과대로 잘 나왔음을 볼 수 있어요. 이 링크를 보면, 중간에 이런 구문이 나옵니다. 이것은 C이면, x가 평가되고, 그렇지 않으면 y로 평가됩니다. 즉, C가 참이면, 노란색이 수행되고, 아니면 y가 수행됩니다. 이를 응용하면, mabs를 1줄로 바꿀 수 있습니다...
c언어를 공부하시다 보면, 한 번 쯤 막히는 부분이 있습니다. 배열 포인터. 쉽게 말해서 배열을 가리키는 무언가입니다. 나중에 행 우선 열 우선 방식을 할 때 다시 언급을 하고, 여기에서는 간단하게 언급을 하겠습니다. 이 글을 읽기 위해서 중요한 것은 배열은 배열 그 자체로 다루어야 한다는 점입니다. 4번째 줄을 보시면, 4 by 4짜리 배열이 선언되어 있습니다. 그리고 5번째 줄에, int (*p)[4] = &(a[0])이라 되어 있는데요. 좌항부터 해석해 보겠습니다. 시계 방향 rule에 따라서 보도록 하겠습니다. 먼저, 4번째 줄부터 해석되는데요. (*p)는 p가 포인터이다. 라는 의미입니다. 그런데, 어떤 포인터일까요? 돌려 보니까 [4]라고 되어 있습니다. 이것은 [4]개짜리의 원소를 가진다는 ..
저는 변수를 출력할 때, 문자열을 이어 붙여서 출력하곤 했습니다. 그런데, 사실 간단한 방법이 있었습니다. 파이썬 3.6 부터는 Literal String Interpolation이 도입되었습니다. PEP 498에서는 이를 f-string으로 언급하고 있는 듯 합니다. 간단하게 예제 몇 개를 보도록 하겠습니다. 먼저 cost를 출력하는 방법입니다. 앞에 f 지시자가 들어갔다는 것을 보시면 됩니다. 그리고, 뒤에 {cost}라고 적혀져 있는데요. 실행 결과를 보겠습니다. cost is 21350이라고 나옵니다. cost가 {cost}이다. 꽤나 유용하게 쓰일 법 합니다. 왜냐하면, 저는 이러한 작업을 문자열을 연결해서 많이 했기 때문입니다. 그런데, 이 방법은 읽기 쉽습니다. 많이 쓰일 법 합니다. 당연하..
최근댓글