
compareTo 메서드는 Object에 선언되어 있지 않다. 사실 이 메서드는 Comparable 인터페이스에 포함된 유일한 메서드다. Object의 equals 메서드와 특성은 비슷하지만, 단순한 동치성 검사 이외에 순서 비교가 가능하다. Comparble을 구현한 클래스는 다양한 제네릭 알고리즘 및 컬랙션 구현체와 상호 연동이 가능하다. Comparable 인터페이스를 구현하는 클래스의 객체들은 자연적 순서(natural ordering)를 갖게 된다. compareTo 메서드의 일반 규약은 equals와 비슷하다. 객체의 값이 인자로 주어진 객체보다 작으면 음수를, 같으면 0을, 크면 양수를 반환한다. sgn(expression)은 수학에서의 signum 함수를 나타내는 것으로, -1, 0, 1 ..

Cloneable은 어떤 객체가 복제(clone)를 허용한다는 사실을 알리는 데 쓰려고 고안된 믹스인(mixin) 인터페이스다. 기본적인 문제는 이 인터페이스에는 clone 메서드가 없으며, Object의 clone 메서드는 protected로 선언되어 있다는 것이다. Cloneable 인터페이스에 아무런 메서드도 없다면 대체 Cloneable이 하는 일은 무엇인가? protected로 선언된 Object의 clone 메서드가 어떻게 동작할지 정한다. 만일 어떤 클래스가 Cloneable을 구현하면, Object의 clone 메서드는 해당 객체를 필드 단위로 복사한 객체를 반환한다. Cloneable을 구현하지 않은 클래스라면 clone 메서드는 CloneNotSupportedException을 던진다...

오버플로우 산술 연산을 할 때 주의할 점은 충분히 표현 가능한 산출 타입인지 확인해야 한다. 산출 타입으로 표현할 수 없는 값인 경우 오버플로우가 발생하여 쓰레기 값이 반환된다. public class OverflowExample { public static void main(String[] args) { int x = 50000; int y = 50000; int z = x * y; System.out.println(z); } } 변수 x, y는 int 타입이고 z 역시 int 타입이다. 컴파일 에러도 없다. 하지만 변수 z에 예상한 값이 저장되지 않는다. 그 이유는 int 타입 범위를 초과하였기 때문이다. 올바른 값을 얻기 위해서는 변수가 long 타입이어야 한다. public class Overfl..

이클립스 기본 설정 중 하나인 UTF-8 인코딩 설정이다. 인코딩 설정이 안맞을 경우 글자가 깨지는 경우가 종종 있다. 아래와 같이 설정을 하면 간단히 해결 된다. Window – Preferences 설정 General – Workspace – Other UTF-8 선택 Apply General – Content Type – Java Class File 선택 Default encoding에 UTF-8 입력 Update General – Content Type – Text 선택 Default encoding에 UTF-8 입력 Update General – Editors - Text Editors – Speling 선택 Default UTF-8 선택 Apply Web – CSS Files- Encoding..

자바의 특징 이식성이 높은 언어이다. 자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영체제에서 실행이 가능하다. 객체 지향 언어이다. 자바는 100% 객체 지향 언어이다. 객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다. 처음부터 객체를 고려하여 설계되었기 때문에 객체 지향 언어가 가져야 할 캡슐화, 상송, 다형성, 기능을 완벽하게 지원하고 있다. 함수적 스타일 코딩을 지원한다. 자바는 함수적 프로그래밍을 위해 람다식을 자바 8부터 지원한다. 람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다. 메모리를 자동으로 관리한다. 자..

