일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nestjs
- JPA공부
- 자바공부
- Flutter
- JPA
- 자료구조공부
- 기술면접공부
- 프로그래머스
- 플러터 개발
- querydsl
- JPA스터디
- nestjs공부
- JPA예제
- 코테공부
- K8S
- 스프링부트
- nestjs스터디
- 기술공부
- JPA 공부
- 스프링부트공부
- 스프링 공부
- 코테준비
- Axon framework
- 스프링
- Kafka
- 알고리즘공부
- 스프링공부
- 플러터 공부
- 카프카
- DDD
- Today
- Total
목록[Computer Science] (42)
DevBoi
MVC1 과 MVC2의 패턴차이 모델1은 jsp페이지 안에서 로직처리를 위해 자바코드가 함께 사용된다. 요청이 오면 직접 자바빈이나 클래스를 이용해 작업을 처리하고 이를 클라이언테 출력해준다. 구조가 단순하지만, jsp내 html코드와 자바코드가 같이 사용되면서 복잡하고 유지보수가 어렵다. 모델2는 이와 다르게 servlet을 만들어 역할을 분담한다. 요청 결과를 출력해주는 뷰만 jsp가 담당하고 흐름 제어 및 비즈니스 로직에 해당하는 컨트롤러의 역할은 서블릿이 담당한다. 유지보수가 쉽지만, 구조가 어렵다. DAO 과 DTO의 차이 DAO는 데이터베이스의 데이터를 접근하기 위한 객체이다. 데이터베이스 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용된다. 사용자는 자신이 필요한 IF를 DAO에..
Spring framework에 대해설명 1. oop란? 데이터를 객체로 취급하여, 프로그램에 반영한다. 순차적으로 프로그램이 동작하는 것과 다르게 객체의 상호작용을 통해, 프로그램이 동작한다. 객체를 사용함으로써 코드 재사용을 증가시키고, 유지보수를 감소시켜준다. 2. 자바의 메모리 영역에 대해서 설명 - 메서드 영역 : static변수, 전역 변수, 코드에서 사용되는 클래스 정보들이 올라간다. 코드에서 사용되는 클래스들을 로더가 읽고, 클래스 별로 분류해서 저장한다. 처음에 로드 될때, 필요한 것들이 메모리에 저장된다. 이때 클래스 정보가 없거나, 전역 변수에대한 오류가있으면 기동시에, 오류가 난다. -스택 : 지역변수, 메서드 등이 할당되는 LIFO 방식의 메모리이다. -힙 : new 연산자를 통해..
1. Filter와 Interceptor filter 와 interceptor 의 실행시점은 다르다. - filter 는 web application 에서 동작을 하고 - interceptor는 spring 의 context에 등록을 한다. 이말은 즉, filter는 dispatcher servlet 이전에 실행이되고, interceptor는 dispatcher servlet 이후에, 실행이되는 시점을 가진다. Filter 에서 예외가 발생하면 Web Application 에서 처리를 해야한다. 선언 이나, Filter내에서 예외를 잡아, request.getRequestDispatcher 으로 핑퐁하듯이 예외를 처리한다. Interception 에서 예외 발생시에는, ExceptionHandler 나,..
데이터베이스에서 이상이란? 이상은 왜 발생하는가? 그 종류는? 데이터 베이스 이상현상이란, 3가지가 있다. - 갱신 이상 : 반복된 데이터 중 일부를 갱신할 시 데이터의 불일치가 발생 - 삽입 이상 : 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능하다 - 삭제 이상 : 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능하다 -갱신 이상 : 만약에 한가지의 데이터가 변경되었다면, 연관된 다른데이터들이 한꺼번에 같이 변경되지 않아 불일치가 발생한다. 이렇게 될경우, 바뀌게 되는 데이터에 따른 모든 데이터를 일일히 바꿔서 수정해줘야한다. -삽입 이상 : 내가 원하는 값만 테이블에 삽입하고 싶은데, 테이블에 필요하지 않은 필드들 때문에 원치 않는 필드의 값도 삽입해..
1. 자바 캡슐화 - 자바 캡슐화는 변수와 함수를 하나의 클래스로 묶고, 외부에서 쉽게 접근하지 못하도록 은닉하는것이 핵심이다. 객체의 직접적인 접근을 막고, 객체가 제공하는 필드, 메소드를 통해서만 접근이 가능하도록 하는것이다. (getter,setter) 장점으로는 객체내 정보손상, 오용을 방지하고, 데이터가 변경되어도 다른 객체에 영향을 주지 않기 떄문에 독립성이 좋다. 또한 처리된 결과 사용으로 이식성이 좋고, 객체를 모듈화 할수 있어, 하나의 모듈 처럼 사용가능하다. ex. private 변수, public getter,setter 2. map과 set의 차이 - set은 순서를 보장하지 않는다. 또한 key와 value의 중복을 허용하지 않는다. - map 또한 순서를 보장하지 않지만, key..
1. Hash Table 해쉬 테이블, 즉 해시 맵에서 개발자들이 사용하지만, 실제 내부 동작에 대해서는 잘 모르는 경우가 많다. 예를 들어서, hash 에 smith, 1234 가 들어있다고 가정하자 key는 smith 이고, 중간에 hash function 을 통해서, buckets에 들어간다. 이 해쉬 펑션은 value의 index를 알아내기 위한것이고, 해당 펑션 수행이후 값에 대한, index주소를 알아내서 값을 알아오게 된다. 잘 정리된 그림을 보면 바로 이해가 된다. 이 구조로 저장과, 삭제가 아주 빠르다. hash function 은 key를 array size로 나눈다. 그렇기 때문에 충돌 방식이 발생한다. 1,11,21 은 같은, 주소를 갖게 되는 것이다. 이러한 충돌 방식은 여러 구현..
직렬화(serialization)란? 자바에서 입출력을 할때 스트림이라는 통로를 통해, 데이터가 이동한다. 객체는 바이트형이 아니라서 파일에 저장 하거나 네트워크로 전송이 불가하다 따라서 객체를 스트림을 통해 입출력 하려면, 바이트 배열로 변환해야 하는데, 이를 직렬화라고 한다. 반대는 역직렬화 박싱과 언박싱이란? 박싱은 기본 자료형을 wrapper class로 바꾸어주는 것을 박싱 반대를 언박싱이라고 한다. Synchronized(동기화)란? 동기화는 여러개의 쓰레드가 하나의 자원에 접근하려 할때 주어진 순간에 단 하나의 쓰레드만 접근 가능하도록 하는것이다. 둘 이상의 쓰레드가 공동의 자원을 공유하는 경우, 순서가 잘 맞추어 다른 쓰레드가 자원을 사용하고 있는 동안 한 쓰레드가 절대 자원을 변경 할수 ..
JAVA에서 싱글톤 패턴을 쓰는 이유 싱글톤 : 최초 한번만 메모리를 할당하고, 그 메모리에, 객체를 만들어 사용하는 디자인 패턴 1) 객체를 여러번 생성하지 않아도 되기 때문에, 비용이 적다. 2) 객체가 무조건 한번만 생성되는 것을 보장 3) 한번 만들어서 여러곳에서 사용하면 수정하기 힘들다. 4) 테스트하기 어렵다 5) 많이 사용하게 된다면, 다른 객체들과 결합도가 높아져, 객체지향 프로그래밍의 의미를 벗어나게된다. 또한 수정의 경우, 사이드 이팩트 발생 환경이 높아지고, 멀티 쓰레드 환경에서 동기화 문제가 발생한다. 6.Thread 가 3개 생성 되었을 때 t1, t2, t3의 순서가 보장 되는 코드를 짜 보세요. 이건 Tread Safe한 상황에 대한 코드를 짜는것에 대한 테스트이다. 우선 Tr..
1. http랑 https 차이? http 란 hyper text transfer protocol이고, 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 80포트를 사용하고, TCP/IP위에서 작동한다. 상태를 가지고 있지 않는 StateLess 프로토콜이고, Method,Path,Version,Headers,Body 등으로 구성된다. Http로 비밀번호나 주민번호를 주고 받으면, 3자가 조회할수있기때문에, Https등장https 는 끝에 secure가 붙은 것.Http에 암호화가 추가된 프로토콜이다.https는 http와 다르게 443포트를 사용하고, 네트워크에서 제 3자가 볼수있도록 공개키 암호화를 지원하고있다. 공개키 / 개인키는 서로를 위한 1쌍의 키이다.공개키 : 모두에게 공개..
1. Hash/ salt 방식 차이 패스워드 암호화 저장 방식이다. 우선 Hash 는 단방향 암호화 방식이고, 이를 통해 저장된 데이터를 다이제스트라고 한다. 또한 해싱은 단방향이다. 한마디로 단방향 해시함수는 다이제스트를 복호화, 즉 원본 데이터를 구할수 없어야 말 그대로 단방향이다. 그러면 이 해싱 방식은 가장 안전한 방식일까? 그렇지 않다. 단방향 암호화 방식은 동일한메시지는 동일한 다이제스트를 갖는다. 그러면, 해커의 입장에서는 하나씩 대입해보면서 자신이 가지고있는 암호화 테이블 즉 , 레인보우 테이블을 가지고 비교하면서, 암호화 된 대상을 나름대로 대입 복호화를 할수 있다. 해결 방법으로는 두번 해싱 하는 방법이 있다. 예를 들면, 해싱해서얻은 암호화된 데이터를 한번더 해싱해서, 값을 가지고있는..