전체 글
-
OSI 7 계층 과 TCP/IP 계층💻 computer science/🌐 network 2022. 10. 9. 19:26
계층 모형 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약(프로토콜)의 모음 각 계층은 담당하는 위치마다 처리 역할을 구분해 진행한다. 서로 간의 간섭을 최소화해 사용의 편리성을 높인다. 특정 계층에서 이상이 생겨도 문제 있는 계층만 고쳐서 문제를 해결할 수 있다. 통신이 일어나는 과정을 단계별로 파악하기 용이하다. 다른 계층끼리는 데이터의 전달 과정을 구체적으로 알 필요가 없기 때문에, 데이터의 캡슐화와 은닉이 가능하다. OSI 7계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것. 네트워크 호환을 위해 OSI 7계층이라는 표준 네트워크 모델을 만들었다. 실제로는 OSI 7 Layer model 이 아닌 TCP/IP 가 표준 1. 물리 계층 전기적, 기계적, 기능적인 특성을..
-
HTTP💻 computer science/🌐 network 2022. 10. 9. 19:21
HTTP 🌐 HyperText Transfer Protocol 웹 서버와 웹 브라우저 사이에서 데이터를 주고 받기 위한 통신 규약 서버 / 클라이언트 모델을 따른다. Application layer로 TCP/IP 위에서 작동한다. 동작하는 환경 / 구조 HTTP는 기본적으로 Server - Clinet 환경에서 동작한다. 애플리케이션 영역에서 사용되는 프로토콜이고 주로 TCP을 사용하는 환경에서 사용된다. 클라이언트는 서버로 요청 Request를 전송하고 서버는 요청에 대한 응답 Response 를 함으로써 통신을 하게 된다. 특징 1. 클라이언트 서버 구조 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보내는 클라이언트 서버 구조 Request - Response 클라이언트는 서버에 요청을..
-
HttpURLConnection☕️ java 2022. 10. 7. 23:31
URL(보통 HTTP 프로토콜을 사용)을 통해 서버와 통신하는 Java 프로그램을 개발하기 위해 URLConnection 및 HttpURLConnection 클래스를 사용한다. 파일, 웹 페이지 업로드 및 다운로드 HTTP 요청 및 응답 전송 및 검색 URLConnection URLConnection은 Java 애플리케이션과 URL 간의 연결 관련 모든 클래스의 수퍼클래스이다. 웹을 통해 데이터를 주고 받는데 사용한다. URLConnection 클래스는 일반적인 URL에 대한 API를 제공한다. 특징 URLConnection은 리소스에 연결하기 전에 구성되어야 한다. URLConnection 인스턴스를 재사용될 수 없다. 각 리소스에 대한 커넥션 마다 다른 인스턴스를 사용해야 한다. HttpURLConn..
-
Java JSON 파싱☕️ java 2022. 10. 7. 19:02
Java를 이용하여 JSON 파싱을 해보자 JSON Parser JSON 파일을 땡겨와서 이를 저장하기 위해서 JSON 데이터를 사용해야 한다. JSONObject JSONArray 를 사용할 수 있다. JSON-Simple json-simple 라이브러리는 JSON 파싱을 지원한다. org.json.simple.JSONObject build.gradle implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' JSONObject 객체(주로 String)을 Json 객체로 바꿔주거나 Json 객체를 새로 만드는 역할 JSONArray Json들이 들어 있는 Array JSONObject 사용 jsonO..
-
Spock 로 테스트 해보기🌱 spring 2022. 10. 6. 13:53
Spock ❓❓❓ Spock 는 BDD(Behaviour-Driven Development) 프레임워크 이다. Java 및 Groovy를 위한 테스트 프레임워크 내부적으로 JUnit Runner로 구동되며, 대부분의 IDE에서 지원된다. TDD 프레임워크인 JUnit 과 비슷한 점이 많지만, 기대하는 동작과 테스트의 의도를 더 명확하게 드러내주고 산만한 코드는 뒤로 숨겨주는 등 큰 장점이 있다. 기존 JUnit의 단점 테스트시 중복 코드가 많다. JUnit, Hamcrest, Mockito를 알아야 코드를 이해할 수 있다. Spock 시작하기 spring-boot : 2.7.4 java : 11 build.gradle testImplementation'org.spockframework:spock-core..
-
MVCC🌱 spring 2022. 10. 5. 18:58
동시성 제어 (Concurrency Control) ❓동시성 제어 ❗DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 DB를 보호하는 것. 동시성을 허용하면 일관성이 낮아진다. 비관적 동시성 제어 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정 SELECT 시점에 Lock을 걸어 트랜잭션이 완료될 때 까지 유지한다. ⇒ 시스템 동시성을 심각하게 떨어뜨린다 → wait 또는 no wait 옵션 사용 낙관적 동시성 제어 사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정 데이터 조회(SELECT)시 Lock을 걸지 않는다. ⇒ 수정 시점에 다른 사용자에 의해 값이 변경됐는지 검사가 필요하다. 목표 동시에 실행되는 트랜잭션 수를 최대화하면서 입력, 수정, 삭제,..
-
QueryDSL🌱 spring 2022. 10. 5. 18:57
❓QueryDSL 💡 QueryDSL은 정적 타입을 이용해 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크 사용하는 이유? 실제로 Query를 작성하다보면 수 많은 쿼리를 수작업으로 생성해야 한다. 또한, 사람이 작성하면 Query는 컴파일 단계에서 오류가 있는지 없는지 알 수 없다. JPQL JPQL ( Java Persistence Query Language ) 는 엔티티 객체를 조회하는 객체지향 쿼리이다. 테이블이 아닌 객체를 검색하는 객체지향 쿼리 SQL을 추상화 하여 특정 데이터베이스에 의존하지 않는다. 데이터베이스의 방언이 바뀌어도 수정하지 않아도 된다. JPA는 JPQL을 분석하여 SQL을 생성한 후 DB에서 조회한다. 특징 SQL을 추상화한 JPA의 객체지향 쿼리 Table이 아닌..
-
인덱스💻 computer science/📦 database 2022. 10. 5. 18:13
인덱스 🔖 추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료 구조 ex) 책의 마지막 장에 있는 찾아보기 인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE, DELETE 의 성능이 함께 향상된다. → 해당 연산을 수행하기 위해서는 해당 대상을 조회해야만 작업을 할 수 있기 때문이다. 인덱스 관리 DBMS는 index를 항상 최신의 정렬 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있다. 인덱스가 적용된 컬럼에 INSERT, UPDATE, DELETE가 수행되면 각각의 연산을 추가적으로 해주어야 한다. 그에 따른 오버헤드가 발생 INSERT : 새로운 데이터에 대한 인덱스 추가 UPDATE : 기존의 인덱스를 사용하지 않음 처리 후 갱신된..