728x90

전체 글 573

[RN] Mac에서 React Native 개발 환경 Setting

1. 홈브루 설치 - 홈브루는 맥에서 사용하는 설치 프로그램 https://brew.sh Homebrew The Missing Package Manager for macOS (or Linux). brew.sh - 명령어를 복사해서 터미널에서 실행 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 2. VScode 설치 - 설치 프로그램 다운로드 https://code.visualstudio.com/ Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized ..

[Go] 기초 - 컬렉션 (배열)

1. 배열 - 배열은 연속적인 메모리 공간에 동일한 타입의 데이타를 순서적으로 저장하는 자료구조 - Go에서 배열의 첫번째 요소는 0번, 그 다음은 1번, 2번 등으로 인덱스를 매긴다 (Zero based array). - 배열의 선언은 "var 변수명 [배열크기] 데이타타입" 과 같이 하는데, 배열크기를 데이타타입 앞에 써 주는 것이 C, Java 같은 다른 언어들과 다르다. Go에서 배열의 배열크기는 Type을 구성하는 한 요소이다. 즉, [3]int와 [5]int는 서로 다른 타입으로 인식된다. 배열이 선언된 후에 각 배열의 요소를 인덱스를 사용하여 읽거나 쓸 수 있다. package main func main() { var a [3]int //정수형 3개 요소를 갖는 배열 a 선언 a[0] = 1..

개발/Go 2022.07.20

[JPA] 값 타입

김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. JPA의 데이터 타입 분류 - 엔티티 타입 (1) @Entity로 정의하는 객체 (2) 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 나이 값을 변경해도 키는 식별자로 인식 - 값 타입 (1) int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 (2) 식별자가 없고 값만 있으므로 변경 시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 2. 값 타입 분류 - 기본값 타입 (1) 자바 기본 타입(int, double) (2) 래퍼 클래스(Integer, Long) (3) String - 임베디드 타입(embedded type, 복합 값 타입) - 컬렉션 값 ..

[Spring] 데이터 액세스 층의 설계와 구현

4.1 데이터 액세스 층과 스프링 - 데이터 액세스 층은 데이터 액세스 처리를 비즈니스 로직 층에서 분리하여 따로 만들어준 층 - 데이터 액세스 처리와 비즈니스 로직이 섞여있으면 유지보수가 어렵고, 코드 가독성이 떨어진다. 4.1.1 DAO 패턴이란? - DAO 패턴은 데이터의 취득, 변경 등 데이터 액세스 처리를 DAO라고 하는 오브젝트로 분리하는 패턴 - 데이터 액세스 방식이 바뀌어도 DAO만 변경하면 된다. - DAO 클래스는 DB의 테이블별로 만든다. 4.1.2 자바의 데이터 액세스 기술과 스프링의 기능 - 자바의 데이터 액세스 기술 (1) JDBC (2) 하이버네이트 & JPA 등 고성능 ORM 프레임워크 (3) MyBatis(iBATIS) (4) 독자 개발한 프레임 워크 등 - 스프링은 여러 ..

[Go] 기초 - 클로저 (Closure)

1. 클로저 - Go 언어에서 함수는 Closure로서 사용될 수도 있다. - Closure는 함수 바깥에 있는 변수를 참조하는 함수값(function value)을 말한다. 이 때 함수는 바깥의 변수를 마치 함수 안으로 끌어들인 듯이 그 변수를 읽거나 쓸 수 있게 된다. package main func nextValue() func() int { i := 0 return func() int { i++ return i } } func main() { next := nextValue() println(next()) // 1 println(next()) // 2 println(next()) // 3 anotherNext := nextValue() println(anotherNext()) // 1 다시 시작 ..

개발/Go 2022.07.19

[Java] Map안에 Map 안에 List 만들기

회사에서 Java, Spring Boot, Thymeleaf로 작업하고 있다.화면에 테이블을 그리는데, (A, B 영역 / ㄱ, ㄴ, ㄷ 교재 / 1, 2 유닛)Aㄱ12ㄴ1Bㄷ11이런 식으로 그려줘야 했다.Javascript로 할 수도 있었지만, 최대한 로직을 Java쪽에서 만들어주기로 했기 때문에 Map>> 이러한 형태로 만들어서 화면에서 그릴 생각이었다.// 화면으로 보낼 최종 맵Map>> resultMap = new LinkedHashMap();// 임시 맵Map> tempMap = new LinkedHashMap();// 전체 데이터List studyDto = xxxService.findStudyByUserId(userId);맵을 먼저 만들어 놓고 전체 데이터에서 맵에 넣어줄 생각이다.// 영역 ..

[JPA] 프록시와 연관관계 관리

김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. 프록시 - Member에 프로퍼티로 Team을 가지고 있을 때 em.find로 member을 조회하면 쿼리로 member와 team을 같이 조회한다. - team은 사용하지 않을 것이고 member의 username만 사용한다면 굳이 team을 조회할 필요가 없다. - 필요할 때 조회하기 위해 프록시를 사용한다. 2. 프록시 기초 - em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 - em.getReference(): 데이터 조회를 미루는 가짜(프록시) 엔티티 객체 조회(DB로 쿼리를 날리지 않고 파라미터로 넣어준 클래스를 상속받은 가짜(프록시) 엔티티를 만들어서 프록시 객체가 영속성 컨텍스트에 들어간다.) 3. 프록시 ..

[Go] 기초 - 익명함수

1. 익명함수 - 함수명을 갖지 않는 함수 - 일반적으로 익명함수는 그 함수 전체를 변수에 할당하거나 다른 함수의 파라미터에 직접 정의되어 사용 func main() { sum := func(n ...int) int { //익명함수 정의 s := 0 for _, i := range n { s += i } return s } result := sum(1, 2, 3, 4, 5) //익명함수 호출 println(result) } - Go로 개발하면서 익명함수는 거의 사용을 안했던 것 같다. 2. 일급함수 - Go 프로그래밍 언어에서 함수는 일급함수로서 Go의 기본 타입과 동일하게 취급되며, 따라서 다른 함수의 파라미터로 전달하거나 다른 함수의 리턴값으로도 사용될 수 있다. 즉, 함수의 입력 파라미터나 리턴 파..

개발/Go 2022.07.18

[JPA] 고급 매핑

김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 정리 1. 상속관계 매핑 - 관계형 데이터베이스는 상속 관계 X - 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 - 상속관계 매핑: 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 - 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 (1) 각각 테이블로 변환 -> 조인 전략 (2) 통합 테이블로 변환 -> 단일 테이블 전략 (3) 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 2. 조인 전략 - 장점 (1) 테이블 정규화 (2) 외래 키 참조 무결성 제약조건 활용가능 (3) 저장공간 효율화 - 단점 (1) 조회 시 조인을 많이 사용, 성능 저하 (2) 조회 쿼리가 복잡함 (3) 데이터 저장 시 IN..

[Go] 기초 - 함수

1. 함수 - Go에서 함수는 func 키워드와 함수명을 사용해서 정의한다. - Java의 메소드와 비슷하다. - 함수명 뒤에 괄호 안에 받을 파라미터를 적는데, 파라미터명 + 타입 순서로 적어준다. func main() { msg := "Hello" say(msg) } func say(msg string) { println(msg) } - msg에 "Hello"를 담아 say함수에 전달했고, say함수에서 msg(string)로 받아서 출력했다. 2. 파라미터 전달 방식 - Go에서 파라미터를 전달하는 방식은 Pass By Value와 Pass By Reference로 나뉜다. (1) Pass By Value 위의 [1. 함수]의 예제에서는 msg의 값 "Hello" 문자열이 복사되어 함수 say()에..

개발/Go 2022.07.17
728x90