본문 바로가기

분류 전체보기

(50)
네트워크와 인터넷 배경이번 포스팅에서는 네트워크와 인터넷의 기본 개념, 동작 방식, ISP(인터넷 서비스 제공자)에 대해 알아보겠습니다. 이 내용을 통해 네트워크의 구조와 인터넷이 어떻게 작동하는지를 이해할 수 있을거에요. 내용네트워크는 컴퓨터 및 기타 기기가 데이터를 주고받고 리소스를 공유하기 위해 연결된 통신 시스템입니다. 네트워크는 유선 또는 무선으로 구성될 수 있으며, 주로 다음과 같은 장치들이 포함됩니다.- 모뎀: 네트워크 신호를 변환하는 장치.- 공유기 (라우터): 여러 기기를 인터넷에 연결하고, 기기 간의 통신을 관리하는 장치.- 스위치: 네트워크에 연결된 기기 간의 통신을 가능하게 하는 장치.인터넷은 서로 다른 네트워크들이 연결되어 형성된 "네트워크의 네트워크"입니다. 사용자가 인터넷에 연결하기 위해서는 다..
Postgresql 연결 오류 배경local에서 설치한 postgre 잘 사용하다가 docker를 통해 postgresql을 띄우고 사용하려고 했습니다. 하지만 계속 연결 오류가 뜨더군요. 권한 문제는 아니었습니다. 뭐가 문제일까요? 내용1. docker container가 제대로 안 띄워졌나?-> container도 잘 띄워져 있고, 접속해서 db까지 정상적으로 만들었는데 이 부분은 문제가 없었습니다. 2. 비밀번호가 잘못 설정되었나?-> intellij의 db접근 username과 password를 "" 를 포함시켜 String 형태로 줘야하나? 솔직히 이 부분은 안될것 같았지만 시도해보았습니다. 당연히 실패 3. container는 잘 띄워져 있고, 오류 코드가 아이디/비밀번호 오류 코드가 아니다. 접근 오류의 코드이다. 그렇다..
docker란? 배경개발을 하다 보면 docker를 정말 많이 사용합니다. docker container를 통해 각기 다른 서버에서도 동일한 운영을 할 수 있게 해준다거나 독립적인 개발환경 구축이 가능하다거나 등등.. 이제는 개발과 떼어놓을 수 없는 수준이라고 생각합니다. 하지만 이런 단편적인 지식만 알고 쓰기엔,  앞으로 docker를 마주할 일이 시도때도 없이 있을 거란 말이죠.. 그래서 오늘은 docker의 탄생 배경과 어떤 식으로 구성되어 있는지 간단하게 알아보려고 합니다. 내용docker는 컨터이너 기반 가상화 도구입니다. 왜 탄생하게 되었을까요? 2000년대 초까지만해도 가상화 없이 하드웨어에 직접 OS와 Application을 설치하였습니다. 서버 성능이 모자르면 성능이 좋은 장비를 구매하는 Scale up..
Java GC(Garbage Collector) 배경오늘은 java의 GC에 대해 알아볼고 합니다. 메모리 관리를 위해 java에서 사용한다고 알고만 막연하게 알고 있는데, 같이 알아보도록 하죠! 내용왜 GC가 필요할까요? 우리는 프로그램 중에 많은 변수, 메서드 등을 사용하고 있습니다. 이 변수와 메서드, 다른 객체들이 사용되지 않는데 메모리에 계속 남아 있게 된다면 메모리가 사용할 수 있는 공간이 줄어들어 점점 성능이 떨어지게 될 겁니다. 이를 방지해 주는게 GC죠. GC는 프로그램이 동적으로 할당했던 메모리 영역 중 필요없게 된 영역을 알아서 해제해주는 역할을 합니다. 여기서 동적으로 할당한 메모리 영역은 Heap 영역을 뜻하고, 필요없게 된 영역은 어떤 변수도 가리키지 않게 된 영역을 말합니다. C나 C++에서는 이를 직접 관리를 해서 귀찮은 ..
트랜잭션 전파 배경지난 글에서 트랜잭션에 대해 조금 알아보는 시간을 가졌습니다. 그때 spring의 트랜잭션은 @Transactional을 통해 간단히 연결하고 종료가 가능하다고 했는데요, 하지만 간단한 만큼 언제 써야되고 어디까지 영향을 미치는지 알아야 나중에 문제가 생기지 않겠죠? 오늘은 이 트랜잭션이 어디까지 전파되는지 알아보도록 합시다. 내용spring에서 트랜잭션 전파는 속성에 뭘 주느냐에 따라 달라지게 됩니다. 이렇게 default 타입으로 REQUIRED 타입이 존재합니다. 다른 전파 타입은 어떤 것이 있을까요?이렇게 다양한 타입들이 존재하지만 오늘은 required와 requires_new에 대해 알아봅시다. 기존의 트랜잭션이 진행중일 때 새로운 트랜잭션이 시작되면 외부 트랜잭션과 내부 트랜잭션으로 구분..
스프링 @Transactional 배경이전 글에서는 트랜잭션 격리 수준에 대해 이야기를 했었는데 이 번 글은  스프링의 @Transactional에 대해 알아보려고 합니다. 왜 쓰고 어떻게 동작하는 것일까요? 내용[ Transaction ]우리는 DB 데이터를 수정하고 조회하는 일을 빈번하게 하고 있습니다. 도중에 예외가 발생하게 되면 이전이 상태로 되돌아가야 하는데 이렇게 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 트랜잭션입니다. 또한 트랜잭션은 더이상 쪼갤 수 없는 최소 작업단위를 의미합니다. 보통 commit과 rollback으로 관리가 되어지죠. 이런 트랜잭션을 쓰는 가장 큰 이유 중 하나는 돈과 관련된 문제가 크기 때문입니다. 예를들어서 요즘 간편하게 app을 통해서 돈을 주고받는데 트랜잭션이..
프로그래머스 피보나치 수 피보나치 수는 어렸을 때부터 항상 많이 봐왔던 패턴이었습니다. 전에 정처기 공부를 할 때도 재귀함수를 통해 많이 봤었죠. 이번에 문제를 풀 때도 간단하게 재귀함수를 이용하면 쉽겠는데? 라고 생각하고 재귀함수를 통해 간단히 구현하였습니다. public int solution(int n) { int answer = 0; if (n  작은 숫자에 대해선 당연히 시간은 오래 걸리지 않아 테스트를 통과했던 것 같습니다.. 하지만 숫자가 커질수록 재귀함수를 통해 반복되는 연산 횟수가 증가하여 시간초과로 테스트를 통과하지 못했었습니다. 방법이 떠오르지 않아 구글링을 통해 방법을 찾아보니 이전 반복되는 값들을 계속 연산하지 말고, 한번 연산했던 값을 메모리에 저장해서 바로 불러와서 사용하는 동적 계획법(Dy..
트랜잭션 격리수준(Isolation Level) (MySQL) 배경지난 글에서 Lock에 대해 알아보았습니다. 그 글에서 Lock은 트랜잭션 격리수준을 구현하는 방법중 하나라고 했습니다. 그럼 트랜잭션 격리수준은 뭘까요? 이에 대해 알아봅시다 내용[ Transaction ]먼저 Transaction에 대해 알아보죠. 왜 트랜잭션을 쓸까요? 우리는 DB 데이터를 수정하고 조회하는 일을 빈번하게 하고 있습니다. 도중에 예외가 발생하게 되면 이전이 상태로 되돌아가야 하는데 이렇게 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 트랜잭션입니다. 또한 트랜잭션은 더이상 쪼갤 수 없는 최소 작업단위를 의미합니다. 보통 commit과 rollback으로 관리가 되어지죠. 이런 트랜잭션을 쓰는 가장 큰 이유 중 하나는 돈과 관련된 문제가 크기 때문입..