일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- jnlp
- 쿠버네티스
- helm
- RDS
- redis oss
- Docker
- AWS
- EC2
- helm-chart
- k8s
- ingress-nginx
- argocd
- port forawrding
- ElastiCache
- multibranch
- Kubernetes
- datagrip
- Certbot
- sshtunneling
- vue3
- kaniko
- 인프런강의
- 워커노드
- ChatGPT
- cloud controller manager
- ssafy #싸피 #ssafy 12기 #싸피 12기 #ssafy 합격 #싸피 합격 #합격 후기
- elasticahe
- Tunneling
- 인프런
- ssh
- Today
- Total
목록java (12)
처누

JVM이란 - Java Virtual Machine의 약자이며 자바 가상 머신이라고도 불린다. - java의 바이트 코드를 해석하고 실행한다. - OS에 종속받지 않고 실행할 수 있다. (JVM 설치만 하면 어디서든 java 파일을 실행할 수 있다는 뜻) JVM의 컴파일 과정 - .java 파일을 컴파일러가 .class 파일로 변환(이 과정에서 바이트 코드가 생성) - .class 파일을 JVM의 ClassLoader에게 보낸다. - ClassLoader에서 JVM Running Data Area로 로딩(할당)하여 메모리에 올린다.- Execution EngineClass Loader에 의해 메모리에 적재된 클래스(바이트 코드)들을 기계어로 변경해 명령어 단위로 실행하는 역할.명령어를 하나씩 실행하는 인..

영속성이란? - 오래 계속되는 성질 영속성 컨텍스트(Persistence Context)란? - 애플리케이션과 데이터베이스 상에서 엔티티 객체를 관리하고, 그들의 생명주기를 추적하는 일종의 1차 캐시 역할을 한다. 영속성 컨텍스트는 엔티티 매니저(Entity Manager)에 의해 관리되며, 엔티티 객체의 상태 변화, 데이터 베이스 동기화, 트랜잭션 관리 등의 중요한 역할을 수행한다. 영속성 컨텍스트의 특징1차 캐시 - 영속성 컨텍스트는 엔티티 객체를 메모리에 캐싱하여 성능을 최적화한다. - 동일한 트랜잭션 내에서 동일한 엔티티를 여러 번 조회하면 데이터베이스에서 다시 조회하지 않고 1차 캐시에서 반환한다.Member member = new Member();member.setId(100L);member..

DB에서 데이터를 update할 때 두가지 방법으로 update를 할 수 있다.1. 변경 감지(Dirty Checking)2. 병합(Merge) 변경 감지(Dirty Checking) 변경 감지(Dirth Checking)는 영속성 컨텍스트에서 엔티티를 다시 조회한 후에 데이터를 수정하는 방법이다. 트랜잭션 안에서 엔티티를 다시 조회, 변경할 값 선택 후 트랜잭션 커밋 시점에 변경 감지가 동작해서 DB에 UPDATE SQL을 실행한다. 즉, 바뀐 부분만 update해준다. 동작 방식1. 초기 상태 저장 엔티티 객체가 영속성 컨텍스트에 처음 로드될 때, ORM은 객체의 초기 상태(객체의 스냅샷)를 저장한다. 이 초기 상태는 객체가 DB와 동기화되었을 때의 값을 나타낸다. 2. 변경 추적 애플리케이션이 엔..

JPA를 공부하다가 JpaRepository가 CrudRepository를 상속 받는 것을 발견하고 어? CRUD? 이건 못참지! 하고서 CrudRepository에 정의된 메서드를 살펴보려고 한다. S save(S entity); 주어진 entity를 저장한다. 저장된 entity를 반환한다. 인자와 반환되는 entity는 null이 아니어야 한다. null이라면 IllegalArgumentException을 던짐 더보기 CrudRepository 인터페이스 내 save 메서드 Iterable saveAll(Iterable entities); 주어진 모든 entity를 저장한다 저장된 모든 entity를 반환한다. 더보기 CrudRepository 인터페이스 내 saveAll 메서드 Optional f..

