일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JPA공부
- 코테준비
- 자바공부
- JPA예제
- 자료구조공부
- 스프링부트공부
- nestjs스터디
- Kafka
- 스프링공부
- JPA
- nestjs공부
- 프로그래머스
- 플러터 공부
- JPA스터디
- JPA 공부
- Flutter
- 플러터 개발
- nestjs
- DDD
- 스프링부트
- 알고리즘공부
- 스프링
- Axon framework
- 기술면접공부
- 기술공부
- 코테공부
- K8S
- querydsl
- 카프카
- 스프링 공부
- Today
- Total
목록[Computer Science] (42)
DevBoi
Deep copy와 Shallow Copy를 알면 코딩 실력이 많이 는다고 해서, 찾아봤다. 쉽게 말하면 이런 개념이다. 해당 객체를 여러군데에서 올려서 복사한다고하면, Deep copy로 하게되면 끊어질수도있다. 예를들어서, Deep copy를 많은 곳에서 사용하면, 끊어지고 디버깅과정이 발생할수 있다. 반대로, 메소드로 값을 변경한 이후에 shallow copy를 하게되면 값이 복사가 잘 안될수도있다. 둘의 차이점에 대해서 좀 상세히 알아보자 메모리 관련되서, 구조를 잘 신경을 안쓰긴 하지만 deep COPY를 하는 경우 메모리가 shallow copy를 할때보다 많이 차지하게 된다. deep copy와 shallow copy의 차이는 무엇일까?? 얕은 복사는 주소값을 같이 참조하여, 복사할때 참조하..
쉽게 쓰는, 그리고 많이 접하는 구조.........트리 트리는 알고리즘 테스트에서도 많이 출제하고, 해당 구현, 개념을 알고있는 것이 굉장히 좋다 그러면 트리와 이진트리 , binary tree에 대해서 알아보자 1. 트리 트리는 쉽게 노드,경로 등으로 이루어져 있으며, 해당 트리는 아래와 같은특징을가진다. - 모든 노드들은 연결되어있다. - 노드들에 대한 회신 cycle이 존재하지 않는다. - 임의의 노드에서 다른 노드로 이동하는 경로는 유일하다. 2. 이진 트리 - 자식 노드가 최대 두개로 이루어진 트리이다. 모든 노드는, 공백이나 왼쪽 혹은 오른쪽의 서브노드를 가지고있다. 그러면 2개 이상을 가지는 트리는 어떻게 명명 할까? 바로, b-tree라고 한다. 일단, 이렇게 한가지의 노드에 키값이 있고..
oAuth가 필요한 이유는 무엇일까? 각각의 웹사이트에서는 각기 다른 인증방법을 가진다. 각기 다른 인증방법을 가지게되면, 각각 다르게 개발되어있는 인증 시스템들을 감안하여, id,pw를 쳐서 각각 다르게 들어가야한다. 일단 구조는 아래와 같은 구조를 가진다. 간단하게 oAuth는 인증과 권한을 획득하는 것이다. 각 애플리케이션들이 개인정보에 대한 저장을 각자하게되고, id,pw에 대한 제공을 각 애플리케이션마다 하게되면서, 한가지의 플랫폼을 통해서 로그인하는 방법이 나오게 되었다, 쉽게 말하면, 서비스를 통해서, Oauth를 제공하는 쪽의 로그인을 요청하고, 해당 Oauth에서 권한 코드를 발급한다. 발급함과 동시에, 콜백 url로 리다이렉트 시킨다. 이 url을 기반으로 access토큰을 요청, 및 ..
Docker는 서버 컨테이너 기술이다. 서버 컨테이너 기술은, application을 환경에 구애 받지 않고, 실행시켜주는 기술이다. 이렇게 만 써져 있으면, 공부를 이제 시작하는 사람이라면, 해당 글을 보고 ?_? 어쩌라는 거지 라고 생각을 하게 된다. 좀 더 구체적으로 예를 들어서, 해당 설명을 해볼까한다. 실제 서비스를 운영하기 위해서는, 여러가지의 서버를 동시에 띄우게 된다. api, data-api등등 다양한 서버들을 띄우게 되고 이서버의 같은 application을 깔더라도, 같이 호환하는 것들에 대한 구성을 같이 할수 없는 경우가 존재한다. 예를 들어서, 어떤 서버를 구성하는 app은 최근이여서 3.4버전을 이전 서버는 2.1 버전을 설치한다고하고 운영중에, 버전차이로인해 다운을 겪었다고 가..
Clean Code 의 정의란 무엇일까? 클린 코드란, 쉽게 읽기 쉽고 우아한 코드이다. 우아한 코드? 이게 왜 필요함? 우아한 코드 = 클린 코드 = 가독성이 쉬운 코드 를 사용하지 않는다면? 대부분의 개발자들이 운영 개발을 한다고 가정해보자, 대부분 신규 구축하는 프로젝트던 수정하는 프로젝트던, 개선을 하는 프로젝트이던, 개발자는 자신의 개발 이후로 다른 개발자가 자신의 코드를 보고 이해하기 쉽게 코딩을 해야하는 의무가있다. 왜냐하면, 코딩작업이란 0 to 100이 아니기 때문이다. 대부분 작성되어있는 코드를 읽고 이해하여, 수정하는 개발을 하기 마련이다. 작성되어있는 코드를 읽는 작업에 대한 감축 및 이슈 대응시 소스분석을 위해서, 해당 코드를 더럽고어렵게 써놓는다면 주석으로도 커버할수없다. 그래서..
내가 다니는 회사, 그리고 대부분의 회사에서는 무중단 배포 시스템을 가질 것이다. 이렇게 무중단 배포를 하기 위해서 가장 많이 사용하는 방식은 블루-그린 방식의 배포 방법이다. 24시간 서비스를 해야하는, 배포가 되어도, 중단이나 다운타임을 가지면 안되는 서비스들에서 가장 많이 가지는 방식이며, 해당 방법에 대해서 알아보도록 하자 무중단 배포가 되기 위해서는 우선 로드 밸런서를 통해 연결된 두개 이상의 인스턴스에서 트래픽을 제어해서 배포하는 것이다. 1) 롤링 배포 롤링 배포는, 한개의 인스턴스를 로드밸런서를 통해, 라우팅 하지 않도록 설정한뒤에, 해당 인스턴스의 버전을 높이고, 다시 라우팅하여, 점진적으로 배포하는 방식으로의 배포이다. 해당 부분은, 배포 중간 롤백에 대해서는 비교적 자유롭지만, 신버전..
Mybatis 로 개발을 진행하다면, 해당 prepared statement와 일반 statement의 차이에 대해서 알아두어야 할 필요가 있다. Mybatis에서 단적인 예로, 쿼리의 파라미터에 대한 방법을 다르게 줄 수 있다. 1. #{storeNo} , ${storeNo}가 있다. mybatis에선 해당 #, $를 다르게 쓸수가 있는데, 해당 방법에 대해서는, 어떤 차이가 있는지 살펴보자, 우선 #{} 과 같은 쿼리문은, 같은 쿼리문을 바인드 변수값만 바꿔서 반복적으로 실행하기 위해 사용하는 prepared statement이다. 해당 방법은 어떻게 동작할까? 우선 Prepared statement를 동작시키면, 해당 쿼리는 ?가 표함된, 쿼리문을 DBMS로 보내게 된다. 해당 DBMS는 해당 쿼리..
TDD라는 방법을 개발하면서 많이 들어봤을 것이다. TDD에 대한 정의 와 장단점에 대해서 자세히 한번 정리를 해보자 TDD : 테스트 주도 개발방법, 테스트 드라이븐 개발, 말 그대로 일반적인 개발 수행 기법이 아닌, 개발을 하고 테스트를 애자일화하여 끊임없이 테스트 하면서 개발을 진행하는 것이다. Spring framework에서는 제일 대표적으로 JUnit 이 있다. 우선 JUnit에 대한 사용방법에 대해서 알아보기 전에, 해당 방법의 장단점에 대해서 한번 정리를 해보자 장점 : 1. 객체 지향적인 코드 생산 - TDD는 코드의 재사용 보장을 명시 한다. TDD자체가, 우선 객체 지향적인 코드의사용을 명시한다. 해당 사유는 간단하다. JUnit을 통해서 테스트 하는 부분은 객체로 모듈화가 이루어진 ..
1. 서버가 여러대일때 세션 관리하는방법 -물론 실습을 바탕으로 진행이 되어야 하지만, 간단하게 지식을 익혀보자 세션이란, 사용자의 정보 혹은 로그인 정보를 서버 쪽에서 캐싱해서 가지고 있는 것이다. redis 와같이 세션 관련, 서버가 있는 경우도 있고 was내에서 별도 세션을 저장하는 경우도 있다. 만약에 a라는 사용자가, 로그인을 하고 이정보를 세션에 저장했다고 가정한다. 이 경우에, 서버의 트래픽이 몰릴것을 감안하여, 스케일 아웃을 했다고 한다면, 각 서버에서 가지고 있는 세션의 정보는 각 was 별로 다르게 된다. 이럴 경우에는, 어떻게 해야 문제를 해결할수 있을까 1. sticky session 방식을 사용하면된다. 말그대로, 고정 세션이다. 사용자 usr1이 로그인을 하고 이 정보를 was1..
윈도우에서, sts 및 개발 툴이 너무 느려서, 윈도우를 떄려치고 mac으로 갈아탔다.... 맥북프로는 빠르고, 이제 하나씩 설정중, 너무 간편한 sts 설정이 아닌, git 설치 연동을 정리해보려고한다. 1. homebrew 설치 git 설치를 위해서는 homebrew가 설치되어야 한다. mac 용 wget이라고 생각하면된다. 해당 명령어는 homebrew공식 사이트를 방문하면 그냥 대놓고 복붙하라고있다. 그대로 복사해서 붙여넣고 실행해준다. homebrew 설치중, 잘안되는 경우가있다. xcode command line 어쩌구저쩌구 하면서 설치가 일부안되는 경우가 있다. 이 경우에는 그냥 무지성으로 app-store에 가서 xcode를 설치해주자. xcode 관련 컴포넌트가 설치가 안된것인데. 이게 ..