반응형

분류 전체보기 403

트랜잭션에 락을 사용하는 경우 (격리 레벨 Isolation Level)

트랜잭션(Transaction)의 이론적 개념과 특성, 먼저 트랜잭션의 이론적 개념은 데이터베이스 관리 시스템(DBMS)에서 '데이터를 조작하는 최소한의 작업(unit of work)'을 이야기합니다. 그리고 트랜잭션은 'ACID'라는 특성을 보장해야 하는데요. 원자성(Atomicity) - 원자 단위로서 더 이상 쪼갤 수 없는 논리적 최소 단위임을 말합니다. - 한 트랜잭션 내에서 실행한 작업들은 하나로 간주하는 것으로 모두 성공하거나 모두 실패해야 합니다. (All or Nothing) 일관성(Consistency) - 트랜잭션이 성공했다면 데이터베이스는 항상 일관성 있는 상태로 유지되어야 한다는 것을 말합니다. 격리성(Isolation) - 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격..

자바 소켓 통신(Socket)을 사용하는 이유와 동작 원리 및 코드

Java 소켓 통신(Socket)을 사용하는 이유 먼저 자바에서 소켓 통신은 C 또는 C++ 언어로 구현된 프로젝트와의 통신에 많이 사용됩니다. 이유는 Java와 C의 데이터 개념이 다르기 때문인데요. C에서는 구조체를 사용하는데 반해서 Java에는 구조체가 없습니다. 이처럼 Java의 Object 구조를 C에서 이해하지 못하고 C의 구조체를 자바에서 이해하지 못하기 때문에 서로 통신을 위해서는 byte 단위로 정보를 주고받아야 합니다. (Socket을 사용한 전문 통신) Http 통신과 Socket 통신의 차이점 - 단방향 통신인 Http 통신 Http 통신은 Client의 요청(Request)이 있을 때만 서버가 응답(Response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식입니다. Cl..

Programming/Java 2022.01.25

LocalDateTime toString() 메서드 사용 시 주의해야 할 점(00초 사라짐)

LocalDateTime의 toString() 메서드 사용 시 00초가 사라지는 경우 먼저 LocalDateTime은 java.time 패키지에 있는 시간을 다루는 클래스이며 jdk1.8부터 사용되었고 기존의 Date와 Calendar 클래스의 단점을 보완하기 위해서 나오게 되었습니다. 프로젝트 진행 중 LocalDateTime 타입의 값을 toString() 메서드로 문자열 형태로 가지고 와서 사용하는 과정에서 LocalDateTime의 기본 형태인 'yyyy-MM-ddTHH:mm:ss'에서 저장된 데이터의 마지막 ss 초 값이 00 일 경우에 값이 아예 출력되지 않고 'yyyy-MM-dd T HH:mm' 까지만 나오는 경우가 발생하였습니다. ex) mariaDB에 저장된 DateTime 값 '2022..

Programming/Java 2022.01.20

전문통신이란? Java 전문통신(Fixed Length Format) 문자열 길이 맞추는 메서드

전문 통신이란, 먼저 'Fixed Length Format'은 전문을 구성하는 field들의 길이를 입력받을 수 있는 최대 사이즈로 고정시키는 방식입니다. 대규모의 프로젝트를 진행하다 보면 서로 다른 시스템끼리 데이터를 주고받아야 하는 상황이 생깁니다. 이 경우 시스템 간의 통신에서 데이터 송수신 format을 정하는 것도 중요한데요. 일반적으로 데이터를 송수신하는 전문의 형태는 JSON, XML, Fixed Length 등 여러 가지로 구성할 수 있습니다. (요즘은 XML, JSON 등의 format 형태가 많이 사용되지만 C언어와의 통신에서는 데이터 송수신 format으로 C언어에서 사용하기 편리한 형태인 Fixed Length 형태도 많이 사용됩니다.) 전문은 일정한 크기의 공통된 데이터를 가진 h..

Programming/Java 2022.01.19

Spring Cache 캐시 추상화 기본적인 사용법 @Cacheable @CachePut @CacheEvict

'Spring Boot 프로젝트 Cache 캐시 추상화 기본적인 사용법' 먼저 캐시(Cache)란, 캐시란 서버의 부담을 줄이고, 성능을 높이기 위해 사용되는 기술입니다. 예를 들어서 어떤 요청을 처리하는데 DB에서 조회하는 시간이 오래 걸리거나 계산이 복잡한 경우에 적용하여 요청 결과를 저장해 두고 가져옴으로써 빠르게 처리할 수 있는 기술입니다. 아래에서 살펴볼 Spring 프로젝트의 캐싱 사용법에서는 메서드에 캐싱을 적용함으로써 캐시에 보관된 정보로 메서드 실행 횟수를 줄여 주는 것을 볼 수 있습니다. 즉, 대상 메서드가 실행될 때마다 추상화되어 적용된 캐싱이 해당 메서드가 같은 인자로 이미 실행되었는지 확인하는 동작을 합니다. 해당 메서드가 실행되어 저장된 데이터가 존재한다면 실제 메서드를 실행하지..

