리트코드 - 68. Text Justification 출처 - https://leetcode.com/problems/text-justification/description/?envType=study-plan-v2&envId=top-interview-150 문제 설명 문자열 배열 words와 너비 maxWidth가 주어졌을 때, 각 줄이 정확히 maxWidth 문자를 갖도록 텍스트를 포맷하되, 완전히 (왼쪽과 오른쪽으로) 정렬되어야 합니다. 즉, 가능한 한 많은 단어를 각 줄에 넣는 탐욕적 접근 방식을 사용해야 합니다. 필요한 경우 추가 공백 ' '을 삽입하여 각 줄이 정확히 maxWidth 문자를 갖도록 해야 합니다. 단어 사이의 추가 공백은 가능한 한 균등하게 분배되어야 합니다. 한 줄에 단어 사이의 ..
커리어 세션 참여 신입으로 진입하는 개발자로서 바늘 구멍처럼 좁아진 채용시장에서 탈락의 고배를 잔 돌리기 하는 힘든 나날을 보내고 있습니다. 그러던 와중 가뭄에 단 비 같은 서류합격 하나가 나왔지만 결과적으로 그마저도 전산 오류로 취소되어 정신을 잃기 직전이었습니다. 여러곳에서 조언을 구하던 중, 이력서 피드백 세션에서 도움을 많이 얻었던 케일리 님께서 현직자 세션에 흔쾌히 초대해 주셨습니다. 이런 오프라인 미팅이 처음이기도 하고, 메일로 보내주신 내용만으로는 어떤 내용인지 잘 모르겠어서 가벼운 마음으로 들으러 갔습니다. 메인 세션 세션에 참여해주신 멘토님은 두 분으로 두나무 iOS 개발자 장혜준님, H2O Hospitality 개발자 진유진님이었습니다. 현직자를 만날 기회가 드문 취준생으로서 이렇게 좋..
문제 상황 특정 일시에 오픈하는 예약 구매 특성상 동시에 주문처리가 많이 일어남 이 때에 실제 재고보다 더 많은 수량의 주문이 성공적으로 처리됨 문제 원인 주문 시 DB에 짧은 시간 동안 동시 접근이 일어나 여러 트랜잭션에서 동일한 데이터를 수정하려고 할 때 데이터 불일치 문제 발생 비즈니스 로직 public class StockServiceImpl implements StockService { // 기타 메소드 생략 @Override @Transactional public void decreaseStock(Long productId, int count) { log.info("재고 감소 요청 productId: {}, count: {}", productId, count); Stock stock = sto..
문제 상황 특정 일시에 오픈하는 예약 구매 특성상 동시에 주문처리가 많이 일어남 이 때에 실제 재고보다 더 많은 수량의 주문이 성공적으로 처리됨 문제 원인 주문 시 DB에 짧은 시간 동안 동시 접근이 일어나 여러 트랜잭션에서 동일한 데이터를 수정하려고 할 때 데이터 불일치 문제 발생 재고관리 프로세스 예약 구매를 하는 서비스를 만드는 것이 목표였기 때문에 메인 서비스가 잘 돌아가게 하는 것이 매우 중요하다고 생각했습니다. 이 과정을 크게 두 가지 스텝으로 나누어 생각해보면 아래와 같습니다. 특정 시간에 구매가 활성화 됨 구매가 열리면, 상품의 재고보다 많은 주문 발생할 수 있음 사례 분석 이 과정에서 비슷한 레퍼런스를 생각해보니 크게 두 가지로 나눌 수 있었습니다. 큐넷(시험 접수) 인터파크 티켓(콘서트..
자바의 가장 큰 특징 중 하나는 플랫폼에 독립적으로 실행이 가능하다는 것입니다. 이것은 CPU 또는 운영체제에 상관없이 코드를 실행시킬 수 있다는 의미인데요. 이를 위해서는 자바의 동작 방식에 대한 이해가 필요합니다. 자바의 기본동작 자바는 기본적으로 JVM 위에서 동작합니다. JVM이란 Java Virtual Machine의 약자로 이 JVM이 실질적으로 기계어로 번역 후 컴퓨터에게 전달시켜주면 컴퓨터가 프로그램을 실행 시킬 수 있습니다. 각 OS 종류에 맞는 자바를 설치하면, 함께 JVM은 OS에 맞게 설치 됩니다. 자바코드 실행 과정 자바코드의 실행 과정은 아래와 같습니다. 컴파일 순서 먼저 작성한 java 코드를 실행시키면 javac 컴파일러가 바이트코드로 컴파일합니다. 컴파일 된 결과로 작성한 ..
Call by value 와 Call by reference Call by value는 값에 의한 호출을 의미하고, Call by reference는 참조에 의한 호출을 의미합니다. Call by value는 원래 값이 수정되지 않고, 함수에 변수가 전달될 때 변수의 복사본이 생성되어 전달되고, Call by reference는 함수에 변수 자체가 전달이 되어서 함수 내에서 변수 값이 변경 될 경우 원래 변수 값도 변경됩니다. 자바에서는? 자바에서는 Call by value만 존재하고, Call by reference는 존재하지 않습니다. 얼핏 보면 String이나 객체는 Call by reference로 불러오는 것 같지만 자바에서는 원래 할당된 참조는 수정되지 않습니다. 예시코드 public clas..