분류 전체보기

기존에는 아래 표처럼 user 1명이 제품을 찜하면 1행에 1개의 상품이 들어가도록 했다.그렇게 findAll로 1번 유저 찾아오기로 찜목록을 확인했다.1명의 uesr가 100개의 상품을 찜하면 100개의 행이 생긴다.이처럼 이렇게 할 경우에는 DB차지가 심하다는 걸 깨달았다. 그래서 새롭게 알게되어 다른 방법으로 찜 상품 폴더를 만들어 보고자 한다.아래처럼 1행에 1개의 상품을 넣는 것이 아니라, 배열을 만들어 찜 상품을 추가할 때는 product_id 필드만 수정하면 되는 방향으로 해보려고 한다. user_id product_id1112132122    puroduct_id에 넣을 때, 배열을 만들어 [1, 2, 3] 이렇게 넣는다.하지만 저장할 때는 Gson라이브러리를 사용해 Json형태로 저장하고..
· 공부/MSA
org.apache.kafka:kafka_2.13와 org.springframework.kafka:spring-kafka 두 가지 의존성은 각각 Apache Kafka와 Spring Kafka 라이브러리를 제공합니다. 이 둘은 서로 다른 목적을 가지고 있으며, 주로 Kafka를 사용할 때 함께 사용되지만, 서로 다른 역할을 수행합니다.org.apache.kafka:kafka_2.13이 의존성은 Apache Kafka 클라이언트를 제공합니다. Kafka 클라이언트는 Kafka 브로커와 상호작용하기 위한 기본적인 라이브러리입니다. 이를 통해 프로듀서와 컨슈머를 직접 구현할 수 있습니다. 2.13 부분은 Scala 버전과 관련이 있으며, Kafka가 Scala로 작성되었기 때문에 필요합니다.주요 기능:Kafk..
dependencywepmysqljpa  application.yml spring: jpa: hibernate: ddl-auto: create show-sql: true datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/coupon_example username: root password: 1234  요구사항선착순 100명에게 할인쿠폰 제공하는 이벤트 제공조건1. 선착순 100명에게만 지급되어야 한다.2. 101개 이상이 지급되면 안된다.3. 순간적으로 몰리는 트래픽을 버틸 수 있어야 한다.   Coupon Entity@Entitypublic class..
//게시판의 게시글을 삭제하는 메서드 @Transactionalpublic void removeBoard(Long id)throws Exception{ replyDAO.removeAll(id); //삭제할 게시글의 답글 삭제 boardDAO.deleteBoard(id); //게시글 삭제 }  💡 @Transactional 애너테이션메서드 또는 클래스가 트랜잭션 내에서 실행되어야 함을 나타내는 데 사용된다. 💡 트랙잭션?데이터베이스 작업의 원자성을 보장하며, 작업이 성공하면 커밋되고 실패하면 롤백된다. 이렇게 함으로써 데이터 일관성을 유지할 수 있다.동시 접근하는 여러 프로그램 간 격리를 제공한다     이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관..
컴퓨터를 포맷하게 되면서 모든 세팅을 새롭해 해야했다.그러면서 db파일 세팅, 데이터 넣기 등 다 하나하나 설정을 해줘야 했다.프로그램이 실행될 때 mysql 데이터베이스 파일과 더미데이터를 자동으로 넣고 싶었다. 결론은 Docker를 실행할 때 mysql 데이터베이스 파일을 만들고 더미데이터를 넣는 것으로 해결했다.    mysql.yml 파일을 만들어서 두고더보기version: '3'services: mysql: image: mysql:latest container_name: my-mysql restart: always environment: MYSQL_ROOT_PASSWORD: 1234 ports: - "3306:3306" volumes: ..
· 공부/MSA
UserServiceDockerfile 파일 만들기  DockerfileFROM openjdk:17-ea-jdk-slim#tmp 디렉토리 생성VOLUME /tmp# 복사를 할 때 docker파일이 포함되어 있는 디렉토리나 파일을 복사해야한다.COPY target/user-service-1.0.jar UserService.jar# ENTRYPOINT :이미지가 실행될 때 어떤 커맨드를 가지고 할 것인지# 명령을 입력할 때 공백을 리스트 형태롤 앞에 bracket하고 여러 개 나눠서 입력ENTRYPOINT ["java","-jar","UserService.jar"]  터미널UserService 프로젝트를 인텔리제이에서 하면 컴파일 해준다.하지만 따로 cmd를 켜서 할 경우, 컴파일을 수동으로 해주면 된다.테..
에러 상황   Git bash에서 mysql에 들어가려고 했지만 아래처럼 오류가 뜬다.the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty' 이 오류는 일반적으로 Window환경에서 Git bash 또는 Cygwin과 같은 Unix 호환 쉘을 사용할 때 나타난다.특히, docker, kubectl, 또는 mysql과 같은 상호작용이 필요한 CLI 프로그램을 실행할 때 발생할 수 있다.이 메시지는 터미널이 TTY(Teletypewriter)를 인식하지 못한다는 것을 의미한다.  💡 TTY(Teletypewriter)원래 물리적인 전신 타자기를 의미하지만, 현대 컴퓨팅에서는 터미널 인터페이..
· 공부/Java
Collections Framework💡Collections vs. Collection- Collections : util 클래스Collections.sort(list);​ - Collection  : 인터페이스 Collections컬렉션을 위한 메서드(static)를 제공💡 유용한 static 메서드를 제공하는 클래스- Object : 객체- Arrays : 배열- Collections : 컬렉션      List* ArrayList연속적인 배열장점 : 구조가 간단하고 데이터를 읽는 데 걸리는 시간이(접근 시간, access time)이 짧다.단점 :- 크기를 변경할 수 없다.(크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사해야함.크기 변경을 피하기 위해 충분히 큰 배열을 생성하면..
· 공부/Java
Iterator :컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것ListIterator :  Iterator에 양방향 조회기능 추가(List를 구현한 경우만 사용가능)Enumeration : Iterator의 구버전 컬렉션들의 구조가 다 달라 읽어오는 방법도 다 다르지만, Iterator를 통해 표준화하여 읽어올 수 있게 한다. ex)List를 Set으로 변환하고 나서 읽어올 때, Iterator를 사용하면 읽어오는 코드를 바꾸지 않고 읽어올 수 있다. 메서드설명boolean hashNext()읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false 반환Object next()다음 요소를 읽어온다. next()를 호출하기 전에 hashNext()를 호출해서 읽어올 요소가 있는지 확인..
· 공부/Java
DS vs. ADTADT(Abstract Data Tpye, 추상 데이터 타입)- 추상화- 데이터 타입을 정의만 하고 실제 구현에 대해선 논의 하지 않는다.- 정의와 구현을 분리하면 사용자는 굳이 어떻게 만들어 지는지를 몰라도 사용하는데 아무런 문제가 없다.- 사용자는 ADT에서 정의된 기능을 이옹 하기만 하면 되고 구현은 개발자가 알아서 하면 된다.- 기능 개선을 위해서 구현 방법이 바뀌어도 정의만 그대로 라면 기존 사용자는 아무런 변경없이 동일하게 이용이 가능하다 이런게 일반적인 추상화의 장점이다. DS(Data Structure, 자료 구조)내부 구현 예시자바에 비유하자면인터페이스 → ADT 클래스 →  DS   참고링크https://www.youtube.com/watch?v=QcsQKgXemtA
sesam
'분류 전체보기' 카테고리의 글 목록 (10 Page)