CS지식
디자인 패턴의 종류
1. 생성 패턴 객체를 생성하는 것과 관련 있는 패턴이다. 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하여 시스템 안정성을 높이고 코드 유지보수성을 높이는 목적이 있다. 1) 싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 주로 데이터베이스 연결 모듈처럼 공통된 객체를 여러 개 생성해서 사용해야하는 상황에서 많이 사용한다. 하나의 인스턴스를 만들어 놓고 이 인스턴스를 다른 모듈들과 공유하며 사용하기 때문에 인스턴스를 생성하는 비용이 줄어들고, 메모리를 효율적으로 활용할 수 있는 장점이 있다. 단, 이 인스턴스에 대한 의존성이 높아져 유지보수가 힘들고 테스트하기 어렵다는 단점도 있다. class Singleton { private static class singlelnstanc..
[디자인 패턴] 디자인 패턴이란??
1. 디자인 패턴이란??(What?) 일종의 설계 기법이며 설계 방법을 의미한다. 2. 디자인 패턴을 쓰는 이유(Why?) 디자인 패턴을 사용함으로써 SW재사용성, 유지 보수성이 보장되기 때문이다. 디자인 패턴은 구현을 위한 일종의 아이디어로, 프로젝트에 항상 적용해야하는 것은 아니지만 추후 발생 가능한 문제를 예방하기 위한 패턴을 만들어 둔 것이다. 즉, 각 디자인 패턴들은 특정한 문제를 해결하기 위해, 또는 예방하기 위해 등장한 것 3. 디자인 패턴의 분류 1) 생성 패턴 객체의 생성 방식을 결정하는 패턴이다. 예시로 DB의 커넥션풀을 관리하는 로직을 짠다할 때, DB 커넥션을 관리하는 인스턴스를 하나만 만들도록 제한하여 중복되는 인스턴스 생성을 방지하는 것이다.(싱글톤 패턴,팩토리 메서드 패턴 등)..
(8080 port is already used.) 컴퓨터 껐다 켜도 죽지 않는 좀비(?) 프로세스 해결하는 무식한 방법
배경 (8080포트를 사용하고 있는 Zookeeper 프로세스가 죽지 않아) 결론부터 말하자면 homebrew로 zookepper & kafka 다운 받지말고, 도커나 kafka 홈페이지에서 직접 다운받아서 사용하는 것을 추천한다.. homebrew 다운받아서 zookeeper 실행했더니 절대 죽지 않는 좀비 프로세스가 발생했다.. 나만 이랬던 건지는 몰ㄹ..겠... Springboot 프로젝트에서 Kafka를 사용하기 위해 homebrew를 활용해 zookeeper 다운받고 kafka를 다운받았었다. 이후 zookeeper,kafka 실행시키고, 스프링부트 서버 실행한 후, 서버 내렸다가 재실행 시키는 순간, 아래와 같은 로그가 나왔다. lsof -i : 8080 명령어를 통해 어디서 8080포트가 쓰..
데이터베이스도 깃허브처럼 써볼 수 있다고? Flyway에 대해 알아보자
일단 난 이런게 있는줄도 몰랐다!(자랑임) 부트캠프를 진행하면서 팀원들과 CS 스터디를 진행했는데, 그 과정에서 알게 된 내용이며, 팀 블로그에 작성한 글을 조금 다듬어서 올려본다. (알려주셔서 감사,,,ㅠㅠ) (정의) 데이터베이스 마이그레이션 툴 (오픈소스) 마이그레이션 : 한 DB에서 다른 DB로 이동을 의미하나, 여기선DB에서 진행하는 모든 동작을의미. 소스코드의 깃허브와 동일한 작업이라 생각하면 편하다. 데이터베이스를 이관할 때 사용할 수 있음. 배포 이후에 많이 활용한다. 1. 이거 왜 씀?? 나와 같은 주니어(난 주니어 레벨도 안되지만) 취준 개발자 입장에선 일단 서비스를 만드는거 자체에 집중하는 경향이 큰데, flyway는 그 이후를 봐야할 때 빛을 보는 tool 이다. 프로젝트에서는 loc..
Lock & JPA Lock..중간에 겐세이 놓으시면 안됩니다.
아무것도 모르는 날 위해 Lock과 JPA Lock에 대해 공부해보자. (그 전에 트랜잭션부터 알아보자) 트랜잭션이란, DB 상태를 변환시키는 하나의 논리적인 기능을 수행하는 작업 단위로, 하나의 트랜잭션은 구분될 수 없다. 이처럼 트랜잭션의 가장 큰 특징은 작업의 원자성을 보장하는 것이다. LOCK 1. Lock이란? (what) Lock이란, 트랜잭션 처리의 순차성(즉, 데이터 일관성)을 보장하기 위한 매커니즘. 결국 LOCK도 다양한 트랜잭션 격리 수준의 일부이다. 즉, 사용자 A가 Data에 접근 할 때 데이터에 Lock을 걸어 나머지 사용자들이 이 데이터에 접근하지 못하도록 하는 것. 2. 그러면 Lock이 왜 필요해?? (why?) [배경] 우리는 어플리케이션을 사용하다 보면 Database에..
[네트워크] https://www.google.com 으로 들어가면 무슨일이?
안녕하세요. Harry입니다. 본 포스팅의 목적은, 보다 깊은 CS지식을 공부하면서 배운 내용을 정리하기 위함입니다. 1. HTTP란? HTTP. 풀어 쓰면 Hyper Text Transfer Protocol이라고 한다. 좀 더 풀어쓰면 인터넷 상에서 데이터를 주고받을 수 있는 프로토콜이다. 나는 HTTP를, 인터넷 상에서 정보를 교환할 때 필요한 약속이라고 이해하고 정의했다. HTTP는 사용자 측에서 브라우저를 통해 url 등으로 요청(request)을 하면 서버에서는 해당 요청에 부합하는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다. 이런 통신 약속을 정한 이유는, 요청과 응답이 원하는 사람에게, 원하는 시간 안에, 내용의 변질없이 온전히 전달되어야 하기 때문이다. 태어날 때부..