2023/07

· AI
- 주어진 데이터를 여러 개의 상이한 그룹으로 분할한다 - 그룹 내 중심을 반복적으로 구해, 데이터 정밀도를 향상한다 K-Means 클러스터링은 비지도 학습(Unsupervised Learning)으로 Clustering을 하는 알고리즘이다. 이 알고리즘은 주어진 데이터를 여러 개의 상이한 클러스터로 그룹화한다 단계별 과정 : 반복 1. Set up Centroids 클러스터의 개수(K)를 결정합니다. K개의 클러스터 중심점을 무작위로 초기화합니다. 2. Distance Matrix 각 데이터 포인트(고객)를 거리에 기반하여 가장 가까운 클러스터 중심점에 할당합니다. 각 Centroid로부터 데이터 포인트의 거리를 Distance Matrix에 기록하고, 이를 중심으로 클러스터에 할당합니다 3. Clus..
· AI
Clustering - 물건들이 주어졌을 때 비슷한 것끼리 그룹을 만들면 군집화 - 관측치(행)를 그룹화하는 비지도 학습(Unsupervised Learning) 방법 물건들이 주어졌을 때 비슷한 것끼리 그룹을 만들면 군집화 관측치(행)를 그룹화하는 [[비지도 학습(Unsupervised Learning)]] 방법 클러스터링 알고리즘의 종류 분할 기반 클러스터링 이 알고리즘은 구형 클러스터를 생성합니다. 예로는 K-평균, K-중앙값, 퍼지 c-평균 등이 있으며, 이들은 대부분 효율적이며 중대형 데이터베이스에 사용됩니다. K-Means Clustering 계층적 클러스터링 이 알고리즘은 클러스터의 트리를 생성합니다. 예로는 병합 클러스터링과 분할 클러스터링이 있습니다. 이 알고리즘은 직관적이며 소규모 데이..
· DEV/Java
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
JPA의 영속 상태 - 영속 상태의 Entity의 상태 변경을 데이터베이스가 자동 반영한다 "영속 상태"는 JPA에서 엔티티의 생명주기를 설명하는 용어 중 하나입니다. 엔티티의 생명주기는 크게 비영속, 영속, 준영속, 삭제 네 가지 상태로 나눌 수 있습니다. 비영속: 아직 영속성 컨텍스트에 속하지 않은 상태. 즉, 아직 데이터베이스와 연관이 없는 상태입니다. 영속: 영속성 컨텍스트에 속해 있는 상태. 즉, 데이터베이스와 연관이 있는 상태입니다. 준영속: 영속성 컨텍스트에서 분리된 상태. 즉, 데이터베이스와의 연관이 끊긴 상태입니다. 삭제: 엔티티가 삭제된 상태. 즉, 데이터베이스에서 삭제된 상태입니다. 영속 상태란? "영속 상태"라는 말은 엔티티가 Persist Context에 속해 있으며, 따라서 데이..
· DEV/Java
영속성 컨텍스트(Persistence Context) 영속성 컨텍스트는 JPA에서 중요한 개념 중 하나로, 엔티티를 영구 저장하는 환경을 말합니다. 영속성 컨텍스트는 EntityManager 인스턴스를 통해 접근하고 관리됩니다. 1. 1차 캐시 영속성 컨텍스트는 내부에 엔티티를 저장하는 1차 캐시를 가지고 있습니다. EntityManager를 통해 엔티티를 조회하면 먼저 1차 캐시에서 엔티티를 찾고, 없을 경우에만 데이터베이스에서 데이터를 조회합니다. 이를 통해 같은 트랜잭션 내에서 엔티티를 반복적으로 조회할 때 성능을 향상시킬 수 있습니다. User user1 = entityManager.find(User.class, userId); // 데이터베이스에서 조회 User user2 = entityMana..
· DEV/Java
Java Persistence API (JPA) JPA는 Java Persistence API의 약자로, 자바 진영에서 관계형 데이터베이스와 객체 지향 프로그래밍 간의 데이터를 매핑하고 관리하기 위한 표준 인터페이스입니다. 이는 개발자가 데이터베이스에 대한 저수준의 코드 작성을 줄이고, 객체 지향적인 방식으로 데이터를 다룰 수 있게 돕습니다. JPA는 객체 지향 프로그래밍의 개념과 관계형 데이터베이스의 테이블 간의 매핑을 처리하기 위한 ORM(Object-Relational Mapping) 기술을 기반으로 합니다. JPA의 역할 JPA는 ORM 개념을 추상화하여 표준 인터페이스로 제공하며, 다양한 ORM 프레임워크를 JPA 구현체로 사용할 수 있도록 합니다. 이를 통해 개발자는 일관성 있고 편리하게 객체..
· DEV/Java
@DataJpaTest - Spring Boot에서 제공하는 JPA 테스트 유틸리티 - [[Repository]] 주입 및 스캔 등 테스트 보조 이 어노테이션은 Spring Boot에서 제공하는 테스트 유틸리티 중 하나로, JPA 관련 컴포넌트를 테스트하는 데 사용됩니다. 1단계: 임베디드 데이터베이스 사용 @DataJpaTest를 사용하면 테스트를 위한 임베디드 데이터베이스를 메모리에 올립니다. 기본적으로 H2 데이터베이스가 사용되며, 각각의 테스트마다 독립적인 데이터베이스가 생성됩니다. 이를 통해 실제 데이터베이스를 사용하지 않고도 데이터베이스와 상호작용하는 코드를 테스트할 수 있습니다. @DataJpaTest public class UserRepositoryTest { @Autowired priva..
· DEV/Backend
Hibernate - JPA 표준 구현하고, 확장한 ORM 프레임워크 Hibernate는 JPA(Java Persistence API)의 표준을 구현하고 확장한 ORM 프레임워크입니다. Hibernate는 개발자가 객체 지향적인 방식으로 데이터를 다룰 수 있도록 도와주며, 객체와 데이터베이스 간의 매핑을 관리합니다. 개발자는 자바 객체를 사용하여 데이터베이스의 테이블과 상호작용할 수 있으며, Hibernate가 자동으로 SQL 쿼리를 생성하고 실행하여 데이터베이스와의 상호작용을 처리합니다. Hibernate를 사용하면 개발자는 SQL 쿼리 작성 및 데이터베이스와의 상세한 연결 및 트랜잭션 관리에 대한 부담을 줄일 수 있으며, 객체 지향적인 개발에 집중할 수 있습니다. Hibernate Modeling 1..
· DEV/Backend
MyBatis - Java의 오픈 소스 ORM 프레임워크이다 MyBatis는 기존 JDBC 코드의 반복과 복잡성을 줄이고, 데이터베이스와 객체 간의 매핑을 보다 편리하게 처리할 수 있도록 도와줍니다. 즉 개발자는 복잡한 SQL 매핑과 성능 최적화를 자유롭게 제어할 수 있습니다. 예제 코드 같은 기능인데도 MyBatis가 간편한게 보인다 MyBatis User Object 맵핑을 바로 해준다 public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUserById(int id); } JDBC 커서 만들고, Close 하고 세팅 할 것이 많다. public class UserDAO { private final D..
· DEV/Backend
Restful API - 클라이언트와 서버 간 통신 규칙과 규약 제공 - 강제성이 없고, 이미 컨벤션이 있다면 존중하라 REST는 웹 기반 애플리케이션에서 자원을 표현하고 상태를 전송하기 위한 아키텍처 스타일입니다. 이는 RESTful API의 규칙과 규약을 제공하며, 이를 통해 클라이언트와 서버 간의 통신이 이루어집니다. 자원은 고유한 URI(Uniform Resource Identifier)로 표현되고, HTTP 메서드를 사용하여 자원을 조작합니다. Restful API 예시 모든 사용자 조회: GET: /users 특정 사용자 조회: GET: /users/{id} 새로운 사용자 생성: POST: /users 특정 사용자 수정: PUT: /users/{id} 특정 사용자 삭제: DELETE: /use..
berom
'2023/07 글 목록 (5 Page)