스트림 (stream)데이터를 전달하는 통로단방향 통신만 가능입력과 출력을 동시에 처리할 수 없음입력과 출력을 동시에 처리하려면 input stream과 output stream 2개의 스트림이 필요FIFO(First In First Out) 구조보조 스트림스트림의 기능을 보완하기 위한 기능실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력할 수 있는 기능은 없음보조스트림 만으로는 입출력을 처리할 수 없고, 스트림을 먼저 생성한 다음에 이를 이용해서 보조스트림을 생성BufferedInputStream실제 기능은 FileInputStream이 수행보조스트임인 BufferedInputStream은 버퍼만을 제공함버퍼를 사용한 입출력과 그렇지 않은 경우는 성능 차이가 상당하기 때문에 대부분의 경우에..
📌String 클래스(1) 불변(Immutable) 객체String 객체는 한 번 생성되면 그 값을 바꿀 수 없음문자열을 수정하는 것처럼 보여도 새로운 문자열 객체를 만든 후, 포인터(문자열 변수)가 가리키는 문자열을 바꾸는 것(2) 왜 불변일까?보안: 데이터가 쉽게 변경되지 않아서 안전함멀티스레드 환경에서 안전문자열 리터럴 풀(문자열 재사용)을 사용할 수 있어 메모리 절약(3) String Constant Pool같은 문자열 리터럴은 힙메모리의 스트링 풀에서 하나만 생성하여 공유함String a = "happy";String b = "happy";System.out.println(a == b); // true(4) String literal vs new 연산자String literal("문자열")은 ..
System.currentTimeMillis() 시작하는 시점과 끝나는 시점에 각각 해당 함수를 써서 시간을 받아오고, 두 시간간의 차이를 계산하면 실행 시간을 구할 수 있습니다. long beforeTime = System.currentTimeMillis(); // 코드 실행 전에 시간 받아오기 // 측정하려는 코드 long afterTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 long diffTime = afterTime - beforeTime; // 두 개의 실행 시간 System.out.println("실행 시간(ms): " + diffTime); Instance Instance는 자바 8부터 java.time에 패키지에 추가된 클래스로, ep..
.gitignore 파일 .gitignore 파일은 Git 버전 관리 시스템에서 추적하지 않을 파일이나 폴더를 지정하는데 사용됩니다. 이 파일은 프로젝트의 루트 디렉토리에 위치하며, 텍스트 파일 형식으로작성됩니다. .gitignore 파일을 사용하면 민감한 정보, 개발 중 생성되는 임시 파일, 빌드 출력물 등 Git 저장소에 포함시키고 싶지 않은 파일이나 디렉토리를 지정할 수 있습니다. Git에서 이미 추적한 파일은 영향을 받지 않습니다. 패턴 .gitignore 파일은 패턴을 지정하여 무시할 파일을 결정합니다. 단일 파일 지정 특정 파일을 직접 명시하여 무시할 수 있습니다. 예를 들어, config.json 이라는 파일을 무시하고 싶다면, .gitignore 파일에 config.json 을 추가합니다...
git init 현재 디렉토리를 깃을 사용할 수 있도록 초기화 git status 파일 상태 확인 (untracked, unmodified, modified, staged) git add 파일/폴더명 깃 스테이징 git commit -m "커밋 메시지" 커밋 git log 깃 로그 확인 git commit -am "커밋 메시지" 커밋과 스테이징을 동시에 git diff 변경사항 확인 git log --stat 로그 통계 git log --graph --oneline 로그를 플로우에 따라 그래프를 그린다. oneline 옵션을 추가하면 한 눈에 편하게 볼 수 있음! 특: 예쁘다 git commit -amend 가장 최근 커밋 수정 git restore 파일/폴더명 스테이지에 올라가 있지 않을 때 취소 이전..
git init .git 파일 구조 .git Git 저장소의 모든 설정, 로그, 객체 데이터베이스 등을 포함하는 디렉토리 입니다. 이 디렉토리가 프로젝트의 Git저장소임을 나타냅니다. HEAD 현재 체크아웃된 커밋, 브랜치, 태그의 참조를 가리킵니다. 주로 현재 작업중인 브랜치를 가리키는데 사용됩니다. config 이 Git 저장소의 설정을 포함합니다. 사용자 이름, 이메일, 원격 저장소 주소 등 저장소 수준의 설정이 이 파일에 저장됩니다. description GitWeb과 같은 일부 서비스에서 사용하는 저장소의 설명을 포함합니다. 기본적으로는 큰 영향을 미치지 않습니다. hooks Git 훅스를 위한 스크립트 파일들이 저장되는 디렉토리입니다. 특정 이벤트(예: 커밋, 푸시)가 발생할 때 자동으로 실행..
시스템, 플랫폼, 프레임워크는 소프트웨어 개발의 세계에서 세 가지 다른 개념입니다: 1. 시스템 (System)시스템은 일반적으로 특정 목적에 부합하는 완전한 독립형 소프트웨어 또는 하드웨어 설정을 의미합니다. 여기에는 소프트웨어와 하드웨어 구성 요소가 모두 포함될 수 있습니다. 시스템의 예로는 애플리케이션을 실행하고 하드웨어 리소스를 관리하기 위한 기반을 제공하는 Windows, macOS 또는 Linux와 같은 운영 체제를 들 수 있습니다. 시스템은 대개 크고 복잡하며 다양한 작업을 처리하고 소프트웨어 실행을 위한 사용자 인터페이스 또는 환경을 제공하도록 설계됩니다. 2. 플랫폼 (Platform)플랫폼은 소프트웨어 애플리케이션을 개발하고 실행하기 위한 도구, 라이브러리 및 서비스를 제공하는 보다 일..
Label 자바에서는 label을 사용해 반복문, switch문 등에 이름을 붙일 수 있다. break와 continue에서 사용 가능! for문에 'mylabel' 이라는 이름의 레이블을 지정한 다음, break mylabel; 구문을 만난다면 -> mylabel이라는 이름이 붙은 바깥 for문을 빠져나감. public static void main(String[] args) { mylabel: for(int i=0; i
Java 14, Java 17에서 적용된 switch문의 새로운 문법들 실행문을 화살표로 (->) case -> A와 같이 표현할 수 있습니다. 일반 case(:)와 다르세 실행문이 여러줄이라면 반드시 중괄호{}를 사용해야 합니다. static void test(Day day){ switch (day) { case MONDAY -> System.out.println(6); case TUESDAY -> System.out.println(7); case WEDNESDAY -> System.out.println(8); case THURSDAY -> System.out.println(9); } } 여러개의 case 값 (,) 여러개의 case값에 같은 실행문을 동작시킵니다. static void test(Day..
JDK와 JRE JRE(JAVA RUNTIME ENVIRONMENT) JRE는 자바 프로그램을 실행하기 위한 라이브러리, 자바 가상 기계, 기타 컴포넌트들을 제공합니다. 자바 프로그램을 실행만 하고 개발은 하지 않는 일반인들을 위한 환경입니다. JDK(JAVA DEVELOPMENT KIT) JDK는 JRE에 자바 프로그램을 개발하는데 필요한 컴파일러, 디버거와 같은 도구들을 추가한 것입니다. JDK 안에 JRE가 포함되어 있습니다. JDK의 폴더 JDK의 기본 설치 폴더는 C:\Program Files\Eclipse Adoptium\jdk-버전 입니다. (자바21 기준) 이 안에 JDK와 JRE 폴더가 있습니다. 폴더 설명 bin 컴파일러, 디버거 등의 도구가 들어 있다. db Java DB, 아파치 D..
멋사 백엔드 스쿨 지원우리 학교 IT학과들 수업 중에 관심 있는 수업을 꽤나 많이 들었지만 여전히 내가 경험해 보지 못한 분야가 많다는 사실이 아쉬웠고, 졸작은 취업 포폴에 필수적으로 포함되기 때문에 정확한 취업 분야를 정하고 스킬을 쌓은 다음에 진행하고 싶다는 생각이 있었다. 때문에 나는 졸업프로젝트에 들어가기 이전에 1년 휴학을 결심했고, 휴학 계획 중 첫 번째는 KDT 교육을 수강하는 것이었다. KDT(K-Digital Training)를 듣겠다고 결정한 가장 중요한 이유는, 국비 지원 교육이기 때문이다. 나라 곳간을 털어먹으면서 부담 없이 해보고 싶었던 공부를 할 수 있다니... 백수 입장에서 선택할 수 있는 최고의 선택이라고 생각한다. 그중에서 멋사 BE스쿨을 선택한 이유? 일단 개강일이 3월..
sqld에선 이 정도만 알고있어도 충분한듯 정규화 - 데이터 정합성 (데이터의 정확성과 일관성을 유지)을 위해 엔터티를 작은 단위로 분리하는 과정 - 입력/ 수정/ 삭제의 이상현상(한 엔터티에 2개 이상의 종속성이 있을 때)을 제거 - 중복 속성 제거, 데이터 용량 최소화 제 1 정규형 - 모든 속성은 반드시 하나의 값만 가져야 한다. - 속성의 원자성 확보 제 2 정규형 - 엔터티의 모든 일반 속성은 반드시 모든 주식별자에 종속되어야 한다. = 완전 함수 종속 = 부분 함수 종속이 있으면 안된다. = 기본키의 부분 집합이 결정자가 되어선 안된다. 결정자? X -> Y인 함수적 관계를 성립시키는 X 함수적 관계? Y값이 오직 하나로 결정되는 관계 제 3 정규형 - 주식별자가 아닌 모든 속성간에 서로 종속..
해커의 목적 먼저, 해킹 의뢰를 받은 해커의 최종 목적은 ‘여기 어때’ 데이터베이스에 저장된 회원정보, 숙박예약정보, 제휴점 정보 등을 획득하는 것이었습니다. 해커는 데이터베이스 서버에 접근하기 위해서 ‘서비스 관리 웹서버’ 즉, 여기어때 서비스 관리 시스템에 접속하는 것을 목표로 하였습니다. ‘서비스 관리 시스템’에서는 회원 정보, 예약 정보를 확인하고 관리하는 기능이 있을 것으로 쉽게 예측할 수 있습니다. 서비스 관리 시스템에서 해당 정보에 접근할 수 있는 계정은 DB서버에 있는 회원 정보나 예약 정보 테이블에 접근할 수 있는 ‘권한 있는 사용자’라고 유추할 수 있습니다. 따라서 해커는 ‘서비스 관리 웹서버’의 ‘관리자 계정’으로 로그인을 하고자 계획합니다.해커는 여기 어때 운영사에서 관리중인 웹..
SET LINESIZE 150 SET PAGESIZE 30
제약조건이란 사용자가 원하는 조건의 데이터만 유지하기 위해 테이블의 특정 칼럼에 설정하는 제약을 말합니다. 제약조건은 데이터베이스 테이블의 컬럼 또는 테이블 간의 관계에 대한 규칙 또는 조건을 정의하는 데 사용됩니다. 제약조건을 설정함으로써 데이터 무결성을, 일관성을 보장하고, 이용자로부터 데이터를 보호할 수 있습니다. 제약조건의 종류로는 PK, UK, NOT NULL, CHECK, FOREIGN KEY가 있습니다. 1. 고유키 (Unique Constraint): 컬럼의 값이 고유해야 한다는 규칙을 정의합니다. NULL값을 가지더라고 고유키 제약조건에 위배되지 않으며, NULL값을 여러개 가지더라도 괜찮습니다. 2. 기본 키 (Primary Key Constraint): 테이블 내에서 고유하고 식별 가..