-
[Java] 스레드(Thread)와 동기화(Synchronization)
스레드(Thread) 자바에서 스레드(Thread)는 프로그램 내에서 실행되는 가장 작은 작업 단위를 의미한다.기존의 프로그램(프로세스)이 하나의 작업 흐름만 가졌다면, 멀티스레드를 사용하면 한 번에 여러 작업을 동시에 실행할 수 있어 작업 효율이 크게 높아진다.1. 스레드를 만드는 기본 방법자바에서 스레드를 생성하는 방식은 크게 두 가지가 있다.Runnable 인터페이스 구현 (권장): 기존 클래스를 상속받아야 하는 자바의 단일 상속 제약을 극복할 수 있어 더 유연한 방식,Thread 클래스 상속: 클래스를 직접 상속받아 run() 메서드를 재정의한다.// Runnable 구현 방식class MyTask implements Runnable { @Override public void run()..
2026.10.07
-
[Java] 제네릭 (Generic)
제네릭(Generic)제네릭은 클래스, 인터페이스, 메서드가 다양한 타입을 처리할 수 있도록 일반화하는 기능이다.클래스, 인터페이스, 메서드를 정의할 때 사용할 데이터 타입을 파라미터(매개변수)로 전달받아 지정할 수 있게 해주는 기능이다. 제네릭이 도입되기 전에는 다양한 타입의 객체를 다루기 위해 Object 타입을 주로 사용했지만, 이는 실행 중 형변환 에러(`ClassCastException`)가 발생할 위험이 커서 컴파일 시점에 타입을 체크할 수 있는 제네릭이 도입되었다.1. 제네릭의 핵심 장점컴파일 시 강한 타입 체크 (Type Safety): 잘못된 타입이 들어오는 것을 컴파일 시점에 감지하여 에러를 방지한다.타입 변환(Cast) 제거: 객체를 꺼낼 때 일일이 형변환할 필요가 없어 코드가 훨씬 ..
2026.10.06
-
[Java] 열거형(Enumeration)
열거형(Enumeration)열거형은 서로 관련 있는 상수들의 집합을 정의할 때 사용하는 형태(데이터 타입)이다. 기존의 public static final 방식으로 상수를 하나씩 선언하던 방식의 단점을 보완하기 위해 Java 5부터 도입되었다.1. Enum을 사용하는 핵심 이유타입 안전성(Type Safety) 보장: 허용된 값 이외의 다른 값이 들어오는 것을 컴파일 시점에 완전히 차단한다.가독성과 유지보수성 향상: 상수의 의미가 명확해지고, 관련 로직을 한 곳에서 관리하기 쉽다.코드가 깔끔해짐: 단순 상수 선언 외에도 필드, 생성자, 메서드를 추가하여 복잡한 로직을 내부에 포함시킬 수 있다.2. 기본 사용법// 요일을 나타내는 간단한 Enum 정의public enum Day { MONDAY, T..
2026.10.06
-
[Java] 업캐스팅 (Upcasting)
업캐스팅(Upcasting)자바에서 업캐스팅(Upcasting)은 자식 클래스의 객체를 부모 클래스 타입의 변수에 할당하는 것을 말한다.하위 개념이 상위 개념으로 흡수되는 모양새라서 별도의 형변환(캐스팅) 연산자 없이 자동으로 형변환이 이루어진다. class Animal { void sound() { System.out.println("동물이 소리를 냅니다."); }}class Dog extends Animal { @Override void sound() { System.out.println("멍멍!"); } void fetch() { System.out.println("공을 가져옵니다."); }}public class M..
2026.10.06
-
[Java] escapeString - SQL Injection(SQL 삽입) 공격 구문 ' or '1'='1
escapeString escapeString 메서드는 JDBC 드라이버(특히 MySQL Connector/J) 내부에서사용자가 전달한 파라미터 문자열을 SQL 쿼리에 안전하게 삽입하기 위해 이스케이프(Escape) 처리를 수행하는 핵심 보안·변환 함수이다.1. 메서드 시그니처 및 파라미터 역할public static StringBuilder escapeString(StringBuilder buf, String x, boolean useAnsiQuotedIdentifiers, CharsetEncoder charsetEncoder) buf (StringBuilder): 이스케이프 처리가 끝난 최종 문자열을 차곡차곡 담아둘 가변 문자열 버퍼x (String): 사용자가 입력한 생(Raw) 문자열 데이터 (예..
2026.10.06
-
캐싱(Caching)
캐싱(Caching)은 자주 사용하는 데이터나 계산 결과를속도가 빠른 임시 저장소(캐시, Cache)에 따로 보관해 두었다가, 필요할 때 빠르게 재사용하는 기술이다.매번 먼 곳(원래 서버, 데이터베이스, 하드디스크)까지 가서 똑같은 데이터를 새로 가져오는 대신,가까운 곳에 복사본을 두고 즉시 꺼내 쓰는 원리이다.쉽게 이해하는 비유: 책상과 도서관원본 데이터 (DB/서버): 멀리 있는 도서관 서가 깊숙이 보관된 책캐시 메모리 (Cache): 내 책상 위에 올려둔 메모장캐싱 과정: 도서관까지 가서 책을 새로 찾아오는 게 오래 걸리니까, 자주 읽는 단원이나 내용은 책상 위 메모장에 요약해 두고 필요할 때마다 책상 위를 바로 확인하는 것!캐싱을 사용하는 핵심 이유응답 속도 향상: 멀리 있는 서버나 느린 데이터베..
2026.09.07
-
[JS] 자주 쓰이는 DOM 요소 속성
DOM(Document Object Model) 요소 속성(Property)= DOM 조작 속성저런 속성들은 자바스크립트로 HTML 요소를 조작할 때 사용한다.자주 쓰이는 주요 DOM 조작 속성들 🎨 자주 쓰이는 주요 DOM 조작 속성들은 아래와 같다.React, Vue, Angular 등의 프레임워크나 jQuery 등 라이브러리의 도움을 전혀 받지 않고 쓰는'순수한 자바스크립트 그 자체'에 해당하는 바닐라 스크립트의 문법이다.* jQuery는 과거에 많이 쓰던 라이브러리이다. 1. 내용 및 글자 조작element.textContent 태그 안의 순수 텍스트를 읽거나 변경 (보안상 안전하고 빠름)element.innerHTML태그 안의 HTML 구조 자체를 변경 (예: element.innerHTML ..
2026.09.04
-
[C언어] 파일 입출력 - 읽기 (fopen, fgets, fseek, feof, fclose)
1) fopen(경로, mode);FILE * 형의 값을 반환 2) fgets(buffer, length, file);fgets 함수는 줄바꿈(\n)이 있다면 줄바꿈까지만 읽어온다. 따라서 fgets함수가 호출되었을 때는 첫 번째 line까지만 읽어온다. 3) fseek(파일, 이동할 거리, 이동을 시작할 위치);file을 읽어들일 때에는 file pointer라는 것이 있다. 참고 자료1) https://jeckl.tistory.com/entry/C%EC%96%B8%EC%96%B4-21%EA%B0%95-%ED%8C%8C%EC%9D%BC-%EC%9E%85%EC%B6%9C%EB%A0%A5-%EC%9D%BD%EA%B8%B0-fopen-fgets-fseek-feof-fclose ([C언어] ..
2025.03.29
-
[FE][08] HTML 핵심 요소, 주석, 전역 속성
블록(상자) 요소특별한 의미가 없는 구분을 위한 요소. (Division)제목을 의미하는 요소 (Heading)
2024.07.13
-
[FE][07] HTML 글자, 상자
HTML 글자, 상자 요소가 화면에 출력되는 특성을 크게 2가지로 구분한다. 1) 인라인(Inline) 요소 글자를 만들기 위한 요소들대표적인 인라인 요소 본질적으로 아무것도 나타내지 않는콘텐츠 영역을 설정하는 용도2) 블록(Block) 요소상자(레이아웃)을 만들기 위한 요소들 "레이아웃을 설정한다."
2024.07.09