전체 글 120

시스템을 연결하는 네트워크 구조

네트워크 서로 다른 장비 간에 데이터를 교환할 때 기본적으로 네트워크를 경유해서 데이터 송수신 네트워크는 계층 간 역할이 나누어져 있다. 상호 연결되어 있는 계층들에서는 인터페이스로 통신 장점: 서로 영향을 주지 않고 독립적으로 동작, 상호 간에 내부 처리를 은폐하고 있기 때문에 인터페이스만 바꾸지 않으면 내부적인 처리를 마음대로 바꾸어도 됨. 단점: 오버헤드가 발생하여 성능이 떨어질 수 있음 OSI 7계층 P → D → N → T → S → P → A 프로토콜 컴퓨터가 서로 소통하기 위해 정한 규약 같은 계층 간의 약속 브라우저로 웹 페이지를 볼 때 HTTP라고 불리는 프로토콜을 이용해서 서버에 웹 페이지를 달라고 요청 TCP/IP 프로토콜 스위트 - 프로토콜 집합 인터넷의 발전과 TCP/IP 인터넷의..

인프라를 지탱하는 기본 이론 - 직렬과 병렬, 동기와 비동기

직렬과 병렬 병렬화 분담할 수 있는 처리는 cpu코어를 늘리면 빨라짐 처리시간을 1/N으로 감소 하지만 무조건 좋은건 아님 → 효과가 있을 때 병렬화 한다. 직렬화 분담할 수 없는 처리는 cpu코어를 늘려도 빨라지지 않음 처리시간 변화가 없음 쿨럭 주파수를 올리면 속도 향상 하지만 하드웨어를 어느정도 좋게 할 수 있지만 무한히 늘릴수는 없음( 하드웨어적 한계) 이것이 어디에 사용되나? 웹 서버와 AP서버에서 웹서버(아파치) - 복수의 프로세스가 분담해서 처리 AP서버 - 하나의 프로세스와 복수의 쓰레드로 처리 하지만 만약 CPU코어가 하나만 있다면 1개의 프로세스만 수행 가능 아파치 프로세스를 아무리 늘릴려고 해도 1개씩밖에 수행 못함 → CPU코어수도 고려해야한다 DB서버에서 클라이언트 요청 접수 수만..

spring 에서의 LocalDateTime request와 response

https://balldev.tistory.com/29 mysql 및 maria db timezone 설정 변경 및 확인 일단 db설정하기 전에 리눅스 시간부터 확인해보겠습니다 리눅스 CLI(Command-line Interface) 환경에서는 몇 가지 명령어로 시간을 확인할 수 있습니다. date -> 2021. 09. 28. (화) 10:52:04 KST timedatectl Lo.. balldev.tistory.com 스프링에서 날짜 관련 처리를 할 경우 애러나는 것과 날짜 포맷팅에 관련해서 적어보겠습니다. 데이터베이스에서 날짜데이터를 로드 할 때 날짜형식의 string 형태로 구성하여 전달하는 경우가 있다.(2021-09-29 12:00:00) 처럼 말이다. 하지만 개발자마다 누군가는 포맷팅을 하..

mysql 및 maria db timezone 설정 변경 및 확인