프로그래밍 언어는 컴퓨터가 이해할 수 있는 언어로 일상생활에서 사용하는 언어와는 완전히 다른 기계어(machine language)이다. 기계어는 0과 1로 이루어진 이진 코드이다. 프로그래머와 컴퓨터가 대화하기 위해서는 기계어의 다리 역할을 하는 프로그래밍 언어가 필요하다. 프로그래밍 언어는 저급 언어와 고급언어로 구분된다. 저급 언어 - 기계어에 가까운 언어를 말하며, 대표적으로 어셈블리어가 저급 언어에 속한다. 고급언어 - 사람이 쉽게 이해할 수 있는 언어를 말한다. 고급언어로 작성된 소스는 컴퓨터가 바로 이해할 수 없기 때문에 컴파일(complie) 과정을 통해 컴퓨터가 이해할 수 있는 기계어로 변환하여 컴퓨터가 사용한다.

접근 제어자 자바는 4가지 접근 제어자를 제공한다. 이 접근 제어자는 클래스, 메서드, 변수 등을 선언할 때 사용하고, 선언한 해당 항목의 범위를 제한하는 것이 목적이다. public : 누구나 접근이 가능하다. protected : 같은 패키지 내에 있거나 상속받은 경우에만 접근 가능하다. packeage-private : 아무런 접근 제어자를 적어주지 않는 경우이며, 같은 패키지 내에 있을 때만 접근 가능하다. private : 해당 클래스 내에서만 접근 가능하다. 접근 제어자 클래스 패키지 상속 클래스 Import public O O O O protected O O O X packeage-private O O X X private O X X X 각종 제어자 접근 제어자 이외에 자바에서 제공하는 각종..

interrupt() 메서드를 호출하여 스레드를 중지시킬려고 할 때 항상 해당 스레드가 멈추는 것은 아니다. API에 있는 Thread 클래스의 interrupt() 메서드에는 다음과 같은 설명이 있다. public void interrupt() Interrupts this thread. Unless the current thread is interrupting itself, which is always permitted, the checkAccess method of this thread is invoked, which may cause a SecurityException to be thrown. If this thread is blocked in an invocation of the wait(), w..

우리가 개발하는 WAS는 여러 개의 스레드가 동작하도록 되어 있다. 그래서 synchronized를 자주 사용한다. 하지만 synchonized를 쓴다고 무조건 안정적인 것은 아니며, 성능에 영향을 미치는 부분도 있다. 자바에서 스레드는 어떻게 사용하나? 프로세스와 스레드 클래스를 하나 수행시키거나 WAS를 기동 하면 서버에 자바 프로세스가 하나 생성된다. 하나가 생성되는지 여러 개가 생성되는지는 윈도우, 리눅스, 유닉스의 프로세스를 조회해 보면 확인 가능하다. 하나의 프로세스에는 여러 개의 스레드가 생성된다. 단일 스레드가 생성되어 종료될 수도 있고, 여러 개의 스레드가 생성되어 수행될 수도 있다. 그러므로 프로세스와 스레드의 관계는 1:N 관계라고 보면 된다. 스레드는 다른 말로 Light Weigh..

자바스크립트 비동기 포스팅에서 비동기 처리에서 나타날 수 있는 문제점을 다루어 봤다. 이러한 문제점을 해결할 수 있는 콜백 함수에 대해 알아보도록 하자. 첫 번째 사례 개선 function getData(callBackFn) { $.get('https://domain.com/system/users/PTN001112', function (response) { callBackFn(response); }); } getData(function (tableData){ console.log(tableData); }); 두 번째 사례 개선 repeatConsoleLog = function(i, callBackFn) { setTimeout(function() { console.log(i); if (i >= 9) { c..
- 경력관리
- 개발환경
- 성능분석
- Tomcat
- 리눅스 명령어
- Linux 명령어
- javascript
- 프로그래머
- 정렬 알고리즘
- 오라클
- Maven
- sort algorithm
- effective java
- React
- 자바스크립트
- Java
- 오라클 내장 함수
- 리액트 16
- Eclipse
- 자바
- SQL
- spring
- 리액트
- 제주도 3박4일 일정
- Collection
- 소프트웨어공학
- 제주도 여행
- 이직
- 프로그래머스
- 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |