전체 글 172

자료구조 - 연결 리스트 (Linked List)

연결 리스트의 구조 연결 리스트에서는 각 데이터 항목들이 기억장소내의 어떤 위치에 어떤 항목이 있는 지를 표시해 주어야 한다. 이를 위해 데이터 항목에는 값뿐만 아니라 다음 항목의 위치 정보도 함께 저장해둔다. 위치정보의 저장에는 포인터가 사용된다. 연결 리스트에서의 포인터 연결 리스트에서 포인터는 각 항목의 다음 순서인 항목이나 앞 순서인 항목의 위치를 가르키는 지시자이다. 연결 리스트의 마지막 노드에는 다음 순서인 항목이 없고, 첫번째 노드에는 이전 순서인 항목이 없으므로 이들 포인터는 null로 해주어야 한다. 포인터는 연결 리스트의 핵심이다. 연결 리스트에서 공통적인 사항은 데이터 항목 간의 결합이 데이터 항목 자체 내에 포함되어 있는 정보에 의해 포인터의 형식으로 정의된다는 것이다. 이런 사실은..

algorithm 2007.12.17

자료구조의 종류

☞ 선형 구조 자료가 일렬로 연결되어 있는 모양으로 구성하는 방법.예 ) 배열과 레코드, 연결 리스트, 스택과 큐 등 ☞ 비선형 구조 자료들의 구성이 일렬로 연결되는 것이 아니라 특별한 모양으로 연결되어 있는 구조.예 ) 트리와 그래프 ※ 자료구조 선택시 고려되는 기준 자료의 양 자료의 활용 빈도 자료의 갱신 정도 사용 가능한 기억 용량 처리 시간의 제한성 프로그래밍의 용이성

algorithm 2007.12.17

자료구조의 구성

비트(Bit) : 비트(bit)는 이진수(binary digit)의 약자이며, 이진수의 한 자리수를 나타내는 기본 단위이 다. 1비트로 표현할 수 있는 값은 0과 1이다. 만약 어떤 장치에 2가지 이상의 상태 또는 값 이 존재한다면 특정한 상태를 표현하는데 한 개 이상이 비트가 소요된다. 즉, 00,01, 10, 11 의 4(=22)가지 상태를 표현하기 위해서는 2개의 비트가 요구되며, 8(=23)가지의 상태는 3개 의 비트가 요구된다. 이와 같이 비트를 이용하여 많은 자료를 수용하기 위해서는 여러 개의 비트 모임이 필요하며, 이 비트 모임을 비트 스트링(bit string)이라고 한다. 니블(Nibble) : 4개의 비트들이 기억공간에 연속적으로 모여서 이루어진 단위를 말한다. 1 nibble = 4b..

algorithm 2007.12.17

간단한 코딩으로 곱셈 나눗셈 하기

요즘 c/c++강좌가 올라오면서 파코즈에도 프로그램 열풍이 불고 있는 듯합니다..^^ 저도 같이 공부하고 서로 정보 공유하자는 차원에서 중급코딩시 유용한 팁하나 소개할까합니다. 매우 간단한건데요. c/c++ 연산자들 중에는 비트연산자() 가 있습니다. 비트연산자란 간단히 말해 0과1 2진수로 표현되어있는 기계어를 비트연산자를 이용해서 계산하는 방법으로 컴퓨터가 이해하기 쉬운 비트를 계산해 속도가 빠르다는 장점을 가지고 있습니다. 잡소리 그만하고 본론으로 바로 설명들어가자면.. a 라는 변수의 2배수를 구하고 싶다면.. a = a*2; 이런 코딩이 나오겠지요 이 식을 비트연산자로 바꾸면 이렇게 됩니다. a = a

객체지향적 고급 자바스크립트 개발을 위한 가이드

Quick guide to somewhat advanced JavaScript tour of some OO features by Sergio Pereira last update: February 21st 2006 Hey, I didn't know you could do that 여러분이 개발자이고 나와 같은 길을 걸어 왔다면, 웹페이지에서 꽤 많은 Javascript 조각들을 사용해 왔을 것이다. 마치 UI의 딱풀 마냥.. 최근까지 나는 Javascript가 내가 취업 했을 때보다 더 객체지향(OO_ 능력을 가졌다고는 하지만 난 별로 그것을 사용해야하는 느낌은 받지 못했다. 브라우져들이 Javascript와 DOM의 좀더 표준화된 형상을 지원하기 시작함에 따라, client 상에서 구동하기 위한 더 복잡..

javascript 2007.12.14

코드의 웃음을 빼앗아가는 리펑토링(Refuctoring)