Java 대출 이자 계산기 구현하기 (원금균등, 원리금균등, 만기일시)

'자바 대출 이자 계산기 구현하기 (원금균등상환, 원리금 균등상환, 만기 일시상환)' 대출 시 이자 상환 방식에는 원금균등상환, 원리금 균등상환 그리고 만기 일시상환 세 가지가 있으며, 각 방식에 따라서 이자 금액에 차이가 있을 뿐만 아니라 재정 계획에 영향을 줄 수 있습니다. 아래에서는 각 방식에 대한 간단한 내용과 구현된 코드를 볼 수 있습니다. '원금균등상환' 매월 동일한 원금과 남은 잔금에 상응하는 이자를 더한 금액을 매월 상환하는 방식입니다. 즉, 1천만 원을 3%의 이율로 12개월간 대출한 경우 매월 833,333원의 원금을 상환하며, 대출 잔금에 3% 이자율을 적용한 이자를 함께 상환합니다. 잔금이 매월 줄어들기 때문에 그에 따른 이자가 줄어들어 3가지 방식 중 총이자 금액이 가장 저렴하다는..

Programming/Java 2022.01.13

Java 재귀함수 멱집합(power set) 구하기

멱집합(power set)이란, 집합론에서 멱집합은 어떤 집합 A에 대하여 A의 모든 집합들로 이루어진 집합을 A의 멱집합이라고 합니다. (공집합과 A 집합 자체도 포함합니다.) A={a, b, c, d}라는 집합 A가 있을 때, 집합 A가 구성할 수 있는 부분집합의 수는 2^4=16개입니다. {Ø} {a}, {b}, {c}, {d} {a, b}, {a, c}, {a, d}, {b, c}, {b, d}, {c, d} {a, b, c}, {a, b, d}, {a, c, d}, {b, c, d} {a, b, c, d} 조금 다른 관점에서 보면 {a, b, c, d}의 모든 부분집합을 나열하기 위해서는 a를 제외한 {b, c, d}의 모든 부분집합을 나열한 것과 (2^3=8개) {Ø} {b}, {c}, {d}..

Java 재귀 함수(Recursion) 개념과 재귀 함수를 사용하는 이유

'재귀 함수(Recursion)의 개념' '재귀적 호출(Recursive call)'은 일정 조건을 만족할 경우 자신을 호출하는 것을 말하며, 이러한 방식으로 구현한 함수를 '재귀 함수'라고 합니다. 재귀 함수는 잘못된 구조로 코드를 짠 경우 무한루프에 빠질 수도 있는데요. 입력값의 변화가 없거나 입력값의 변화가 특정 패턴을 반복하게 되면 그 재귀 함수는 영원히 반복되다가 콜 스택 초과로 프로그램이 종료되어 버립니다. 따라서 재귀 함수를 설계할 때는 적절한 구조를 통해 무한루프에서 빠져나오도록 해야 합니다. 여기에서 적절한 구조란 'Base case'라고 하는 적어도 하나의 재귀(Recursion)에 빠지지 않는 경우가 존재해야 하며, 또 한 가지 'Recursive case'가 필요한데 'Recursi..

탄소중립 수혜주 바이오디젤, 바이오중유 제이씨케미칼(137950)

탄소중립 정부 정책 RFS, RPS 비율 상승에 따른 수혜주 '제이씨케미칼' 제이씨케미칼은 친환경 신재생 에너지인 바이오디젤(BD100), 바이오증유, 바이오선박유를 제조 및 공급하는 기업으로 국내 정유사 및 발전사를 통한 내수시장에서 매출이 발생하고 있으며, 미국과 EU에도 바이오디젤을 수출 중에 있습니다. 제이씨케미칼은 바이오디젤 제조 업계 최초로 인도네시아 동부 칼리만탄에 위치한 오일팜 플랜테이션 농장을 인수하여 바이오디젤 생산 원료인 팜을 재배하는 대규모 플랜테이션과 CPO(Crude Palm Oil) 생산설비를 구축하며 안정적인 원료 확보의 기반을 마련하고 있습니다. (2017년부터 매출이 인식되고 세계적인 신재생에너지 확대 정책으로 인해 바이오디젤 원료인 CPO의 수요가 상승 중입니다.) 20..

Finance 2022.01.09

Java 날짜와 문자열 LocalDateTime, String 변환하기

'LocalDateTime to String, String to LocalDateTime' 자바에서는 기존의 Calendar 클래스와 Date 클래스의 불편한 점을 보안하기 위해 JDK1.8부터 java.time API를 도입하였습니다. java.time 패키지에는 날짜와 시간을 나타내는 LocalDateTime, 날짜를 나타내는 LocalDate, 시간을 나타내는 LocalTime 외에 OffsetDateTime, ZonedDateTime, Instant 등의 클래스들이 있습니다. (LocalDateTime과 String의 변환에 대해 먼저 살펴보고, 아래에서는 OffsetDateTime, ZonedDateTime, Instant 등 java.time 패키지 내에 시간을 다루는 클래스들에 대해 간단하게..

Programming/Java 2022.01.08
반응형