전체 글 80

스프링 프레임워크 2일차

HikariCp 설정 및 테스트 Mapper Dto만 패키지구조 수평적 분할 / 수직적 분할 매퍼 인터페이스, xml 분리해서 저장 mybatis는 쿼리의 파라미터 1개만 받을 수 있어서 다중파라미터는 @Param으로 여러개 받거나 dto 객체로 받기 가능 mybatis는 GET/SET메소드를 통해 쿼리 파라미터를 세팅 할 수 있음 *website 성격- sns: 무한스크롤 가능(삭제되는 데이터가 많으면 무한스크룰 적용 xx)- 쇼핑몰: 데이터의 변경주기가 낮음 -> 캐싱활용시 성능확보가능 *브라우저 엔진- CSS엔진- 자바스크립트 엔진- HTML 파서 / 렌더링 엔진 (Layout Engine 포함) 브라우저에서 Alet 사용하면 안됨(자제하자)-> 모든 브라우저 엔진을 멈춰버림 자바스크립트 엔..

카테고리 없음 2025.07.22

HikariCp란?

HikariCP 설정HikariCP는 빠르고 효율적인 JDBC 연결 풀입니다. Spring Boot에서 기본적으로 사용될 정도로 성능이 뛰어납니다.1. 주요 설정 (application.properties 또는 application.yml)spring.datasource.url: 데이터베이스 연결 URL. 예: jdbc:mysql://localhost:3306/mydbspring.datasource.username: 데이터베이스 사용자 이름.spring.datasource.password: 데이터베이스 비밀번호.spring.datasource.driver-class-name: JDBC 드라이버 클래스 이름. (대부분 자동으로 감지되므로 필수는 아님)MySQL: com.mysql.cj.jdbc.Driver..

🍎 Backend 2025.07.21

스프링 프레임워크 및 DB 설정

1. Tomcat 설치 JDK 설치 확인C:\Users\HIRA>java -version java version "21.0.6" 2025-01-21 LTS Java(TM) SE Runtime Environment (build 21.0.6+8-LTS-188) Java HotSpot(TM) 64-Bit Server VM (build 21.0.6+8-LTS-188, mixed mode, sharing) eclipse : 폐쇄망에서는 개발 방식이 다름 eclipse-jee-2025-06-R-win32-x86_64.zip C:\202507\eclipse eclipse.exe C:\202507\ws -> workspaceapache-tomcat-10.1.34.zip C:\202507\apache-tomcat-10...

🍎 Backend 2025.07.21

JSCODE 자바 모의면접 스터디 후기

JSCODE 자바 모의면접 스터디 완주 후기 1년 반이 지난 취준기간동안, 1차면접 대부분에서 자바 CS 질문이 많이 들어오고있다.지난 시즌에는 면접에서 CS로 문제되지는 않았지만, 개발공부를 하면서 깊게 공부하고 싶은 마음이 컸다.그리고 12~2월 비수기동안 또 까먹는 문제가 발생되니, 25년 상반기 대비할 겸 스터디에 참가하게 되었다. 스터디 진행 과정 20:00 ~ 20:20 : 공지 및 멘토링20:20 ~ 22:00 : 면접 스터디 매주차 JSCode사이트에서 면접 질문을 주고 그거에 맞춰서 공부해오면 된다.면접 시간은 15분 + 5분 피드백으로면접자, 면접관, 관찰자로 돌아가면서 면접을 진행하는 방식이다. KPT회고Keep: 잘했던 점, 계속 유지하고 싶은 점Problem: 아쉬웠던 점, 개선이..

[JAVA] Garbage Collector, GC

가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다.  STW (Stop The World)GC를 수행하기 위해 JVM이 프로그램 실행을 멈추는 현상을 의미.GC가 작동하는 동안 GC 관련 Thread를 제외한 모든 Thread는 멈추게 되어 서비스 이용에 차질이 생길 수 있다.따라서 이 시간을 최소화 시키는 것이 쟁점이다. GC의 장점메모리 관리가 자동화되어 개발자가 직접 메모리를 해제할 필요가 없습니다.메모리 누수를 방지할 수 있습니다.안정성이 높아집니다.GC의 단점GC가 실행되는 동안 애플리..

🍎 Backend/JAVA 2025.01.30

[JAVA] JVM의 구조

✔️ JVM의 구조 ✔️ JAVA 가상머신의 동작과정JVM은 자바.class파일을 클래스 로더를 통해 읽어와서 자바 API와 함께 실행한다.  1. 자바 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당받는다2. 자바 컴파일러가(javac)가 자바 소스코드(.java)를 자바 바이트 코드(.class)로 컴파일한다.3. class Loader는 동적로딩을 통해 필요한 클래스를 로딩 및 링크하여 Runtime Data Area에 올린다.4. Runtime Data Area에 올라간 바이트코드는 Excution Engine을 통해서 해석된다.5. 이과정에서 Excution Engine에 의한 GC의 작동과 Thread 동기화가 이루어진다. ✔️ JVM의 상세 구조     Class LoaderJVM으로 ..

