본문 바로가기

IT250

[UNIX/Linux] ep0) 시스템 프로그래밍의 이해 UNIX, 그야말로 운영체제계의 goat모든 운영체제가 UNIX에 영향을 받았다고 해도 과언이 아니다. 심지어 Windows 까지도 분명 UNIX에 영향을 받은 부분이 무조건 있을 것이다. (Windows는 오픈소스가 아니라서 자기네들의 코드를 공개하지 않는다) 서버의 운영체제는 요즘 90%가 다 Linux를 쓴다. 그래서 금융권에서는 UNIX를 Linux로 대체하는 U2L(UNIX to Linux)이 확산되고 있다. ※ 리눅스 시스템에서 라이브러리는 보통 /usr/lib 에 위치한다정적 라이브러리: 프로그램을 컴파일할 때 같이 적재되어 실행 파일을 구성한다공유 라이브러리: 실행 파일에 포함되지 않아 메모리를 효율적으로 사용하기 위해 사용한다  [파일시스템 - 파일과 디렉터리]절대 경로(absolute .. 2024. 9. 4.
썸머타임과 타임존 계산 ㅇ썸머 타임(일광 절약 시간: DST, Daylight Saving Time)보통 3월에서 10월은 태양이 일찍 뜨고, 나머지는 태양이 상대적으로 늦게 뜬다. 시간도 여기에 맞추어 1시간 앞당기거나 늦추는 제도를 썸머 타임이라 한다.  ㅇ타임존 계산세계는 다양한 타임존으로 나뉘어져 있으며, 각 타임존은 UTC(협정 세계시)로부터의 시간 차이로 정의된다.UTC (Coordinated Universal Time, 협정 세계시): 원자 시계를 사용하여 측정한 국제적으로 합의된 시간 체계. 지구의 자전 속도가 변화하는 것을 고려하여 윤초를 추가하거나 빼는 방식으로 시간을 조정함으로써, 보다 정확한 시간을 유지한다. 따라서 정밀한 시간 측정과 국제적인 표준에 관해서는 UTC가 선호된다.기준 시간: UTC+0전 세.. 2024. 8. 28.
[Java API] 날짜와 시간 라이브러리 https://claremont.tistory.com/entry/%EC%8D%B8%EB%A8%B8%ED%83%80%EC%9E%84%EA%B3%BC-%ED%83%80%EC%9E%84%EC%A1%B4-%EA%B3%84%EC%82%B0 썸머타임과 타임존 계산ㅇ썸머 타임(일광 절약 시간: DST, Daylight Saving Time)보통 3월에서 10월은 태양이 일찍 뜨고, 나머지는 태양이 상대적으로 늦게 뜬다. 시간도 여기에 맞추어 1시간 앞당기거나 늦추는 제도를 썸claremont.tistory.com(참고) Java의 날짜와 시간 라이브러리 역사https://claremont.tistory.com/entry/%EC%88%98%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9E%90%EC%84%B.. 2024. 8. 27.
수용하는 자세에 대해서 자바의 표준 ORM 기술인 JPA의 역사를 아는가? 과거 자바가 제공하던 표준 ORM 기술은 매우 매우 불편했다. 이에 대응해 누군가가 하이버네이트라는 ORM 오픈 소스를 만들었는데, 이 기술이 자바 표준 ORM 기술보다 더 널리 사용되었다. 썬 마이크로시스템즈는 결국 하이버네이트를 만든 개발자를 데려와 새로운 자바 ORM 표준을 만들었고, 이것이 바로 오늘날의 JPA가 되었다.    자바의 java.time 패키지도 이와 비슷하다. 자바가 처음 표준으로 제공했던 Date와 Calendar 라이브러리는 사용성이 떨어지고, 여러 문제점이 많았다. 이러한 문제를 해결하기 위해 Joda-Time이라는 오픈소스 라이브러리가 등장했다. Joda-Time은 뛰어난 편리함과 사용성 덕분에 크게 대중화되었다. 이 상황.. 2024. 8. 25.
[Java API] enum 주요 메서드 정리 타입 안전 열거형 패턴 - Type-Safe Enum Pattern  ㅁenum 열거형: 타입 안전성을 제공하고, 코드의 가독성을 높이며, 예상 가능한 값들의 집합을 표현하는 데 사용정해진 객체만 사용할 수 있기 때문에, 잘못된 값을 입력하는 문제를 근본적으로 방지해 준다. (런타임 에러 아닌 컴파일 에러로 사전 차단)※ enum은 enumeration의 약자이다  (특징)1. 외부 생성도 컴파일 에러로 차단해준다.2. 열거형은 java.lang.Enum 를 자동(강제)으로 상속받는다..3. 열거형은 이미 java.lang.Enum 을 상속받았기 때문에 추가로 다른 클래스를 상속을 받을 수 없다. 4. 열거형은 인터페이스를 구현할 수 있다.5. 열거형에 추상 메서드를 선언하고, 구현할 수 있다. (이 경.. 2024. 8. 24.
[Java API] Math 클래스, Random 클래스 ㅇMath 클래스: 다양한 수학적 연산을 위한 정적 메서드를 제공하는 유틸리티 클래스따라서 객체를 생성하지 않고 클래스 이름을 통해 직접 메서드를 호출할 수 있다package lang.math;public class MathTest { public static void main(String[] args) { System.out.println("max(1, 3): " + Math.max(1, 3)); // 최대값 System.out.println("min(1, 3): " + Math.min(1, 3)); // 최소값 System.out.println("abs(-1): " + Math.abs(-1)); // 절대값 System.out.println();.. 2024. 8. 23.
[Java API] System 클래스 ㅇSystem 클래스: Java 프로그램 기본 시스템 기능에 접근할 수 있는 유틸리티 클래스e.g. 자바 프로그램의 표준 입력, 표준 출력, 시스템 속성, 환경 변수, 시간 측정 등의 기능을 제공※ 이 클래스는 상속할 수 없으며, 모든 메서드와 필드는 정적(static)으로 선언되어 있어 객체를 생성하지 않고 사용할 수 있다 (예시 코드)package lang.system;import java.util.Arrays;public class SystemMain { public static void main(String[] args) { // 현재 시간(ms)을 가져온다 long currentTimeMillis = System.currentTimeMillis(); S.. 2024. 8. 23.
[OOP] 리플렉션(reflection) ㅇ리플렉션(reflection): OOP에서 런타임에 프로그램의 구조를 검사하고 조작할 수 있는 메커니즘프로그램이 실행 중에 자신에 대한 정보를 탐색하거나, 구조를 동적으로 변경할 수 있다. 예를 들어, 클래스의 메타 정보를 기반으로 클래스에 정의된 메서드, 필드, 생성자 등을 조회하고, 이들을 통해 객체 인스턴스를 생성하거나 메서드를 호출하는 작업을 할 수 있다. 이런 작업을 리플렉션이라 한다. 또 추가로 애노테이션 정보를 읽어서 특별한 기능을 수행할 수도 있다. 최신 프레임워크들은 이런 기능을 적극 활용한다. ※ reflection은 자아성찰이라는 뜻을 갖고 있다 리플렉션의 기본 개념메타데이터 접근: 리플렉션을 사용하면 클래스, 인터페이스, 메서드, 필드 등의 메타데이터(데이터에 대한 데이터)에 접근.. 2024. 8. 23.
[Java API] Class 클래스 ㅇClass 클래스: Java Reflection API의 중요한 부분으로, JVM에서 클래스, 인터페이스, 배열 등의 메타데이터를 표현하는 역할Class 객체는 Java의 모든 클래스와 인터페이스에 대해 자동으로 생성되며, 각 클래스와 인터페이스의 런타임 표현을 제공한다. 이를 통해 클래스의 구조, 메서드, 필드, 생성자, 애노테이션 등의 정보에 접근할 수 있다.다시 정리하면, Class 클래스를 통해 개발자는 실행 중인 자바 애플리케이션 내에서 필요한 클래스의 속성과 메서드에 대한 정보를 조회하고 조작할 수가 있다. [Class 클래스 주요 기능]- 타입 정보 얻기: 클래스의 이름, 슈퍼클래스, 인터페이스, 접근 제한자 등과 같은 정보를 조회할 수 있다- 리플렉션(reflection): 클래스에 정의.. 2024. 8. 23.