전체 글
-
Valkey 명령어 기능 추가해보기기타/ValKey 2025. 5. 27. 17:59
이번 글을 통해 2025 OSSCA 5주차 때 배운 Valkey 명령어에서 기능을 추가해보는 실습과정을 정리해보려고 한다. 이전 글을 통해 valkey에 새로운 명령어를 추가해보는 실습을 진행해봤다. 이전에 추가한 명령어는 echo_min abc이라는 명령어를 입력하면 abc라는 것이 결과물로 출력이 되었다.이번에는 echo_min abc 라고 보내면 응답이 abc 가 아니라 echo_min_ abc 으로 응답이 오도록 만드는 것이다. 1. 기존 동작 코드 파헤치기일단은 기존에 동작했던 코드를 살펴보고 어떻게 수정을 해야할지 방향성을 잡아보려고 한다.void echoMinCommand(client *c) { addReplyBulk(c, c->argv[1]);}기존 코드를 보면 파라미터로 clie..
-
Valkey 실행및 명령어 추가해보기기타/ValKey 2025. 5. 21. 22:23
이번 글을 통해 2025 OSSCA 3, 4주차 때 배운 Valkey를 직접 실행해보고 명령어를 추가해보는 실습과정을 정리해보려고 한다. 1. Valkey란?valkey는 key/value 인메모리 데이터베이스로 redis를 fork한 오픈소스다. https://valkey.io/ ValkeyFAST. RELIABLE. OPEN SOURCE, FOREVER. Valkey is an open source (BSD) high-performance key/value datastore that supports a variety of workloads such as caching, message queues, and can act as a primary database. The project is backed b..
-
Git 기본 명령어 동작 원리 알아보기기타/깃(Git) 2025. 4. 29. 21:30
이번 글을 통해 2025 OSSCA 2주차 때 배운 Git 원리를 복습하고 다시 직접 실행해보면서 내용을 정리해보려고 한다. 1. Git이란?간단하게 git 정의를 먼저 정리해보면 Git은 분산 버전 관리 시스템(DVCS)으로 소스 코드나 파일의 변경 이력을 체계적으로 관리할 수 있도록 도와주는 도구이다.주요 특징으로는 아래와 같다.버전 관리: 코드 변경 사항을 기록하고, 이전 상태로 되돌릴 수 있음분산 시스템: 모든 사용자가 전체 저장소의 복사본을 가지므로, 네트워크가 없어도 작업이 가능브랜치 관리: 기능 개발이나 실험을 위해 별도의 브랜치를 쉽게 만들고, 병합할 수 있음협업: 여러 사람이 동시에 개발해도 충돌을 최소화하고, 변경 내역을 효과적으로 관리할 수 있음 2. git init첫번째로 git ..
-
[디자인패턴] 비지터패턴기타/북스터디 2023. 1. 29. 09:58
1. 비지터패턴(Visitor Pattern)이란? 비지터패턴이란 기존 코드를 건드리지않고 새로운 기능을 추가할 때에 사용하는 패턴이다. Element는 기존에 존재하는 객체로 변하지 않는 객체이다. Visitor는 추가하고자 하는 기능을 가지고 있는 객체이다. 비지터패턴을 적용하기 위해서는 우리가 추가하고자하는 기능을 구현하기 위해 기존에 존재하는 객체인 Elment에 accpt(Visitor)라는 메서드를 추가해주어야한다. accpt(Visitor) 메서드 안에서는 Visitor.visit(this);로 자기 자신(Element구현객체)을 넘겨준다. 2. 비지터패턴 적용 전 코드 Shape라는 인터페이스가 있고 Shape를 구현하는 Rectangle과 Triangle이 있다고 가정해보자. public..
-
[디자인패턴] 메멘토패턴기타/북스터디 2023. 1. 29. 08:58
1. 메멘토패턴(memento pattern)이란? 메멘토패턴은 객체 내부의 상태를 외부에 저장을 하고 저장된 상태를 다시 복원하고자 할 때에 사용하는 패턴이다. 메멘토패턴을 사용함으로써 객체의 모든 정보를 외부로 노출시키지 않고 캡슐화를 지킬 수 있다. Originator는 본래의 상태를 가지고 있고 상태를 저장하고 복원하고 싶어하는 객체이다. Memento는 immutable한 객체로 일정 시점의 Originator 내부정보를 가지고 있다. CareTaker는 Originator의 내부정보를 Memento type으로 가지고 있고 복원을 할 수 있는 객체이다. 2. 메멘토패턴을 사용하지 않은 코드 게임의 현재 스테이지와 캐릭터의 정보를 가지고 있는 클래스가 있다고 가정해보자. public class ..
-
[이펙티브 자바] 아이템24. 멤버 클래스는 되도록 static으로 만들라기타/북스터디 2023. 1. 9. 12:05
1. 멤버 클래스는 무엇일까? 해당 아이템에 대해 정리하기 전에 큰 키워드인 멤버 클래스가 무엇인지 알아보자. 멤버라는 의미는 어떠한 클래스를 구성하는 요소를 의미하고 그에 따라 멤버 클래스는 어떠한 클래스를 구성하는 요소인데 그게 클래스형태인 것이다. 클래스의 멤버에는 아래와 같이 필드, 메서드, 클래스 등이 있을 수 있다. public class OuterClass { // 멤버 필드(혹은 변수) private String name; // 멤버 메서드 public void foo() { } // 멤버 클래스 public Class InnerClass { } } 더보기 (보통 비정적 멤버 클래스를 그냥 통상적으로 멤버 클래스라고 부르지만 여기서는 더 큰 의미로 해석해봤다.) - 참고자료: https:/..
-
[디자인패턴] 프록시패턴기타/북스터디 2023. 1. 8. 12:02
1. 프록시패턴(Proxy Pattern)이란? 프록시패턴은 특정한 객체의 오퍼레이션들을 접근하기 전에 프록시객체를 먼저 거치고 난 후에 접근하는 패턴이다. 프록시패턴을 적용함으로써, 클라이언트입장에서는 원래 쓰려는 객체를 직접 쓰는게 아닌 프록시객체를 거쳐서 쓰는 구조가 된다. 프록시패턴을 사용함으로서 달라지는 점은 기존코드를 건드리지 않고 프록시에 로직을 추가하여 실제 객체 접근제어, 초기화 지연, 로깅, 캐싱 등을 활용할 수 있다. 2. 프록시패턴을 적용하고자하는 상황을 가정해보자. 아래 코드는 정수기에서 물을 내려주는 것을 구현한 간단한 코드이다. public class WaterFountainService { public void comesOut() { System.out.println("물이 ..
-
[이펙티브 자바] 아이템12. toString을 항상 재정의하라기타/북스터디 2023. 1. 2. 22:00
toString메서드는 Object클래스 정의된 public method이다. 간단히 toString이 어떠한 값을 반환하는지보면 클래스의 이름@hascode를 16진수로 변환한 값을 반환해주고 있다. 실제로 코드를 작성하여 toString을 실행시켜보면 아래와 같은 결과가 나오는 것을 알 수 있다. package Item12; // 모든 클래스는 직접 extends를 통해 Object클래스 상속을 선언해주지 않아도 // 기본적으로 Object 클래스를 상속한다. public class Foo { private String name; private int code; public Foo(String name, int code) { this.name = name; this.code = code; } publ..