자바에는 instanceof 연산자가 있습니다. 무엇일까요? String 클래스의 equals 메서드를 보겠습니다. anObject는 Object 객체를 참조하는 변수입니다. 980번째 줄을 보면, anObject instanceOf String 이라고 되어 있습니다. anObject가 String 인스턴스인지 확인하겠다는 것입니다. 그런데 왜 하필? 일단, 우리는 anObject가 Object 참조형이라는 것을 볼 필요가 있는데요. Object는 최상위 루트 부모입니다. 그러면, String도 Object를 상속받은 거고, MyObj1도 Object를 상속받은 것이라고 할 수 있어요. 그러면 String은 Object라고 할 수 있나요? 네 맞습니다. 그러면 반대로, Object 인스턴스는 String..
전체 글 검색 결과
어레이리스트의 addAll 메서드의 성능에 대한 글이 간혹 보입니다. 메서드 내부를 뜯어 보면서, 어디서 오버헤드가 걸리는지 알아보도록 하겠습니다. 먼저 Main 클래스의 main 함수 내에 있는 코드는 아래와 같습니다. 생각보다 복잡하지 않습니다. 그냥 단순히 90개의 Integer를 x에 넣어놓고 List x에 있는 것들을 모두 y에 add하는 작업을 하는 코드입니다. addAll 안으로 들어가 보겠습니다. 가장 먼저 보이는 것은 c를 toArray로 바꾸는 것입니다. 즉, ArrayList c를 Array로 바꾸는 작업을 먼저 하는데요. 여기서 무슨 일을 하는지 안으로 들어가 보겠습니다. 일단 581번째 줄의 c는 무엇을 의미할까요? 90개의 Integer가 들어있는 ArrayList를 의미합니다...
jdbc 프로그래밍을 하시다 보면, PreparedStatement랑 statement는 많이 들어보셨으리라 생각이 듭니다. 이 중 전자를 '준비된 구문' 이라고 이야기를 하는데요. 이 둘에 대해서 간단하게 알아보겠습니다. 예제 프로그램 1을 보겠습니다. 그 전에 테이블 t의 필드 a와 b는 varchar형입니다. 필드 최대 길이는 20으로 잡았습니다. 딱히 어려운 것은 없고, Statement라는 것이 있고, 이것은 SQL을 집어넣습니다. 그런데, SQL은 where a' 라는 문자열과 str과 '가 있는 문자열을 연결하고 있어요. str은 어디서 들어올까요? main에서 입력을 받습니다. 그러면 재미있는 장난 한 번 쳐 보겠습니다. a' or 1 = 1# 이라고 입력해 봅시다. mysql에서 주석은 ..
fwrite는 어떤 일을 하는 함수일까요? block의 데이터를 stream에 쓰는 함수입니다. 함수 원형은 아래와 같습니다. 1번째 인자인 ptr은 쓸 데이터를 의미합니다. void형 포인터인게 눈에 띄는데요. 써야 할 데이터가 moo를 가리키는 포인터인지, student를 가리키는 포인터인지 모르거든요. 2번째 인자인 size는 몇 byte를 쓸 거냐를 나타냅니다. count는 몇 번이나 쓸 지를, 4번째는 파일 포인터를 의미합니다. 예제를 보면서 차근 차근 설명해 보도록 하겠습니다. 프로그램 1을 보겠습니다. 이걸 보기 전에, 1.txt를 먼저 생성해 보겠습니다. 일단 1.txt는 빈 파일입니다. 이는 ls 명령어를 통해서 봐도 알 수 있고, cat 1.txt | wc 명령어를 입력해도 알 수 있습..
리눅스에서 pipe 명령어는 꽤 유용하게 쓰입니다. 이번 시리즈에서는 이들을 구현하기 위해서 필요한 메서드 중에서 dup2 함수를 알아보도록 하겠습니다. 이는 ori 디스크립터를, new로 복사하는 함수입니다. 아앗. 뭔지 잘 모르겠군요. /proc는 괜히 있는 것이 아니니, 이것을 이용해서 하나하나 알아보도록 하겠습니다. 먼저 예제를 보겠습니다. dup2.c입니다. 먼저, pipe(pi)는 파이프를 생성하는 함수입니다. 파이프 하나에는 입구와 출구가 있습니다. 다음에, 5번째 줄에서 dup2 함수를 호출했는데요. 1번째 인자가 pi[1], 2번째 인자가 1입니다. 그러면, pi[1]의 디스크립터를 1번 디스크립터에 복사한다는 의미인데.. 일단, dup를 실행해 보겠습니다. 그리고 다른 세션에서는 ps ..
최근댓글