우선 아래글은 마소 잡지의 컬럼에 올라왔던 글을 인용한것이라는 것을 우선 밝힌다. 내가 생각하는 좋은 코딩은 과연 다른사람이 내가 짜놓은 소스를 보고 이해가 쉽게 되는가 이다. 소스라는 것이 스파게티의 면처럼 복잡할 수 밖에 없겠지만 그렇다고 엉킨 면을 더욱 엉켜놓을 필요는 없지 않은가.... 특히 프레임웍까지 사용하면서 이런 리펑토링 코드까지 감당해야 한다면.. 간단한 커스터 마이징을 위해 소스의 분석을 하다가 하루가 다지나가고 결국 야근을 야기시키는 개발자들 사이에선 없어져야할 부분이 아닌가싶다. 밑의 고맨의 6가지 리펑토링을 가지고 구체적인 예를 들어 설명하고 있다. 사실 6가지 리펑토링 중 필자가 가장 와닿는 리펑토링은 ‘보물찾기(Treasure Hunt)’ 이다. 사실 이런 코딩 기법을 기교 마..

톰캣 콘솔에 java heap space error로 서버가 다운될 경우...

예전부터이런 오류가 있었던 것인지.. 현재 프로젝트에서 사용중인 톰캣(5.5.12)버젼이 문제인 것인지 확인되지 않다. 원인은 톰캣이 사용하는 JVM의 heap메모리에서 overflow가 발생 했을 경우이다. 단순히 오류내용을 해석해보면 이렇지만.. 근본적인 원인이 무엇인지를 알아야 하는데 두가지로 추측해 볼수있다. 첫째로 톰캣서버 자체내에서 최대메모리를 확장하지 못하는 경우이다. 현재 진행중인 프로젝트에서 그런 문제로 해결했는데.. 우선 이 방법은 tomcat 5.5버젼에서 시도한것이라는 것을 미리 밝힌다. \tomcat폴더\catalina.bat @echo off if "%OS%" == "Windows_NT" setlocal rem --------------------------------------..

tomcat 2007.12.06

AJAX 환경에서 한글 파라미터 처리

jsp웹에서 ajax 함수를 호출하여 서버로 한글 파라미터를 전송하면 한글이 깨집니다. AJAX가 기본적으로 파라미터를 UTF-8로 인코딩하여 전송을 한다고 하더군요. 이것 때문에 몇일 고생했네요.. 이것저것 해보고, 괜히 톰캣도 만지작거리기도 하다가 결국... 비베스크립트 써서 Hex코드 변환하는 방식으로 해결을 했지만.. 쌩뚱맞게 왠 비베인가 싶어서..다시 방법을 찾다가 결국 아주 간단하게 해결을 봤네요. 파라미터를 보내는 jsp단에서 해당 파라미터를 다음과 같이 처리합니다. escape(encodeURIComponent('한글파라미터')); XMLHttpRequest의 send함수를 통해서 스트럿츠 단으로 파라미터를 전송하게 되면.. 스트럿츠(Action클래스)에서는 이 UTF-8로 날아온 파라미터..

javascript/Ajax 2007.12.06

쿠키 보안

㈜안랩코코넛 선임컨설턴트 이호선 hosik@coconut.co.kr 인터넷의 사용 인구가 계속 증가하는 추세에서 월드와이드웹은 중요한 요소를 차지하고 있다. 특히 전자상거래, 인터넷뱅킹, 커뮤니티, 포럼 등과 사용자 인증을 요하는 월드와이드웹의 비율도 계속하여 높아지고 있다. 월드와이드웹을 구성하는 프로토콜인 HTTP는 세션을 유지하지 않는 프로토콜이기 때문에 인증된 정보를 세션으로서 유지하기 위해 쿠키의 개념이 도입되었다. 본 문서에서는 이러한 쿠키에 대해서 알아보고 보안상 위협 요소, 그리고 그에 대한 대응책에 대하여 알아보기로 한다. Cookie는 사용자가 방문한 웹 사이트에서 추후에 어떤 용도로든 사용하기 위해서 사용자의 하드디스크에 남기는 정보를 의미한다. 예를 들어 사용자가 특정 팝업창에 대해..

javascript 2007.12.06

jps - Java 가상 머신 프로세스 스테이터스 툴

jps - Java 가상 머신 프로세스 스테이터스 툴 개요 설명 옵션 호스트 식별자 출력 형식 례 관련 항목 형식 jps [ options ] [ hostid ] options 커멘드행 옵션 hostid 프로세스 리포트를 생성하는 호스트의호스트 식별자 . hostid 에는, 통신 프로토콜, 포토 번호, 구현에 고유한 다른 데이터를 지정한 옵션 컴퍼넌트를 포함할 수가 있습니다. 설명 jps 툴은, 타겟 시스템상에서 계측 된 HotSpot Java 가상 머신 (JVM)을 일람표 가리킵니다. 이 툴로 표시할 수 있는 리포트 정보는, 액세스권을 가진 JVM 에 관한 것으로 한정됩니다. hostid 를 지정하지 않고 jps 를 실행했을 경우, 로컬 호스트로 계측 된 JVM 가 검색됩니다. hostid 를 지정해 ..