이 영역을 누르면 첫 페이지로 이동
개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

페이지 맨 위로 올라가기

개발다이어리

저만의 개발일지를 만들어가는 공간입니다.

분류 전체보기

  • 개발다이어리
가비지 컬렉션(GarbageCollection, GC)의 개념과 동작원리

가비지 컬렉션(GarbageCollection, GC)의 개념과 동작원리

2022.04.05
GC(GarbageCollection)를 한 마디로 표현하자면 '동적으로 할당되지 않은 메모리 중 필요없는 메모리를 비워버리는 것' 이라고 할 수 있다. C언어의 경우 메모리관리를 개발자가 직접 해주어야 하지만 자바는 GC가 이 작업을 대신 해준다. 개발자가 직접하지 않는다는 것은 꽤나 큰 이점을 가지고 있다. 장점 실수로 인한 메모리 누수를 방지해준다. 해제된 메모리에 접근을 막아준다. 해제한 메모리를 다시 해제하는 것을 막아준다. 단점 GC작업은 오버헤드를 불러올 수 있다. 개발자가 언제 GC가 메모리를 해제하는지 알기 힘들다. 가비지 컬렉션 구조 JVM의 구조 중 '스택(stack)과 힙(heap)'이라는 곳이 있다. 이곳은 객체 데이터가 저장되는 곳이다. 스택(stack) : 정적으로 할당된 메모..
의존성 주입(Dependency Injection, DI)을 왜 사용하는가?

의존성 주입(Dependency Injection, DI)을 왜 사용하는가?

