| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 윤성우의 열혈 자료구조
- 이것이 자바다
- Algorithm
- R
- buffer
- 알기쉬운 알고리즘
- list 컬렉션
- Stack
- 이스케이프 문자
- s
- Graph
- C 언어 코딩 도장
- JSON
- 메모리구조
- coding test
- stream
- 윤성우 열혈자료구조
- Serialization
- 혼자 공부하는 C언어
- C programming
- insertion sort
- datastructure
- Selection Sorting
- Today
- Total
목록전체 글 (516)
Engineering Note
본 포스트는 인프런 김영한님의 JPA강의와 자바 ORM 표준 JPA 프로그래밍 책을 참고하여 정리한 내용입니다.JPA를 잘 사용하기 위해서는 영속성 컨텍스트같은 JPA 내부동작과 관련된 개념을 잘 알아야하고, 다른 한 가지는 설계 적인 관점, 정적인 영역인 엔티티 매핑을 잘 이해해야한다. 매핑은 크게 4가지가 있다.- 객체와 테이블을 매핑 : @Entity, @Table- 기본 키 매핑: @Id- 필드와 컬럼 매핑: @Column- 연관관계 매핑: @ManyToOne, @JoinColumn 등 여기서 연관관계 매핑이 제일 중요한데, RDB, 관계형 데이터베이스의 Entity, 테이블은 1:N, 1:1 등 관계를 맺고 있는데 이렇게 맺고 있는 관계를 객체간의 어떻게 표현할 지 JPA에서 어떻게 매핑할지가 ..
문자 연산, 그리고 숫자문자를 숫자로 변환하기컴퓨터는 내부적으로 0과 1밖에 모른다. 그런데 우리는 숫자보다 일반 문자가 편하다. 숫자를 문자로 변환해야 한다. char는 16바이트고 int는 32바이트를 저장할 수 있다. char, int 타입은 둘 다 숫자를 저장하는데 char는 ''를 통해 하나의 문자를 담는데 이때 ''에 남긴 문자를 유니코드(문자, 숫자 변환 표로 정해놓은 규칙)에 따라 숫자로 바꾸어서 저장한다.그리고 char는 숫자처럼 연산할 수 있다. 'A'는 유니코드로 65인데 'A' - 2를 하면 63이 되고 int에 형변환 없이 저장할 수 있다. (=> char + char는 int)그래서 '2' 숫자 처럼 보이는 '2' 문자를 진짜 2로 변환하려면 '2' - '0'을 해주면 2로 변환..
String 클래스의 공백 제거 메서드는 두 가지가 있다. trim()과 strip()strip()은 Java 11부터 추가된 메서드다. trim은 아스키 코드 기반의 whitespace만 제거가 가능한데 비해 strip()은 유니코드기반까지 포함한다. 공백에는 \t, \n " " 등이 있는데 유니코드에는 \u2002, \u00A0, \u3000 등고 공백이고 trim으로는 이런 공백은 제거할 수 없다.공백 기준으로 문자열을 나눌 때도 주의할 사항이 있는데, split()메서드에서 split(" ");를 사용하면 " "공백 하나를 기준으로 문자열을 나누기 때문에 정규표현식을 사용하면 좋다. 공백을 나타내는 정규표현식은 \s이다. 쌍따옴표 안에서 사용하려면 \\s로 사용할 수 있고 연속된 공백은 \\s+로..
5.2 메모리 사용 영역Java 명령어로 JVM이 구동되면 JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같이 구분해서 사용한다. 메소드 영역바이트코드 파일을 읽은 내용이 저장되는 영역으로 클래스별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등이 저장된다. ⇒ 바이트 코드 파일의 내용이 저장되는 영역. 힙 영역객체가 생성되는 영역.객체의 번지는 메소드 영역과 스택 영역의 상수와 변수에서 참조할 수 있다.스택 영역메소드를 호출할 때마다 생성되는 프레임이 저장되는 영역.메소드 호출이 끝나면 프레임은 자동제거 된다.프레임 내부에는 로컬 변수 스택이 있다.Java의 문자열은 String 객체로 생성된다. String 변수 name과 hobby 변수에 “홍길동”, “여행” 문자열을 생성하여 저장하면 ..
Java에서 String은 불변 객체다. 아래처럼 String s를 만들고 "world"를 붙이면 "hello world"가 새로 만들어진다.String s = "hello";s = s + " world" StringBuilder는 String과 달리 가변이다.그래서 내부적으로 문자열을 가변할 수 있는 유용한 메서드가 많이 제공된다. 대표적으로 reverse()메서드가 있다. 당연히 받환 타입은 StringBuilder이다. String으로 변환하려면 toString() 메서드를 사용하면 된다.
BOJ에서 문제를 풀려면 입력을 받아야 하는데 그때, Java는 Scanner 객체를 사용해서 입력을 받을 수 있다. 메서드 반환 타입 입력 기준 예시 입력 설명next()String공백 기준hello world → hello다음 "단어" 한 개만 읽음nextLine()String줄 기준hello world → hello world줄 전체를 읽음nextInt()int공백 기준123 456 → 123다음 숫자(int)만 읽음nextDouble()double공백 기준3.14 2.71 → 3.14실수(double)만 읽음nextBoolean()boolean공백 기준true false → true논리값 읽음 Scanner sc = new Scanner(System.in);sc.nextLine(); 이렇게 사..
동기 vs 비동기, 커피 주문으로 이해하기 + 콜백함수동기(Synchronous): 요청한 작업이 끝날 때까지 기다렸다가 다음 일을 진행하는 방식비동기(Asynchronous): 요청한 작업을 기다리지 않고, 다음 일을 먼저 진행하고 결과는 나중에 받는 방식커피 주문 상황으로 이해해보기손님과 바리스타가 있다고 해보자.손님이 커피를 주문했는데, 바리스타가 원두가 떨어진 걸 발견하고 원두를 외부에 주문한다.이때 **"원두 주문"**을 작업 요청이라고 보면,동기 처리는:바리스타가 원두가 도착할 때까지 가만히 기다리며,다른 손님의 주문은 받지 않는 상황이다.비동기 처리는:바리스타가 원두를 주문해두고, 도착하기를 기다리는 동안다른 손님의 주문을 받고 커피를 만드는 작업을 계속하는 것이다.비동기에서 콜백 함수란?비..
엔터티를 도출하는 힘- 어떤 속성이 특정 엔터티에 속하는 게 맞는지를 판단하는게 정규화다.- 엔티티를 대표하는 속성을 찾은 후 해당 속성이 대표 속성에 종속됀는지 판단하면서 엔티티를 설계하는데 이 과정을 정규화라고 한다.- 정규화는 특정 속성이 어떤 엔터티에 속해야하는지를 따져서 제자리인 한 굿에만 있도록 하는 과정 정규화의 이점은 무엇인가?- 정규화의 가장 커다란 목적은 중복 데이터 제거.- 확장성이 좋아진다. 정규화를 한다는건 데이터 성격의 맞는 엔터티를 설계한다는 건데, 명확한 정규화는 변경이 생겼을 때, 데이터를 통합할 지 추가할 지가 명확하다는 뜻이다. 결국 확장성이 좋아진다. 정규화의 토대. 함수 종속- 함수 종속 : 데이터 종속성 => 릴레이션 내에 존재하는 속성 간의 종속성. 한 속성의 ..