일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시나공
- 자바
- 회고
- C++
- 정보처리산업기사
- 소프티어
- softeer
- 공부일지
- BFS
- 문제풀이
- 프로그래머스
- programmers
- kotlin
- 백준 알고리즘
- 코딩봉사
- CJ UNIT
- 백준
- 코틀린
- 백준알고리즘
- 알고리즘
- 스프링
- python
- SQL
- MYSQL
- java
- 코딩교육봉사
- 1과목
- 데이터베이스
- SW봉사
- 파이썬
- Today
- Total
목록개발/Java, Kotlin (26)
JIE0025
✅ QueryDSL 설정하기 1️⃣ build.gradle.kts에 plugins 추가 plugins { //for querydsl kotlin("kapt") version "1.7.10" } 2️⃣ dependencies 추가 이후 dependencies를 추가해주면 되는데, 나는 kapt에서 빨간줄이 뜨길래 plugins만 추가하고, 빌드한번 해준 다음 dependencies를 추가했다. dependencies { //querydsl implementation("com.querydsl:querydsl-jpa:5.0.0") kapt("com.querydsl:querydsl-apt:5.0.0:jpa") } 3️⃣ Build 빌드 성공시 인텔리제이 좌측 상단 build > generated > source..
✅ 개요 Hibernate를 이용한 엔티티 생성을 하다가 해당 내용을 정리할 필요성이 생겨서 가져왔다. 🤔 클래스를 선언할 때 (소괄호)와 {중괄호}는 어떤 역할을 할까? 각 자리에 선언되는 필드들은 어떤차이가 있을까? ✅ 예제 코드 메모라는 엔티티 클래스를 간단하게 만들었다. 소괄호 ( ) 안에 title을 선언, 중괄호 { } 안에 memoId, contents가 선언되어있다. @Entity @Table(name = "memo") class Memo ( @Column(nullable = false, length = 30) var title: String ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "memoId"..
✅ 개요 Kotlin - Springboot , JPA - Hibernate - DB를 쓰는 상황이다. DB연결을 위해 Entity 클래스를 선언함에 있어 고민이 생겼다. ✅ 엔티티 생성에서 data class를 쓰는것이 좋을까 ? 결론부터 말하면 아니다. 엔티티 클래스는 다음과 같은 필요조건을 갖고있다. ✔️ 엔티티 클래스의 필요조건 클래스는 반드시 javax.persistence.Entity 어노테이션을 적용해야 함 클래스는 반드시 public/ protected의 no-arg 생성자를 갖고 있어야함 (다른 생성자가 있을수도 있다.) 엔티티는 반드시 final이면 안된다 (메소드/인스턴스 변수 모두) 엔티티는 엔티티가 아닌 클래스를 상속할 수 있다. etc 첫번째. 엔티티는 반드시 final이면 안된..
✅ 개요 이전에 멀티스레딩의 필요성과 기초 지식에 대해 공부했었다. https://jie0025.tistory.com/569 멀티스레딩의 개요 및 운영체제 기초 ✅ 멀티스레딩은 왜 필요할까? 2가지 (응답성, 성능)를 위해서이다. 1. 응답성 만약 수천명이 사용하는 온라인 마켓 Web Application이 있다고 가정해보자. 모든 사용자의 구매정보를 DB에 저장하는데, jie0025.tistory.com 이번에는 스레드를 생성하는 2가지 방법과, 스레드의 우선순위에 대해 알아보자. ✅ Runnable 인터페이스를 구현하여 스레드 생성하기 Thread를 생성하는 첫번째 방법은 Runnable 인터페이스를 구현하는것이다. Runnable 인터페이스에는 run()이 정의되어있기 때문에 @Override를 통..
✅ 개요 애플리케이션의 요구사항은 계속해서 변한다. 오리가 수영하고, 소리를 낼 수 있다는 슈퍼클래스를 만들고 오리인형, 오리A, 오리B가 슈퍼클래스를 상속받도록 했다고 가정해보자. 다음 요구사항이 들어왔다. 오리가 날 수 있게 만들어줘 ✍️ 상속을 사용하는것은 좋지 못할 수 있다. 슈퍼클래스에 Fly()를 추가하는 방법이 있다. 그러나 오리 인형이 를 상속받고 있기 때문에 사용할 수 없다. (오리인형은 수영할 수 있지만, 날 수 없다.) ✍️ 인터페이스를 사용할 경우는? Flyable이라는 인터페이스를 만들면 날아야만 하는 오리들에 대해서만 구현해주면 된다. 그러나 코드 중복을 무시할 수 없고, 날 수 있는 오리의 종류가 100가지가 넘어가게 되면 코드를 전부 고쳐주어야한다. 재사용에 유연한 코드를 작..
✅ 멀티스레딩은 왜 필요할까? 2가지 (응답성, 성능)를 위해서이다. 1. 응답성 만약 수천명이 사용하는 온라인 마켓 Web Application이 있다고 가정해보자. 모든 사용자의 구매정보를 DB에 저장하는데, 한 고객이 여러개의 물건을 구매했다 . -> DB 실행 시간이 길어진다. 이때 동시에 다른 고객도 구매를 하고 싶어하면? 앱이 첫번째 요청에 응답할때까지 두번째 요청자는 대기 하게 된다. 이것이 멀티스레딩의 첫번째 필요성이다. 각 스레드는 각 요청을 처리하도록 하여 사용자의 대기시간을 줄이며 응답성을 높힐 수 있다. 우리는 크롬과 같이 여러개의 창을 띄어둔 채로 컴퓨터를 한다. 이때 모든 작업이 마치 동시에 실행되고 있는것처럼 생각하게 되는데 이 또한 멀티스레딩을 이용한 것이고, 이라고 한다. ..
✅ 개요 특정 언어의 특징적인 문법이 있다면 lateinit var를 사용하면, 런타임시 변수의 값이 결정된다. 1. application.yml에 지정된 값을 가져와 사용할 때 2. 테스트코드에서, @BeforeAll을 이용한 lateinit var
✅ 개요 그동안 모듈 한개에서 전체 프로젝트 파일을 관리하는 프로젝트만 봐왔었다. 최근에 멀티모듈을 사용하는 프로젝트들이 존재하는것을 알게되었고, 왜 사용하는지 궁금해서 이 글을 적는다. ✅ 모듈의 정의 먼저 모듈이 무엇인지 정의를 해보자. 모듈은 패키지의 한 단계 위의 집합이다. 나는 처음 모듈과 패키지에 대해 공부했을때, 어차피 둘다 폴더 구조를 나타낸다면 분류를 해야할 이유가 뭘까? 라는 의문이 생겼었다. 모듈과 패키지의 역할 차이를 제대로 이해해야지 이 의문을 해소할 수 있다. ✍️ 패키지 (Package) 클래스들을 모으기 위한 디렉터리 구조 코드를 구조적으로 구성하고 관리하기 위해 사용한다. 🖥 Example 아래는 이전 프로젝트에서 사용한 서버 패키지 구조인데 mybuddy 패키지 내부에 ..
코틀린에서 자료구조는 어떻게 다루는지 알아보자! ✅ 컬렉션 (Collection) 컬렉션은 자료구조를 편하게 다루기 위해 제공하는 라이브러리이다.. 코틀린에서의 컬렉션은 자체 컬렉션을 제공하지 않는다는걸 기억하자. 🧐 왜 자체 컬렉션을 제공하지 않을까? 표준 자바 컬렉션을 활용함으로써 자바 코드와 상호작용하기 더 쉽기 때문이다. 자바에서 코틀린함수를 호출하거나, 코틀린에서 자바코드를 호출 할 때 서로 변환할 필요 없이 같은 클래스를 사용한다. 코틀린에서는 자바보다 더 많은 기능을 사용할 수 있다 !!!! ✔️ 리스트의 마지막 요소 가져오기 fun main() { val strings = listOf("first", "second", "third") println(strings.last()) // 리스트의..
✅ Hello World가장 기본적인 Hello World를 출력하는 코드를 작성해보았다.fun main (args: Array) { println("hello world"); }함수 선언시 fun을 사용한다.파라미터 뒤에 타입을 써준다. args:Array함수를 최상위 수준에 정의할 수 있다. (클래스 안에 넣어야 할 필요가 없다)배열은 일반 클래스와 마찬가지(?) 자바와 다르게 코틀린에선 배열처리를 위한 문법이 존재하지 않는다. System.out.println을 println으로 사용한다. 자바 표준라이브러리 함수를 간결하게 사용할 수 있도록 래퍼를 제공한다.세미콜론은 써도 되고, 안써도 된다. ✅ 함수의 정의 본문이 증괄호로 둘러싸인 함수 (블록이 본문인 함수)fun max(num1: Int, n..