JAVA

· JAVA
1. 기본 네트워킹 java에서 TCP/IP 네트워킹은 ServerSocket과 Socket을 이용한다. ServerSocket은 특정 포트에 바인딩해서 클라이언트의 연결 요청을 기다린다. Socket은 클라이언트가 서버에게 연결을 요청하고 통신을 수행하는 용도로 사용하거나 서버에서 클라이언트와 통신하기 위한 용도로 쓰인다. ServerSocket을 생성하는 방법은 다음과 같고, 이미 사용 중인 포트에 바인딩을 하면 BindException이 발생할 수 있으므로 주의하자. // ServerSocket 생성과 바인딩을 동시에 수행 ServerSocket serverSocket = new ServerSocket(5001); // 따로 수행 ServerSocket serverSocket = new Server..
· JAVA
자바에서 데이터는 스트림을 통해 입출력되므로 스트림의 특징을 잘 이해해야 한다. 스트림은 단방향이라는 특성이 있어 입력과 출력용 두 가지 스트림이 존재한다. 자바의 기본적인 IO API는 java.io 패키지에서 제공하고 있다. java.io 패키지의 주요 클래스 설명 File 파일 시스템의 파일 정보를 얻기 위한 클래스 Console 콘솔로부터 문자를 입출력하기 위한 클래스 InputStream / OutputStream 바이트 단위 입출력을 위한 최상위 입출력 스트림 클래스 FileInputStream / ...OutputStream 바이트 단위 입출력을 위한 하위 스트림 클래스 DataInputStream / ...OutputStream ObjectInputStream / ...OutputStrea..
· JAVA
JVM의 메모리 사용 구조는 크게 Thread Memory 영역과 Shared Memory 영역으로 나뉜다고 볼 수 있다. Thread 영역 1. Stack Area Stack Area에는 Local Variable Array, Operand Stack, 프레임(Frame Data)이 저장된다. 1-1. Local Variable Array 메서드의 지역 변수들을 Array에 저장한다. 다음과 같은 코드가 있다고 하자. class Test { void hello(int a, double b, String s) { return; } } Local Variable Array는 다음 변수들을 저장한다. +-----------+ 0 | reference | this (hidden) +-----------+ 1 ..
· JAVA
해싱의 기본 해시 함수 해시 함수는 입력한 Key를 해시 테이블에 적절한 index로 Mapping 해주는 함수를 말합니다. 해시 함수를 어떻게 구현하느냐에 따라서 해싱 성능이 좌지우지 될 수 있습니다. 굉장히 방대한 데이터를 저장해야 하고 충돌에 민감한 HashMap을 구현해야 한다면 당연히 해시 함수 최적화에 노력을 기울여야겠죠. 하지만 아무리 노력해도 해시 함수는 Pigeonhole principle에 의해서 해시 충돌이 발생할 수 밖에 없습니다. 해시 충돌 (Collision) 해시 충돌은 해시 값의 충돌을 의미합니다. 해시 함수를 통해서 Key 값을 해시 테이블에 맵핑하는데 만약에 해싱 결과가 똑같다면 어떻게 처리해야 할까요? Seperate Chaining Seperate Chaining은 C..
· JAVA
Java의 특징 Java는 객체 지향 언어이다. 객체 지향 프로그래밍(OOP: Object Oriented Programming)이라고도 한다. 함수적 스타일 코딩을 지원한다. 자바 8부터 지원하는 람다식을 사용하여 함수적 프로그래밍이 가능하다. JVM의 Garbage Collector를 실행시켜 동적으로 할당된 메모리들을 자동으로 관리한다. JVM 운영체제는 자바 프로그램을 바로 실행할 수 없는데, 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것이 JVM(Java Virtual Machine)이다. JVM은 자바 프로그램을 실행하는 가상 운영체제의 역할을 한다. 운영체제별로 프로그램을 관리하고 실행하..
· JAVA
컬렉션 프레임워크 끝내기 #List List 컬렉션은 다음과 같은 계층 구조를 가지고 있다. List 컬렉션에는 ArrayList, LinkedList, Vector와 같은 구현 클래스들이 있다. LinkedList의 경우 다중 인터페이스 구현 클래스이다. List 인터페이스와 Deque 인터페이스를 둘 다 구현하고 있음을 알 수 있다. ArrayList 대표적인 List 구현 클래스이다. 일반 배열과 ArrayList는 인덱스로 객체를 관리한다는 점이 유사하지만, 배열은 고정형 메모리를 가지고 ArrayList는 동적 메모리 구조를 가진다는 점이 다르다. 즉 ArrayList는 size를 조절할 수 있다. 초기에 사이즈를 지정하는 방법은 다음과 같다. List list = new ArrayList(30..
@xftg77g
'JAVA' 카테고리의 글 목록 (2 Page)