분류 전체보기

Study/Java

[Java] 불변 객체 (Immutable Object) 란?

나만의 WAS 서버를 구현하는 도중에 클라이언트의 HTTP 메시지를 요청받고, 이를 파싱해 객체로 다루기 위한 작업이 필요했다. 이 과정에서 생성된 HttpRequestMessage 라는 클래스는 처음 파싱 이후 수정될 일이 없다는 특성을 가지고 있다. 이 특성을 만족하기 위한 객체지향 프로그래밍에서 사용되는 불변 객체에 정리하고자 한다. 불변 객체 (Immutable Object)? 불변 객체는 객체가 생성된 이후에 그 상태를 변경할 수 없는 객체를 의미한다. 한 번 생성된 객체는 재할당 되는 것이 아니라면 영원히 그 상태가 변하지 않는다. 자바에도 불변 객체가 존재한다. java.lang.String 문자열 클래스가 그 예이다. String 으로 생성된 문자열 객체의 메서드를 직접 살펴본다면 내부의 ..

Study

HTTP Request, Response 메시지 구조

HTTP 메시지 HTTP 메시지는 웹 애플리케이션에서 클라이언트와 서버 간의 통신을 위해 만들어졌습니다. 클라이언트가 요청하기 위한 Request와 요청에 대해 서버가 응답하는 Response 두 가지로 이루어져 있으며, ASCII로 인코딩 되어 있습니다. HTTP Request 메시지 GET /index.html HTTP/1.1 Host: localhost:8080 Connection: keep-alive Accept: */* body HTTP 요청 메시지는 다음과같은 형태를 띠고 있습니다. Request Line GET /index.html HTTP/1.1 가장 상단의 첫 줄을 의미합니다. 3가지의 정보를 담고 있으며, 순서대로 HTTP 메서드, 경로, HTTP 버전을 나타냅니다. HTTP 메서드 -..

Study/Java

[Java] 자바의 스레드와 동작 과정

스레드 Thread 운영 체제를 배웠다면 스레드의 개념은 익히 알 것이다. 스레드는 프로그램 수행의 가장 작은 단위를 의미한다. 스레드는 한 가지 일을 하는 프로세스의 단점을 극복하고자 여러 가지 일을 동시에 하기 위해 탄생했다. 스레드는 다음과 같은 생성 주기를 갖는다. 💡 스레드의 생성 주기 Runnable: 준비 상태로 CPU 를 점유하고 있지 않으며 대기하고 있는 상태이다. Running: 실행 상태로 CPU 가 점유하고, 실행중인 상태를 의미한다. Dead: 수행할 동작이 모두 실행이 완료된 상태를 의미한다. Blocked: 실행 중에 일시 중단되어 CPU 점유를 잃은 상태를 의미한다. wait() 메서드를 통해 대기 상태로 전환되며, 대기 상태에서 notify() 메소드를 통해 Runnable..

Study/Java

[JUnit] 다양한 Assertions 사용하기

테스트 코드 작성의 중요성은 이제는 널리 알려져 있다. 어떤 코드든 예상치 못한 상황이 발생할 수 있기에, 이를 방지하고자 테스트 코드를 작성한다. 단위 테스트, 기능 테스트 다양한 기준으로 작성되며, 테스트 코드를 먼저 작성한 뒤 구현을 하는 TDD, DDD, BDD 등 다양한 개발 방법론도 존재한다. 테스트 코드 작성을 위해 다양한 도구들이 사용된다. 그중 Java를 테스트하기 이한 JUnit에 대해 간단히 살펴보고, 조금 더 다양하게 테스트하기 위한 Assertion 메서드들을 정리해보려 한다. JUnit 이란? JVM 위에서 쉽게 테스트를 할 수 있게 해주는 도구이다. 이번 내용에서 다루는 JUnit5는 Java 8 이상에서 동작함에 유의하자! Assertion 이란? 테스트를 수행하며, 결과에 ..

Study/Java

[JAVA] 동일성, 동등성 그리고 equals, hashcode 재정의

equals를 사용한 테스트 코드를 작성하고, 실제 기능을 구현한 뒤 테스트 해보았지만, 실패했다. 분명 내 코드에는 문제가 없다고 생각했고, 열심히 디버깅을 해 본 결과 equals 메소드에서 서로 다른 메모리 주소를 갖기 때문에 false를 반환했던 것이다. 이러한 문제는 equals, hashcode 재정의를 통해 해결할 수 있지만, 좀 더 근본적인 이유를 간단히 정리해보고자 한다. 자바의 동일성 (identify), 동등성 (equality) 먼저 자바의 동일성과 동등성에 대해 알아보자. 동일성 (identify) 이란 무엇일까? 나는 동일성 (identify) 이란 태생부터 존재하는 유일한 것이라고 생각했다. 나 홍길동은 태어나서 존재하는 단 한 명의 인간이다. 나와 같은 이름을 가진 다른 홍길..

Diary & 후기

현대자동차 소프티어 부트캠프 2기 코딩테스트 1, 2차 후기

https://www.softeerbootcamp.com/ 현대자동차그룹 소프티어부트캠프 2기현대자동차그룹 소프티어부트캠프 2기www.softeerbootcamp.com소프티어소프티어는 현대자동차그룹에서 주관하며, 우테코, 네부캠과 같은 코드스쿼드 교육기관에서 담당한다. 소프티어는 졸업 예정자를 대상으로 모집하기 때문에, 지원 자격이 조금 빡빡하다. 그래도 23.08월, 24년 02월 졸업 예정자를 뽑기 때문에 총 2번의 지원이 가능하다고 볼 수 있다. 교육 기간은 2개월 여름방학 동안 진행하며 채용 연계가 가능하다.1기 때도 지원 공고를 보았는데, 지원 자격이 충족되지 않고, 1기다 보니 특별한 정보가 없어 보고 넘겼었다. 2기 공고가 올라왔을 때에도 고민을 많이 했다. 아직 나는 많이 부족하다고 느끼..

Study/AWS

[amazon AWS] 아마존 EC2 프리티어 서버 생성하기

학교 졸업 프로젝트가 어느 정도 진전해 프론트에서도 어느 정도 테스트해 보며 작업해야 하기에 EC2로 서버 배포를 할 일이 생겼다. 예정했던 대로 aws ec2를 통해 서버를 올리기로 해 해당 과정을 기록해보려 한다. 로컬 환경은 mac m1을 기준으로 사용했다. 준비 먼저 프리티어로 서버를 생성했기에 결제 카드 등록을 마친 프리티어 계정이라 가정하고 진행한다. 인스턴스 생성 인스턴스란 간단하게 하나의 컴퓨터를 의미한다. 이는 웹 서버가 될 수 있고, DB가 될 수 있다. 여기서 EC2란 사용자의 입맛대로 구성할 수 있는 서비스라고 한다. 본격적으로 인스턴스를 생성해보자! 우선 리전 설정을 하자. 리전은 호스팅 되는 위치를 의미하는데 가까운 곳에 위치할수록 서버 속도가 빨라진다. 리전에 따라 인스턴스의 ..

알고리즘/BOJ

[백준/파이썬] 9370번 미확인 도착지

문제 주소: https://www.acmicpc.net/problem/9370 9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 문제 해석 문제 풀이 이 문제가 다익스트라 문제라는 것을 알았다면, 최소 경로를 지나갈 때 목적지 후보들 중에서 G H의 경로를 지나는 경우가 최소가 되는 목적지를 구해야 한다는 것을 알 수 있다. 이 조건을 해결하기 위해서 크게 두 가지 방법을 사용할 수 있다. 정석적인 방법과 애드혹스러운 기교를 통해 문제를 해결하는 방법이 존재한다. 내가 푼 방법은 후자의 방법이지만 먼저 정..

Study/Python

네이버 Clova AI OCR API를 사용해보자. (2)

API 예제 코드 API 통신을 테스트하기 위해 document를 참고하자. https://guide.ncloud-docs.com/docs/ko/clovaocr-overview CLOVA OCR 개요 guide.ncloud-docs.com https://api.ncloud-docs.com/docs/ai-application-service-ocr-ocr CLOVA OCR Custom API api.ncloud-docs.com 두 번째 링크의 Custom API 탭에 가면 각 언어 별 호출 예제 코드가 존재한다. 간단한 파이썬 코드를 통해 API 호출을 진행해 보았다. import requests import uuid import time import json api_url = 'YOUR_API_URL' s..

Study/Python

네이버 Clova AI OCR API를 사용해보자. (1)

이번에 학교 해커톤에 참여하면서 Clova AI에서 제공하는 OCR 기술의 API를 연동해 프로젝트를 구성했다. 따라서 OCR API를 사용하기 위해 처음으로 네이버 클라우드에 가입해, 연동해 보았는데, 사용 방법을 기록해두려 한다. 네이버 클라우드는 가입되었다고 가정하고 진행해보겠다. CLOVA OCR, API Gateway 신청 먼저 Clova에서 서비스 사용 신청을 해주어야 한다. https://www.ncloud.com/product/aiService/ocr NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certificat..

ddingmin00
'분류 전체보기' 카테고리의 글 목록 (2 Page)