전체 글579 구조를 파악하라 구조를 파악하라 - 흔들리지 않는 근본, 본질, 구조를 파악하라 @김종권 교수님은 Machine Learning을 공부하는데 있어 개념을 빠르게 파악하고, 연습 문제를 파라고 한다 uzu도 하나의 프레임워크에 하나정된 사람이 아니라, 베이스를 토대로 문제를 해결 할 수 있는 사람이 되어야 한다고 했다 그런의미에서 uzu는 프론트나 백엔드나 별 차이가 없다고 생각한단다 그런데 사실 이 이야기들은 누구나 알고 있는 이야기이다 근데, 왜 난 그렇게 하지 않을까? 음, 정확히는 왜 이런 중요한 초심을 자주 잊는걸까? 본능적으로 무섭기 때문이지, 당장 무엇이라도 하고 있다는 생각에 취하는거 아닌가 무언가 했다는 위로로 눈을 가리지 말자 부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :> ETC/Thinking 2023. 7. 12. Service Service - 비즈니스 로직에 대한 책임을 가진다 서비스는 일반적으로 비즈니스 로직을 포함하는 레이어입니다. 데이터베이스에서 데이터를 가져오거나 변형하거나 다른 서비스를 호출하거나 다양한 애플리케이션의 비즈니스 로직을 구현하는 역할을 합니다. 즉, 서비스 레이어는 비즈니스 로직을 캡슐화하여 레포지토리와 컨트롤러 사이에 위치합니다. 이 레이어는 비즈니스 규칙과 워크플로를 수행하고, 데이터를 가져와 가공하는 일을 담당합니다. 예제 앞서 Repository에서 정의한 UserRepository를 사용하여 User에 대한 비즈니스 로직을 처리하는 UserService를 만들어봅시다. @Service public class UserService { private final UserRepository userR.. Computer Science/디자인패턴 2023. 7. 12. Repository Repository - 데이터 접근에 대한 책임을 갖는다 레포지토리는 데이터에 접근하는 방법을 캡슐화하는데 사용되는 설계 패턴입니다. 레포지토리 패턴은 일관된 방식으로 데이터에 접근하도록 해주며, 도메인 로직에서 데이터 저장소의 세부 정보를 분리하여 응용 프로그램의 테스트 및 유지 관리를 용이하게 해줍니다. 예제 예를 들어, 사용자 데이터를 저장하는 경우를 생각해보겠습니다. 우리는 User라는 엔티티를 가지고 있고, 이를 데이터베이스에 저장하려고 합니다. 이를 위해 UserRepository 인터페이스를 정의하고 필요한 메소드를 선언할 수 있습니다. @Repository public interface UserRepository extends JpaRepository { User findByUsername.. Computer Science/디자인패턴 2023. 7. 12. 🐥 카카오테크캠퍼스 - 2단계 3주차 과제 개요 🐥 카카오테크캠퍼스 - 2단계 3주차 - 과제 - 레포지토리 단위테스트 1. 레포지토리 단위테스트를 구현하여 소스코드를 제출하시오. 2. 쿼리를 테스트하면서 가장 좋은 쿼리를 작성해보시오. 핵심 지표 레포지토리 단위테스트가 구현되었는가? 테스트 메서드끼리 유기적으로 연결되지 않았는가? (테스트는 격리성이 필요하다) Persistene Context를 clear하여서 테스트가 구현되었는가 (더미데이터를 JPA를 이용해서 insert 할 예정인데, 레포지토리 테스트시에 영속화된 데이터 때문에 쿼리를 제대로 보지 못할 수 있기 때문에) 테스트 코드의 쿼리 관련된 메서드가 너무 많은 select를 유발하지 않는지? (적절한 한방쿼리, 효율적인 in query, N+1 문제 등이 해결된 쿼리) 🥔 내가 잘 모르는.. 프로젝트/카카오 테크 캠퍼스 2023. 7. 12. K - Means 알고리즘 실습 K - Means 알고리즘 실습 Intro 먼저 K-Means Clustering이 무엇인지, 그리고 어떤 실제 세계의 어플리케이션에서 사용되는지 살펴보겠습니다. K-Means는 군집화 모델 중 가장 단순한 모델 중 하나로, 그 단순함에도 불구하고 많은 데이터 과학 응용 프로그램에서 광범위하게 사용됩니다. 고객 세그멘테이션, 웹사이트 방문자의 행동 이해, 패턴 인식, 기계 학습, 데이터 압축 등에서 특히 유용하게 활용됩니다. 여기에서는 두 가지 예제를 통해 K-Means 클러스터링을 연습하게 될 것입니다. 무작위로 생성된 데이터셋에서의 K-Means 고객 세그멘테이션을 위한 K-Means 사용 1단계: 무작위 데이터셋 생성 먼저, 실습을 위한 데이터셋을 생성해 보겠습니다. 여기서는 numpy의 rando.. AI 2023. 7. 12. K-Means Clustering - 주어진 데이터를 여러 개의 상이한 그룹으로 분할한다 - 그룹 내 중심을 반복적으로 구해, 데이터 정밀도를 향상한다 K-Means 클러스터링은 비지도 학습(Unsupervised Learning)으로 Clustering을 하는 알고리즘이다. 이 알고리즘은 주어진 데이터를 여러 개의 상이한 클러스터로 그룹화한다 단계별 과정 : 반복 1. Set up Centroids 클러스터의 개수(K)를 결정합니다. K개의 클러스터 중심점을 무작위로 초기화합니다. 2. Distance Matrix 각 데이터 포인트(고객)를 거리에 기반하여 가장 가까운 클러스터 중심점에 할당합니다. 각 Centroid로부터 데이터 포인트의 거리를 Distance Matrix에 기록하고, 이를 중심으로 클러스터에 할당합니다 3. Clus.. AI 2023. 7. 12. Clustering Clustering - 물건들이 주어졌을 때 비슷한 것끼리 그룹을 만들면 군집화 - 관측치(행)를 그룹화하는 비지도 학습(Unsupervised Learning) 방법 물건들이 주어졌을 때 비슷한 것끼리 그룹을 만들면 군집화 관측치(행)를 그룹화하는 [[비지도 학습(Unsupervised Learning)]] 방법 클러스터링 알고리즘의 종류 분할 기반 클러스터링 이 알고리즘은 구형 클러스터를 생성합니다. 예로는 K-평균, K-중앙값, 퍼지 c-평균 등이 있으며, 이들은 대부분 효율적이며 중대형 데이터베이스에 사용됩니다. K-Means Clustering 계층적 클러스터링 이 알고리즘은 클러스터의 트리를 생성합니다. 예로는 병합 클러스터링과 분할 클러스터링이 있습니다. 이 알고리즘은 직관적이며 소규모 데이.. AI 2023. 7. 11. H2 DB H2 DB - Spring의 경량화 DB 브라우저 : H2 DB Console 다루는 방법 일단 application.yml에 가서 h2 console을 켜봅시다 spring: h2: console: enabled: true server: port: 8080 그러면 이제 프로젝트를 실행 시켰을 때 아래와 같이 console에 jdbc 설정 값이 뜨는 것을 볼 수 있습니다 이제 브라우저에서 localhost:8080/h2-console을 검색하면, H2 console을 볼 수 있습니다 JDBC URL이 보일텐데 여기에, 아까 프로젝트 콘솔에 떴던 jdbc URI를 입력해줍니다 이제 Connect를 하시면, H2 DBMS에 접근 하실 수 있습니다 IntelliJ : H2 DB Console 다루는 방법 먼저.. DEV/Java 2023. 7. 11. JPA의 영속 상태 JPA의 영속 상태 - 영속 상태의 Entity의 상태 변경을 데이터베이스가 자동 반영한다 "영속 상태"는 JPA에서 엔티티의 생명주기를 설명하는 용어 중 하나입니다. 엔티티의 생명주기는 크게 비영속, 영속, 준영속, 삭제 네 가지 상태로 나눌 수 있습니다. 비영속: 아직 영속성 컨텍스트에 속하지 않은 상태. 즉, 아직 데이터베이스와 연관이 없는 상태입니다. 영속: 영속성 컨텍스트에 속해 있는 상태. 즉, 데이터베이스와 연관이 있는 상태입니다. 준영속: 영속성 컨텍스트에서 분리된 상태. 즉, 데이터베이스와의 연관이 끊긴 상태입니다. 삭제: 엔티티가 삭제된 상태. 즉, 데이터베이스에서 삭제된 상태입니다. 영속 상태란? "영속 상태"라는 말은 엔티티가 Persist Context에 속해 있으며, 따라서 데이.. DEV/Java 2023. 7. 11. Persist Context 영속성 컨텍스트(Persistence Context) 영속성 컨텍스트는 JPA에서 중요한 개념 중 하나로, 엔티티를 영구 저장하는 환경을 말합니다. 영속성 컨텍스트는 EntityManager 인스턴스를 통해 접근하고 관리됩니다. 1. 1차 캐시 영속성 컨텍스트는 내부에 엔티티를 저장하는 1차 캐시를 가지고 있습니다. EntityManager를 통해 엔티티를 조회하면 먼저 1차 캐시에서 엔티티를 찾고, 없을 경우에만 데이터베이스에서 데이터를 조회합니다. 이를 통해 같은 트랜잭션 내에서 엔티티를 반복적으로 조회할 때 성능을 향상시킬 수 있습니다. User user1 = entityManager.find(User.class, userId); // 데이터베이스에서 조회 User user2 = entityMana.. DEV/Java 2023. 7. 11. JPA Java Persistence API (JPA) JPA는 Java Persistence API의 약자로, 자바 진영에서 관계형 데이터베이스와 객체 지향 프로그래밍 간의 데이터를 매핑하고 관리하기 위한 표준 인터페이스입니다. 이는 개발자가 데이터베이스에 대한 저수준의 코드 작성을 줄이고, 객체 지향적인 방식으로 데이터를 다룰 수 있게 돕습니다. JPA는 객체 지향 프로그래밍의 개념과 관계형 데이터베이스의 테이블 간의 매핑을 처리하기 위한 ORM(Object-Relational Mapping) 기술을 기반으로 합니다. JPA의 역할 JPA는 ORM 개념을 추상화하여 표준 인터페이스로 제공하며, 다양한 ORM 프레임워크를 JPA 구현체로 사용할 수 있도록 합니다. 이를 통해 개발자는 일관성 있고 편리하게 객체.. DEV/Java 2023. 7. 11. DataJpaTest @DataJpaTest - Spring Boot에서 제공하는 JPA 테스트 유틸리티 - [[Repository]] 주입 및 스캔 등 테스트 보조 이 어노테이션은 Spring Boot에서 제공하는 테스트 유틸리티 중 하나로, JPA 관련 컴포넌트를 테스트하는 데 사용됩니다. 1단계: 임베디드 데이터베이스 사용 @DataJpaTest를 사용하면 테스트를 위한 임베디드 데이터베이스를 메모리에 올립니다. 기본적으로 H2 데이터베이스가 사용되며, 각각의 테스트마다 독립적인 데이터베이스가 생성됩니다. 이를 통해 실제 데이터베이스를 사용하지 않고도 데이터베이스와 상호작용하는 코드를 테스트할 수 있습니다. @DataJpaTest public class UserRepositoryTest { @Autowired priva.. DEV/Java 2023. 7. 11. 이전 1 ··· 13 14 15 16 17 18 19 ··· 49 다음