2022.04.01
DI의 필요성 코드를 짜다보면 다른 클래스를 의존해야 하는 상황이 생기기 마련이다. 클래스를 의존한다는 것은 그 클래스를 생성해서 사용한다는 의미이다. 예시코드를 한 번 살펴보자 public interface MemberRepository { String save(); } public class MyBatisMemberRepository implements MemberRepository { @Override public String save() { return "MyBatis를 사용해서 저장됨"; } } public class JpaMemberRepository implements MemberRepository { @Override public String save() { return "JPA를 사용해서..
프로젝트를 시작하면서

프로젝트를 시작하면서

2022.03.24
내가 처음 다닌 회사에서는 Spring과 MyBatis를 사용했었다. 정말 좋은 기술들이라고 생각했는데 알고보니 지금은 뒤쳐져가는 기술이었다. 바뀌어가는 트랜드를 따라서 SpringBoot와 JPA를 사용하고 템플릿 엔진으로는 Thymeleaf를 공부했다. 이제는 내가 공부한 기술들을 활용한 프로젝트를 만들어봄으로서 실용성을 높이고 완전히 나의 것으로 만들어볼려고 한다. 이전부터 나는 여행에 대한 갈망이 있었다. 여행을 많이 다니지는 않지만 언제나 떠나고 싶었고 가끔식 다녀오고 나면 여행의 내용을 정리하고 기록하고 싶은 마음이 강했다. 어플을 여려가지 찾아보기도하고 사용해보기도 했지만 뭔가 내 입맛에 맞지않는것들만 있었다. 그래서 만들어보기로했다. 내 입맛에 맞게 내가 생각하는 대로 만들어볼려고한다. 역..
스프링부트 검증기능 사용하기(Bean Validation)

스프링부트 검증기능 사용하기(Bean Validation)

2022.03.19
들어가기에 앞서 웹 페이지를 만들 때 필수적으로 들어가는 요소 중 하나가 '검증'이다. 그런데 검증이라는 것이 만들면 만들 수록 끝이 없고 반복되는 작업이 계속해서 생기기 마련이다. 그리고 일반적으로 코드를 직접 작성해서 검증 기능을 구현하면 컨트롤러에 구현하게 되고 그렇게 되면 컨트롤러가 꽤나 지저분해질 수 있다. Spring에서는 이 검증기능을 지원해주는 기능이 있다. SpringBoot를 이용해서 쉽고 편하게 검증기능을 사용하는 방법을 알아보자. 사용준비 먼저 gradle에 validation관련 라이브러리를 추가해준다. implementation 'org.springframework.boot:spring-boot-starter-validation' 추가 후 build를 하면 준비가 완료된 것이다...
HTTP 헤더

HTTP 헤더

2022.03.14
HTTP헤더에는 수 많은 정보들이 들어간다. 요청헤더에는 클라이언트가 요청하는 내용의 헤더들, 응답헤더에는 서버에서 보내는 내용에 대한 헤더들이 들어있다. 표현 특정 리소스를 어떤 방식으로 전달할 것인지에 대한 내용을 담고있다. Content-Type: 표현 데이터의 형식 Content-Encoding: 표현 데이터의 압축 방식 Content-Lauguage: 표현 데이터의 자연 언어 Content-Length: 표현 데이터의 길이 표현 헤더는 요청헤더, 응답헤더 둘 다 사용 가능하다. (1) Content-Type 바디에있는 데이터의 내용이 어떤것인지에 따라서 미디어 타입, 문자 인코딩 등의 데이터의 형식을 알려준다. text/html;charset=utf-8 application/json 기본이 ut..
HTTP 상태코드

HTTP 상태코드

2022.03.14
HTTP는 응답 결과에 따라서 상태코드를 반한환다. 1XX (Informational) : 요청이 수신되어 처리중 2XX (Successful) : 요청 정상 처리 3XX (Redirection) : 요청을 완료하려면 추가 행동이 필요 4XX (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5XX (ServerError) : 서버 오류, 서버가 정상요청을 처리하지 못함 모든 상태코드를 다루기에는 양이 너무 많기 때문에 주로 사용하는 상태코드 위주로 알아보자. 1xx는 실무에서는 거의 사용되지 않는 상태코드 이므로 2xx부터 알아보도록 하자. 2XX 클라이언트의 요청이 성공됐을 때 반환되는 코드이다. 뒤에 나오는 숫자에 따라서 특징이 조금 다를 뿐 성공에 ..
HTTP 메소드

HTTP 메소드

2022.03.14
HTTP에는 메소드라는것이 존재한다. 대표적으로 GET, POST, PUT, DELETE 등이 있다. 메소드별로 쓰임새가 있는데 HTTP API를 만들 때 행위를 구분하기 위해 사용할 수 있다. 예를 들어 게시판에 글을 조회하는 API와 게시글을 삭제하는 API를 만든다고 했을 때 URI를 이렇게 만들 수 있을 것이다. @GetMapping("/boards/{id}") public String search() { return "board"; } @DeleteMapping("/boards/{id}") public String delete() { return "boardList"; } 두 API의 URL을 보면 동일하게 /boards/{id}로 되어있는 것을 볼 수 있다. 이렇게 동일한 URL에서 용도를 구..
HTTP 알아보기

HTTP 알아보기

2022.03.10
지금 시대에는 인터넷을 사용하지 않는 사람이 없다고 해도 무방할정도로 전 세계의 많은 사람들이 인터넷을 이용해서 통신을 하고있다. 이 통신에서 사용되는 프로토콜중 하나가 바로 HTTP이다. HTTP는 HyperTextTransferProtocol의 약자로서 단어그대로 HyperText(html, text 등)를 전송하는 프로토콜로 만들어졌었다. 그런데 지금은 모든 데이터(이미지, 음성, 영상, JSON, XML 등)를 HTTP를 이용해서 통신을 하고있다. HTTP 버전 HTTP도 역사적으로 버전이 있는데 HTTP 0.9 HTTP 1.0 HTTP 1.1 HTTP 2 HTTP 3 등의 버전이 현재까지 나와있다. 이 중에서 현재 가장 보편적으로 사용되고 있는것이 1.1버전이고 2와 3의 버전은 성능개선의 변화..
[h2] 새로운 데이터베이스 만들기

[h2] 새로운 데이터베이스 만들기

2022.02.25
h2를 사용하다보면 여러 프로젝트를 진행하면서 각 프로젝트마다 DB를 다르게 둬야하는 경우가 생긴다. 그런데 처음 세팅했던것 처럼 컴퓨터에 DB파일을 생성할려고 하면 계속 에러가 뜨면서 실패하는 경우가 있을 것이다. 간단하게 해결방법을 알아보도록 하자. 먼저 h2아이콘을 우클릭한 후 Create a new database를 클릭해준다. DB경로(이름), username, password를 입력하는 공간이 나타난다. 이때 Database path: 부분에 ./로 시작하면 h2 bin 폴더에 생성되고 ~/로 시작하면 유저폴더에 생성된다. 비밀번호는 필수로 입력해야해서 필요하다면 입력 후 그대로 사용하면 되고 필요가 없다면 만든 후에 삭제하면 된다. 필자는 유저폴더에 저장되도록 경로를 지정했다. 성공표시가 나..
스프링 MVC 여러 종류의 요청매핑 사용하는 방법

스프링 MVC 여러 종류의 요청매핑 사용하는 방법

2022.02.22
API매핑 API를 매핑하는 2가지 방식이다. 두 번째 방식은 첫 번째 방식의 축약형이다. (1) @RequestMapping("/hello", method = "RequestMethod.GET") 매핑할 경로와 HTTP메소드를 입력해주는 방식이다. @RequestMapping("/hello", method = "RequestMethod.GET") public String hello() { return "hello"; } @Controller어노테이션을 사용할 경우 return하는 이름의 html파일을 찾아서 리턴할 것이고 @RestController어노테이션을 사용한다면 return하는 문자열을 그대로 반환할 것이다. (2) @PostMapping("/hello") @RequestMapping에서 HT..
URI?, URL?, URN?

URI?, URL?, URN?

2022.02.01
인터넷을 하다보면 한번쯤 접하게 되는 용어들이있다. 비슷한 이름을 가졌고 항상 헷갈렸었는데 어떤 개념인지 이번 기회에 정확하게 알고 넘어가면 좋을것 같다. URI 인터넷을 돌아다니다보면 여러 페이지에 접근하게 되고 그 페이지 안에서 여러 자료들을 만나볼 수 있다. 이렇게 페이지를 이동하거나 그 안의 데이터들을 보는 것에도 규칙이 존재한다. URI는 Uniform Resource Indetifier의 약자로서 특정한 자원(Resource)을 구별할 수 있는 방법이라는 의미이다. 우리가 어떤 페이지에서 다른 어떤 페이지로 이동할 수 있도록 구분하는 방법, 자료에서 자료를 확인할 수 있도록 구분하는 방법인 것이다. 이 방법에는 2가지 종류가 있는데 바로 URL(Location)과 URN(Name)이다. URL..
[IntelliJ] 테스트코드 실행 안될 때

[IntelliJ] 테스트코드 실행 안될 때

2022.02.01
프로젝트를 처음 생성 후 잘 동작하는지 확인차 테스트코드를 돌렸는데 실패하는 경우가 생겼다. 간단하게 설정하나 바꿔서 해결해보자. 먼저 설정창을 열어준다. 검색창에 gradle을 검색하셔도 되고 직접 위치를 찾아도 된다. Build and run using과 Run tests using을 모두 IntelliJ IDEA로 변경해준다.
  • 최신
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 다음

정보

개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

  • 개발다이어리의 첫 페이지로 이동

검색

메뉴

  • 홈
  • Github
  • 방명록

나의 외부 링크

카테고리

  • 분류 전체보기 (66)
    • Spring (19)
      • MVC (7)
      • Boot (3)
      • Core (8)
      • Security (1)
    • Java (1)
    • 네트워크 (7)
    • JPA (6)
    • IntelliJ (2)
    • Database (1)
      • h2 (1)
      • postgreSQL (0)
    • 토이 프로젝트 (5)
      • 여행일지작성 (5)
    • 에러모음 (7)
    • 테스트코드 (2)
    • Git (8)
    • Nginx (2)
    • AWS (1)
    • 책 리뷰 (1)
    • Kotlin (2)
    • 회고 (1)
      • 24년도 회고 (1)
    • API문서 (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 연관관계 매핑
  • HTTP상태코드
  • JPA
  • http 헤더
  • 테스트코드 실행안됨
  • HTTP
  • 네트워크 #TCP #IP #인터넷 통신
  • 단방향 매핑

정보

ssung의 개발다이어리

개발다이어리

ssung

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © ssung. Designed by Fraccino.

티스토리툴바