분류 전체보기

💥 오늘 배운 자료구조 ▶ 우선순위 큐, 람다 이번 문제를 풀면서 가장 많이 듣고 다른 분들과의 얘기에도 가장 많이 나온 게 우선순위 큐이다. 우선순위 큐는 큐를 구현한 구현체중 하나로 힙정렬을 하는 자료구조로써 기본적으로 min힙이 기본이 되는 자료구조이다. 즉, 자동으로 데이터를 넣을떄마다 자료를 정렬하는 과정을 볼 수 있는 것이다. 람다는 아직 너무 어렵다.. 인자를 받고 구현체가 하나일때는 익명함수를 바로 구현할 수 있다는건 매우매우 좋지만 아직 딱 떠오르지 않아서 살짝 걱정이긴하다 💥 팀 스터디 ▶ 더 좋은 결과 팀스터디를 진행하면서 서로 토론하면서 어떤 기술을 사용했고 어떤 알고리즘이 좋은지 생각을 더욱 많이 하게되었다.
🍃 Communication Types Synchronous HTTP communication ( 동기 ) 요청이 들어오면 해당 요청을 처리 할 떄 다른 서비스의 내용이 필요하면 내용을 가져다가 요청을 처리하는 과정을 한 프로세스로 보고 진행 Astnchronous communication over AMQP ( 비동기 ) AMQP 를 사용해서 비동기 방식으로 요청을 메세지 브로커로 전달하고 각 서비스에 들어온 요청을 전달하여 각 서비스가 해당 요청을 처리하면서 하는 비동기 방식으로 사용하는 것 유저서비스가 오더서비스에게 요청할 데이터가 있다면 eureka에 등록된 서비스의 이름을 찾아서 해당 요청을 전달하여 반환받는 방식 랜덤하게 만들어진 포트때문에 같은 서비스로써 여러개가 등록되어 있다면 라운드로빈의 ..
💥 새롭게 만난 팀원 ▶ 어색.. 아직 너무 어색하다. 다들 처음 뵙는 분들이고 기존에 다른 분들의 이름을 잘 안봐서...그래도 뭐 2주면 천천히 친해지지 않을까? 💥 팀 스터디 ▶ 문제 해설 팀 스터디를 통해 문제의 해결 방법을 생각해보고 어떤 방식으로 생각하고 풀었는지 말을 나누는 과정을 통해 대표 코드까지 작성하는 것은 이제 통일화 되는 기분이 든다. 아직은 서먹하기 때문에 말이 없는거 같다. 일마다 풀어야하는 필수 문제까지는 줄어들었지만 자료구조를 사용하는 일차까지 오게 되면서 좀 더 복잡해지는 것 같다 ▶ 오늘의 알고리즘 Deque 기존에는 이론으로만 알고 있었던 Deque를 직접 사용할 수 있어서 좋았다. 기존엔 그냥 큐를 implement하여 들어오는 곳과 나가는 곳을 한방향이 아닌 양방향으..
🦴 Encryption 과 Decryption ( 대칭키와 비대칭키 ) Encryption : 일반적인 데이터를 암호화하여 사람이 알아볼 수 없도록 변경하는 작업 Decryption : Encryption 데이터를 원래 데이터로 변경하는 작업 ( 복호화 ) Encryption types Symmetric Encryption ( 대칭 암호화 방식 ) 암호화에 사용된 키와 복호화에 사용한 키가 동일한 것 Asymmetric Encryption ( 비대칭 암호화 방식 ) 암호화를 할 떄 사용하는 키가 private key 와 public key 로 나뉘어있다 암호화할때 한개를 사용하면 복호화할땐 다른 것을 사용해야한다. Java 에서는 내장되어 있는 Java keytool 을 사용해서 우리가 원하는 key 값..
💥 코딩 테스트 오늘은 코딩테스트를 진행하여 팀을 나누는 날이 왔다. 문제는 예상보다 더 쉽지 않았다 무조건 맨 앞으로 갈것같은데 영 느낌이 좋지 않다. 문제는 탐색을 하는 위주로 나왔고 그중 DFS 를 하여 풀수있는 알고리즘이 있었다. 문제를 보고 알고리즘을 생각해 낸 것이 내심 기분이 좋았다. 💥 생각보다 중요한 전체 탐색 어제 브루트 탐색을 통해 전체 탐색또한 알고리즘이 있다는 것을 알게 되었다. 전체 탐색을 하는 알고리즘이 얼마나 중요한지 잘 모르고 그냥 그렇게 넘어갔는데 생각보다 굉장히 중요한 내용이였다. 전체 탐색은 문제의 구현까지 연결되는데 내가 그것을 잘 못한다는게 너무 아쉽다 ▶ 메모이제이션 DFS 를 구현하는 과정에 메모이제이션을 사용하려고 했는데 도저히 이해가 가지 않았다. 3차 배열..
· MSA
Spring Cloud Config Server를 등록해서 외부에서 환경 설정을 설정하고 그것을 적용하는 방법들 3가지에 대하여 알아보았다. 그중에 마지막에 적어놨던 Spring Cloud Bus 에 대하여 알아보자 👄 Spring Cloud Bus 기존에 사용하던 actuator는 각각의 서비스가 공통된 환경설정을 가지고 있다면 환경 설정을 변경한 후에 모든 서비스에 actuator/refresh라는 요청을 전달해서 서비스의 환경 설정을 해주는 것으로 이해했습니다. 하지만 이것은 서비스가 늘어나면 늘어날수록 굉장히 비효율적인 것을 확인 할 수 있다. 그래서 MSA 구조에서micro 서비스를 메세지 브로커와 연결해주는 역할과 상태 및 구성에 대한 변경사항을 연결된 모든 microservice에게 전달해주..
💥 전체 탐색 (브루트포스 알고리즘) 브루트 포스 : 무식한 힘으로 해결 할 수 있다. 완전 탐색 알고리즘 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구 조건에 충족되는 결과 만을 가져온다. 이 알고리즘의 강력한 점은 예외 없이 100%의 확률로 정답을 출력한다. 선형 구조를 전체적으로 탐색하는 순차 탐색, 비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색과 너비 우선 탐색이 전체를 탐색하는 기본적인 도구이다. 브루트 포스는 여기서 BFS(너비 우선 탐색)과 관련이 깊다. Tip ) DFS(깊이 우선 탐색)은 백트래킹과 관련이 깊다 완전 탐색 알고리즘이 이렇게 이름으로 된지 몰랐다. 왜냐하면 그냥 모든 것을 검색하고 맞는지 확인만 하는 것이기 때문에 이런 알고리즘이 있었다는 사실조차도 몰랐다...노..
💦 Config server 의 중요성 우리는 처음부터 각각의 서비스 설정 정보를 yml 파일을 통해 저장해두었다. 하지만 만약 설정 파일이 변경된다면 서비스 를 다시 빌드하고 배포해야 한다는 단점이 존재했다. 또한 그 설정파일이 모든 서비스에 동일하게 적용되야 하는 값이라면 더욱 불편해진다. 그래서 설정파일 정보를 외부에 설정을 하게 됨으로써 서비스를 더욱 유연하게 운영할 수 있게 된것이다. Spring Cloud Config 분산 시스템에서 서버 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리한다. 하나의 중앙화된 저장소에서 구성요소 관리가 가능하다 각 서비스를 다시 빌드하지 않고, 바로 적용이 가능하다 어플리케이션 배포 파이프라인을 통해 DEV(개발) - UAT(테스트) - PROD(운영..
👅 오늘 학습한 내용 ▶ hash table map을 많이 사용하면서 hashmap을 정말 많이 사용했는데 기술매니저님의 질문에 말문이 막혔던것 때문에 새롭게 학습하기 시작했다 hashmap은 hashtable과 같은 것으로 자바에서는 separate chaining을 이용해 구현이 되어있다는 것을 알 수 있었다. hash의 장점을 그대로 사용하고 있기 때문에 삽입과 삭제, 색인또한 O(1)으로써 굉장히 빠른 속도를 보였다. 또한 hashset도 연결되어 궁금했었는데 신기하게도 hashset이 hashmap으로 구현되어 있었다. 그래서 결국 속도는 굉장히 비슷한것으로 나타났다. 👅 팀스터디 ▶ 다양한 풀이 방법 문제의 난이도가 점점 높아지면서 풀이의 방법이 다양해지기는 했지만 고민을 더해서 내보내기에는 ..
🙏 API 명세서와 기능 구현 회원 로그인을 Security를 통해 진행한다. 또한 로그인을 성공하면 토큰과 userId를 반환받을 예정이다. 여기서 userId는 전달하면 안되는데 체크를 위해 가져오는 것이다. 🙏 AuthenticationFilter 추가 ▶ RequestLogin @Data public class RequestLogin { @NotNull(message = "Email cannot be null") @Size(min = 2, message = "Email not be less than two characters") @Email private String email; @NotNull(message = "Password cannot be null") @Size(min = 8, messa..
늦은산책
'분류 전체보기' 카테고리의 글 목록 (8 Page)