일단 db설정하기 전에 리눅스 시간부터 확인해보겠습니다 리눅스 CLI(Command-line Interface) 환경에서는 몇 가지 명령어로 시간을 확인할 수 있습니다. date -> 2021. 09. 28. (화) 10:52:04 KST timedatectl Local time: 화 2021-09-28 10:52:08 KST Universal time: 화 2021-09-28 01:52:08 UTC RTC time: 화 2021-09-28 01:52:08 Time zone: Asia/Seoul (KST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no 이런식으로 나오게 됩니다. 리눅스에서 처음에 UTC 입니다. ..

데이터베이스 2021.09.28

3계층형 시스템

프로세스와 쓰레드 프로세스 하나의 프로세스가 동작하고 있으면 내부에서는 메모리 공간을 점유하는 쓰레드 하나가 동작 쓰레드 메모리 공간을 공유 이부분은 좀 더 알아보겠습니다. 실행 단위 : CPU CORE에서 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념 동시성 : 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것처럼 보이는 것 한 프로세스가 실행 되기 위해서 CPU를 점유하고 있으면 다른 프로세스는 실행상태에 있을 수 없습니다. 즉 어떤 A, B 프로그램이 있을 때 A를 실행하고 있을 때 B를 실행할 수가 없습니다. 이렇게 다수의 프로세스를 동시에 실행하기 위해 여러개의 프로세스를 짧은 텀(시분할)을 반복하면서 전환해서 실행한다. 이것을 Context Switc..

인프라 아키텍처!!

그림으로 공부하는 IT인프라 구조 1장과2장을 정리한 내용입니다. 시스템에 따라 중요한 사항을 찾아서 최적의 설계가 목표 집약형과 분할형 집약형 하나의 대형 컴퓨터로 모든 업무를 다함 장점 구성이 간단 주요 부품은 모두 다중화 → 하나가 고장 나더라도 업무를 계속 할 수 있다. 복수의 서로 다른 업무 처리를 동시에 실행 가능하도록 유한 리소스 관리 단점 대형 컴퓨터의 도입 비용과 유지 비용이 비쌈 확장성에 한계가 있음 분할형 여러 컴퓨터로 하나의 시스템 구축 장점 낮은 비용으로 시스템 구축 가능 서버 대수를 늘릴 수 있어서 확장성이 높다 단점 대수가 늘어나면 관리 구조가 복잡 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토 서버 특정 역할에 특화된 것 논리서버 - 웹 서버, db 서버 같은 소..

예외처리(exception)

예외 입력 값에 대한 처리 불가능하거나, 참조된 값이 잘못된 경우 등 정상적인 프로그램의 흐름을 어긋나는 것 에러 시스템에 무엇인가 비정상적인 상황이 발생한 경우 Checked Exception / Unchecked Exception checked Exception RuntimeException을 상속하지 않는 클래스 명시적으로 처리해야함 - checked 이 코드에서는 컴파일 시점에 이미 애러발생 아래 코드와 같이 반드시 예외 처리해줘야함 private void throwExceptionExample(String file, String targetFile) throws IOException { BufferedReader reader = null; PrintWriter writer = null; try ..

언어/자바 2021.09.16

열거형(enum)

한정된 데이터만을 가지는 타입 → enumeration Type public enum Week { MONDAY,TUESDAY,WEDNESDAY -> 열거 상수 } 메모리 구조 내부적으로 public static final 필드이면서 객체로 제공됩니다. 즉 static이 붙어있기 때문에 클래스로더가 로드 시점에 JVM 메소드 영역에 해당 클래스 변수를 할당시키고 언제든지 가져다가 사용 할 수 있는 주소공간을 확보합니다. Week today = Week.MONDAY; 이러한 로직을 만나면 heap 영역에 해당 enum이 생성됩니다. 그리고 method 영역의 열거상수들은 해당 heap영역에 생성된 객체를 바라보게 됩니다. 그래서 Week thisWeek = Week.SUNDAY; Week nextWeek =..

언어/자바 2021.09.16

자바 - 제네릭(Generic)

제네릭이란? 데이터 형식에 의존하지 않고, 하나의 값이 여러 데이터 타입들을 가질 수 있도록 하는 방법 List integerList = new ArrayList(); String 으로 되어 있는 리스트, Integer로 되어 있는 리스트들을 모두 하나하나 타입에 따라 만들 수는 없으니... 그 때마다 이 리스트는 어떤 형식이에요! 라고 지정해주는게 좋겠죠? → 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다. public class ClassN{ private E element } 제네릭에는 그 때마다 타입들이 많이 존재합니다. 그럼 하나씩 간단하게 볼게요. (사실 무의식적으로 사용하고 있고 이론적으로 알고있어야하나 싶긴 합니다...) 언바운드(무한한) 와일드카드 타입..

언어/자바 2021.09.13

직렬화 (Serialization) 와 역직렬화(Deserialization)

직렬화 (Serialization) 와 역직렬화(Deserialization) 직렬화란? 객체를 직렬화 하여 전송 가능한 형태로 만드는 것을 의미 데이터를 연속적인 데이터로 변형하여 Stream을 통해 데이터를 읽도록 해줌(byte형태로 변환) 주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 주로 사용 역직렬화란? 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원 왜 사용하나요 데이터 포맷이 맞지 않아 json 형식으로 만들어서 사용하는등 이미 많이 사용하고 있었습니다. Json형태로 변환도 직렬화 Jackson, GSON 등의 라이브러리를 이용해서 변환 자바 직렬화의 장점 자바 시스템 개발에 최..

언어/자바 2021.09.13