본문 바로가기

분류 전체보기

(32)
참조 카운팅과 순환 참조의 이해 강화 참조 카운팅 (Reference Counting)참조 카운팅은 객체가 몇 개의 다른 객체나 변수가 자신을 참조하고 있는지를 세는 방식.객체가 참조될 때마다 카운트 증가, 참조가 해제되면 카운트 감소. 참조 카운트가 '0'이 되면 더 이상 그 객체를 참조하는 곳이 없으므로 가비지 컬렉션의 대상이 됩니다.class Node: def __init__(self, value): self.value = value self.ref = None # 다른 노드를 가리키는 참조node1 = Node(1)node2 = Node(2)# 현재 상태:# node1 참조 카운트: 1 (node1 변수)# node2 참조 카운트: 1 (node2 변수)node1.ref = node2node2.ref ..
오랜만에 정리하는 자바의 인스턴스와 String Pool 오랜만에 자바를 다시 보려고 하니 여러가지 까먹은게 많다.그래서 정리를 해보려고 한다. 메모리 측면 관리와 성능 최적화 측면을 보겠다.  1. 인스턴스화 (Instantiating a String)인스턴스화는 new 키워드를 사용하여 새로운 문자열 객체를 생성하는 방법입니다. String a = new String("Hello");String b = new String("Hello");위 코드는 'a','b'라는 각각 새로운 'string' 객체를 힙 메모리에 생성한다.비록 같은 "Hello" 라는 문자열을 가지지만, 두 객체는 서로 다른 메모리 주소를 가지고있다.'a'와 'b'는 각각 독립적인 객체를 가리키고 있으며, 하나가 변경되거나 가비지 컬렉션의 대상이 되더라도 다른 하나에는 영향을 미치지 않는다..
이제 와서 정리해보는 파이썬과 자바의 GC(garbage Collector) 자바에는 유명한 가비지 컬렉터가 있다.하지만 왜인지 나는 파이썬에는 없다고 생각했다 왜 그런 바보같은 생각을 했을까?그래서 지금 다시 알아보고 다시 정리해보려고 나를 위해 기록한다. 자바와 파이썬은 둘 다 메모리 관리를 자동으로 처리하는 가비지 컬렉터를 사용합니다.가비지 컬렉션은 프로그램 실행 중에 더 이상 필요하지 않은 객체를 메모리에서 자동으로 해제 하여 메모리 누수를 방지하는 중요한 기능입니다. 두 언어에서 가비지 컬렉터의 작동 방식은 다소 다르며, 자세히 설명해보겠습니다. JAVA의 가비지 컬렉터자바는 명시적으로 메모리 할당, 해제 할 필요가 없습니다. 자바 가비지 컬렉터는 힙 메모리에서 더 이상 사용되지 않는 객체를 자동으로 찾아내고 회수합니다.자바는 Generational garbage col..
도메인 주도 설계(DDD)에 대한 간단한 설명 오늘은 그렇게 일상 스토리는 아니지만 개발에 관한 일상스토리 중 도메인 주도 설계에 대해 간단히 집고 가고싶어서이렇게 글을 남깁니다.DDD란 무엇인가 도메인 주도 설계(DDD, Domain-Driven Design)는 소프트웨어 개발 방법론으로, 복잡한 비즈니스 도메인을 이해하고 모델링하는 데 중점을 둡니다. DDD는 다음과 같은 주요 개념을 포함합니다:도메인: 소프트웨어가 해결하려는 특정 비즈니스 영역.유비쿼터스 언어: 개발자와 도메인 전문가가 공유하는 공통 언어.엔티티와 값 객체: 비즈니스 개념을 나타내는 객체.애그리게이트: 일관성을 유지하는 객체 그룹.리포지토리: 객체 저장소.서비스: 비즈니스 로직을 캡슐화.DDD는 비즈니스 요구사항을 충족하는 소프트웨어를 만들기 위해 기술 전문가와 도메인 전문가 ..
데이터베이스 트랜잭션 및 로그 관리 종종 개발자들끼리의 간담회? 술자리에서 나온 얘기중 하나가 생각이 나서 정리를 해보자 해서정리를 해보기로 한다 데이터베이스에 데이터를 삽입할 때, 데이터는 즉시 디스크에 기록되지 않고 먼저 메모리 버퍼(버퍼 캐시 또는 로그 버퍼)에 저장됩니다. 이 과정은 성능 향상을 위해 사용됩니다. 데이터가 메모리에 임시 저장된 후, 특정 조건이 충족되면(예: 일정 시간 경과, 버퍼가 가득 참) 디스크에 영구적으로 기록됩니다. 이 과정을 체크포인팅 또는 플러시라고 합니다. 이러한 메커니즘은 데이터베이스의 속도와 효율성을 높이기 위한 방법입니다. 체크포인팅, 플러시 확실히 개발할때 신경도 안쓴다.근데 가끔씩 아주 종종 이게 은근히 거슬리거나 신경쓰일때가 있다?그래서 정리를 하고 내 머리속에 컴퓨터가 어떻게 흘러가는지 이..
1. AI 기반 우울증 진단 프로그램 - 준비 단계 우울증 진단에 관한 프로그램을 만들기에 앞서 누군가는 해보지 않았을까?  싶어서 찾아보았는데https://www.aitimes.com/news/articleView.html?idxno=156037 여기 기사에 잘 정리가 되어있었다.그래서 이 기사 관련 git을 찾아보았고 마침 찾아서 내가 원하는 다른 방향으로 응용을 해보려고이렇게 블로그 내용을 적기 시작했다.출처:https://arxiv.org/abs/2305.14045Git: https://github.com/kaistAI/CoT-Collection 정말 이런 연구를 해주는 멋진 사람들에게 감사할 뿐이다. 프로젝트 개요 및 목표목표: 스마트폰 음성 및 텍스트 데이터를 기반으로 우울증을 진단할 수 있는 AI 프로그램을 개발합니다. 이 프로그램은 개인 정..
파이썬에서 SQL 쿼리 관리: .py 파일 vs YAML 파일 늘 궁금하다가 linkedin에서 어떤 사람이 다루는 글을 힐긋 보아서나도 한번 이거를 제대로 정리를 해야겠다 싶어서 이렇게 글을 남깁니다. 데이터베이스를 다루는 파이썬 코드에서 SQL 쿼리를 직접 .py 파일에 작성하는 것과YAML 파일 등 외부 파일로부터 읽어오는 것에는 각각의 장단점이 있습니다. 이 글에서는 두 방법의 차이를 설명하고, 간단한 코드 예제를 제공합니다. .py 파일에 직접 쿼리 작성장점:간결함: 쿼리와 실행 로직이 한 곳에 있어 이해하기 쉽다.유지보수: 코드와 쿼리가 함께 버전 관리되어 일관성을 유지할 수 있다.성능: 외부 파일을 읽는 과정이 없어 실행 속도가 빠르다.단점:가독성: 복잡한 쿼리는 코드의 가독성을 떨어뜨릴 수 있다.재사용성: 동일 쿼리를 여러 곳에서 사용하면 중복 코드가..
Minimal APIs vs. Controllers: 무엇이 더 나을까요? 개요컨트롤러와 Minimal API의 우열을 가리기는 어렵습니다. 상황에 따라 각 접근 방식의 장단점이 다릅니다.컨트롤러의 문제점엔드포인트가 늘어나면 복잡성이 증가합니다.여러 엔드포인트가 서로 다른 서비스를 요구하면 생성자가 복잡해집니다.Minimal APIs의 장점메서드 주입 방식으로 필요한 서비스만 주입합니다.응집력이 높아지고, 성능이 향상되며 메모리 사용량이 적습니다.Vertical Slice Architecture에 적합합니다.간단하게 설명을 해보겠습니다.현재 회사에서 사용하는 Fast API (Python) 입니다.FastAPI (Python)FastAPI는 기본적으로 Minimal API 스타일을 지원하며, 이는 API 엔드포인트마다 필요한 서비스를 주입할 수 있는 간단하고 직관적인 방식입니다..
postgre와 python 연결과 CRUD 우선 터미널에 라이브러리를 설치합니다. pip install psycopg2 그 다음 DB Connection을 해보겠습니다. PostgreSQL 데이터베이스에 연결하려면 데이터베이스 정보를 사용하여 'psycopg.connect()' 함수를 호출해야 합니다. 여기서는 간단히 'students' 테이블을 사용하겠습니다. Entity는 'id', 'name', 'age', 'major' 을 사용합니다. import psycopg2 # PostgreSQL에 연결 conn = psycopg2.connect( host="your_host", database="your_database", user="your_username", password="your_password" ) 1. Create (데이터 추가) de..
neo4j 시작하기 기본 Question Neo4j는 어떤 유형의 데이터 저장소입니까?? 트랜잭션 데이터 저장소 : Neo4j는 OLAP 및 ACID 준수로 인해 트랜잭션 DB 입니다. 수평 확장이 수직 확장보다 나은 이유는 무엇입니까? 하드웨어 제한 없이 확장할 수 있습니다. RDBMS에서 Table간의 관계는 어떻게 유지됩니까? Primary Key,Foreign Key Neo4j 할 수 있는 링크 : AuraDB https://console.neo4j.io/?ref=aura-lp&mpp=4bfb2414ab973c741b6f067bf06d5575&mpid=1875b099d1431-01c2c68beb02fe-26031851-144000-1875b099d151370 새로 free 시작하고 기다려야 한다.