🍎 Backend/JAVA 2025.01.30

[JAVA] 심화

동시성과 병렬성 동시성(Concurrency): 여러 작업을 동시에 처리하는 것처럼 보이도록 구현하는 방식으로, 단일 CPU에서 여러 작업이 빠르게 번갈아가며 실행됩니다. ex) 멀티스레드 프로그램.병렬성(Parallelism): 여러 작업이 실제로 동시에 실행되는 방식으로, 다중 CPU나 다중 코어에서 각각 다른 작업을 동시에 수행합니다. ex) 멀티프로세싱.  멀티 스레드멀티 스레드란 동시성을 달성할 수 있는 하나의 프로그래밍 기법이다. Thread-Safe란?다수의 스레드가 공유 자원에 접근해도 프로그램이 문제 없이 동작하는 것을 의미한다.   Thread Safe 를 지키기 위한 방법은 4가지로 되어있다.Mutual exclusion (상호 배제)Atomic operation (원자 연산)Thre..

카테고리 없음 2025.01.23

[트러블 슈팅] WebSocket 연결 시의 Connection closed to.... 해결

🛠️ WebSocket 연결 시의 Connection closed to.... 문제 해결 내 프론트코드는 이렇게 연결을 할 수 있도록 작성되어있다.const connectWebSocket = () => { try { console.log('Attempting to connect to WebSocket...'); // Create a WebSocket factory function const wsFactory = () => { return new SockJS('http://localhost:8070/ws', null, { transports: ['websocket'], ..

[JAVA] String, StringBuffer, 예외(Exception)

📚 자바에서 String 이란?java에서 문자열의(연속된 문자들의 집합)을 나타내는 클래스이다.java.lang패키지에 속해있고 기본 데이터타입이 아닌 객체타입이다.String Literal:String Pool에 저장됨.동일한 값의 리터럴이 있으면 재사용new String(""):Heap 메모리에 새로운 객체를 생성.동일한 값을 가진 String Literal이 있더라도 다른 객체를 생성// String Literal 예시String str1 = "Hello";String str2 = "Hello"; // str1과 동일 객체 참조//new String("") 예시String str1 = new String("Hello");String str2 = new String("Hello"); // 서로 다..

🍎 Backend/JAVA 2025.01.09

[JAVA] 제네릭, 지네릭스(Generics)

📚 제네릭이란?다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능이다. 예를들어, ArrayList와 같은 컬렉션 클래스는 다양한 종류의 객체를 담을 수 있지만 보통 한 종류의 객체를 담는 경우가 많다. 그런데도 꺼낼 때마다 타입체크를 하고 형변환을 하는 것은 아무래도 불편할 수 밖에 없다. 게다가 원치않는 종류의 객체가 포함되는 것을 막는 방법이 없는 것도 문제이다. 이러한 방법을 해결해주는 것이 제네릭(Generics)이다. 제네릭의 장점1. 타입 안정성을 제공해준다.2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다3. 잘못된 타입이 들어오는 것을 컴파일 단계에서 방지할 수 있다. 단순히 말하자면, 다..

🍎 Backend/JAVA 2025.01.09

[JAVA] 어노테이션(Annotation)

📚 어노테이션이란?코드에서 @로 작성되는 요소를 어노테이션(Annotation)이라고 한다. 어노테이션은 클래스 또는 인터페이스를 컴파일하거나 실행할때 어떻게 처리해야하는 지를 알려주는 설정 정보이다. 어노테이션은 코드에 추가적인 메타데이터를 제공하여, 개발자가 명시적으로 로직을 정의하지 않아도 프레임워크나 라이브러리가 이 메타데이터를 기반으로 동작을 수행할 수 있도록 한다. 또한, 어노테이션은 직접적으로 실행되는 코드가 아니기 때문에, 이를 기반으로 동작을 수행하려면 리플렉션을 통해 어노테이션 정보를 읽어와야 한다.리플랙션이란?자바의 런타임에 클래스, 메서드, 필드, 어노테이션의 정보를 동적으로 조회하고 조작할 수 있는 기술이다.@Retention(RetentionPolicy.RUNTIME) // 런..

🍎 Backend/JAVA 2025.01.09

[JAVA] 람다(Lambda)와 스트림(Stream)

📚 람다 표현식이란?함수형 프로그래밍을 구현하기 위한 함수식이다.말하자면, 자바의 메소드를 간결한 함수식으로 표현한 것이다int add(int x, int y) { return x + y;}// 위의 메서드를 람다 표현식을 이용해 아래와 같이 단축 시킬수 있다. (메서드 반환 타입, 메서드 이름 생략)(int x, int y) -> { return x + y;};// 매개변수 타입도 생략 할 수 있다.(x, y) -> { return x + y;};// 함수에 리턴문 한줄만 있을 경우 더욱 더 단축 시킬 수 있다. (중괄호, return 생략)(x, y) -> x + y;출처: https://inpa.tistory.com/entry/☕-Lambda-Expression [Inpa Dev 👨‍💻:..

🍎 Backend/JAVA 2025.01.09