목록전체 글 (170)
개발 기록
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/s7yOy/btrmksaF6De/UrUj3eHLBkCOIkvkork4bk/img.png)
이번주에는 3차 프로젝트 설계하고 기본적인 crud 기능 구현을 했다. 플라스크로 할때는 몽고디비로 해서 컬렉션별로 어떤 칼럼있는지 그런것만 설계했는데 스프링때는 db, 엔티티 설계해야해서 새로웠다. 테이블끼리 연관관계가 이해가 잘 안되서 어려웠다. pk,fk 이런게 좀 생소했다. -pk는 기본키로 테이블에서 각 행을 고유하게 식별하는 역할을 한다. 중복x -fk는 외래키로 테이블 간의 관계를 의미한다. 두 테이블 간의 종속이 필요한 관계이면 그 접점이 되는 칼럼을 fk로 지정하여 서로 참조할 수 있도록 관계를 맺어준다. ++ 일대일관계에서는 주 테이블과 대상 테이블 중에 외래 키를 넣을 테이블을 선택 가능하다. 강의주간에 배운 거 보다 어려워서 처음에 막힐때가 많았는데 팀원분들이 알려주셔서 기능 구현은..
-챌린지 참여인원수를 가져 올 때 인증 목록에서 유저아이디 기준으로 중복제거해서 리스트 길이를 가져왔다 찾아보니 대부분 문자열을 요소로 갖는 리스트 중복제거가 많아서 복잡했지만 내가 찾던 블로그 발견 ㅎ [JAVA] Java object 중복 제거 [JAVA] Java Object List 중복제거 Java Object List 중복제거 Github 소스 Java8 이상의 Collections에는 Stream API 사용 시 distinct라는 중복 제거 메소드가 있다. Stream API의 distinct 메소드는 Object 의 equals 로 비교하므로 객체 자체가.. sunghs.tistory.com Util 클래스를 따로 만들어서 간단하게 처리 성공 ㅎㅎ 함수가 어려워서 하나하나가 뭔지는 자세히..
오늘 한 것 ! -챌린지 조회 -인증 생성, 조회, 삭제 controller 에는 엔티티 클래스가 바로 리턴 되면 안된다. Dto를 사용해야함. 심지어 DTO안에서도 DTO로 한번 감싸고 넣어줘야 한다.!?! 머리아퍼 한번 dto를 안 썼을때 생기는 문제를 직접 겪어보고 싶다. 왜이렇게 하는지 이론 적으로는 이해했는데 와닿지는 않는다. 내가 멍청하게 생각 못 했던 것 List certifications = challenge.getCertifications(); for (Certification certification : certifications) { CertificationResponseDto responseDto = new CertificationResponseDto(certification); t..
스프링 너무 어렵다. 플라스크할때는 그냥 한 파일에 뭐 불러오고 하면 됐었는데 스프링은 컨트롤러랑 서비스랑 어쩌구저쩌구 만들어야될게 너무 많다. ㅠㅠ 오늘 내가 하려고 한 기능이 어려운 거라고는 하지만 너무 처음부터 막힌 기분이 들어서 안 좋았다 s3 업로드 참고 블로그 https://devlog-wjdrbs96.tistory.com/323 [Spring] Spring Boot AWS S3 사진 업로드 하는 법 Spring Boot S3 File Upload 하는 법 이번 글에서는 Spring Boot 로 AWS S3 로 File Upload 하는 법에 대해서 정리해보겠습니다. 먼저 AWS S3 Bucket 생성을 하겠습니다. AWS S3 Bucket 생성 그리고 권한 탭을 들.. devlog-wjdrb..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c0jOU0/btrlLvUaYFQ/UbkzIyKrak0FxwXn3KXLJ0/img.png)
스프링 CRUD를 연습해보다가 서비스코드에 트랜잭셔널 어노테이션이 왜 붙는지 몰라서 찾아봤다. 트랜잭션은 ! 단일 작업 단위로 취급되는 시리즈 조치라고 한다 번역된 걸 봐서 어색한 단어이긴한데 블로그에서 쉬운 말로 보면 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들. 아무튼 그래서 단일 트랜잭션에는 여러 작업이 있지만 그룹으로 모두 실패하거나 그룹으로 다 완료되어야 한다. 그림으로 보면 티켓을 사고 좌석 예매하는 이 두개의 단일 작업이 둘 중에 하나만 되는 것이 아니라 둘다 완료되야 커밋되어 db에 저장된다는 것 같다. 예약 트랜잭션이라고 한다면 두 단계가 단일 작업 단위로 수행되고 둘다 완전히 완료 되거나 그룹이 롤백될 떄 실패하도록 해야 한다. (++ 롤백은 데이터베이스에서 ..
도커와 쿠버네티스는 아직 나에게는 너무 먼 내용이다.. 수업시간때 나름 집중해서 들었지만 그때만 조금 이해가고 기본적인 개념이해가 부족하니 바로 날아가버리는 그런.. 내용들 그래도 아예 뭔지도 몰랐던 것들을 크게나마 알게 된 것에 의미를.. 다음주 부터 3차 프로젝트 본격적으로 시작이다. 1,2차때랑 달리 많은 걱정과 기대감이 든다. 플라스크로는 어찌저찌 그냥 한 것 같은데 스프링은 뭔가 내 머릿속에 하나도 잡혀있지 않다는 느낌이 들어서 팀내 역할을 잘 못 할까봐 걱정된다. 지금까지 어떻게 했는지 잘 모르겠다. 그래도 개발 과정은 항상 생각보다 오래 걸렸지만 조금씩 만들어지는게 재미었으니까 이번에도 재밌을 것 같다. 이번엔 뭔가 진짜로 잘해야 될 것같은 느낌.. 만이 아니고 잘 해야 되니까 막막하지만 열..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KlaeT/btrlNc6mTZ7/yTFtErxdqvhYkOKKZkOqk0/img.png)
# 캐시 메모리는 실제 메모리와 CPU 사이에서 빠르게 전달을 위해서 미리 데이터들을 저장해두는 좀더 빠른 메모리이다. 프로세서가 매번 메모리에 접근해 데이터를 받아오면 시간이 오래 걸리기 때문에 캐시에 자주 사용하는 데이터를 담아두고, 해당 데이터가 필요할 때 프로세서가 메인 메모리 대신 캐시에 접근하도록해서 처리 속도를 높인다. --> 캐시가 효율적으로 동작하려면, 캐시의 적중률(hit-rate)을 극대화 시켜야함 ! ++) CPU가 주기억장치 메모리에 접근하기 전에 캐시 메모리에서 원하는 데이터 존재 여부를 확인하는데, 이때 필요한 데이터가 있는 경우 Hit(적중), 없는 경우 Miss(실패) 라고 한다. 요청한 데이터를 캐시 메모리에서 찾을 확률은 Hit Ratio(적중률)이라고 한다. 캐시 메모..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b22y6e/btrlC5VOB08/V5xu2NVwJbnud3nJGwjFM0/img.png)
*controller에서 특정 html로 이동이 계속 안 됐다 ㅠㅠ 답지 보고 해결 @GetMapping("/articles/{id}") public String readArticle() { return "view"; } return 시에 view 파일을 못 읽고 Cannot resolve MVC view 'view' 가 계속 떴다. -application.properties 에 해당 코드 추가 spring.thymeleaf.prefix=classpath:/static/ -dependencies 에 추가 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 근데..! 프론트엔드 분리할면 타임리프 쓰면 안 된다고 했는데 모징?! *..