인텔리제이가 비정상 종료되고 난 후 다시 실행시켜 프로그램을 실행시켰는데 다음과 같은 오류가 발생했다. 저번에도 이런 경우가 있었고, 그 때는 컴퓨터 재부팅으로 해결했던 기억이 있다. 하지만 이번엔 '정확한 오류를 알고 해결해보자!'라는 마음 가짐으로 인터넷에 검색해봤다. 위와 같은 오류는 8080포트가 제대로 꺼지지 않고 계속 사용 중이어서 생긴 오류다. 해결 방법은 8080포트를 직접 종료하는 것! netstat -a -o 명령 프롬프트 창에 위 명령어를 입력하면 아래와 같이 실행된다. 8080포트를 사용하는 PID번호를 기억하고 아래 명령어를 입력하면 8080포트를 종료시킨다. taskkill /f /pid PID번호 그리고 다시 프로그램을 실행시켜보면 정상 작동한다!
게시판 프로젝트 진행 중에 데이터베이스를 mysql를 사용하고 싶어서 IntellJ에서 연동하던 중 오류가 발생했다. java.lang.classnotfoundexception com.mysql.cj.jdbc.driver jar파일도 gradle에 들어가 있는 걸 확인했고, 파일 위치 수정 등 여러 방법을 해봤지만 해결이 안됐었다. 해결 방법을 찾아보던 중 Spring Boot 2.8.x (x가 몇인지 기억이 안난다..) 버전부터는 application.properties 파일에서 dependencies 부분에 implementation 'com.mysql:mysql-connector-java:버전' 이 아닌 'com.mysql:mysql.connector-j'로 입력해줘야 된다는 걸 찾았다. 위와 같이..

게시글 수정하기 기능 구현 중 다음과 같은 오류가 발생했다. 글 수정 후에 URL이 바뀌지 않았을 뿐더러 게시글 리스트에 수정한 게시글도 보이지 않았다. @PostMapping("/board/edit/{id}") public String edit(@PathVariable Long id, BoardForm form) { Board board = boardService.findByOne(id).get(); board.setTitle(form.getTitle()); board.setContent(form.getContent()); boardService.edit(board); return "/board/showBoardList"; } 위 코드에서 '/board/showBoardList'를 반환하는데 이 부분이..

@GetMapping @GetMapping("/board/detail/{id}") 게시판 프로젝트 - 게시글 조회하는 기능을 구현하는 중에 {id}값을 인수로 사용하고 싶어서 구글링 해봤다. public String showBoardContent(@PathVariable Long id, Model model) { Board board = boardService.findByOne(id).get(); model.addAttribute("board", board); return "/board/showBoardDetail"; } @PathVariable 어노테이션을 통해 {id}값을 인수로 사용할 수 있다. 여기서 중괄호{} 안에 있는 값과 인수명이 같다면 @PathVariable 옵션을 생략할 수 있지만 만약..

다형성이란? 객체 지향 프로그래밍의 대표적인 특징으로는 '캡슐화', '상속', '다형성'이 있다. 다형성은 이름 그대로 '다양한 형태', '여러 형태'를 뜻한다. 다형적 참조 다형적 참조란 부모 타입의 변수가 자식 인스턴스를 참조하는 것을 의미한다. 다음 코드를 보고 이해하자. public class Parent { public void parentMethod() { System.out.println("Parent.parentMethod"); } } public class Child extends Parent{ public void childMethod() { System.out.println("Child.childMethod"); } } public class PolyMain { public stati..
상속이란? '상속'은 객체 지향 프로그래밍의 핵심 요소 중 하나이다. 기존 클래스의 필드와 메서드를 새로운 클래스에서 재사용하게 해준다. 이름 그래도 기존 클래스의 속성과 기능을 그대로 물려받는 것이다. 아래 예제로 쉽게 이해해보자. public class CarMain { public static void main(String[] args) { ElectricCar electricCar = new ElectricCar(); electricCar.move(); electricCar.charge(); GasCar gasCar = new GasCar(); gasCar.move(); gasCar.fillUp(); } } public class ElectricCar { public void move() { Sy..