본문 바로가기
메뉴

분류 전체보기39

백준 2026년 3, 4주차 정리 노트

[G1~P5] 네트워크https://www.acmicpc.net/problem/15562A에서 B로 흐르는 간선(네트워크)가 여러 개일 수 있다.간략화 연산을 수행하면 어떤 것들이 바뀌는지 확인한다.in-degreeout-degree언제 간략화가 가능한가? → $out$-$degree > 0\,\&\, in$-$degree > 0$각 정점에 대한 불변량 : $outdeg(v) - indeg(v)$ [C++17 코드]더보기#include using namespace std;#ifdef LOCAL_TESTconstexpr bool isLOCAL = true;#elseconstexpr bool isLOCAL = false;#endif#define debug if constexpr (isLOCAL) cerrty..

[Java] try/catch/finally: 바이트코드 분석

용어정상 완료(normal completion): 문장이 모든 단계를 정상적으로 수행하고 끝나는 것비정상 완료(abrupt completion): return, throw, break, continue 등으로 문장이 중간에 특정 이유로 인해 즉시 종료되는 것동작 흐름try-finally / try-catch-finally는 큰 틀에서 아래 규칙으로 이해하면 된다. try 블록을 실행하면try 블록 정상 완료 → finally 실행try 가 예외로 비정상 완료 → (예외 잡을 수 있으면 catch 블록 실행) → finally 블록 실행try 가 예외가 아닌 다른 이유로 비정상 완료 → finally 블록 실행그런데 중요한 점이 하나 있다.원래 결과가 무엇이든, finally 실행 중 비정상 완료(예: r..

[Spring Boot/JPA] Hibernate Naming Strategy

엔티티, 필드 등의 도메인 모델 이름을 데이터베이스의 테이블, 컬럼 등의 물리적 스키마 이름으로 변환하는 규칙을 정의하는 전략용어논리적 이름(logical name): ORM 매핑 레벨에서 사용하는 추상화된 이름물리적 이름(physical name): 실제 데이터베이스에서 사용되는 최종 이름Implicit Naming Strategy: @Table, @Column 을 안 썼을 때 생성되는 논리적 이름을 어떤 규칙으로 만들지 결정하는 전략Physical Naming Strategy: 논리적 이름을 바탕으로, 실제 DB 스키마에서 쓸 물리적 이름을 결정하는 전략변환 과정명시적 이름이 있는 경우논리적 이름 → PhysicalNamingStrategy → 물리적 이름 → DB명시적 이름이 없는 경우Implici..

[Java] 중첩 클래스(Nested class) 정리 - 바이트코드 분석을 곁들인

중첩 클래스(Nested class)분류중첩 클래스(nested class): 다른 클래스/인터페이스 안에 선언된 클래스 전체내부 클래스(inner class): static 이 아닌 중첩 클래스인스턴스 멤버 클래스(non-static member class)로컬 클래스(local class)익명 클래스(anonymous class)정적 멤버 클래스(static nested class) 왜 사용하는가?논리적 그룹화 : 특정 클래스에서만 사용되는 클래스가 있다면, 그 안에 포함시켜서 함께 두는 게 자연스럽다. "헬퍼 클래스" 같은 것을 중첩시키면 패키지 구조도 깔끔해진다.캡슐화 강화 : 클래스 B가 클래스 A의 멤버에 접근해야 하는데, 해당 멤버들을 private 으로 숨겨야 하는 상황이 있을 수 있다. ..

주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 8, 9장

이번 장에서는 보안과 리눅스 명령어와 관련된 내용이 나온다. 8장: 실무에서 꼭 필요한 보안 지식인증(authentication) : 사용자가 누구인지 확인하는 과정인가(authorization) : 사용자에게 자원에 접근할 수 있는 권한 부여 인증에 성공하면 서버는 클라이언트에 토큰을 제공한다. 여기서 토큰은 넓은 의미로 ‘신원 증명 수단’으로 이해하면 된다.인증(Authentication)세션 기반 (Stateful)서버가 세션 ID 발급실제 인증 정보는 세션 ID를 key로 한 서버 측 저장소(메모리, DB, Redis 등)에 저장클라이언트는 세션 ID만 가지고 요청하고, 서버는 매 요청마다 세션 저장소를 조회해 사용자를 확인세션 정보를 저장소에 저장하기 때문에 작지만 용량을 차지한다. (사용자가..

[Java] 생성자 초기화 순서 정리: 5단계에서 7단계로 (feat. JEP 513)

이것이 자바다 책을 보면서 조금 애매한 설명이 있어서 추가로 공부하게 되었다. [레퍼런스] Chapter 12. Execution | Oracle Java SE 21 흔히 우리가 알던 자바 버전에서는 객체를 생성하게 되면 다음과 같은 순서로 진행된다.메모리 공간 할당모든 인스턴스 변수(상위 클래스 포함) 기본값으로 초기화새 객체를 초기화 하기 위해 생성자 처리 5단계 진행예외 없이 정상적으로 생성자 처리가 끝나면 새로 생성된 객체에 대한 참조가 결과로 반환 생성자 체이닝 (Constructor Chaining)생성자가 다른 생성자를 호출하는 메커니즘두 가지 형태가 있다.super(...) → 부모 클래스 생성자 호출this(...) → 같은 클래스의 다른 생성자 호출 생성자 처리 5단계생성자 인자를 생..

[Spring Boot] DataSource & HikariCP 설정 정리

사이드 프로젝트를 시작했는데, application.yaml에서 db와 jpa관련 설정을 하다 자주 사용되는 설정들을 정리했다.jpa hibernate와 관련된 설정은 다음에 추가로 올릴 예정이다. DataSource 설정spring: datasource: url: jdbc:mysql://localhost:3306/db_name username: root password: password driver-class-name: com.mysql.cj.jdbc.DriverDB별 드라이버 클래스MySQL : com.mysql.cj.jdbc.DriverPostgreSQL : org.postgresql.DriverH2 : org.h2.DriverMariaDB : org.mariadb.jdbc...

이것이 자바다 - 5~6장

책을 읽으면서 새로 알게된 부분 / 추상적으로 알던 부분을 정리하려고 노력했다.CS를 잘 모르거나 자바를 진짜 처음보는 초심자에게는 책 내용 이해하기가 너무 힘들 것 같은데 기초...가 맞나? 싶다현재 시점에서 책을 보며 정리하기를 정말 잘했다고 생각한다.5장: 참조 타입JVM Runtime Data Area오라클 레퍼런스 - Run-Time Data AreasMethod Area클래스 로더에 의해 로드된 클래스/인터페이스 관련 메타데이터(바이트 코드, 시그니처, 런타임 상수 풀 등)가 저장됨모든 스레드가 공유HotSpot VM에서 Java 7까지는 PermGen, Java 8부터 Metaspace로 관리됨Run-Time Constant Pool : 컴파일 타임에 알려진 숫자 리터럴, 런타임에 해석되거나..

주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 6, 7장

이번 장에는 책에서 반복적으로 다뤄지는 내용들이 많이 포함되어 있었다.6장. 동시성Java에서의 동시성 제어synchronized (모니터)Lock자바에 이렇게 락이 많은지 처음알았다. 아래말고도 더 있다LockReadWriteLockReentrantLockReentrantReadWriteLockStampedLock낙관적 읽기쓰기 락읽기 락Semaphore세마포어에서 퍼밋 획득 (P 연산 → wait)코드 실행퍼밋 반환 (V 연산 → signal)Atomic 타입들기본적으로 CAS(Compare And Swap) 방식으로 구현되어 있음(CAS를 이용한 Lock-Free 자료구조 만들어보기)DB와 동시성비관적 락 (선점 락)실패할 가능성이 높을 때 사용한다.트랜잭션이 select ~ for update 로..

나만의 티스토리 블로그 스킨 제작기

나만의 멋들어진 기술 블로그를 작성하고 싶어 2025년 6월부터 진행된 스킨 제작이 2026년 새해를 맞이하며 막을 내렸다.결과물의 90% 이상은 AI 에이전트를 이용해 개발했고, 자잘한 수정 사항만 직접 코드를 작성했다.SSAFY 방학 기간인 6월달에 cursor의 도움을 받으며 네비게이션바와 게시글 페이지 일부를 만들었는데, 이때는 지금의 AI보다 성능이 안좋았어서 결과물에 크게 실망해 열정이 파사삭 식어 1주일만에 프로젝트를 중단했다.SSAFY 2학기를 하며 적극적으로 프로젝트에 claude code, codex cli를 활용하며 프롬프팅 강의도 보고 많이 써보면서 결과물을 잘 뽑아내는 방법을 터득했고, 성능도 많이 좋아졌음을 체감해 SSAFY도 끝난 마당에 12월 마지막 주차동안 밤낮을 투자해 완..

보호된 글

비밀번호를 입력하세요