본문 바로가기

전체 글

(750)
[네트워크] 소켓과 윈도우 소켓 소켓 이란? 네트워크 프로그램 역시 통신의 내부 처리 과정을 이해하지 못해도 데이터를 초기화하고 정해진 절차에 따라 함수를 호출하는 작업만으로 만들 수 있습니다. 네트워크 프로그램을 제작하는 방법은 다양하지만, 다양한 플랫폼에서 널리 사용되는 것이 소켓 프로그래밍 방식입니다. 소켓 프로그래밍에서 '소켓'이라는 용어의 의미를 1)데이터 타입, 2)통신 종단점, 3)네트워크 프로그래밍 인터페이스 3가지 관점에서 볼 수 있습니다. 1) 데이터 타입소켓은 파일 디스크립터(file descriptor) 혹은 핸들(handle)과 유사한 개념으로, 일단 만들고 나면 함수를 호출하여 손쉽게 네트워크 통신을 수행할 수 있습니다. SOCKET sock = socket(...); //소켓 생성...recv(sock, ....
[네트워크] TCP/IP 프로토콜 소개 TCP/IP 프로토콜 구조 인터넷을 통해 통신을 수행하는 개체는 크게 호스트와 라우터로 나눌 수 있습니다. 호스트(host): 최종 사용자(end-user) 응용 프로그램을 수행하는 주체라우터(router): 호스트에서 생성된 데이터를 여러 네트워크를 거쳐 전송함으로써 서로 다른 네트워크에 속한 호스트 간에 데이터를 교환할 수 있게 하는 장비 호스트와 라우터, 라우터와 라우터 그리고 호스트와 호스트가 통신하려면 정해진 절차와 방법을 따라야 하는데 이를 통신 프로토콜 이라고 부릅니다. 인터넷에서 사용하는 핵심 프로토콜은 TCP와 IP로, 이를 비롯한 각종 프로토콜을 총칭하여 TCP/IP 프로토콜이라고 부릅니다. 통신을 수행하는 주체이자 통신의 최종 목적지는 호스트 자체가 아닌 호스트에서 수행하는 응용프로그..
[자바성능] 프로그램 속도 측정 성능이 느리다고 할 때 가장 먼저 해야 하는 작업은 병목 지점을 파악하는 것입니다. 자바 기반의 시스템에 대하여 응답 속도나 각종 데이터를 측정하는 프로그램은 많이 있습니다. 애플리케이션의 속도에 문제가 있을 때 분석하기 위한 툴로는 프로파일링 툴이나 APM(Application Performance Monitoring 혹은 Management) 툴 등이 있습니다. 프로파일링 툴(프로파일러)이란? 프로파일링 툴- 소스 레벨의 분석을 위한 툴입니다.- 애플리케이션의 세부 응답 시간까지 분석할 수 있습니다.- 메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석할 수 있습니다.- 가격이 APM 툴에 비해서 저렴합니다.- 보통 사용자수 기반으로 가격이 정해집니다.- 자바 기반의 클라이언트 프로그램 분석을..
[MySQL] MySQL 사용시 하지 말아야 할 13가지 MySQL 쓰면서 하지 말아야 할 것 17가지 ( https://blog.lael.be/post/370 ) 1. 작게 생각하기 (MySQL ecosystem, 캐싱 사용, 확장 가능한 아키텍처, 복제/파티셔닝 고려) 2. EXPLAIN 실행계획 안보기 3. 잘못된 데이터 타입 선택 4. 스토리지 엔진 이해없이 사용 (단일 엔진으로 전체 아키텍처를 결정했다면 대부분 최적이 아님 / 엔진별 장단점 공부 필수) 5. 인덱스 레이아웃 이해없이 사용 6. 쿼리 캐시에 대한 이해없이 사용 7. Stored Procedure를 무분별한 사용 (다른 RDBMS와 다르게 connection thread에서 실행 계획이 세워짐 - ETL 타입 프로시저 - 아주아주 복잡하지만 자주 실행되지 않는 것 - 한번 요청할 때마다 ..
[자바] VO에서 Serializable을 구현하는 이유 Serializable 인터페이스를 구현한다고 해서 반드시 구현해야하는 메소드가 있는 것도 아니고, 변수가 존재하는 것도 아닙니다. 이 인터페이스를 구현하면 객체를 직렬화할 수가 있습니다. 다시 말해 서버 사이의 데이터 전송이 가능해집니다. 원격 서버에 데이터를 전송하거나, 파일로 객체를 저장할 경우에는 이 인터페이스를 구현해야 합니다. 1년차때는 이유를 몰라서 직렬화 인터페이스를 구현하지 않았는데, 3년차때 실제 서버간 객체 전송에서 문제가 생기는 것을 경험하고 그제서야 직렬화 인터페이스를 구현해야하는 이유를 정확히 알게 되었던것 같습니다. 물론 저도 직렬화에 대해 이리저리 찾아봐도 실제로 와닿지가 않았습니다만, 역시 사람은 지식도 지식이지만 몸으로 부딪히며 깨닫는 과정도 필요한것 같습니다.